From 164db7ae9bc69327e19cf49912d99ffe1ae60d6d Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 24 Dec 2017 11:45:45 -0500 Subject: [PATCH 1/7] Prefixed all disability defines with DISABILITY_ to fix a name collision --- code/__DEFINES/stat.dm | 25 +++ code/_onclick/item_attack.dm | 4 + code/datums/antagonists/changeling.dm | 4 + code/datums/brain_damage/mild.dm | 8 + code/datums/brain_damage/phobia.dm | 4 + code/datums/brain_damage/severe.dm | 28 ++++ code/datums/brain_damage/split_personality.dm | 4 + .../diseases/advance/symptoms/vision.dm | 12 ++ code/datums/martial/sleeping_carp.dm | 4 + code/datums/mutations/body.dm | 16 ++ code/datums/mutations/speech.dm | 8 + .../gamemodes/changeling/powers/tiny_prick.dm | 12 ++ .../clock_items/wraith_spectacles.dm | 28 ++++ .../clock_structures/ocular_warden.dm | 4 + code/game/gamemodes/cult/runes.dm | 4 + code/game/machinery/computer/cloning.dm | 4 + code/game/machinery/computer/dna_console.dm | 8 + code/game/machinery/dna_scanner.dm | 4 + code/game/machinery/doors/airlock.dm | 4 + code/game/objects/items.dm | 6 + code/game/objects/items/defib.dm | 8 + code/game/objects/items/devices/flashlight.dm | 8 + code/game/objects/items/devices/scanners.dm | 20 +++ code/game/objects/items/dna_injector.dm | 8 + code/game/objects/items/grenades/grenade.dm | 4 + code/game/objects/items/handcuffs.dm | 4 + code/game/objects/items/kitchen.dm | 8 + code/game/objects/items/melee/misc.dm | 4 + code/game/objects/items/melee/transforming.dm | 4 + code/game/objects/items/pneumaticCannon.dm | 7 + code/game/objects/items/shields.dm | 145 ++++++++++++++++++ code/game/objects/items/storage/book.dm | 4 + code/game/objects/items/stunbaton.dm | 4 + code/game/objects/items/teleprod.dm | 4 + code/game/objects/items/tools/screwdriver.dm | 4 + code/game/objects/items/twohanded.dm | 4 + .../objects/structures/petrified_statue.dm | 8 + code/modules/assembly/flash.dm | 4 + code/modules/assembly/mousetrap.dm | 145 ++++++++++++++++++ code/modules/clothing/glasses/_glasses.dm | 4 + code/modules/events/disease_outbreak.dm | 4 + code/modules/hydroponics/gene_modder.dm | 2 +- .../mining/lavaland/necropolis_chests.dm | 4 + code/modules/mob/living/blood.dm | 16 ++ code/modules/mob/living/brain/brain_item.dm | 5 + code/modules/mob/living/brain/status_procs.dm | 2 +- .../mob/living/carbon/alien/status_procs.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 14 +- .../mob/living/carbon/carbon_defense.dm | 8 + code/modules/mob/living/carbon/examine.dm | 4 + code/modules/mob/living/carbon/human/death.dm | 5 + .../mob/living/carbon/human/examine.dm | 4 + .../mob/living/carbon/human/human_defense.dm | 5 + .../mob/living/carbon/human/human_helpers.dm | 4 + .../mob/living/carbon/human/interactive.dm | 4 + .../mob/living/carbon/human/inventory.dm | 4 + .../mob/living/carbon/human/species.dm | 34 +++- .../carbon/human/species_types/golems.dm | 4 + .../mob/living/carbon/human/update_icons.dm | 4 + .../mob/living/carbon/monkey/combat.dm | 4 + .../mob/living/carbon/monkey/update_icons.dm | 4 + .../modules/mob/living/carbon/status_procs.dm | 2 +- .../modules/mob/living/carbon/update_icons.dm | 4 + code/modules/mob/living/life.dm | 8 + code/modules/mob/living/living.dm | 4 + code/modules/mob/living/living_defense.dm | 28 ++++ code/modules/mob/living/say.dm | 10 ++ .../hostile/megafauna/colossus.dm | 12 ++ code/modules/mob/living/status_procs.dm | 81 +++++++++- code/modules/mob/status_procs.dm | 16 +- code/modules/paperwork/contract.dm | 4 + code/modules/paperwork/paper.dm | 8 + code/modules/paperwork/paperplane.dm | 4 + code/modules/projectiles/gun.dm | 6 +- .../projectiles/guns/ballistic/revolver.dm | 4 + code/modules/projectiles/pins.dm | 4 + .../chemistry/reagents/medicine_reagents.dm | 12 ++ .../chemistry/reagents/toxin_reagents.dm | 4 + .../spells/spell_types/construct_spells.dm | 6 + code/modules/surgery/bodyparts/bodyparts.dm | 4 + code/modules/surgery/bodyparts/head.dm | 4 + code/modules/surgery/lipoplasty.dm | 4 + code/modules/surgery/organs/ears.dm | 8 + 83 files changed, 957 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index a23f050c13..d9ebf89091 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -10,6 +10,7 @@ //mob disabilities stat +<<<<<<< HEAD #define BLIND 1 #define MUTE 2 #define DEAF 4 @@ -21,6 +22,30 @@ #define DUMB 512 #define MONKEYLIKE 1024 //sets IsAdvancedToolUser to FALSE #define PACIFISM 2048 +======= +#define DISABILITY_BLIND "blind" +#define DISABILITY_MUTE "mute" +#define DISABILITY_DEAF "deaf" +#define DISABILITY_NEARSIGHT "nearsighted" +#define DISABILITY_FAT "fat" +#define DISABILITY_HUSK "husk" +#define DISABILITY_NOCLONE "noclone" +#define DISABILITY_CLUMSY "clumsy" +#define DISABILITY_DUMB "dumb" +#define DISABILITY_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE +#define DISABILITY_PACIFISM "pacifism" + +// common disability sources +#define EYE_DAMAGE "eye_damage" +#define GENETIC_MUTATION "genetic" +#define STATUE_MUTE "statue" +#define CHANGELING_DRAIN "drain" +#define OBESITY "obesity" +#define MAGIC_DISABILITY "magic" +#define STASIS_MUTE "stasis" +#define GENETICS_SPELL "genetics_spell" +#define TRAUMA_DISABILITY "trauma" +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind // bitflags for machine stat variable #define BROKEN 1 diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 2dddce8542..22ece9ecdd 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -58,7 +58,11 @@ SendSignal(COMSIG_ITEM_ATTACK, M, user) if(flags_1 & NOBLUDGEON_1) return +<<<<<<< HEAD if(user.disabilities & PACIFISM) +======= + if(user.has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) diff --git a/code/datums/antagonists/changeling.dm b/code/datums/antagonists/changeling.dm index 4f8af2dc8a..091ca675fe 100644 --- a/code/datums/antagonists/changeling.dm +++ b/code/datums/antagonists/changeling.dm @@ -223,7 +223,11 @@ if(verbose) to_chat(user, "[target] is not compatible with our biology.") return +<<<<<<< HEAD if((target.disabilities & NOCLONE) || (target.disabilities & HUSK)) +======= + if((target.has_disability(DISABILITY_NOCLONE)) || (target.has_disability(DISABILITY_NOCLONE))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(verbose) to_chat(user, "DNA of [target] is ruined beyond usability!") return diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 7c2ba20a62..fc0104e040 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -42,7 +42,11 @@ lose_text = "You feel smart again." /datum/brain_trauma/mild/dumbness/on_gain() +<<<<<<< HEAD owner.disabilities |= DUMB +======= + owner.add_disability(DISABILITY_DUMB, TRAUMA_DISABILITY) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind ..() /datum/brain_trauma/mild/dumbness/on_life() @@ -54,7 +58,11 @@ ..() /datum/brain_trauma/mild/dumbness/on_lose() +<<<<<<< HEAD owner.disabilities &= ~DUMB +======= + owner.remove_disability(DISABILITY_DUMB, TRAUMA_DISABILITY) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind owner.derpspeech = 0 ..() diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index 313b693436..08de389360 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -68,7 +68,11 @@ return /datum/brain_trauma/mild/phobia/on_hear(message, speaker, message_language, raw_message, radio_freq) +<<<<<<< HEAD if(owner.disabilities & DEAF || world.time < next_scare) //words can't trigger you if you can't hear them *taps head* +======= + if(owner.has_disability(DISABILITY_DEAF) || world.time < next_scare) //words can't trigger you if you can't hear them *taps head* +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return message for(var/word in trigger_words) if(findtext(message, word)) diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index ceda917713..513b508924 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -12,6 +12,7 @@ lose_text = "You suddenly remember how to speak." /datum/brain_trauma/severe/mute/on_gain() +<<<<<<< HEAD owner.disabilities |= MUTE ..() @@ -23,6 +24,13 @@ /datum/brain_trauma/severe/mute/on_lose() owner.disabilities &= ~MUTE +======= + owner.add_disability(DISABILITY_MUTE, TRAUMA_DISABILITY) + ..() + +/datum/brain_trauma/severe/mute/on_lose() + owner.remove_disability(DISABILITY_MUTE, TRAUMA_DISABILITY) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind ..() /datum/brain_trauma/severe/aphasia @@ -132,7 +140,11 @@ stress -= 4 /datum/brain_trauma/severe/monophobia/proc/check_alone() +<<<<<<< HEAD if(owner.disabilities & BLIND) +======= + if(owner.has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return TRUE for(var/mob/M in oview(owner, 7)) if(!isliving(M)) //ghosts ain't people @@ -194,11 +206,19 @@ lose_text = "You feel in control of your hands again." /datum/brain_trauma/severe/discoordination/on_gain() +<<<<<<< HEAD owner.disabilities |= MONKEYLIKE ..() /datum/brain_trauma/severe/discoordination/on_lose() owner.disabilities &= ~MONKEYLIKE +======= + owner.add_disability(DISABILITY_MONKEYLIKE, TRAUMA_DISABILITY) + ..() + +/datum/brain_trauma/severe/discoordination/on_lose() + owner.remove_disability(DISABILITY_MONKEYLIKE, TRAUMA_DISABILITY) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind ..() /datum/brain_trauma/severe/pacifism @@ -209,9 +229,17 @@ lose_text = "You no longer feel compelled to not harm." /datum/brain_trauma/severe/pacifism/on_gain() +<<<<<<< HEAD owner.disabilities |= PACIFISM ..() /datum/brain_trauma/severe/pacifism/on_lose() owner.disabilities &= ~PACIFISM +======= + owner.add_disability(DISABILITY_PACIFISM, TRAUMA_DISABILITY) + ..() + +/datum/brain_trauma/severe/pacifism/on_lose() + owner.remove_disability(DISABILITY_PACIFISM, TRAUMA_DISABILITY) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind ..() \ No newline at end of file diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index deed1c8406..adf10a3487 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -192,7 +192,11 @@ return //no random switching /datum/brain_trauma/severe/split_personality/brainwashing/on_hear(message, speaker, message_language, raw_message, radio_freq) +<<<<<<< HEAD if(owner.disabilities & DEAF || owner == speaker) +======= + if(owner.has_disability(DISABILITY_DEAF) || owner == speaker) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return message if(findtext(message, codeword)) message = replacetext(message, codeword, "[codeword]") diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index 728dfa01d0..5a7b621556 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -61,7 +61,11 @@ Bonus M.become_nearsighted() if(prob(eyes.eye_damage - 10 + 1)) if(!remove_eyes) +<<<<<<< HEAD if(M.become_blind()) +======= + if(!M.has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You go blind!") else M.visible_message("[M]'s eyes fall off their sockets!", "Your eyes fall off their sockets!") @@ -111,14 +115,22 @@ Bonus return switch(A.stage) if(4, 5) //basically oculine +<<<<<<< HEAD if(M.disabilities & BLIND) +======= + if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(prob(20)) to_chat(M, "Your vision slowly returns...") M.cure_blind() M.cure_nearsighted() M.blur_eyes(35) +<<<<<<< HEAD else if(M.disabilities & NEARSIGHT) +======= + else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "The blackness in your peripheral vision fades.") M.cure_nearsighted() M.blur_eyes(10) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index f3a1f53dd2..c636c4c495 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -197,7 +197,11 @@ /obj/item/twohanded/bostaff/attack(mob/target, mob/living/user) add_fingerprint(user) +<<<<<<< HEAD if((CLUMSY in user.disabilities) && prob(50)) +======= + if((user.has_disability(DISABILITY_CLUMSY)) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You club yourself over the head with [src].") user.Knockdown(60) if(ishuman(user)) diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 23b91add58..eb8d0b599d 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -85,12 +85,20 @@ /datum/mutation/human/clumsy/on_acquiring(mob/living/carbon/human/owner) if(..()) return +<<<<<<< HEAD owner.disabilities |= CLUMSY +======= + owner.add_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind /datum/mutation/human/clumsy/on_losing(mob/living/carbon/human/owner) if(..()) return +<<<<<<< HEAD owner.disabilities &= ~CLUMSY +======= + owner.remove_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind //Tourettes causes you to randomly stand in place and shout. @@ -124,12 +132,20 @@ /datum/mutation/human/deaf/on_acquiring(mob/living/carbon/human/owner) if(..()) return +<<<<<<< HEAD owner.disabilities |= DEAF +======= + owner.add_disability(DISABILITY_DEAF, GENETIC_MUTATION) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind /datum/mutation/human/deaf/on_losing(mob/living/carbon/human/owner) if(..()) return +<<<<<<< HEAD owner.disabilities &= ~DEAF +======= + owner.remove_disability(DISABILITY_DEAF, GENETIC_MUTATION) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind //Monified turns you into a monkey. diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index 3b4b38bbcc..a9110aa963 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -30,12 +30,20 @@ /datum/mutation/human/mute/on_acquiring(mob/living/carbon/human/owner) if(..()) return +<<<<<<< HEAD owner.disabilities |= MUTE +======= + owner.add_disability(DISABILITY_MUTE, GENETIC_MUTATION) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind /datum/mutation/human/mute/on_losing(mob/living/carbon/human/owner) if(..()) return +<<<<<<< HEAD owner.disabilities &= ~MUTE +======= + owner.remove_disability(DISABILITY_MUTE, GENETIC_MUTATION) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind /datum/mutation/human/smile diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 4fdd84040e..4e3a9a1fb6 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -90,7 +90,11 @@ /obj/effect/proc_holder/changeling/sting/transformation/can_sting(mob/user, mob/living/carbon/target) if(!..()) return +<<<<<<< HEAD if((target.disabilities & HUSK) || !iscarbon(target) || (NOTRANSSTING in target.dna.species.species_traits)) +======= + if((target.has_disability(DISABILITY_HUSK)) || !iscarbon(target) || (NOTRANSSTING in target.dna.species.species_traits)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "Our sting appears ineffective against its DNA.") return 0 return 1 @@ -129,9 +133,17 @@ /obj/effect/proc_holder/changeling/sting/false_armblade/can_sting(mob/user, mob/target) if(!..()) return +<<<<<<< HEAD if((target.disabilities & HUSK) || !target.has_dna()) to_chat(user, "Our sting appears ineffective against its DNA.") return 0 +======= + if(isliving(target)) + var/mob/living/L = target + if((L.has_disability(DISABILITY_HUSK)) || !L.has_dna()) + to_chat(user, "Our sting appears ineffective against its DNA.") + return 0 +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return 1 /obj/effect/proc_holder/changeling/sting/false_armblade/sting_action(mob/user, mob/target) diff --git a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm b/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm index fc734ac426..ae1161be50 100644 --- a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm +++ b/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm @@ -32,7 +32,11 @@ if(ishuman(loc)) var/mob/living/carbon/human/H = loc if(src == H.glasses && !up) +<<<<<<< HEAD if(H.disabilities & BLIND) +======= + if(H.has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(H, "\"You're blind, idiot. Stop embarrassing yourself.\"") return if(blind_cultist(H)) @@ -76,7 +80,11 @@ ..() if(slot != slot_glasses || up) return +<<<<<<< HEAD if(user.disabilities & BLIND) +======= + if(user.has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "\"You're blind, idiot. Stop embarrassing yourself.\"" ) return if(blind_cultist(user)) //Cultists instantly go blind @@ -115,11 +123,19 @@ var/obj/item/clothing/glasses/wraith_spectacles/WS = L.glasses desc = "[glasses_right && !WS.up ? "":""]You are [glasses_right ? "":"not "]wearing wraith spectacles[glasses_right && !WS.up ? "!":"."]
\ You have taken [W.eye_damage_done] eye damage from them.
" +<<<<<<< HEAD if(L.disabilities & NEARSIGHT) desc += "You are nearsighted!
" else if(glasses_right && !WS.up) desc += "You will become nearsighted at [W.nearsight_breakpoint] eye damage.
" if(L.disabilities & BLIND) +======= + if(L.has_disability(DISABILITY_NEARSIGHT)) + desc += "You are nearsighted!
" + else if(glasses_right && !WS.up) + desc += "You will become nearsighted at [W.nearsight_breakpoint] eye damage.
" + if(L.has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind desc += "You are blind!" else if(glasses_right && !WS.up) desc += "You will become blind at [W.blind_breakpoint] eye damage." @@ -153,17 +169,29 @@ qdel(src) /datum/status_effect/wraith_spectacles/proc/apply_eye_damage(mob/living/carbon/human/H) +<<<<<<< HEAD if(H.disabilities & BLIND) +======= + if(H.has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return H.adjust_eye_damage(0.5) eye_damage_done += 0.5 if(eye_damage_done >= 20) H.adjust_blurriness(2) if(eye_damage_done >= nearsight_breakpoint) +<<<<<<< HEAD if(H.become_nearsighted()) to_chat(H, "Your vision doubles, then trebles. Darkness begins to close in. You can't keep this up!") if(eye_damage_done >= blind_breakpoint) if(H.become_blind()) +======= + if(!H.has_disability(DISABILITY_NEARSIGHT)) + to_chat(H, "Your vision doubles, then trembles. Darkness begins to close in. You can't keep this up!") + H.become_nearsighted(EYE_DAMAGE) + if(eye_damage_done >= blind_breakpoint) + if(!H.has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(H, "A piercing white light floods your vision. Suddenly, all goes dark!") if(prob(min(20, 5 + eye_damage_done))) to_chat(H, "Your eyes continue to burn.") diff --git a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm index c7aea3df7e..07a8aac8ed 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm @@ -110,7 +110,11 @@ if(!(BI.resistance_flags & ON_FIRE)) BI.fire_act() continue +<<<<<<< HEAD if(is_servant_of_ratvar(L) || (L.disabilities & BLIND) || L.null_rod_check()) +======= + if(is_servant_of_ratvar(L) || (L.has_disability(DISABILITY_BLIND)) || L.null_rod_check()) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind continue if(L.stat || L.restrained() || L.buckled || L.lying) continue diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index ff85499029..32bbd06d33 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -115,7 +115,11 @@ structure_check() searches for nearby cultist structures required for the invoca continue if(ishuman(L)) var/mob/living/carbon/human/H = L +<<<<<<< HEAD if((H.disabilities & MUTE) || H.silent) +======= + if((H.has_disability(DISABILITY_MUTE)) || H.silent) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind continue if(L.stat) continue diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 7814e05138..8f5afacd91 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -449,7 +449,11 @@ scantemp = "Subject's brain is not responding to scanning stimuli." playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) return +<<<<<<< HEAD if((mob_occupant.disabilities & NOCLONE) && (src.scanner.scan_level < 2)) +======= + if((mob_occupant.has_disability(DISABILITY_NOCLONE)) && (src.scanner.scan_level < 2)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind scantemp = "Subject no longer contains the fundamental materials required to create a living clone." playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0) return diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 7bbd545981..189e5c65ad 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -81,7 +81,11 @@ if(connected && connected.is_operational()) if(connected.occupant) //set occupant_status message viable_occupant = connected.occupant +<<<<<<< HEAD if(viable_occupant.has_dna() && (!(RADIMMUNE in viable_occupant.dna.species.species_traits)) && (!(viable_occupant.disabilities & NOCLONE) || (connected.scan_level == 3))) //occupant is viable for dna modification +======= + if(viable_occupant.has_dna() && (!(RADIMMUNE in viable_occupant.dna.species.species_traits)) && (!(viable_occupant.has_disability(DISABILITY_NOCLONE)) || (connected.scan_level == 3))) //occupant is viable for dna modification +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind occupant_status += "[viable_occupant.name] => " switch(viable_occupant.stat) if(CONSCIOUS) @@ -528,7 +532,11 @@ var/mob/living/carbon/viable_occupant = null if(connected) viable_occupant = connected.occupant +<<<<<<< HEAD if(!istype(viable_occupant) || !viable_occupant.dna || (viable_occupant.disabilities & NOCLONE)) +======= + if(!istype(viable_occupant) || !viable_occupant.dna || (viable_occupant.has_disability(DISABILITY_NOCLONE))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind viable_occupant = null return viable_occupant diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index d1189ff8b8..0fc1293a01 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -100,7 +100,11 @@ var/mob/living/mob_occupant = get_mob_or_brainmob(occupant) if(istype(mob_occupant)) if(locate_computer(/obj/machinery/computer/cloning)) +<<<<<<< HEAD if(!mob_occupant.suiciding && !(mob_occupant.disabilities & NOCLONE) && !mob_occupant.hellbound) +======= + if(!mob_occupant.suiciding && !(mob_occupant.has_disability(DISABILITY_NOCLONE)) && !mob_occupant.hellbound) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind mob_occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!", source = src) // DNA manipulators cannot operate on severed heads or brains diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 775c9dd894..42c5a13cbb 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -680,7 +680,11 @@ if(ishuman(user) && prob(40) && src.density) var/mob/living/carbon/human/H = user +<<<<<<< HEAD if((H.disabilities & DUMB) && Adjacent(user)) +======= + if((H.has_disability(DISABILITY_DUMB)) && Adjacent(user)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) if(!istype(H.head, /obj/item/clothing/head/helmet)) H.visible_message("[user] headbutts the airlock.", \ diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 823a91cead..623501ca8b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -539,9 +539,15 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) M.adjust_blurriness(15) if(M.stat != DEAD) to_chat(M, "Your eyes start to bleed profusely!") +<<<<<<< HEAD if(!(M.disabilities & (NEARSIGHT | BLIND))) if(M.become_nearsighted()) to_chat(M, "You become nearsighted!") +======= + if(!(M.has_disability(DISABILITY_BLIND) || M.has_disability(DISABILITY_NEARSIGHT))) + to_chat(M, "You become nearsighted!") + M.become_nearsighted(EYE_DAMAGE) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(prob(50)) if(M.stat != DEAD) if(M.drop_all_held_items()) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 25fbb49c9b..3ad8d89606 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -393,7 +393,11 @@ /obj/item/twohanded/shockpaddles/proc/can_defib(mob/living/carbon/human/H) var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) +<<<<<<< HEAD return (!H.suiciding && !(H.disabilities & NOCLONE) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain) +======= + return (!H.suiciding && !(H.has_disability(DISABILITY_NOCLONE)) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind /obj/item/twohanded/shockpaddles/proc/shock_touching(dmg, mob/H) if(isliving(H.pulledby)) //CLEAR! @@ -514,7 +518,11 @@ shock_touching(30, H) var/failed +<<<<<<< HEAD if (H.suiciding || (H.disabilities & NOCLONE)) +======= + if (H.suiciding || (H.has_disability(DISABILITY_NOCLONE))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." else if (H.hellbound) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existence. Further attempts futile." diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index f656d55afd..6f16b8b15b 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -48,7 +48,11 @@ add_fingerprint(user) if(istype(M) && on && user.zone_selected in list("eyes", "mouth")) +<<<<<<< HEAD if((user.disabilities & (CLUMSY | DUMB)) && prob(50)) //too dumb to use flashlight properly +======= + if((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50)) //too dumb to use flashlight properly +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return ..() //just hit them in the head if(!user.IsAdvancedToolUser()) @@ -82,7 +86,11 @@ else user.visible_message("[user] directs [src] to [M]'s eyes.", \ "You direct [src] to [M]'s eyes.") +<<<<<<< HEAD if(M.stat == DEAD || (M.disabilities & BLIND) || !M.flash_act(visual = 1)) //mob is dead or fully blind +======= + if(M.stat == DEAD || (M.has_disability(DISABILITY_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "[M]'s pupils don't react to the light!") else if(M.dna && M.dna.check_mutation(XRAY)) //mob has X-RAY vision to_chat(user, "[M]'s pupils give an eerie glow!") diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9a60bb0edb..e9808b56b2 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -85,7 +85,11 @@ GAS ANALYZER /obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user) // Clumsiness/brain damage check +<<<<<<< HEAD if ((user.disabilities & (CLUMSY | DUMB)) && prob(50)) +======= + if ((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You stupidly try to analyze the floor's vitals!") user.visible_message("[user] has analyzed the floor's vitals!") to_chat(user, "Analyzing results for The floor:\n\tOverall status: Healthy") @@ -181,9 +185,18 @@ GAS ANALYZER to_chat(user, "\t==EAR STATUS==") if(istype(ears)) var/healthy = TRUE +<<<<<<< HEAD if(C.disabilities & DEAF) healthy = FALSE to_chat(user, "\tSubject is genetically deaf.") +======= + if(C.has_disability(DISABILITY_DEAF, GENETIC_MUTATION)) + healthy = FALSE + to_chat(user, "\tSubject is genetically deaf.") + else if(C.has_disability(DISABILITY_DEAF)) + healthy = FALSE + to_chat(user, "\tSubject is deaf.") +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind else if(ears.ear_damage) to_chat(user, "\tSubject has [ears.ear_damage > UNHEALING_EAR_DAMAGE? "permanent ": "temporary "]hearing damage.") @@ -199,10 +212,17 @@ GAS ANALYZER to_chat(user, "\t==EYE STATUS==") if(istype(eyes)) var/healthy = TRUE +<<<<<<< HEAD if(C.disabilities & BLIND) to_chat(user, "\tSubject is blind.") healthy = FALSE if(C.disabilities & NEARSIGHT) +======= + if(C.has_disability(DISABILITY_BLIND)) + to_chat(user, "\tSubject is blind.") + healthy = FALSE + if(C.has_disability(DISABILITY_NEARSIGHT)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "\tSubject is nearsighted.") healthy = FALSE if(eyes.eye_damage > 30) diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 9644d827ea..f23463e1b4 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -31,7 +31,11 @@ /obj/item/dnainjector/proc/inject(mob/living/carbon/M, mob/user) prepare() +<<<<<<< HEAD if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.disabilities & NOCLONE)) +======= + if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.has_disability(DISABILITY_NOCLONE))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" for(var/datum/mutation/human/HM in remove_mutations) @@ -313,7 +317,11 @@ to_chat(user, "You can't modify [M]'s DNA while [M.p_theyre()] dead.") return FALSE +<<<<<<< HEAD if(M.has_dna() && !(M.disabilities & NOCLONE)) +======= + if(M.has_dna() && !(M.has_disability(DISABILITY_NOCLONE))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" var/endtime = world.time+duration diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index e444ecce25..2af3f067da 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -24,7 +24,11 @@ qdel(src) /obj/item/grenade/proc/clown_check(mob/living/carbon/human/user) +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "Huh? How does this thing work?") preprime(user, 5, FALSE) return FALSE diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 886a248c8c..ee129b308a 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -26,7 +26,11 @@ /obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/living/carbon/human/user) if(!istype(C)) return +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "Uh... how do those things work?!") apply_cuffs(user,user) return diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 5a8fcda09b..ec25bcbd5e 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -44,7 +44,11 @@ forkload = null else if(user.zone_selected == "eyes") +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind M = user return eyestab(M,user) else @@ -70,7 +74,11 @@ /obj/item/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user) if(user.zone_selected == "eyes") +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind M = user return eyestab(M,user) else diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 6e21251b6e..f389624a10 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -99,7 +99,11 @@ return ..() add_fingerprint(user) +<<<<<<< HEAD if((CLUMSY in user.disabilities) && prob(50)) +======= + if((user.has_disability(DISABILITY_CLUMSY)) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You club yourself over the head.") user.Knockdown(60 * force) if(ishuman(user)) diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index b63c5bcefa..34214f9ea1 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -72,6 +72,10 @@ to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") /obj/item/melee/transforming/proc/clumsy_transform_effect(mob/living/user) +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_bodypart_damage(5,5) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 8baeee3550..33184f22ca 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -147,9 +147,16 @@ if(tank && !tank.air_contents.remove(gasPerThrow * pressureSetting)) to_chat(user, "\The [src] lets out a weak hiss and doesn't react!") return +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(75) && clumsyCheck) user.visible_message("[user] loses their grip on [src], causing it to go off!", "[src] slips out of your hands and goes off!") user.dropItemToGround(src, TRUE) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user)) + var/mob/living/carbon/C = user + C.visible_message("[C] loses their grip on [src], causing it to go off!", "[src] slips out of your hands and goes off!") + C.dropItemToGround(src, TRUE) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(prob(10)) target = get_turf(user) else diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 57306f498c..1f23812098 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/shield name = "shield" block_chance = 50 @@ -140,3 +141,147 @@ slot_flags = null to_chat(user, "[src] can now be concealed.") add_fingerprint(user) +======= +/obj/item/shield + name = "shield" + block_chance = 50 + armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 80, acid = 70) + +/obj/item/shield/riot + name = "riot shield" + desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "riot" + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + slot_flags = SLOT_BACK + force = 10 + throwforce = 5 + throw_speed = 2 + throw_range = 3 + w_class = WEIGHT_CLASS_BULKY + materials = list(MAT_GLASS=7500, MAT_METAL=1000) + attack_verb = list("shoved", "bashed") + var/cooldown = 0 //shield bash cooldown. based on world.time + + +/obj/item/shield/riot/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/melee/baton)) + if(cooldown < world.time - 25) + user.visible_message("[user] bashes [src] with [W]!") + playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1) + cooldown = world.time + else + return ..() + +/obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == THROWN_PROJECTILE_ATTACK) + final_block_chance += 30 + if(attack_type == LEAP_ATTACK) + final_block_chance = 100 + return ..() + +/obj/item/shield/riot/roman + name = "roman shield" + desc = "Bears an inscription on the inside: \"Romanes venio domus\"." + icon_state = "roman_shield" + item_state = "roman_shield" + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + +/obj/item/shield/riot/buckler + name = "wooden buckler" + desc = "A medieval wooden buckler." + icon_state = "buckler" + item_state = "buckler" + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + materials = list() + resistance_flags = FLAMMABLE + block_chance = 30 + +/obj/item/shield/energy + name = "energy combat shield" + desc = "A shield capable of stopping most melee attacks. Protects user from almost all energy projectiles. It can be retracted, expanded, and stored anywhere." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "eshield0" // eshield1 for expanded + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + force = 3 + throwforce = 3 + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_TINY + attack_verb = list("shoved", "bashed") + var/active = 0 + +/obj/item/shield/energy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + return 0 + +/obj/item/shield/energy/IsReflect() + return (active) + +/obj/item/shield/energy/attack_self(mob/living/carbon/human/user) + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + to_chat(user, "You beat yourself in the head with [src].") + user.take_bodypart_damage(5) + active = !active + icon_state = "eshield[active]" + + if(active) + force = 10 + throwforce = 8 + throw_speed = 2 + w_class = WEIGHT_CLASS_BULKY + playsound(user, 'sound/weapons/saberon.ogg', 35, 1) + to_chat(user, "[src] is now active.") + else + force = 3 + throwforce = 3 + throw_speed = 3 + w_class = WEIGHT_CLASS_TINY + playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) + to_chat(user, "[src] can now be concealed.") + add_fingerprint(user) + +/obj/item/shield/riot/tele + name = "telescopic shield" + desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "teleriot0" + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + slot_flags = null + force = 3 + throwforce = 3 + throw_speed = 3 + throw_range = 4 + w_class = WEIGHT_CLASS_NORMAL + var/active = 0 + +/obj/item/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(active) + return ..() + return 0 + +/obj/item/shield/riot/tele/attack_self(mob/living/user) + active = !active + icon_state = "teleriot[active]" + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1) + + if(active) + force = 8 + throwforce = 5 + throw_speed = 2 + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BACK + to_chat(user, "You extend \the [src].") + else + force = 3 + throwforce = 3 + throw_speed = 3 + w_class = WEIGHT_CLASS_NORMAL + slot_flags = null + to_chat(user, "[src] can now be concealed.") + add_fingerprint(user) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index ef04fc48f5..a56442032e 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -94,7 +94,11 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", to_chat(user, "You don't have the dexterity to do this!") return +<<<<<<< HEAD if (user.disabilities & CLUMSY && prob(50)) +======= + if (user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "[src] slips out of your hand and hits your head.") user.take_bodypart_damage(10) user.Unconscious(400) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index ab82f92c2d..66f3e39c0a 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -108,7 +108,11 @@ add_fingerprint(user) /obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user) +<<<<<<< HEAD if(status && user.disabilities & CLUMSY && prob(50)) +======= + if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind user.visible_message("[user] accidentally hits themself with [src]!", \ "You accidentally hit yourself with [src]!") user.Knockdown(stunforce*3) diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index 92e7a8e9ba..b69ed980eb 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -8,7 +8,11 @@ /obj/item/melee/baton/cattleprod/teleprod/attack(mob/living/carbon/M, mob/living/carbon/user)//handles making things teleport when hit ..() +<<<<<<< HEAD if(status && user.disabilities & CLUMSY && prob(50)) +======= + if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind user.visible_message("[user] accidentally hits themself with [src]!", \ "You accidentally hit yourself with [src]!") if(do_teleport(user, get_turf(user), 50))//honk honk diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 08f22b7e46..06a6a2ea76 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -75,7 +75,11 @@ return ..() if(user.zone_selected != "eyes" && user.zone_selected != "head") return ..() +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind M = user return eyestab(M,user) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 58758668c3..35f25739ca 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -302,7 +302,11 @@ unwield() return ..() +<<<<<<< HEAD if(user.disabilities & CLUMSY && (wielded) && prob(40)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && (wielded) && prob(40)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind impale(user) return if((wielded) && prob(50)) diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index 36233bc155..2368836dec 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -17,7 +17,11 @@ L.buckled.unbuckle_mob(L,force=1) L.visible_message("[L]'s skin rapidly turns to marble!", "Your body freezes up! Can't... move... can't... think...") L.forceMove(src) +<<<<<<< HEAD L.disabilities |= MUTE +======= + L.add_disability(DISABILITY_MUTE, STATUE_MUTE) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind L.faction += "mimic" //Stops mimics from instaqdeling people in statues L.status_flags |= GODMODE obj_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues @@ -59,7 +63,11 @@ if(petrified_mob) petrified_mob.status_flags &= ~GODMODE petrified_mob.forceMove(loc) +<<<<<<< HEAD petrified_mob.disabilities &= ~MUTE +======= + petrified_mob.remove_disability(DISABILITY_MUTE, STATUE_MUTE) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind petrified_mob.take_overall_damage((petrified_mob.health - obj_integrity + 100)) //any new damage the statue incurred is transfered to the mob petrified_mob.faction -= "mimic" petrified_mob = null diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 81f2c75660..fd41569047 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -30,7 +30,11 @@ holder.update_icon() /obj/item/device/assembly/flash/proc/clown_check(mob/living/carbon/human/user) +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind flash_carbon(user, user, 15, 0) return 0 return 1 diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index e8ee742e56..fd9b71710d 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/device/assembly/mousetrap name = "mousetrap" desc = "A handy little spring-loaded trap for catching pesty rodents." @@ -140,3 +141,147 @@ /obj/item/device/assembly/mousetrap/armed icon_state = "mousetraparmed" armed = TRUE +======= +/obj/item/device/assembly/mousetrap + name = "mousetrap" + desc = "A handy little spring-loaded trap for catching pesty rodents." + icon_state = "mousetrap" + materials = list(MAT_METAL=100) + attachable = 1 + var/armed = 0 + + +/obj/item/device/assembly/mousetrap/examine(mob/user) + ..() + if(armed) + to_chat(user, "The mousetrap is armed!") + else + to_chat(user, "The mousetrap is not armed.") + +/obj/item/device/assembly/mousetrap/activate() + if(..()) + armed = !armed + if(!armed) + if(ishuman(usr)) + var/mob/living/carbon/human/user = usr + if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + to_chat(user, "Your hand slips, setting off the trigger!") + pulse(0) + update_icon() + if(usr) + playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) + +/obj/item/device/assembly/mousetrap/describe() + return "The pressure switch is [armed?"primed":"safe"]." + +/obj/item/device/assembly/mousetrap/update_icon() + if(armed) + icon_state = "mousetraparmed" + else + icon_state = "mousetrap" + if(holder) + holder.update_icon() + +/obj/item/device/assembly/mousetrap/proc/triggered(mob/target, type = "feet") + if(!armed) + return + var/obj/item/bodypart/affecting = null + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(PIERCEIMMUNE in H.dna.species.species_traits) + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + armed = 0 + update_icon() + pulse(0) + return 0 + switch(type) + if("feet") + if(!H.shoes) + affecting = H.get_bodypart(pick("l_leg", "r_leg")) + H.Knockdown(60) + if("l_hand", "r_hand") + if(!H.gloves) + affecting = H.get_bodypart(type) + H.Stun(60) + if(affecting) + if(affecting.receive_damage(1, 0)) + H.update_damage_overlays() + else if(ismouse(target)) + var/mob/living/simple_animal/mouse/M = target + visible_message("SPLAT!") + M.splat() + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + armed = 0 + update_icon() + pulse(0) + + +/obj/item/device/assembly/mousetrap/attack_self(mob/living/carbon/human/user) + if(!armed) + to_chat(user, "You arm [src].") + else + if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + var/which_hand = "l_hand" + if(!(user.active_hand_index % 2)) + which_hand = "r_hand" + triggered(user, which_hand) + user.visible_message("[user] accidentally sets off [src], breaking their fingers.", \ + "You accidentally trigger [src]!") + return + to_chat(user, "You disarm [src].") + armed = !armed + update_icon() + playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) + + +/obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user) + if(armed) + if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + var/which_hand = "l_hand" + if(!(user.active_hand_index % 2)) + which_hand = "r_hand" + triggered(user, which_hand) + user.visible_message("[user] accidentally sets off [src], breaking their fingers.", \ + "You accidentally trigger [src]!") + return + ..() + + +/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj) + if(armed) + if(ismob(AM)) + var/mob/MM = AM + if(!(MM.movement_type & FLYING)) + if(ishuman(AM)) + var/mob/living/carbon/H = AM + if(H.m_intent == MOVE_INTENT_RUN) + triggered(H) + H.visible_message("[H] accidentally steps on [src].", \ + "You accidentally step on [src]") + else if(ismouse(MM)) + triggered(MM) + else if(AM.density) // For mousetrap grenades, set off by anything heavy + triggered(AM) + ..() + + +/obj/item/device/assembly/mousetrap/on_found(mob/finder) + if(armed) + finder.visible_message("[finder] accidentally sets off [src], breaking their fingers.", \ + "You accidentally trigger [src]!") + triggered(finder, (finder.active_hand_index % 2 == 0) ? "r_hand" : "l_hand") + return 1 //end the search! + return 0 + + +/obj/item/device/assembly/mousetrap/hitby(A as mob|obj) + if(!armed) + return ..() + visible_message("[src] is triggered by [A].") + triggered(null) + + +/obj/item/device/assembly/mousetrap/armed + icon_state = "mousetraparmed" + armed = 1 +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 29990a299b..070a57c167 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -41,7 +41,11 @@ /obj/item/clothing/glasses/proc/thermal_overload() if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc +<<<<<<< HEAD if(!(H.disabilities & BLIND)) +======= + if(!(H.has_disability(DISABILITY_BLIND))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(H.glasses == src) to_chat(H, "[src] overloads and blinds you!") H.flash_act(visual = 1) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index d83c966ff6..08a14e96f7 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -51,7 +51,11 @@ var/datum/disease/D if(!advanced_virus) if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. +<<<<<<< HEAD if(!H.dna || (H.disabilities & BLIND)) //A blindness disease would be the worst. +======= + if(!H.dna || (H.has_disability(DISABILITY_BLIND))) //A blindness disease would be the worst. +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind continue D = new virus_type() var/datum/disease/dnaspread/DS = D diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 87c860b50e..bb349b7d19 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -45,7 +45,7 @@ min_wrate = FLOOR(10-wratemod,1) // 7,5,2,0 Clamps at 0 and 10 You want this low min_wchance = 67-(ML.rating*16) // 48,35,19,3 Clamps at 0 and 67 You want this low for(var/obj/item/circuitboard/machine/plantgenes/vaultcheck in component_parts) - if(istype(vaultcheck, /obj/item/circuitboard/machine/plantgenes/vault)) // DUMB BOTANY TUTS + if(istype(vaultcheck, /obj/item/circuitboard/machine/plantgenes/vault)) // DISABILITY_DUMB BOTANY TUTS max_potency = 100 max_yield = 10 min_production = 1 diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 01d6de85e2..c96302a871 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -656,7 +656,11 @@ playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) /obj/item/melee/transforming/cleaving_saw/clumsy_transform_effect(mob/living/user) +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(50)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_bodypart_damage(10) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 45f26d55c3..50e733a07c 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -16,7 +16,11 @@ /mob/living/carbon/monkey/handle_blood() +<<<<<<< HEAD if(bodytemperature >= 225 && !(disabilities & NOCLONE)) //cryosleep or husked people do not pump the blood. +======= + if(bodytemperature >= 225 && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL) blood_volume += 0.1 // regenerate blood VERY slowly @@ -28,7 +32,11 @@ bleed_rate = 0 return +<<<<<<< HEAD if(bodytemperature >= 225 && !(disabilities & NOCLONE)) //cryosleep or husked people do not pump the blood. +======= + if(bodytemperature >= 225 && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL && !(NOHUNGER in dna.species.species_traits)) @@ -201,13 +209,21 @@ return "blood" /mob/living/carbon/monkey/get_blood_id() +<<<<<<< HEAD if(!(disabilities & NOCLONE)) +======= + if(!(has_disability(DISABILITY_NOCLONE))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return "blood" /mob/living/carbon/human/get_blood_id() if(dna.species.exotic_blood) return dna.species.exotic_blood +<<<<<<< HEAD else if((NOBLOOD in dna.species.species_traits) || (disabilities & NOCLONE)) +======= + else if((NOBLOOD in dna.species.species_traits) || (has_disability(DISABILITY_NOCLONE))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return return "blood" diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index aef5489b04..cf3d351ab8 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -79,8 +79,13 @@ if(!brainmob.stored_dna) brainmob.stored_dna = new /datum/dna/stored(brainmob) C.dna.copy_dna(brainmob.stored_dna) +<<<<<<< HEAD if(L.disabilities & NOCLONE) brainmob.disabilities |= NOCLONE //This is so you can't just decapitate a husked guy and clone them without needing to get a new body +======= + if(L.has_disability(DISABILITY_NOCLONE)) + brainmob.disabilities[DISABILITY_NOCLONE] = L.disabilities[DISABILITY_NOCLONE] +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind var/obj/item/organ/zombie_infection/ZI = L.getorganslot(ORGAN_SLOT_ZOMBIE) if(ZI) brainmob.set_species(ZI.old_species) //For if the brain is cloned diff --git a/code/modules/mob/living/brain/status_procs.dm b/code/modules/mob/living/brain/status_procs.dm index 2baea2e7cd..735a0186bf 100644 --- a/code/modules/mob/living/brain/status_procs.dm +++ b/code/modules/mob/living/brain/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness -// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. /////////////////////////////////// EYE_BLIND //////////////////////////////////// diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm index 33ba8fea1d..86b7f3508c 100644 --- a/code/modules/mob/living/carbon/alien/status_procs.dm +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. /////////////////////////////////// STUN //////////////////////////////////// diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 819ed8072f..5e2ce2c1c9 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -157,7 +157,11 @@ if(!throwable_mob.buckled) thrown_thing = throwable_mob stop_pulling() +<<<<<<< HEAD if(disabilities & PACIFISM) +======= + if(has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You gently let go of [throwable_mob].") var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) @@ -170,7 +174,11 @@ thrown_thing = I dropItemToGround(I) +<<<<<<< HEAD if(disabilities & PACIFISM && I.throwforce) +======= + if(has_disability(DISABILITY_PACIFISM) && I.throwforce) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You set [I] down gently on the ground.") return @@ -409,7 +417,11 @@ dropItemToGround(I) var/modifier = 0 +<<<<<<< HEAD if(disabilities & CLUMSY) +======= + if(has_disability(DISABILITY_CLUMSY)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind modifier -= 40 //Clumsy people are more likely to hit themselves -Honk! switch(rand(1,100)+modifier) //91-100=Nothing special happens @@ -774,7 +786,7 @@ reagents.addiction_list = list() cure_all_traumas(TRUE, TRUE) ..() - // heal ears after healing disabilities, since ears check DEAF disability + // heal ears after healing disabilities, since ears check DISABILITY_DEAF disability // when healing. restoreEars() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 0bfa287a09..7b96428621 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -306,10 +306,18 @@ if(eyes.eye_damage > 20) if(prob(eyes.eye_damage - 20)) +<<<<<<< HEAD if(become_nearsighted()) +======= + if(!has_disability(DISABILITY_NEARSIGHT)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "Your eyes start to burn badly!") else if(prob(eyes.eye_damage - 25)) +<<<<<<< HEAD if(become_blind()) +======= + if(!has_disability(DISABILITY_BLIND)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You can't see anything!") else to_chat(src, "Your eyes are really starting to hurt. This can't be good for you!") diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index b8d9d510fd..03285f4d57 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -70,7 +70,11 @@ else msg += "[t_He] [t_is] severely deformed!\n" +<<<<<<< HEAD if(disabilities & DUMB) +======= + if(has_disability(DISABILITY_DUMB)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind msg += "[t_He] seem[p_s()] to be clumsy and unable to think.\n" if(fire_stacks > 0) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 4b1afe0780..3c6c1d076e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -48,7 +48,12 @@ /mob/living/carbon/proc/Drain() +<<<<<<< HEAD become_husk() disabilities |= NOCLONE +======= + become_husk(CHANGELING_DRAIN) + add_disability(DISABILITY_NOCLONE, CHANGELING_DRAIN) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind blood_volume = 0 return 1 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 39caec803b..fae9d41569 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -285,7 +285,11 @@ if(stat == UNCONSCIOUS) msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be asleep.\n" else +<<<<<<< HEAD if(disabilities & DUMB) +======= + if(has_disability(DISABILITY_DUMB)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" if(InCritical()) msg += "[t_He] [t_is] barely conscious.\n" diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index e3e1271132..1ba1995265 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -140,8 +140,13 @@ return ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) +<<<<<<< HEAD if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && isliving(pulling)) vore_attack(user, pulling) +======= + if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (has_disability(DISABILITY_FAT)) && ismonkey(pulling)) + devour_mob(pulling) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind else ..() diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index d1d657652b..3384dac1b6 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -103,7 +103,11 @@ /mob/living/carbon/human/IsAdvancedToolUser() +<<<<<<< HEAD if(disabilities & MONKEYLIKE) +======= + if(has_disability(DISABILITY_MONKEYLIKE)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return FALSE return TRUE//Humans can use guns and such diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm index 38dfad5787..7f42e1dcb9 100644 --- a/code/modules/mob/living/carbon/human/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive.dm @@ -339,7 +339,11 @@ if(TRAITS & TRAIT_SMART) smartness = 75 else if(TRAITS & TRAIT_DUMB) +<<<<<<< HEAD disabilities |= CLUMSY +======= + add_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind smartness = 25 if(TRAITS & TRAIT_MEAN) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 4f41c2d40c..e44303b937 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -187,7 +187,11 @@ if(G.tint) update_tint() if(G.vision_correction) +<<<<<<< HEAD if(disabilities & NEARSIGHT) +======= + if(has_disability(DISABILITY_NEARSIGHT)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) adjust_eye_damage(0) if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 866c14242f..5e8402f1fa 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -312,7 +312,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!HD) //Decapitated return +<<<<<<< HEAD if(H.disabilities & HUSK) +======= + if(H.has_disability(DISABILITY_HUSK)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return var/datum/sprite_accessory/S var/list/standing = list() @@ -453,7 +457,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/bodypart/head/HD = H.get_bodypart("head") +<<<<<<< HEAD if(HD && !(H.disabilities & HUSK)) +======= + if(HD && !(H.has_disability(DISABILITY_HUSK))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind // lipstick if(H.lip_style && (LIPS in species_traits)) var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER) @@ -724,7 +732,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(S.center) accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y) +<<<<<<< HEAD if(!(H.disabilities & HUSK)) +======= + if(!(H.has_disability(DISABILITY_HUSK))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(!forced_colour) switch(S.color_src) if(MUTCOLORS) @@ -1102,17 +1114,29 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/handle_digestion(mob/living/carbon/human/H) +<<<<<<< HEAD //The fucking FAT mutation is the dumbest shit ever. It makes the code so difficult to work with if(H.disabilities & FAT)//I share your pain, past coder. if(H.overeatduration < 100) to_chat(H, "You feel fit again!") H.disabilities &= ~FAT +======= + //The fucking DISABILITY_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with + if(H.has_disability(DISABILITY_FAT))//I share your pain, past coder. + if(H.overeatduration < 100) + to_chat(H, "You feel fit again!") + H.remove_disability(DISABILITY_FAT, OBESITY) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind H.update_inv_w_uniform() H.update_inv_wear_suit() else if(H.overeatduration > 500) to_chat(H, "You suddenly feel blubbery!") +<<<<<<< HEAD H.disabilities |= FAT +======= + H.add_disability(DISABILITY_FAT, OBESITY) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind H.update_inv_w_uniform() H.update_inv_wear_suit() @@ -1269,7 +1293,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) . += (health_deficiency / 25) if((hungry >= 70) && !flight) //Being hungry won't stop you from using flightpack controls/flapping your wings although it probably will in the wing case but who cares. . += hungry / 50 +<<<<<<< HEAD if(H.disabilities & FAT) +======= + if(H.has_disability(DISABILITY_FAT)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind . += (1.5 - flight) if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR @@ -1315,7 +1343,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) +<<<<<<< HEAD if(user.disabilities & PACIFISM) +======= + if(user.has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You don't want to harm [target]!") return FALSE if(target.check_block()) @@ -1388,7 +1420,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) return 1 else user.do_attack_animation(target, ATTACK_EFFECT_DISARM) - + if(target.w_uniform) target.w_uniform.add_fingerprint(user) var/randomized_zone = ran_zone(user.zone_selected) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 2b86d2945d..cd343953eb 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -725,7 +725,11 @@ /obj/structure/cloth_pile/proc/revive() if(QDELETED(src) || QDELETED(cloth_golem)) //QDELETED also checks for null, so if no cloth golem is set this won't runtime return +<<<<<<< HEAD if(cloth_golem.suiciding || cloth_golem.disabilities & NOCLONE) +======= + if(cloth_golem.suiciding || cloth_golem.has_disability(DISABILITY_NOCLONE)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind QDEL_NULL(cloth_golem) return diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 7264e9ad95..5c4e92dd9d 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -609,7 +609,11 @@ generate/load female uniform sprites matching all previously decided variables if(BP.dmg_overlay_type) . += "-[BP.dmg_overlay_type]" +<<<<<<< HEAD if(disabilities & HUSK) +======= + if(has_disability(DISABILITY_HUSK)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind . += "-husk" /mob/living/carbon/human/load_limb_from_cache() diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 09d00465ee..db60922f13 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -122,7 +122,11 @@ if(L == src) return FALSE +<<<<<<< HEAD if(disabilities & PACIFISM) +======= + if(has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return FALSE if(enemies[L]) diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 5a4ba686b2..9cd99fde8a 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -19,7 +19,11 @@ if(!HD) //Decapitated return +<<<<<<< HEAD if(disabilities & HUSK) +======= + if(has_disability(DISABILITY_HUSK)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return var/hair_hidden = 0 diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index 7c40b6f144..e0743e2815 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, NEARSIGHT disability, and HUSK disability. +// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, DISABILITY_NEARSIGHT disability, and DISABILITY_HUSK disability. /mob/living/carbon/damage_eyes(amount) var/obj/item/organ/eyes/eyes = getorganslot(ORGAN_SLOT_EYES) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 701fa0c7bc..2e65814d56 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -290,7 +290,11 @@ else . += "-robotic" +<<<<<<< HEAD if(disabilities & HUSK) +======= + if(has_disability(DISABILITY_HUSK)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind . += "-husk" diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 3ae022cdcc..1450d05e2b 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -126,7 +126,11 @@ /mob/living/proc/handle_disabilities() //Eyes if(eye_blind) //blindness, heals slowly over time +<<<<<<< HEAD if(!stat && !(disabilities & BLIND)) +======= + if(!stat && !(has_disability(DISABILITY_BLIND))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind eye_blind = max(eye_blind-1,0) if(client && !eye_blind) clear_alert("blind") @@ -137,7 +141,11 @@ eye_blurry = max(eye_blurry-1, 0) if(client && !eye_blurry) clear_fullscreen("blurry") +<<<<<<< HEAD if(disabilities & PACIFISM && a_intent == INTENT_HARM) +======= + if(has_disability(DISABILITY_PACIFISM) && a_intent == INTENT_HARM) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You don't feel like harming anybody.") a_intent_change(INTENT_HELP) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index fbc8e85eb4..9bdd419bca 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -819,7 +819,11 @@ if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser()) to_chat(src, "You don't have the dexterity to do this!") return FALSE +<<<<<<< HEAD if(disabilities & PACIFISM) +======= + if(has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You don't want to risk harming anyone!") return FALSE return TRUE diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index ed07313862..f096f3b6fd 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -136,7 +136,11 @@ to_chat(user, "[src] can't be grabbed more aggressively!") return FALSE +<<<<<<< HEAD if(user.disabilities & PACIFISM) +======= + if(user.has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You don't want to risk hurting [src]!") return FALSE @@ -193,7 +197,11 @@ M.Feedstop() return // can't attack while eating! +<<<<<<< HEAD if(disabilities & PACIFISM) +======= + if(has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -210,7 +218,11 @@ M.visible_message("\The [M] [M.friendly] [src]!") return FALSE else +<<<<<<< HEAD if(M.disabilities & PACIFISM) +======= + if(M.has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -229,7 +241,11 @@ return FALSE if (M.a_intent == INTENT_HARM) +<<<<<<< HEAD if(M.disabilities & PACIFISM) +======= + if(M.has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -255,7 +271,11 @@ return FALSE else +<<<<<<< HEAD if(L.disabilities & PACIFISM) +======= + if(L.has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(L, "You don't want to hurt anyone!") return @@ -280,7 +300,11 @@ grabbedby(M) return FALSE if("harm") +<<<<<<< HEAD if(M.disabilities & PACIFISM) +======= + if(M.has_disability(DISABILITY_PACIFISM)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE M.do_attack_animation(src) @@ -370,7 +394,11 @@ //called when the mob receives a bright flash /mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash) +<<<<<<< HEAD if(get_eye_protection() < intensity && (override_blindness_check || !(disabilities & BLIND))) +======= + if(get_eye_protection() < intensity && (override_blindness_check || !(has_disability(DISABILITY_BLIND)))) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind overlay_fullscreen("flash", type) addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25) return 1 diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index b1d0484086..a8227c41bc 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -135,11 +135,17 @@ GLOBAL_LIST_INIT(department_radio_keys, list( // AIs use inherent channels for the holopad. Most inherent channels // ignore the language argument however. +<<<<<<< HEAD var/datum/saymode/SM = SSradio.saymodes[key] if(key && SM) if(!SM.handle_message(src, message, language) && !message_mode) return +======= + var/datum/saymode/SM = SSradio.saymodes[talk_key] + if(SM && !SM.handle_message(src, message, language)) + return +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(!can_speak_vocal(message)) to_chat(src, "You find yourself unable to speak!") @@ -285,7 +291,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/proc/can_speak_vocal(message) //Check AFTER handling of xeno and ling channels +<<<<<<< HEAD if(disabilities & MUTE) +======= + if(has_disability(DISABILITY_MUTE)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return 0 if(is_muzzled()) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index d47385efc3..45363c9691 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -558,7 +558,11 @@ Difficulty: Very Hard H.regenerate_limbs() H.regenerate_organs() H.revive(1,0) +<<<<<<< HEAD H.disabilities |= NOCLONE //Free revives, but significantly limits your options for reviving except via the crystal +======= + H.add_disability(DISABILITY_NOCLONE, MAGIC_DISABILITY) //Free revives, but significantly limits your options for reviving except via the crystal +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind H.grab_ghost(force = TRUE) /obj/machinery/anomalous_crystal/helpers //Lets ghost spawn as helpful creatures that can only heal people slightly. Incredibly fragile and they can't converse with humans @@ -719,7 +723,11 @@ Difficulty: Very Hard if(isliving(A) && holder_animal) var/mob/living/L = A L.notransform = 1 +<<<<<<< HEAD L.disabilities |= MUTE +======= + L.add_disability(DISABILITY_MUTE, STASIS_MUTE) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind L.status_flags |= GODMODE L.mind.transfer_to(holder_animal) var/obj/effect/proc_holder/spell/targeted/exit_possession/P = new /obj/effect/proc_holder/spell/targeted/exit_possession @@ -729,7 +737,11 @@ Difficulty: Very Hard /obj/structure/closet/stasis/dump_contents(var/kill = 1) STOP_PROCESSING(SSobj, src) for(var/mob/living/L in src) +<<<<<<< HEAD L.disabilities &= ~MUTE +======= + L.remove_disability(DISABILITY_MUTE, STASIS_MUTE) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind L.status_flags &= ~GODMODE L.notransform = 0 if(holder_animal) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 3d50f03e17..a109859222 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, -// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. ////////////////////////////// STUN //////////////////////////////////// @@ -137,3 +137,82 @@ to_chat(src, "[priority_absorb_key["self_message"]]") priority_absorb_key["stuns_absorbed"] += amount return TRUE +<<<<<<< HEAD +======= + +/////////////////////////////////// DISABILITIES //////////////////////////////////// + +/mob/living/proc/add_disability(disability, source) + if(!disabilities[disability]) + disabilities[disability] = list(source) + else + disabilities[disability] |= list(source) + +/mob/living/proc/remove_disability(disability, list/sources) + if(!disabilities[disability]) + return + + if(!islist(sources)) + sources = list(sources) + + if(LAZYLEN(sources)) + for(var/S in sources) + if(S in disabilities[disability]) + disabilities[disability] -= S + else + disabilities[disability] = list() + + if(!LAZYLEN(disabilities[disability])) + disabilities -= disability + +/mob/living/proc/has_disability(disability, list/sources) + if(!disabilities[disability]) + return FALSE + + . = FALSE + + if(LAZYLEN(sources)) + for(var/S in sources) + if(S in disabilities[disability]) + return TRUE + else + if(LAZYLEN(disabilities[disability])) + return TRUE + +/mob/living/proc/remove_all_disabilities() + disabilities = list() + +/////////////////////////////////// DISABILITY PROCS //////////////////////////////////// + +/mob/living/proc/cure_blind(list/sources) + remove_disability(DISABILITY_BLIND, sources) + if(!has_disability(DISABILITY_BLIND)) + adjust_blindness(-1) + +/mob/living/proc/become_blind(source) + if(!has_disability(DISABILITY_BLIND)) + blind_eyes(1) + add_disability(DISABILITY_BLIND, source) + +/mob/living/proc/cure_nearsighted(list/sources) + remove_disability(DISABILITY_NEARSIGHT, sources) + if(!has_disability(DISABILITY_NEARSIGHT)) + clear_fullscreen("nearsighted") + +/mob/living/proc/become_nearsighted(source) + if(!has_disability(DISABILITY_NEARSIGHT)) + overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) + add_disability(DISABILITY_NEARSIGHT, source) + +/mob/living/proc/cure_husk(list/sources) + remove_disability(DISABILITY_HUSK, sources) + if(!has_disability(DISABILITY_HUSK)) + status_flags &= ~DISFIGURED + update_body() + +/mob/living/proc/become_husk(source) + if(!has_disability(DISABILITY_HUSK)) + status_flags |= DISFIGURED //makes them unknown + update_body() + add_disability(DISABILITY_HUSK, source) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 80ab6929d5..039c5ca951 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -1,7 +1,7 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. /////////////////////////////////// STUN //////////////////////////////////// @@ -162,6 +162,13 @@ var/blind_minimum = 0 if((stat != CONSCIOUS && stat != SOFT_CRIT) || (disabilities & BLIND)) blind_minimum = 1 +<<<<<<< HEAD +======= + if(isliving(src)) + var/mob/living/L = src + if(L.has_disability(DISABILITY_BLIND)) + blind_minimum = 1 +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind eye_blind = max(eye_blind+amount, blind_minimum) if(!eye_blind) clear_alert("blind") @@ -179,6 +186,13 @@ var/blind_minimum = 0 if((stat != CONSCIOUS && stat != SOFT_CRIT) || (disabilities & BLIND)) blind_minimum = 1 +<<<<<<< HEAD +======= + if(isliving(src)) + var/mob/living/L = src + if(L.has_disability(DISABILITY_BLIND)) + blind_minimum = 1 +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind eye_blind = blind_minimum if(!eye_blind) clear_alert("blind") diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 3f23b8ba22..4d27f920db 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -202,7 +202,11 @@ if(!user.mind.hasSoul) to_chat(user, "You do not possess a soul.") return 0 +<<<<<<< HEAD if(user.disabilities & DUMB) +======= + if(user.has_disability(DISABILITY_DUMB)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You quickly scrawl 'your name' on the contract.") signIncorrectly() return 0 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 1fb1846f4c..5e4e4744de 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -93,7 +93,11 @@ return if(ishuman(usr)) var/mob/living/carbon/human/H = usr +<<<<<<< HEAD if(H.disabilities & CLUMSY && prob(25)) +======= + if(H.has_disability(DISABILITY_CLUMSY) && prob(25)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(H, "You cut yourself on the paper! Ahhhh! Ahhhhh!") H.damageoverlaytemp = 9001 H.update_damage_hud() @@ -317,7 +321,11 @@ to_chat(user, "You stamp the paper with your rubber stamp.") if(P.is_hot()) +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(10)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind user.visible_message("[user] accidentally ignites themselves!", \ "You miss the paper and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 2d5fcc6e3a..f74643d2f1 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -65,7 +65,11 @@ update_icon() else if(P.is_hot()) +<<<<<<< HEAD if(user.disabilities & CLUMSY && prob(10)) +======= + if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind user.visible_message("[user] accidentally ignites themselves!", \ "You miss [src] and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ff7ed7653e..d3f915907c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -155,10 +155,14 @@ return - //Exclude lasertag guns from the CLUMSY check. + //Exclude lasertag guns from the DISABILITY_CLUMSY check. if(clumsy_check) if(istype(user)) +<<<<<<< HEAD if (user.disabilities & CLUMSY && prob(40)) +======= + if (user.has_disability(DISABILITY_CLUMSY) && prob(40)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You shoot yourself in the foot with [src]!") var/shot_leg = pick("l_leg", "r_leg") process_fire(user,user,0,params, zone_override = shot_leg) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 563b3d9ad5..8637928867 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -349,7 +349,11 @@ clumsy_check = 0 /obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user) +<<<<<<< HEAD if((user.disabilities & CLUMSY) || (user.mind && user.mind.assigned_role == "Clown")) +======= + if((user.has_disability(DISABILITY_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown")) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return ..() if(process_fire(user, user, 0, zone_override = "head")) user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!") diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index faf7de9010..40ea23291e 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -129,7 +129,11 @@ // A gun with ultra-honk pin is useful for clown and useless for everyone else. /obj/item/device/firing_pin/clown/ultra/pin_auth(mob/living/user) playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1) +<<<<<<< HEAD if(!(user.disabilities & CLUMSY) && !(user.mind && user.mind.assigned_role == "Clown")) +======= + if(!(user.has_disability(DISABILITY_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown")) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return 0 return 1 diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index ddb08db032..52a7f4cd10 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -667,14 +667,22 @@ var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES) if (!eyes) return +<<<<<<< HEAD if(M.disabilities & BLIND) +======= + if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(prob(20)) to_chat(M, "Your vision slowly returns...") M.cure_blind() M.cure_nearsighted() M.blur_eyes(35) +<<<<<<< HEAD else if(M.disabilities & NEARSIGHT) +======= + else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "The blackness in your peripheral vision fades.") M.cure_nearsighted() M.blur_eyes(10) @@ -765,7 +773,11 @@ M.visible_message("[M]'s body convulses a bit, and then falls still once more.") return M.visible_message("[M]'s body convulses a bit.") +<<<<<<< HEAD if(!M.suiciding && !(M.disabilities & NOCLONE) && !M.hellbound) +======= + if(!M.suiciding && !(M.has_disability(DISABILITY_NOCLONE)) && !M.hellbound) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(!M) return if(M.notify_ghost_cloning(source = M)) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 7bee2ef958..e6771d7db5 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -141,7 +141,11 @@ taste_description = "mint" /datum/reagent/toxin/minttoxin/on_mob_life(mob/living/M) +<<<<<<< HEAD if(M.disabilities & FAT) +======= + if(M.has_disability(DISABILITY_FAT)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind M.gib() return ..() diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index ca6a534ee0..ba3104976e 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -214,7 +214,13 @@ target.bodytemperature -= 200 /obj/effect/proc_holder/spell/targeted/abyssal_gaze/proc/cure_blindness(mob/target) +<<<<<<< HEAD target.adjust_blindness(-5) +======= + if(isliving(target)) + var/mob/living/L = target + L.cure_blind(DISABILITY_BLIND, "abyssal_gaze") +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind /obj/effect/proc_holder/spell/targeted/dominate name = "Dominate" diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 790942d897..6cffe0a939 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -217,7 +217,11 @@ C = owner no_update = 0 +<<<<<<< HEAD if(C.disabilities & HUSK) +======= + if(C.has_disability(DISABILITY_HUSK)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind species_id = "husk" //overrides species_id dmg_overlay_type = "" //no damage overlay shown when husked should_draw_gender = FALSE diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index f631400bee..8d96f03338 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -61,7 +61,11 @@ C = owner real_name = C.real_name +<<<<<<< HEAD if(C.disabilities & HUSK) +======= + if(C.has_disability(DISABILITY_HUSK)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind real_name = "Unknown" hair_style = "Bald" facial_hair_style = "Shaved" diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index 488f2e81b1..d156df8ea0 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -4,7 +4,11 @@ possible_locs = list("chest") /datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target) +<<<<<<< HEAD if(target.disabilities & FAT) +======= + if(target.has_disability(DISABILITY_FAT)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return 1 return 0 diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm index 98b2a84ac0..028b4ed5f1 100644 --- a/code/modules/surgery/organs/ears.dm +++ b/code/modules/surgery/organs/ears.dm @@ -25,7 +25,11 @@ return var/mob/living/carbon/C = owner // genetic deafness prevents the body from using the ears, even if healthy +<<<<<<< HEAD if(C.disabilities & DEAF) +======= + if(C.has_disability(DISABILITY_DEAF)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind deaf = max(deaf, 1) else if(C.ears && (C.ears.flags_2 & HEALS_EARS_2)) @@ -42,7 +46,11 @@ var/mob/living/carbon/C = owner +<<<<<<< HEAD if(iscarbon(owner) && C.disabilities & DEAF) +======= + if(iscarbon(owner) && C.has_disability(DISABILITY_DEAF)) +>>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind deaf = 1 /obj/item/organ/ears/proc/adjustEarDamage(ddmg, ddeaf) From 0381491643ba9a9fc4933cbc39ea8562b4e885ac Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 27 Dec 2017 07:08:26 -0600 Subject: [PATCH 2/7] oops --- code/datums/actions/beam_rifle.dm | 12 + code/datums/antagonists/monkey.dm | 170 +++++++++++++ code/datums/components/cleaning.dm | 40 +++ code/datums/position_point_vector.dm | 239 ++++++++++++++++++ .../temporary_visuals/projectile_beam.dm | 70 +++++ code/modules/keybindings/bindings_atom.dm | 18 ++ code/modules/mob/emote.dm | 48 ++++ icons/mob/landmarks.dmi | Bin 0 -> 25137 bytes tgstation.dme | 5 + 9 files changed, 602 insertions(+) create mode 100644 code/datums/actions/beam_rifle.dm create mode 100644 code/datums/antagonists/monkey.dm create mode 100644 code/datums/components/cleaning.dm create mode 100644 code/datums/position_point_vector.dm create mode 100644 code/game/objects/effects/temporary_visuals/projectile_beam.dm create mode 100644 code/modules/keybindings/bindings_atom.dm create mode 100644 code/modules/mob/emote.dm create mode 100644 icons/mob/landmarks.dmi diff --git a/code/datums/actions/beam_rifle.dm b/code/datums/actions/beam_rifle.dm new file mode 100644 index 0000000000..3af5d13690 --- /dev/null +++ b/code/datums/actions/beam_rifle.dm @@ -0,0 +1,12 @@ + +/datum/action/item_action/zoom_speed_action + name = "Toggle Zooming Speed" + icon_icon = 'icons/mob/actions/actions_spells.dmi' + button_icon_state = "projectile" + background_icon_state = "bg_tech" + +/datum/action/item_action/zoom_lock_action + name = "Switch Zoom Mode" + icon_icon = 'icons/mob/actions/actions_items.dmi' + button_icon_state = "zoom_mode" + background_icon_state = "bg_tech" diff --git a/code/datums/antagonists/monkey.dm b/code/datums/antagonists/monkey.dm new file mode 100644 index 0000000000..8d7462b567 --- /dev/null +++ b/code/datums/antagonists/monkey.dm @@ -0,0 +1,170 @@ +#define MONKEYS_ESCAPED 1 +#define MONKEYS_LIVED 2 +#define MONKEYS_DIED 3 +#define DISEASE_LIVED 4 + +/datum/antagonist/monkey + name = "Monkey" + job_rank = ROLE_MONKEY + roundend_category = "monkeys" + var/datum/objective_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 + if(!owner.current.HasDisease(D)) + D.affected_mob = owner + owner.current.viruses += D + else + QDEL_NULL(D) + +/datum/antagonist/monkey/greet() + to_chat(owner, "You are a monkey now!") + to_chat(owner, "Bite humans to infect them, follow the orders of the monkey leaders, and help fellow monkeys!") + to_chat(owner, "Ensure at least one infected monkey escapes on the Emergency Shuttle!") + to_chat(owner, "As an intelligent monkey, you know how to use technology and how to ventcrawl while wearing things.") + to_chat(owner, "You can use :k to talk to fellow monkeys!") + SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) + +/datum/antagonist/monkey/on_removal() + . = ..() + owner.special_role = null + SSticker.mode.ape_infectees -= owner + + var/datum/disease/D = (/datum/disease/transformation/jungle_fever in owner.current.viruses) + if(D) + D.cure() + +/datum/antagonist/monkey/create_team(datum/objective_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.update_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + monkey_team = new_team + +/datum/antagonist/monkey/proc/forge_objectives() + if(monkey_team) + owner.objectives |= monkey_team.objectives + +/datum/antagonist/monkey/leader + name = "Monkey Leader" + +/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 + owner.special_role = "Monkey Leader" + +/datum/antagonist/monkey/leader/on_removal() + . = ..() + SSticker.mode.ape_leaders -= owner + var/obj/item/organ/heart/H = new + H.Insert(owner.current, drop_if_replaced = FALSE) //replace freedom heart with normal heart + +/datum/antagonist/monkey/leader/greet() + to_chat(owner, "You are the Jungle Fever patient zero!!") + to_chat(owner, "You have been planted onto this station by the Animal Rights Consortium.") + to_chat(owner, "Soon the disease will transform you into an ape. Afterwards, you will be able spread the infection to others with a bite.") + to_chat(owner, "While your infection strain is undetectable by scanners, any other infectees will show up on medical equipment.") + to_chat(owner, "Your mission will be deemed a success if any of the live infected monkeys reach CentCom.") + to_chat(owner, "As an initial infectee, you will be considered a 'leader' by your fellow monkeys.") + to_chat(owner, "You can use :k to talk to fellow monkeys!") + SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) + +/datum/objective/monkey + explanation_text = "Ensure that infected monkeys escape on the emergency shuttle!" + martyr_compatible = TRUE + var/monkeys_to_win = 1 + var/escaped_monkeys = 0 + +/datum/objective/monkey/check_completion() + 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())) + escaped_monkeys++ + if(escaped_monkeys >= monkeys_to_win) + return TRUE + return FALSE + +/datum/objective_team/monkey + name = "Monkeys" + +/datum/objective_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() + 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() + 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() + 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() + 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() + if(infected_monkeys_escaped()) + return MONKEYS_ESCAPED + if(infected_monkeys_alive()) + return MONKEYS_LIVED + if(infected_humans_alive() || infected_humans_escaped()) + return DISEASE_LIVED + return MONKEYS_DIED + +/datum/objective_team/monkey/roundend_report() + var/list/parts = list() + switch(get_result()) + if(MONKEYS_ESCAPED) + parts += "Monkey Major Victory!" + parts += "Central Command and [station_name()] were taken over by the monkeys! Ook ook!" + if(MONKEYS_LIVED) + parts += "Monkey Minor Victory!" + parts += "[station_name()] was taken over by the monkeys! Ook ook!" + if(DISEASE_LIVED) + parts += "Monkey Minor Defeat!" + parts += "All the monkeys died, but the disease lives on! The future is uncertain." + if(MONKEYS_DIED) + parts += "Monkey Major Defeat!" + parts += "All the monkeys died, and Jungle Fever was wiped out!" + if(LAZYLEN(SSticker.mode.ape_leaders)) + parts += "The monkey leaders were:" + parts += printplayerlist(SSticker.mode.ape_leaders) + if(LAZYLEN(SSticker.mode.ape_infectees)) + parts += "The monkeys were:" + parts += printplayerlist(SSticker.mode.ape_infectees) + return "
[parts.Join("
")]
" \ No newline at end of file diff --git a/code/datums/components/cleaning.dm b/code/datums/components/cleaning.dm new file mode 100644 index 0000000000..5d9d5992e2 --- /dev/null +++ b/code/datums/components/cleaning.dm @@ -0,0 +1,40 @@ +/datum/component/cleaning + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + +/datum/component/cleaning/Initialize() + if(!ismovableatom(parent)) + . = COMPONENT_INCOMPATIBLE + CRASH("[type] added to a [parent.type]") + RegisterSignal(list(COMSIG_MOVABLE_MOVED), .proc/Clean) + +/datum/component/cleaning/proc/Clean() + var/atom/movable/AM = parent + var/turf/tile = AM.loc + if(!isturf(tile)) + return + + tile.clean_blood() + for(var/A in tile) + if(is_cleanable(A)) + qdel(A) + else if(istype(A, /obj/item)) + var/obj/item/cleaned_item = A + cleaned_item.clean_blood() + else if(ishuman(A)) + var/mob/living/carbon/human/cleaned_human = A + if(cleaned_human.lying) + if(cleaned_human.head) + cleaned_human.head.clean_blood() + cleaned_human.update_inv_head() + if(cleaned_human.wear_suit) + cleaned_human.wear_suit.clean_blood() + cleaned_human.update_inv_wear_suit() + else if(cleaned_human.w_uniform) + cleaned_human.w_uniform.clean_blood() + cleaned_human.update_inv_w_uniform() + if(cleaned_human.shoes) + cleaned_human.shoes.clean_blood() + cleaned_human.update_inv_shoes() + cleaned_human.clean_blood() + cleaned_human.wash_cream() + to_chat(cleaned_human, "[AM] cleans your face!") diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm new file mode 100644 index 0000000000..2a98d57efd --- /dev/null +++ b/code/datums/position_point_vector.dm @@ -0,0 +1,239 @@ +//Designed for things that need precision trajectories like projectiles. +//Don't use this for anything that you don't absolutely have to use this with (like projectiles!) because it isn't worth using a datum unless you need accuracy down to decimal places in pixels. + +#define RETURN_PRECISE_POSITION(A) new /datum/position(A) +#define RETURN_PRECISE_POINT(A) new /datum/point(A) + +/datum/position //For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess. + var/x = 0 + var/y = 0 + var/z = 0 + var/pixel_x = 0 + var/pixel_y = 0 + +/datum/position/proc/valid() + return x && y && z && !isnull(pixel_x) && !isnull(pixel_y) + +/datum/position/New(_x = 0, _y = 0, _z = 0, _pixel_x = 0, _pixel_y = 0) //first argument can also be a /datum/point. + if(istype(_x, /datum/point)) + var/datum/point/P = _x + var/turf/T = P.return_turf() + _x = T.x + _y = T.y + _z = T.z + _pixel_x = P.return_px() + _pixel_y = P.return_py() + else if(isatom(_x)) + var/atom/A = _x + _x = A.x + _y = A.y + _z = A.z + _pixel_x = A.pixel_x + _pixel_y = A.pixel_y + x = _x + y = _y + z = _z + pixel_x = _pixel_x + pixel_y = _pixel_y + +/datum/position/proc/return_turf() + return locate(x, y, z) + +/datum/position/proc/return_px() + return pixel_x + +/datum/position/proc/return_py() + return pixel_y + +/datum/position/proc/return_point() + return new /datum/point(src) + +/proc/point_midpoint_points(datum/point/a, datum/point/b) //Obviously will not support multiZ calculations! Same for the two below. + var/datum/point/P = new + P.x = round(a.x + (b.x - a.x) / 2, 1) + P.y = round(a.y + (b.y - a.y) / 2, 1) + P.z = a.z + return P + +/proc/pixel_length_between_points(datum/point/a, datum/point/b) + return sqrt(((b.x - a.x) ** 2) + ((b.y - a.y) ** 2)) + +/proc/angle_between_points(datum/point/a, datum/point/b) + return ATAN2((b.y - a.y), (b.x - a.x)) + +/datum/point //A precise point on the map in absolute pixel locations based on world.icon_size. Pixels are FROM THE EDGE OF THE MAP! + var/x = 0 + var/y = 0 + var/z = 0 + +/datum/point/proc/valid() + return x && y && z + +/datum/point/proc/copy_to(datum/point/p = new) + p.x = x + p.y = y + p.z = z + return p + +/datum/point/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0) //first argument can also be a /datum/position or /atom. + if(istype(_x, /datum/position)) + var/datum/position/P = _x + _x = P.x + _y = P.y + _z = P.z + _pixel_x = P.pixel_x + _pixel_y = P.pixel_y + else if(istype(_x, /atom)) + var/atom/A = _x + _x = A.x + _y = A.y + _z = A.z + _pixel_x = A.pixel_x + _pixel_y = A.pixel_y + initialize_location(_x, _y, _z, _pixel_x, _pixel_y) + +/datum/point/proc/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) + if(!isnull(tile_x)) + x = ((tile_x - 1) * world.icon_size) + world.icon_size / 2 + p_x + if(!isnull(tile_y)) + y = ((tile_y - 1) * world.icon_size) + world.icon_size / 2+ p_y + if(!isnull(tile_z)) + z = tile_z + +/datum/point/proc/return_turf() + return locate(CEILING(x / world.icon_size, 1), CEILING(y / world.icon_size, 1), z) + +/datum/point/proc/return_coordinates() //[turf_x, turf_y, z] + return list(CEILING(x / world.icon_size, 1), CEILING(y / world.icon_size, 1), z) + +/datum/point/proc/return_position() + return new /datum/position(src) + +/datum/point/proc/return_px() + return MODULUS(x, world.icon_size) - 16 + +/datum/point/proc/return_py() + return MODULUS(y, world.icon_size) - 16 + +/datum/point/proc/mapcheck() + . = FALSE + var/maxx = world.icon_size * world.maxx + var/maxy = world.icon_size * world.maxy + var/move_zx = 0 + var/move_zy = 0 + if(x < 0) + x += maxx + move_zx -= 1 + if(y < 0) + y += maxy + move_zy -= 1 + if(x > maxx) + x -= maxx + move_zx += 1 + if(y > maxy) + y -= maxy + move_zy += 1 + var/datum/space_level/S = GLOB.z_levels_list["[z]"] + if(move_zx != 0) + var/datum/space_level/L = S.neigbours["[move_zx < 0? WEST : EAST]"] + z = L.z_value + . = TRUE + if(move_zy != 0) + var/datum/space_level/L = S.neigbours["[move_zy < 0? SOUTH : NORTH]"] + z = L.z_value + . = TRUE + +/datum/point/vector + var/speed = 32 //pixels per iteration + var/iteration = 0 + var/angle = 0 + var/mpx = 0 //calculated x/y movement amounts to prevent having to do trig every step. + var/mpy = 0 + var/starting_x = 0 //just like before, pixels from EDGE of map! This is set in initialize_location(). + var/starting_y = 0 + var/starting_z = 0 + +/datum/point/vector/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0, _angle, _speed) + ..() + initialize_trajectory(_speed, _angle) + +/datum/point/vector/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) + . = ..() + starting_x = x + starting_y = y + starting_z = z + +/datum/point/vector/copy_to(datum/point/vector/v = new) + ..(v) + v.speed = speed + v.iteration = iteration + v.angle = angle + v.mpx = mpx + v.mpy = mpy + v.starting_x = starting_x + v.starting_y = starting_y + v.starting_z = starting_z + return v + +/datum/point/vector/proc/initialize_trajectory(pixel_speed, new_angle) + if(!isnull(pixel_speed)) + speed = pixel_speed + set_angle(new_angle) + +/datum/point/vector/proc/set_angle(new_angle) //calculations use "byond angle" where north is 0 instead of 90, and south is 180 instead of 270. + if(isnull(angle)) + return + angle = new_angle + update_offsets() + +/datum/point/vector/proc/update_offsets() + mpx = sin(angle) * speed + mpy = cos(angle) * speed + +/datum/point/vector/proc/set_speed(new_speed) + if(isnull(new_speed) || speed == new_speed) + return + speed = new_speed + update_offsets() + +/datum/point/vector/proc/increment(multiplier = 1) + iteration++ + x += mpx * 1 + y += mpy * 1 + if(mapcheck()) + on_z_change() + +/datum/point/vector/proc/return_vector_after_increments(amount = 7, multiplier = 1, force_simulate = FALSE) + var/datum/point/vector/v = copy_to() + if(force_simulate) + for(var/i in 1 to amount) + v.increment(multiplier) + else + v.increment(multiplier * amount) + return v + +/datum/point/vector/proc/on_z_change() + return + +/datum/point/vector/processed //pixel_speed is per decisecond. + var/last_process = 0 + var/last_move = 0 + var/paused = FALSE + +/datum/point/vector/processed/Destroy() + STOP_PROCESSING(SSprojectiles, src) + +/datum/point/vector/processed/proc/start() + last_process = world.time + last_move = world.time + START_PROCESSING(SSprojectiles, src) + +/datum/point/vector/processed/process() + if(paused) + last_move += world.time - last_process + last_process = world.time + return + var/needed_time = world.time - last_move + last_process = world.time + last_move = world.time + increment(needed_time) diff --git a/code/game/objects/effects/temporary_visuals/projectile_beam.dm b/code/game/objects/effects/temporary_visuals/projectile_beam.dm new file mode 100644 index 0000000000..af621e29da --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectile_beam.dm @@ -0,0 +1,70 @@ +/proc/generate_projectile_beam_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! + if(!istype(starting) || !istype(ending) || !ispath(beam_type)) + return + var/datum/point/midpoint = point_midpoint_points(starting, ending) + var/obj/effect/projectile_beam/PB = new beam_type + PB.apply_vars(angle_between_points(starting, ending), midpoint.return_px(), midpoint.return_py(), color, pixel_length_between_points(starting, ending) / world.icon_size, midpoint.return_turf(), 0) + . = PB + if(qdel_in) + QDEL_IN(PB, qdel_in) + +/obj/effect/projectile_beam + icon = 'icons/obj/projectiles.dmi' + layer = ABOVE_MOB_LAYER + anchored = TRUE + light_power = 1 + light_range = 2 + light_color = "#00ffff" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + flags_1 = ABSTRACT_1 + appearance_flags = 0 + +/obj/effect/projectile_beam/singularity_pull() + return + +/obj/effect/projectile_beam/singularity_act() + return + +/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 = 0, p_y = 0, 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" + +/obj/effect/projectile_beam/tracer/aiming + icon_state = "gbeam" diff --git a/code/modules/keybindings/bindings_atom.dm b/code/modules/keybindings/bindings_atom.dm new file mode 100644 index 0000000000..9738175d2d --- /dev/null +++ b/code/modules/keybindings/bindings_atom.dm @@ -0,0 +1,18 @@ +// You might be wondering why this isn't client level. If focus is null, we don't want you to move. +// Only way to do that is to tie the behavior into the focus's keyLoop(). + +/atom/movable/keyLoop(client/user) + if(!user.keys_held["Ctrl"]) + var/movement_dir = NONE + for(var/_key in user.keys_held) + movement_dir = movement_dir | GLOB.movement_keys[_key] + if(user.next_move_dir_add) + movement_dir |= user.next_move_dir_add + if(user.next_move_dir_sub) + movement_dir &= ~user.next_move_dir_sub + // Sanity checks in case you hold left and right and up to make sure you only go up + if((movement_dir & NORTH) && (movement_dir & SOUTH)) + movement_dir &= ~(NORTH|SOUTH) + if((movement_dir & EAST) && (movement_dir & WEST)) + movement_dir &= ~(EAST|WEST) + user.Move(get_step(src, movement_dir), movement_dir) \ No newline at end of file diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm new file mode 100644 index 0000000000..5487b5b284 --- /dev/null +++ b/code/modules/mob/emote.dm @@ -0,0 +1,48 @@ +//The code execution of the emote datum is located at code/datums/emotes.dm +/mob/emote(act, m_type = null, message = null) + act = lowertext(act) + var/param = message + var/custom_param = findchar(act, " ") + if(custom_param) + param = copytext(act, custom_param + 1, length(act) + 1) + act = copytext(act, 1, custom_param) + + var/datum/emote/E + E = E.emote_list[act] + if(!E) + to_chat(src, "Unusable emote '[act]'. Say *help for a list.") + return + E.run_emote(src, param, m_type) + +/datum/emote/flip + key = "flip" + key_third_person = "flips" + restraint_check = TRUE + mob_type_allowed_typecache = list(/mob/living, /mob/dead/observer) + mob_type_ignore_stat_typecache = list(/mob/dead/observer) + +/datum/emote/flip/run_emote(mob/user, params) + . = ..() + if(.) + user.SpinAnimation(7,1) + +/datum/emote/spin + key = "spin" + key_third_person = "spins" + restraint_check = TRUE + mob_type_allowed_typecache = list(/mob/living, /mob/dead/observer) + mob_type_ignore_stat_typecache = list(/mob/dead/observer) + +/datum/emote/spin/run_emote(mob/user) + . = ..() + if(.) + user.spin(20, 1) + + if(iscyborg(user) && user.has_buckled_mobs()) + var/mob/living/silicon/robot/R = user + GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R) + if(riding_datum) + for(var/mob/M in R.buckled_mobs) + riding_datum.force_dismount(M) + else + R.unbuckle_all_mobs() diff --git a/icons/mob/landmarks.dmi b/icons/mob/landmarks.dmi new file mode 100644 index 0000000000000000000000000000000000000000..120745ed4437fb81639f00cae0f2399a042748d4 GIT binary patch literal 25137 zcmXt91yme8*IwM+rNzCtON)E);<5z_6nB@UxRm0qrMSBmcXuuB?r!_f`9NMFoLC81iyb>Ok80-+_z>{Hw3nAb~(ICSG53T%^pLO`R+q zTrBPFKp>Bd!~{_lI8OAw{k6iX;a@pbZj1&9(&W&HuY7{*eOqi5cUd^o5)Xdd;ckc-iYCFUU zKLgnU%%tLdDa_US-_^8`u5Ov3bh+V8QGKVXIn@yuB##pz%wOiR?MWLE?9&Ijp=1i* z$VCpwO3|miCy9oGNU3MbcCK16KMxr!Ur{L!3}Bfk8JF5Tn{)|VDel5sbD{QwcjrXi z+y?&YB>q{2gxyJ>w0<5P9+W0&enAubu`7w;T3g}=%KSV$y2kV-4gyhvudCVdkRw zlIts5f047kP4(8y;W^2!N`aoyECEkE-<=ZZo_D-Wmdq1DT~zRa@O-y$?auhm-=0Fe zb-aH%{5{LF0X#~C>^AB59C$?xK~D*wh0tOtSsFQZxa%vG^*yoeonAPL3hXE$tZ$V^ zhV7_a=38OvGNq!qCr6HfEI+J9c-Ls)V9hVyyWvcNBQL#b06_G`p{}(%rv$98@ev;7vyG~ z!UZgimFH1Gz%hv1;q z4ZW|3KqFC;)+nj!KEP;fkF2|$?LHH zL5S^z&z*zai+DTEE$ZV)p=R^@4Q39DDaS6=?(AB(@`LxL{f7i^517xtX6#*)$5~z+ zqdEU<#H;iMsC?oaOkVuBi>Frc1aF?P_p?8CDf=w<-|@Ml%=Td8z<8`djQBDA7>0Od zPT3cQHN~zrmvOUv>Htn3r=coMD&2>UcJtrP6=nGK(wPKegg5-jAEpHP2|r~#QHO_z zk7fwQv#+NY8$bkZr6VFEJ@+%+(X%ji3Gu5trI}%fn#w2}a|S09c8i7D}gn>W1?%&OUyv~&j!lT{zZ%}%{g9Qh@CFLG>kbW@zEUJxBaJ7~cggJ|dW z2pikcqI`?Oi=)}>J7tC}d%IQ~{M=MmTBN@klD_R(RT0v)apRy%QY4Yck{z4hWbbr+ zf5xij;om+db2NDI!axX?UQtj$pae9JCfmWtdwN}-OzzEifxY4l?qw+0*!ha)ufrUS zgTBb{TZ;n!ONp_`MjVW0J9LqN;b;!;%Q0@}+M3be=qNsnvWkItc4ZP{Xag59>3>Qy zk?8VN*W?(oXd8JzSmL$LcK~Gx(V1SjZ1yIIxSV)&(o!d}GS#9+aH z8T`g}ra{%Io8A&gw^m~X+bBZokeN$(#9J%F%Kf=wB1R4l)sy9VmVSGc(k<;4E3{;G zu=&YiwHFli&mM%)?O-ZYHc0C3)ir*wzA`q$XzIYlv98DZZU5)d(ytC_?TT#CvG)4N z+qd^We*DOV&X=Q)4sA9?VWiPbm{xDe?yfyO?!$2SUMmI4Nqqg9vsit?9)g}GXQlOP z>+G9F&!#CD$9Q&zavhxBQF)DX*T`JH#s8AT>20V0@~9nQ3;f#?5zO89J~O@gTnc}+ z#oatFnnW~+!11zMQwHN==VgvIsccP$;Y=?X1Snu)U_cH^?pIm3j6dJr+CoN0pS6DH zGy8(omvAlXDJ8eFGZfEbzpwO9SO4I7^OFJj>3_-c__D;c+ggT*XB=Rw`Z$FdaK-J@ zd#9&tid#&+?RC?y%9v)m-S*s8pC&~4i9n`*g!oI3dhJcV^*&YdZ%uV0FbI>0=rvWn z9Y>`QlaTB@Ywz*%5?%;tmTm95mJn;0%Afs2|AK7y8@+V5A_d^-vt zoe1MdM~{y!-W(nY<#%X7tS7QQZgEe@MU`QY@lEC{60t>PD|faN7?6r)vKh8i8TTN9 zvOM=l?oO8eG-g-XpPFuy?g!rLAz@+GkE;`{4Fkr-Lj%_))({YQ|mRJh-D7se; zTu~vlZ|u{5Gx33i;HWoNAlrJEnzKb@}jrDAm(d2@#Vqd=CgCVcHc6N54VL@hQ1%`~ZST{J3wzf9N z=3SaeD*2CcNeuzRO}5Y(VTt^%#-budOEy)<-#ZmUaN6#4uTBEKfSR#`gL1);=hOn1 ztLmQBa}1%!MdPOfZ&b*)Z+X;ZAzR=lS0ZVYmfM=0#VPW@tHJ{MIPCPG)=1X(}JQlAB76Q!M)9lVg8`){>mDHPH6bGYzYgt!TsStbp~4>YbnR^75=!0i|=3)x~bd zjbaNSnkedAObsg<)*JY5(Q@?HjF;krBpt zu=N&J+eg#5ctx?Q*=-x{OQ7Cz$>-$OG3T-oe?v zzhlj}ROXFT(LX2%9@PJngvLJs?sEzUjKBF<8q?+uxfmwHzzoqWMYPt@O?g|ZiMe?{ z;LxO`rcN!lTGwyh40mjT6`n#*T##}m+BZSyOS)>XgPS+OCnq+bFU*PEqK`v7IZx;8 zq4C=!0g%Ta77#G_i8Dm0_`;7l8^e{x`&avt_%eNSc%lc7_p9m~5pyK}B>@8=5NPx2 zp(TUpW+e$5bqtjxhxH#-)(aJmr_1$19XC^dWRD3dxso33O%Bz`wxA!V3LJPS2?iR* zT224`!73b=41MoAyvojaxi#-AemwA5r(Fbzc(p1y?5#CIBbzmvN(rf~>AqM*v^dSf zRocf#8vOL+0z}@%K`=3&NTc3sik1#4LpYxeA6J}~NpwL)nSI+~> z4t&Gi{D10&Hn7Sw@tKP;Ffe8+dq);F8N1iX{CZ~Y%-9#6tkobhu`7)Aa!gjwprxf{ zbcOi;mJHq6-i8x<>NDKhkIc%q9VvKmWvy5XMc3(E1MG4`uYrDpll31pOFusQFw`Csg&SV`359PhNNp5-8||XsA$WKPk$FK3s1J03UA@Y%Zqr+ZHl__go>*yG1B=@OdFCF2TT8k<8J_9U&iuAj%*5Te>Kj?qONq;@pqg$F z)FSjoiH73Rn3{fl^cA$?CFm~BU}R(arCVzbL!g-fv`+vduGS}n&Y^Z1<-7Ub6}zwl z`Gc!lhKug>i&4nM$SaOqSNl2IBHY46_TKF~l~_`*FPrz5m&Th!fr3{O93s~g4rk#{ ziE)S>p}u&BvIBjF45QbUeQm%Hz1XGByb*qI>ue84Kw)|+hV|!}q`MrrT;85;eetEk z8>QP^czyGAsHvrTQtnAmA^WBGaxRjMM(q3+?L%!(z;zZV@b0Z(;;w&cJfunL^@6{; zp`bV(PwB_#$>+4zmV*RPHl!L!Dpn&vY{AaZGCz@X-a7B=CAqFqx?<`?2KJ>epMH6=~q9)&7i z%{6LOeFH7^8Q*`3wwf0DKpWTJ|G9qshcfW^HgKQH>xiN3#+PSqe%+H+*cXfDSM1(O z%g_NLV^PfAI{#{KKXFg=@B3xPSn#Z-5LA?v1xZ$zjQrF_Zickn4tZK#V`$;~pz?yl zr&s!hUxYSG4G8`ft1V8=A_i_PA^IpNI=VV5&&G+W+h4+Nu1ca!8yzKF+l12j?X@Zj zRkFuZI8EVC1?v6cy~XPHa&@xe(Ev|oYhH0$)ii#3!ejV%&})Yl`iM%VP-3;|0P3RTzuta^EkapeCn;~NE+6B9~u(IT1?MUgThL3RY&Dt_#?ClS^P9Kj+oP`=c z>>OLGz;gVaA*op7E2KiD)b=&VCf1{Y)|ic`7JmtF%XqpP)@gAmMy~RCbTXdqWy(!2 ztfQwEF30{?u$Li3m>XpKuRk&qY>QX7J$v&aG=@+j!l>2E>aa72lTS2=t=b|zV$8Z1 z%b=qTFV|{ZWkkt%PI&uHXEP=?xAl|2P1Bn9k2)$Wg(11mpUa4$AU~aJo=knhqh8A* z*x6ukxfV;CSV(6^v$GTyg)B%t{tBPY!HRxJ%tc4&c%hts)PT|!m~diZVmcF9v=feH zf@}E&ysxjjKLz-#7BPa6%Cep_a>`KbqyVpCxSL^c0V@Ff{>JLV+ldRtl=0!Ts~#0_ zAEKHW+TdtRMF!!vGtF_YiIo!cA158+?iS4G(m&$Af@EGo-o7qR?7SX}G6n07rjddEwRUh2|9YmHkf( zv-P)c-~KR3xQaxT2R-#lB0PkOXQdRdx&TXCQ%lQL517L7wxPMJscqEhV6FO{;3I-m z-@4k0h<;;d|8Py$>l+rVtCqj_+&x+SJJsf8JV)fy{%Uc@$|paXdbpAi+uGXNq4Dto z%L#XkWn|yU!I42q-l2?MGIu7hpMSNg*j5y5j-V$AiL0M^CVoy!G0tr!n;ON3>-FBe zLRQPylyI((5?OcHPzw}c2vbg%28ES`tLvML719^}J~8kN<{OjTUq|iKYnmQlJzFGm zKfe8|$0FusRU%+9|AAgPEvT)nZR`EJcNk*k=Jepx6?x#)!NE@6y#eD#UQM68>reD; zJQ3zfc>^j-p!3g3q>}Q@)Z7av+>DUPX-gXe)h;aPmb5YtDYRBHg;)%~-qCP#YYd2TbI0Qi{F*9Mp$Lg4mj`Ni8RF!PbueF$%Qv?~s|*w9 z5_p_ZL1->S!=TV77Q9|HIFZAtW)i?H8r~uz0lW(jf%K_A&fNdS7`NK=vuPb#aK;SE z8AW$L;1JQV&-S(dC3_4)W1xO9&Ja(9I)m58laWdU-9?t?g$DehWY>dGk1#0VY%AGp z38Mo1Apf;Zol$6581m&|VRrxOYUbkNBJ)1j?=kq-JK?v5y8sbJ7pQGn+z9x9!eioG z|DOX!AE9P2-Ie802#IN_Gs;&@d^#Z^1-v-7bJ1Ugp=7JAUa?tObBx2-I5D3i>pV}hPB;HKF7$1Umlbj z(Wq$i^#)N>V!!t?x^(_-W$3$uC^7z6>;Fg0oDO<5`xRZpX@&M`rv@DHlx zd!!DU_|1qm>ZMEu^Wml?E$Ic7@x3~E`*B%W`HOiA4Jz4LS$(S`h&4lj3C~0XM5g9e z!~V^Iy7iaVpxqV57)T-G?i*w@yPq4WMbm?9kgM+JZ?pxLZuU`YD#vkawcqf&Z%
    $V&F`=JW?-QRTYg+v?2bqjpW z#p~}5Pr1>KJ{y6*nOSgC=dgolV4vdh8Suz?joY9a)4`w)<#hPY`@nJ7IEgYWkKvpb zSXkopn8eJnTM`RU)2Hp934W${L+hY05?8tZ4rCk6Y9gu4v^mO~nDO1k#+NS zdYe?IcS6$l2H@FZjIaN=#ljwr!#sQ^3U@3~37&7}3HPLWSNj_*{JV~So0*x>7Umh7 zS;`;uby%*A2Ja+czaEASE?TU0rW@HQV(2bZ^An>53(gw2BT8$LS#nLvO>e zaoow|FY-?qsL$NCZ$OESj#=+M$}_x9{L0GPwnrX(mZaU^LzR8IM%?`UTMCO<%;P)b zf6`EMGon(*D7fYXb|hJ`K>6DyxZOvPZiH=x{pq7xAv+;4G2?jZNA1sbx0JjrvVyp_ zA5*x!E50+%tbnBZ2x91lvu+cxd^D&wO;18bj);2uWviF# zH6dm5PZ8?sVEgx`2#=TqC-;*a`y9tEvKj?E4b9NHzd#ma+{QWkxc4h8&26D$E?Znh?WOwsf1^`5lY zHB7Jl^+x+_kJl&HtcP3eBp7$dns`VP9+ENcShi=NS?5w$;Nj$NxIZ#c)8{smlas2B zBZNbkBddABJhsaT711uHV`;n*7wbxKTFACbHNilQwmtY7LBeMI?{_0G?e9ONzCG*} zGg!LaP}V@ZgVAnVL}5CI!2@C1LM@V>vByWYU89ODfKT~tFQ1^vOP{eDlK)4T1@i8X z_S)BK*mH{s=5A;g()8MpAE)V(sA9+6Bi_qvpGu*;n`%@; znYn=j3{nQ2HF3=anQbg-Pqs3dGSF{p_Y8|ojx-=qm%{+Y2p-5D#^3CZiq{rvV))X2 z2h#}tQDpq{LyY!OsMw^W%;V|&(Tj^ZIo(1IGX+Yi+}>3nmJ(NR%mYkxhxGy;HL z4MQXRFzM)g|Gg&&oNpA99G%s*+GYYN0#=TiuU)WhOkFe9?|Q*BG$6}Gq>WNuG>6-U zuidGAfQ=V(q^tMOyj%f=3ql9M5a@^c2OTtmp+|zdM?*uy!+(wJGleRJfWd%&!@Mpk zC>lGUS9DVVkMj1m)wBW22+8|Uc*avzrDkrUbgP2J9&R;cV?8k3OlESG2 zatU#_#HyzNN@Rr|ej1uUAYkutg%K|j;2KVrWCOSVRo>>j*Yy8yu=R%FL|gQM$ z>;c#UIUpywWb(feSLw?WQblVywEd4euRN8}2lu2^lRQ}Es25G~DShD+>C8sS3pU&2s1oTj-oD6XpKfNZk{3 zH^YdHV5di%Wk$EbMz>t?2LPLJTjZ65R904+P`s@Ot{U90G%G4#(gJ7)FT9M5Or7n& zBoc1(FVzD47USfZ+?}$8Zk*<$#KwTizzk8)^#WSjN4q$_!tWTJz!tNvYrGhWkVN}W zcxe%lzVm!VN8clq7d*be0EUglXv%NA0>f6f;rryCp-a-AS1T*50y+v1aX#<6v+}{i z5v*qTn4ZH{{FvtlZZ59HR`<%d8ErP0BOyWuFhY~(HGLpCYLlnN!b-5gdB?(Q+twVx z{zT}-qG>da-lxgjsN3U(;|$lWV56N&hU|^*;HO)RkwHZ!s=d!_o=gOU1rTAKYrnd= zzEZ5SonB|ALvnYg5;m`i;bHZ0dV2c$U)tIyCF7Ge`77C0T+3G5b8vH-7In^kr*2|O zmnA*EvH`FE6wIp!+^vgEvp=yak$R4eC;4^ncCa5U7E-L2=PSQFnVg0ydR$d!Nv-~* z5~S07xtL{JI~B$(8hmWsSM*)i=rEK|=dZeX|$&SHC-&4Vl8m`P)X5S>R81 zF^rk`u(UfK7y3xDngPuKp$`D4rFKh+6n_pVuMMStE*mm#F>#m&c1!N)Ku=W2_kqO6 zeYos_t30H8mH+eiaL0V$^e3!@XgbT5P)CNUb`!jqhcN-@clH>;DT7;nejwcfZjHmA zw}YiWNV$woXDfnnad8PZ+6*g(!`?q?YHFk)5J(c6;c!KjP!ZWHqMXn}ZB z$${vt z)$bb_^fAU0r-@PU?T*3xSfE4#{y@ zBBep~67LIa7e+BiF85h+n&ef;w)S_x;{Vv-5WzQW>M>ZaG${87Oy< zK)kc7>j!}PO|`n)tH<3`N#hgee*-fe1^msDX z@Z6;e=C!oF=rJBjpr`4YAU50HF4hf=XD)DY14SELV1Z%--fW2VVJL|Y)p zh~X&Fi8UqRTR3Q7!l1j>(A$Xo9#=N{J>7>7KLwrl4)8ecG>Me81%XG{Xjf3n5n{hwPlyrS-mkrvkUTiQW!zGV)1{ z15olvMc$-^Iut3&rLG_L*^Wp#OYII~rN#zW-^}DKt7~iV0N8aAh~t#AKPhE@@+Ic^ z9;1wf(T5k`r<-EjLi*VeW+^}w zIy$H^9BXDdv`J5x+2xFkTi&W*uYf9BFn7*(QvUa&>_S#D0DMlt{)8a9jOaq4!RoS z_TCsHwf$PBPC`G)&f^Bqp$hUj6F3{g9QHHO-A(b+8`@^SC;omUq&LRk6Y^|kH@=F$pHq_6elQd7sBj$| zv-Ol{Xc4iKJc363@Ja?HB7xtMIUKu4aeH__kp7j`c|0bbn)?T9S+~)FX4lmv0XRLx z`bN?A>X!ee(8Szne?tilz8Z_$IzMjCyP+@sio|%-9aei9|0tn z|K<%I{5dE*K7wUh6mu)Ey#9eVuh0s;Uvx8mpZRp+g7kN;UL;ubup>JsnkA-0y!8W% z0-S9lV8Nx)@N|s3f{GGB;N59yji_{~*7WGkQ$dGT)J8BGQN-)>{lLUTG%(F+T2r(G zfHM#mPIW*aglq;6V6*HuNVsU%I(TJDIODG}g3D}~g+bwMgv3t(nQhRnhk@^O0}pk) zkZcQ;7ydE-=$VPSI3@g7T;mT$>YH9U%6m~ipG2g+-Q8*k)X(@}@^@}#reUH0@Zz6B zqI{pA1aB>PH(JbhcPDV$P>)yzAB){U z#g0!G(IiM7s>s4duVN$i-d{}A(_AVPMSM3VyRv(eWlDQzER-*&zbASeY^X%dV#SinEv5BXVmXUS!dr2=D(hZn=2bXT)-p$dm`S~^5^u%wshPE z9J+@MGQ*n)y4dmFq)xuL+uf)Y!T7wJY3Ac`8E6irV`~9f!C_=bV{~jf({8d?Sr4m3 zg|0|`aDP0l&?nTD>{D^Q6A%1F8&iU$6Wa|pP`T9p8E3JIFVA&vn3@P91&;aJQr=nB<0|i*1j$;medM`g*t&Br>)0w(=3lS|Yn< zX3Y0W>5Uu@!h_xRspQ(52h$qbU)gu7Ou4`^#To02LXsoFoQ|~ra4RWQF0M5 zzy8j@#)qS3OUs8RUbGC^B21m~!wJUJ*cdrramuTiKpV{CW4?|q2~KSX`gL`mfN;8r zv09_KZMmfO_^PmhXK?3K->{&AizBdS7v6oPc0j~S^zbH&w#E^?`Aos;q2??;0M33m zDy<9($76^9Y4`a^KiCQ@(B;_5vV4f&uHxj~J>{g40yRJVnYeEf++1JDxUgTlX)HXr z!ZiPAtbBEDopKu_D4pznQP9zb+mG#Gk*`PWG8d)Y^O2EpW%RDr-uZRU+eY-64(bxT$4Sp}FRUlNvK&8$<& zJVAc@w%6iuLE%dO%`jCsF1q)IuGGyIxA;|{Mb}6wW0}LxEKCT z!_eX1KsTKh)Ib-$v%^2WhF$2s7q71)VJuH#Mpz!c1nv(u49-~960hB0y^ zQi!}5C{E**D$*&Aimane`Gm@MPr+e}wCyY+ zqv?ArDTYmP{A1b|hMUIJCh-DG$3%2x?M-GG6nsWDwl;`jURs!hd*%kMB+W_pq50{A!=7-1I>?p_<`FkM*Tocnr$;3zgt#0N=j2 zOTjV0i;p01Xr}8cTgIdPLL|Gc`CF;{%T^@Pdd?qj?mkv(zVP$V(@yLFtd?#HFf*%* zwry7FLup~9z#a@`QA|0lm($CoGh`zf8SICo=$mT~>v zRhKNy63Z&->ifCBr(V0+LarqqfJZIHg#hQU(Fp?#|A8NHNG>bv22K9$3-Yq>)Wa(w zUmWeNU@MNUZ-~6MOFl&xYYDzR$v$ZZjC3(Ox&^a-XmJhNh&goe*+cK5nmL@W?zX>^ zVEX&}an;9u`ZATf>2a;Mz7?yuSe<>R*BHljt5OZdO@!azB)=Ya5Fp5qSqs~=EKS#J zbM!~Gb*@fA%70b}Xxcyy4-e&iz7caH-AoEvUvJME+ADCl9(|dbpVtb7 zZuLbPjJEn07Z;mgNba$-vGoJR_6k)N6Ynphu6DI_3E$J^Ns3$X*puTr3c3CAd(C?e zav7r7h{8Oug#@ugYHn>$-y!>)_{9dfEZ#}-@4<)rJXMG_{+jlcXxYKK@Cd?Jp?E3D zVc8;Q84`LNI4;>w4u&l242fNkmr{Na*S={K1&PT$dQAfC7MbYxN;7q`&F|EVz113& z$<-}ai`HVi#5XPHTUgEa_IA(@15=v?$MhP@7aJ+-jS(HK14>I-{>Vo6(^pF{eO6M! zFi-mCyfDT=V*Xb!Gmbi;L^+b2NV!n?+v;X)guZ+%{;#3k%bTDqL*s4LssqEW^ZgI1 zvo09Ep_)yZ&6L5%OPcnxxXT!_It?(9qNV%M!VKlz!mijsW@I_57kZ*k?Wk4T&6~N& z#l^o=M+6NcSLF2E$V0}4aBga8;O?9W;cFb+rKS68(St>nt! zm|)29eEG0*r9pE*l+tZdWux6H^PoZwmK6C9yQK8yzxJpJyEqhNQRy`Jf+ZZzUikL| z^xJ#L#|yrwW}XIX{J}u2aDiMRFF#RaGheE;rL_BX2$)#c3722?VxQWr{QbV^ePokh z_fYucu4Fy-xs8%8m?^9MVL^Y)MEphgFZAuXJB(rYQ8wwiGX7z%5B3PhFbLuDylTx# ztNhXW1Tm^?Pqu+S{>g{c)|RO$6lUdUYYyw4^J3Z8?R9Go7ud+_?CT5O*+ErY00>?> zdU{7X-7IWuT4nXCEJnWAjI8rf5&?FpI|g9WB#M0Ed>F=ZMCd} zBc(4d@6_!=zOat7`Je_uF*@22cJD5MfF^8H@#Vs1HJ~=Rr}+6K1~upmt#@to=S!Tr z#63cU051bGGpe(*b0+y4FhwY^PyREN2{V`J*GVOg*ZtB9&=roxveVKObS;^b%F36> z%euzyknMh5RO|EUPh=x)ygXieJdROc-DC6`3U;U3=$Cz<HI6Qz0Rl>I0w;F-Sv=r#FA z7E7!o4uiZgqLS~g5=&zQE7R5OEY;?BZM9Vvxj}}W`5-LtsRWwxl~^uZtWQy93Jbb2bUC{CpHRTqUwz2g zd`fyK%#GAGh7@L06B5Exh*9tp6Soczhc>zbNklw2wg;juULG!m2qQjz{K&){4-eM2 zB#o$>{bEN)dvQv$gnpS=;`>oAO7j;$t7~yP9q!dFZAy$0)3fR+g>X4tp;cAa&;q?# z^x)!zI?{xn`PoMX=MBcZ*8)E_E=dv#i=|BIvm8q{(N0kz6s)5j(j1QSD4k!wHNhU& z-ciQGyV(vI0`>|2b1-A7$RdWWb(N?O-Gp%lY9U-r$xO1p$f*F}sV5ZcxHmkkb@eOv z;eSl(1-pJl%~ZEGcvMsYr-iJl8cgzV&d@XV!z=4k0*6!czxahPI`s^4gRD&SwMAi? z-U09cy>ixy7xHq6goH`{6`L&9%!Pb_I%?r4=%se=Emt-i^PbQa(D8`z(WF`);%(!`(>P;-)3!_2yZe*F8O~ zHpwt;*27_XxsL4?_MBASb-NJSW_W(C=BZlN)TC3$nUR@UKBJ#!|M1RN>F-lFk;~dE zvo`o4AW-!Ex5ew8Mdo|mq2NF1Zm;n1a>uil77^)JLjH%92F|uL!=Q^RK{?F`KAb2g!rpmIpudnZ$g+;C1 zst}d1u)e)v7O!#h;Yb+u2SV^hXwLe>>AmO!)d4>bDaM58zO1gUWZDbw_AdRjK^0_z zm8dJxhp6(aq|@#9a@U%)V-%Dpd1v+q`OsAAS7%dw(DhXUEKfD&p&^ zfc;F7oU-!XM6E?BFQ)h2C+2u__i1U+|g|v-k0XX38}I1g3HR5 z{VL2E_Is^%NB&z1;Qp)2X%3tPLD5F878CXaXyE=E_w7}7lf(J>PJ)O!Ve+YE*c_H= z7nHv84a~`W<><0ovckfG2sk49h3bh9L zflKZX+-xEZtlrDdG{jzzfF*8=YR4|dG~QwlpX)kN7`b7B)MoSSu7?gVzdZaI(@xFv z{V{zw`}nG5%ncI8z1bEm+3vIG$M@~8`6dwmoXqx+C5jF4e*=}LZ}8e_?w$Ekfr{ZW zmD?aJq1WY?QrL;ugwp4SJcC%xANv3#`r0DD)oZ+(Do`f8{qpa4=MCiTr}#Ak;=RLB zQ*(fZcGyz?Q3h5 z$KC3D6OdG0R)z22B2~kw3xZM2)%N(UuL{raNv&A%AXuI2gw=t^z;$mqM;`5y) zkjl|-*Q2^VGnM*9wuhFgDbw(?wQ#MKB4VJp(MhgvMO|$DZ^}KwAJsYJCU$CLu{WSo zgN`rpN|wf${d;`G`iokZm8?f)pqi@aWBda0<+G5G4=+icQ^Qj!3OQ~`HtNIO?Ad1b zGF_{!D_(y}$4QVvQO!88L!iwP_@AS?dc&MEWmu5tWsnK!(V@=Le_jHK`V7Tx6#!g9 z9;QD^zY-Z5-p~poFy+>m3t!XmyUMpqK>A^!E^$7+!qQtqE#MTbpCkctp6^3VO+A_6 z6~0EFewfbp14yO-2_QG!8F8%?P?e~B!eIit`&gT^@0Gtv?4yer|HdEp$L6KW@cxE= z$v5rv>_Mh7{*g&H+LZlaRxB+@Ow8!g8boi;NsF>v;2R_IqaSj@?5^lUh>U zq@UXt{mj}EJI3$Y_Hpv`+h;J!ysv3LTao1Go0lD)g1pv5sEQ!L(g(ZTM$>|D@VE9M zKvCdpP@8Fk^I5(9;1IjmUq3|9SdO}->kt@u81T)pPP93py$zmIGu z&=E9R@jk>|Ag@rPPEz~wrGFhWloRLYV5{EffowVYGWL5MHZdiY&WfKJK3>Eatz)L?KJ&@r>BIcpt_|gT| z-D#HSOPd{Se96-qauCN?%R2?+lxC1#-^BWfiL48k;uX;lHCEoXu7D#v$; zJ^K#00z#x2UJrm?uhFbH6$ukUb9su9zbj}NYN6G15~lSq>duk=xH9PMmZZB zX2=0JG$N8H5m%bOaI$^_Qdif=(J+`nKu|E8ii*l)Kx1O+>7jOqC~+D{T!8ijN^|4m zB7sIz+iF15fjrLe1Bo8MMs+e3{I;-s; znM-YjHg7T1G$iEY!WQrQNif&j%gKH1GXVHaipNEGgKW;s@h*q{CbfxW!;5+D)5d2$ehAJhbG1%H~dE(Zd7?;RfF^J24&IG9RqJ_*){4N7fpV4&Bxn zhzPsnXcQ{*SgvNRkA4(LJ?*vMd;g!LoGG-q^c!wr#wqo7TCR;r95DM~J^-P&x0mrn zSy{QMwbhwRUr1O`km-e!lk;!=*B@(s0pL6ZgDP(-pkM>74v~R@0ToUweyIi{7^c+G z$thsopB=cq>g&D43pH65UWvsh_MYrhc&okKp|-C0ug2bv<#PYEM!V|eau9H_(_e8j zy36zSYX8SrzuZqU!TYi$y}|r>H^Lt1xtXPUTlO7kD5dQtuHHMK zWXp|-DgD^8x!%*J90w0ias((!5m)`ujg0t@_S6m*MD>2WH@m z2KC_DIrg?2>bEGa9rZ6*qYH`N<{q9TTBARf+}vvK5%JR1Jukw6{|l!bDxnj*C5A?> zuTX%%@?RJD1!irjtMj3BK+Bq}GL-wOJje98A6y?Ib`2xacT&14j z^?29cyAnW?YMzp!zp?vI9|gJ;)FshyEOEgnE4r-zJ@uE@0olS{viFaY?fqjXXfpHG zVLCVytHj}eBbT{j?9&ifIBRVNBCBBH`to~#79x42*d|6AqJ919jyp{E!K3-t%RMVh zOQzAlg?_7=v|lOr#NPM1I_`kr$Zrwe%_S!3oxma;UNUG;;%Cjjs$5xW$b9}o(R)FI zv?X~~WBu?V`x6~&(D_0o1&D2YTB8@3w!cig*`SD3;LE4x$ZZV$}YMO?2cIV zK>-MS>py9$5q#CtA!>&W@t$EcNB`c9T`4imepW&N`R}tIKmf`lyl09KFB_TVP1Gyr z(Z8FCZ!JmIZ>a!Z+K^8U2gtYS&6LmD?WOp{|5wk?xRqS1;~5Slu%y5J zjolW$(NjUH{^bZd_{`1IHMEwN^3T$1+r6&#w`Ftlbrn&Gis(pQRmd`h*c43`3a>llq>!}7hqy0m_K!?KgGy-34FhJ*G#+g{~{;#I54v69l*IpJR z1f*L)x*Mfg8tIU30qGw|Nwa_;NGsjlu~II*pp<~LfYK%1xv;Qzy!ZS5nKN_d?7U~r zoP5voJbPW`cfxR-a4qSP3zq=EcyxUf&$LO1L)MlmmM8BXKoSA8ZnbN_pDeK#XX9&91`M8B>Wh>yh;szpXJSt;Gp+(jPfWKH#@#)@5v3P* z?wINLf;7vX!Gnc&n9`Tp1Oh2_CkB{2zuoL8$fK@A$kC!Nd7@SvWs}k z){*PJ=oN7Lu-%iO1=6$r%<)}J6HUHw1h7$3E*LeQrO5dTw6oZlJW)&;N!ii^TR5bZ zaOq+_yM#e0>dXU9{9*ZFGg3bLJ=$h6Vro^S61h+8_sDmZ-3||i#)iQ*`(OW)zQ33z zyru5#?JaI<62aJF=_XlQdkP871-$p%%IjhPDN_!a^i)<;T|HJiDXRM<8R782=OLrM zogO853Xo?UHzTZ%kg~q~6)hcN_^-%(7iG*eat!DH{1$Q_5po;ZE*(0$4SRQO)H>^{ zDIVS+EqbSs5xop_#SLRl?IbsDC0a9E!ovkm|Jywh&#|H*fNWR@HJf~8A z&cvZwZ9V`DXCE*5=TI>xZviqDgE-=yc*q75^zddsR+2B~$H(?+?+1q?thHZ<5Q7<* zOm=c!T7SLsdusR=bw@d&el^proR3fQSir^3(yjTm4xlVQCM2+Na^i;3bk|V}*ak|J}#{D~|&ZkH#a% zYipqAUOi|r|@LuKSPqNecoyO)(Bb!H~s%tqDc zbB}zjNNMQkf^@ETZu~=Kyp$@2C)?j>6mM*t@(R?`#-hhj3E^nphvsF?jwLI0(wnC5}`Ag z$lS9#O(Df0y@@{FnuDW$1puqm*9BHN2*Vm9Nk+QTq?KyJnrIXn6Lp)8fc624QY7OU zT`al?V0hdV41B-G*bCQV8Q^Xk>n`k3X^Fo-!)H+jWoUmVhi|%0QGQ%Gcvxd}tw77K zF`9yNjqf=nZ4|L3GBa|p_KQQy^+F#iN$mQyWhwR<>!Z{t|IjLu{6(PCob0xIbkMmd zgV}De2EFd@rvj88F|94RhPDS*Q-%KfBRctKO22KKhtp;xo$oR*I*_XeZxF?OS&y-6 zlyFAkUY!_6vsqXNiXyj5tm;jZGrvhm(Z^d@q5u_8@uz%F|HG*+7<>^|tV#t1i;Yz@ z3)0wmQw@w+Xk4V(TpizcPevjd&F#2)0aT|_ntD`P8U?^p1+Ydro7>wZMm76oSO7g~ zFVgx$QQB(ko?}C@ZT8wrlK#$YDZ;P>tyvliJo_~r?ax=N+G;iJ)~D(fi9Yl0^IFWC z+{8UpE7)gyHx04Yb_U^%0tXb{qZZYz3*>Be3n9(&$O^3-_I9{?LPxZH(f8ruSX8ic zqM4hIXv68LuTg|#3x@rg-x6qktQs|oW8q2 zw41xaGqpn6b0<&vz;IqlB9E-CBmU6ST`0%I#+L@|@Ud0@qkLjA5c!DC`E=8Mxt0H? z0jjfX?QaytT_?wjQ*)-k#K-o7x7XtB9&ug=CTNEI5^%!<;%W>c8OuGgQ7}f-gW3~i z3STAQn`A}Bzhn^)QygG=f+#Ll_-x9$r$FbF;ICq0FRx3z*^^(gk42Bk(kSd|V&V8y zNkT4DGc3%81&cMDAUupI8A~#61=4Yqq;A+wCb_#;|70w2#XHuZtGXR-?RngByyUkM z^3A|ZrSm9_@pNQ+&Q&{vYQQh*y?E%COo6*D9`rq`hp(IGXnfL3C>nuhenO7^dMHv|6Z9GyR>d)TVd=~-S{r0v2q&dyy&1Xhpw2jt zG)7umcUn0$w+NkfwP9WCk6fzbzsHWb95+WnF3wNiOa$?CUeN(%%fIvO&Zf$#{Mfo& z&$-GWj6bq`@QOL@t{`Zd2eo2)n^-vM)cOwTfrUht(4Bn=9{1WJ_Er2q>Kv!^{=-GW zuGJm(4>c}@qi&rJ6dH}1toYbuX42pXV_tR-2oL6Gpi)_0Xc*q>h%*jUzG1s*F^ke; zvEABl+8&$UtGJXzk2t$N3cLME8G65K3o7qAd2;S?#ndymvi}%VOnOrglu~%yuRJ8+ zaA5oW17UN#|B~xBf!A_ooq~;WZZ;4z=_vYwf(rMT%tlY$g=e62H?#Fibo6E^dC|!N z0xWp=!?7*6DzY~3D4>VjH(WLm!uJ%y{}_tos|k+p^urxYVx(I9F@E#}?KmB(7|^eU z^nY(!$CSt zJ>}FC2)Hu>QlLgg>B%`c8X@MYP!Z-@79wbfIeuGPn-!VDM}&68MhJvZQ5GEmux=xm z3ZT7rp|n1dd2`4GtQ_9WH}Yn;H#fSJtf82U2}Cb?|6bk_(TXPzKlBpR*9->V2mnDv zBUJD`_7k6)2YxQOZPY;nU5@{23!y)Sa#qyFng;{y@bjjQ?<-ECl8a)r307N>FWgpu z$5{?Ghxw)IlKUqi;nU7cO>afa95WcWaBiQAlhei~tvyG{P0R8bD+fmj5XDW})U~t% zV+59Oiz`P@c)7V1U~_u2%_uI0F;$miXa0C}O_xiWA$4D#x z5ZPmxX(cy0W7?WTKk=y|Y|gtRB&dA*`>kCjih4Zy<1Ud$Y6f6LO~Nbwpqc8|0^@2h zD&Y0D@P8Tq`!bpKW~v7R<^0Ise*Dv3vJaic=iliPRA$MkUW?Mo3=^%8>Feu9Hp45D z&+h`&)zybijx#~#P3+pT<0mjcgd#F`WiI9FiX2E~u!eZ<8~(-S&PY^%uc)*Xi?~b9 zxlSwi><33_%ZpFR$sjp3HN5PM^nXcyrLNvT$B)WnT2tDIaHgGz)cS%kF*Bp2t4pkP zXb%5_MW=hs_AfiU)zXvfCwdtN*k7f9CInS8=M@% zw{agoPTe=w)00N=QuDX8Eu+&s?CU$o0xPApKt%ODJBb=27NGnj5+1a$bl=y%{guy)AQ0+YO zGz2BSG(VKSXO;yuG)%MDZfq2;uCBI!Ft2u%0B+pKhSsW|xsBUaUE+ubn~nAn)6<76 zIF@ zi<0$qPmDg1(ShV z@Om^;C^a?p%Wg`M+Y{!#U&~3zoV0vtP4viFH|qUkYY+jjek5ifPNOdY){4etA<4ZI zY6-#RZy-DV^XHr2jc;s2-z8vUG7{HMlTKP|Os3WE@+>MV`J3GR_60+c3}qBd_WZ$E zVWXW%7$~r4vS`)s-5SaG zw@Xf&P;QLGkB}?N^SyV~PE#2cmbJ*Lhv7~fi)^H##U&+fT2Gco1L_%W>9&3Us1J+gCR%?+iN9qL0xe3BQnEoc1j z+nft#qNe0eO|ten)z~NDw;zrekFwX@YYuPNE)x=jp=u-ufKX7bx0Yy7->N+!}T?2&=sKG^29Sj@?U?Cer2L7 zr=o(5L&T6;UTqq&g#u)D-<Mb{ zlA)WcetS;9V+u&kh5l7zjQ{L!Nv?!9dq6-y>CfS9IO7vrOEhl2)SQrfYI^zrAOaQR zV*TZGfX<_G0G%MVJn?T7mz9P}Lg<_OOpV zc#Iw5Dr(0jIZS5rS#1=grLjeB$8edJKHM{P(5o+1Ax3)NLLyNoIEdTGq{gc=w=>an zSg845#9BgP3n)ob=kzh!F+V_MV%G<>=vI(mF$alAgZG_(!Szf_?YCV6#M+GV(AA{@ z-*SmPbxku*aMhyEINh5_w)Ve|MRN$dA?Aq>f$r*XjK2CD?)T9Os6f*nupf_!2})n_ z%RXO;x|jK3SNg(;?I+o~Z;=x6h8Xze@R|CoGC^VMPnCwBDv4$4o=X&}0!u$oCu--@ zT)dpCCAD2oP>|t2BWJ%nQbZw3`v?rl$dH|&W0wP15GJ(Xfs^R()AH7z0~6QFzsTXg z{ROuLfmo+;ftr|zb3zMVkK)x}#c`q_JQvRPk;f-VpBb0UQHM;XAji37r2^UYsgZ;B zz<+sa+~1=g4#KAz$?=t{b_4dBlBN=rK z(`o_w=u-aA@V8s1rof)S;*}NP=rm?1c*N*OsH2B}CGVkrRF%MK&Dbbq$wL^PyxRCE zQ^YZmU0OOfKAylT>E-S9iA8}jyT$^iNWMw@Gh`iIsdZPMZdd-FKV}b^TX~Ce zfcx^7+rrm`Iq=;N)b?0j&8Hg#<$Mw_stNfWS-|Rtyk@tL6B>H9;qJ-ww0*TBRP^0w z;P~SS;pdT5xnK7fftYaf`<00aIYq@|f`PH%Yx)w^#Lak1AD8WYGz{f2`_-%IYs;Xp zhr;1)hZ}~wq0!@wfy6h9^9{UeI*w}XJD#7$%7U%}Hh=Zi4XeMtZ}$aSlfJRBs--1; zSg@6u+3>CJe&+xb;2;Sv)#SZcYC?R49-+z5=4ol)&OMF_yNf>AtguIf^!LJitX3w5 zfVi9JyNB3ooYraN8WDr|v%%h%mDSbjtKpbd8<3zYHzrBRY=HVA0$^Yl&KSktJ_A5H z9Fme|zD%9dsN;(V;^kU|hGn7a)>f@m*Po&TgHYKd=`&oK<1P;C1v~1!A`!H))o$iZ z;8EK)XuiuaY3>FG8{6y9Ow}#Ls3wgs*=K2fo)ba_K%kkgrN$BG*9EB2{j-3J14E_r zq`Uj)!2G*wPvw9h=jS`sSAl~%9}y`B&_4PP1?2j{6(@?CEAp`uN~QPL#&L^G9vhyya9VNnLifk0(Q$b0Hv zMsYJP9V06g*|c(;0sMMKwzkT!a9p>%{3w{FW3l-nNCcHk3+D-_3+LmRhS$$B zd;U`<6@KnS{AiB%s7vmS@$^r>P^}S5FD&`+{026vloHg^dSf6|mPY5Fy6(nvfiXyXB z>ipfLOHf@KR|9vi=0mr3Xe8YBG+sx>EWg(^LJ4ej`E}(eLE`_Q~uSg z?Y2GByBFw6#+z)TZ2EZ_97!wWmoWm9p%dgJX9@=FC1SGdfRyp9aO zNh?*O3ZI7`6XlAZ(m0MEZ5;d#Nln{&Wt6U?_G9j;Wb-s%_SIWsJcE6Owi+yM-=alB za7(-H5qEfpB_|`X`PMoaOlr|Ys-fgEpO|cQ;+wgLgvWhO-{nqxmq1tx878oeD3hlb zyzUFH4KvywuOwkcJn04q3? z>S;YGr|+kQ!dP#ttt&I4T5nD=&h9G;Ld;~*7bQAd=aoN1sDldT|2w1SKq&6Qk&wjF4EJetwrH$ zFP{-C`9>@GtKG2q%+WX6!M>ho?9@xyk6QyeI}?_ELy2AH-q_k5a{41nDewxZ<7B0Z zCW^Oke0!i~N4$T}#mBR8H1ran_kRaazyH4TRHHBuFXQ$89Zp4h&jOHDDUDU-wT#tK zQh)OsHt{B`d|Zgn^dm5C9K-hq*qKxJyP7yShaJ)tWX}t&i}R~Q{^9#qMkW{3Vf-5) zzjisGmv}u@nq^YQm#N9FJ~I4I9;8A$ueiB39w?^TS<0ksaA+TdDwqFbYNQdVEg~>Z zasOfc1H9FfsenqXb4&Ng*u&F*JXG+IU$eYS!D7+gec5M`(5ex1mCW8hV+5|KA7ij6 ztuB%>uHZSxV)&L-)5JklW%l;(o{w*S4^7|!7z1_a!&HaS&Tq8(V}`0dwFP_UW?}c+ z!qlf#Z7NO(S}^L+s{Ch;n4NHzJ$`a#CMQt@KK{?mZN{U-R9m0zZ9m5W6QOpp2P@r( zBNXarl$uA`FErH8A^vc!8Goj2VX6%c-Q3aZMxCR*fUrWOcg%_F5bWIYP;1f!=;|K=f#$dh91I`rwP6C-1->+1p*Psr!Jo}4A8SJ5 zJ&#By=-t-oc5(3G)LcvC^ z_<)LEdY2ra>M`K*pFFIfr&2G;wxzwGaMn`Z=qG6_&k(mM*zb`kpT=tavkq6h+;;gx z^M~5tL8Fj$vh$&vBu!*;q;>Yi9`8lIf|v8`jES>5rFR%0KOyNK4hr}$>|RQJ)tTq0 zfz*0tl-}uuF-{fVtlS^@DZE~zSYKx!;e);|qN$q&F#WUv zFcUyU325RCX6Do{G=1J*?0Qonk@6!~M}MwgvUUuh>k zd}yx)0kx|0>W^6)uS^Jryu7@nMG?@?0h8n95WgCWt6B4!`Rm5c%W* z@0WaB1RXHpsHJU?QFnSrX`&Npji(jBP$+hO$!XXu;qB1qu_DV5xWgouO9m1GlNUDE zYVzOxf-(G^Z?KcTt!&iVkW>w>CYdjfama|#A&RnQ`Z-2YkpCE=pPk1dD?<@#>^%JV zL~(Qm`|a7L+STF0Ai&dl&SO+d45+TXTiE{UvBF=VG0wg9M&OH!vM)E$5vL*W#|#et z{v)8+`Tybyfe?72l<483*;i|RY2}P4L2sW3@rF0Y!iNV78Ihe*1&FC1LTWa@2%L?S zUXhwSSInjWrgug^lO5PZ*}@G)B;5T(p%c54mLw-ftHXDYa#i&902-s9&d<{*g~bK1 O2vSqlR;pL9iTED_BLJ@e literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index aadf2bf1b8..224a4904cd 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -306,6 +306,7 @@ #include "code\datums\mutable_appearance.dm" #include "code\datums\mutations.dm" #include "code\datums\outfit.dm" +#include "code\datums\position_point_vector.dm" #include "code\datums\profiling.dm" #include "code\datums\progressbar.dm" #include "code\datums\radiation_wave.dm" @@ -318,6 +319,7 @@ #include "code\datums\verbs.dm" #include "code\datums\weakrefs.dm" #include "code\datums\world_topic.dm" +#include "code\datums\actions\beam_rifle.dm" #include "code\datums\actions\flightsuit.dm" #include "code\datums\actions\ninja.dm" #include "code\datums\antagonists\abductor.dm" @@ -329,6 +331,7 @@ #include "code\datums\antagonists\datum_traitor.dm" #include "code\datums\antagonists\devil.dm" #include "code\datums\antagonists\internal_affairs.dm" +#include "code\datums\antagonists\monkey.dm" #include "code\datums\antagonists\ninja.dm" #include "code\datums\antagonists\nukeop.dm" #include "code\datums\antagonists\pirate.dm" @@ -345,6 +348,7 @@ #include "code\datums\components\archaeology.dm" #include "code\datums\components\caltrop.dm" #include "code\datums\components\chasm.dm" +#include "code\datums\components\cleaning.dm" #include "code\datums\components\decal.dm" #include "code\datums\components\infective.dm" #include "code\datums\components\jousting.dm" @@ -1701,6 +1705,7 @@ #include "code\modules\mob\login.dm" #include "code\modules\mob\logout.dm" #include "code\modules\mob\mob.dm" +#include "code\modules\mob\mob_cleanup.dm" #include "code\modules\mob\mob_defines.dm" #include "code\modules\mob\mob_helpers.dm" #include "code\modules\mob\mob_movement.dm" From b759da8c63b6869d79195ecd93d946e2aaa46d74 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 27 Dec 2017 07:09:51 -0600 Subject: [PATCH 3/7] dammit --- tgstation.dme | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 224a4904cd..59c1725317 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -855,6 +855,7 @@ #include "code\game\objects\effects\temporary_visuals\clockcult.dm" #include "code\game\objects\effects\temporary_visuals\cult.dm" #include "code\game\objects\effects\temporary_visuals\miscellaneous.dm" +#include "code\game\objects\effects\temporary_visuals\projectile_beam.dm" #include "code\game\objects\effects\temporary_visuals\temporary_visual.dm" #include "code\game\objects\items\AI_modules.dm" #include "code\game\objects\items\airlock_painter.dm" @@ -1701,6 +1702,7 @@ #include "code\modules\mining\lavaland\necropolis_chests.dm" #include "code\modules\mining\lavaland\ruins\gym.dm" #include "code\modules\mob\death.dm" +#include "code\modules\mob\emote.dm" #include "code\modules\mob\inventory.dm" #include "code\modules\mob\login.dm" #include "code\modules\mob\logout.dm" From 8a792d6ef665f2a0b86870c4f258f1654f52119c Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 29 Dec 2017 00:07:36 -0600 Subject: [PATCH 4/7] more save points --- code/modules/clothing/glasses/_glasses.dm | 4 --- code/modules/events/disease_outbreak.dm | 4 --- .../mining/lavaland/necropolis_chests.dm | 4 --- code/modules/mob/living/blood.dm | 17 --------- code/modules/mob/living/brain/brain_item.dm | 5 --- code/modules/mob/living/carbon/carbon.dm | 12 ------- .../mob/living/carbon/carbon_defense.dm | 8 ----- code/modules/mob/living/carbon/examine.dm | 4 --- code/modules/mob/living/carbon/human/death.dm | 5 --- .../mob/living/carbon/human/examine.dm | 8 ++--- .../mob/living/carbon/human/human_defense.dm | 5 --- .../mob/living/carbon/human/human_helpers.dm | 4 --- .../mob/living/carbon/human/interactive.dm | 4 --- .../mob/living/carbon/human/inventory.dm | 4 --- .../mob/living/carbon/human/species.dm | 36 +------------------ .../carbon/human/species_types/golems.dm | 4 --- .../mob/living/carbon/human/update_icons.dm | 4 --- .../mob/living/carbon/monkey/combat.dm | 4 --- .../mob/living/carbon/monkey/update_icons.dm | 4 --- .../modules/mob/living/carbon/update_icons.dm | 4 --- code/modules/mob/living/life.dm | 10 +----- code/modules/mob/living/living.dm | 4 --- code/modules/mob/living/living_defense.dm | 28 --------------- code/modules/mob/living/say.dm | 12 ------- .../hostile/megafauna/colossus.dm | 12 ------- code/modules/mob/living/status_procs.dm | 3 -- code/modules/mob/status_procs.dm | 6 ---- code/modules/paperwork/contract.dm | 4 --- code/modules/paperwork/paper.dm | 8 ----- code/modules/paperwork/paperplane.dm | 4 --- code/modules/projectiles/gun.dm | 4 --- .../projectiles/guns/ballistic/revolver.dm | 4 --- code/modules/projectiles/pins.dm | 4 --- .../chemistry/reagents/medicine_reagents.dm | 12 ------- .../chemistry/reagents/toxin_reagents.dm | 4 --- .../spells/spell_types/construct_spells.dm | 4 --- code/modules/surgery/bodyparts/bodyparts.dm | 4 --- code/modules/surgery/bodyparts/head.dm | 4 --- code/modules/surgery/lipoplasty.dm | 4 --- code/modules/surgery/organs/ears.dm | 8 ----- 40 files changed, 4 insertions(+), 283 deletions(-) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 070a57c167..7dca5d9b3e 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -41,11 +41,7 @@ /obj/item/clothing/glasses/proc/thermal_overload() if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc -<<<<<<< HEAD - if(!(H.disabilities & BLIND)) -======= if(!(H.has_disability(DISABILITY_BLIND))) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(H.glasses == src) to_chat(H, "[src] overloads and blinds you!") H.flash_act(visual = 1) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 08a14e96f7..c1cea8224e 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -51,11 +51,7 @@ var/datum/disease/D if(!advanced_virus) if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. -<<<<<<< HEAD - if(!H.dna || (H.disabilities & BLIND)) //A blindness disease would be the worst. -======= if(!H.dna || (H.has_disability(DISABILITY_BLIND))) //A blindness disease would be the worst. ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind continue D = new virus_type() var/datum/disease/dnaspread/DS = D diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index c96302a871..c081ff4bb3 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -656,11 +656,7 @@ playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) /obj/item/melee/transforming/cleaving_saw/clumsy_transform_effect(mob/living/user) -<<<<<<< HEAD - if(user.disabilities & CLUMSY && prob(50)) -======= if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_bodypart_damage(10) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 50e733a07c..efb7887da2 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -16,11 +16,7 @@ /mob/living/carbon/monkey/handle_blood() -<<<<<<< HEAD - if(bodytemperature >= 225 && !(disabilities & NOCLONE)) //cryosleep or husked people do not pump the blood. -======= if(bodytemperature >= 225 && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL) blood_volume += 0.1 // regenerate blood VERY slowly @@ -31,12 +27,7 @@ if(NOBLOOD in dna.species.species_traits) bleed_rate = 0 return - -<<<<<<< HEAD - if(bodytemperature >= 225 && !(disabilities & NOCLONE)) //cryosleep or husked people do not pump the blood. -======= if(bodytemperature >= 225 && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL && !(NOHUNGER in dna.species.species_traits)) @@ -209,21 +200,13 @@ return "blood" /mob/living/carbon/monkey/get_blood_id() -<<<<<<< HEAD - if(!(disabilities & NOCLONE)) -======= if(!(has_disability(DISABILITY_NOCLONE))) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return "blood" /mob/living/carbon/human/get_blood_id() if(dna.species.exotic_blood) return dna.species.exotic_blood -<<<<<<< HEAD - else if((NOBLOOD in dna.species.species_traits) || (disabilities & NOCLONE)) -======= else if((NOBLOOD in dna.species.species_traits) || (has_disability(DISABILITY_NOCLONE))) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return return "blood" diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index cf3d351ab8..1ff4ebd47a 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -79,13 +79,8 @@ if(!brainmob.stored_dna) brainmob.stored_dna = new /datum/dna/stored(brainmob) C.dna.copy_dna(brainmob.stored_dna) -<<<<<<< HEAD - if(L.disabilities & NOCLONE) - brainmob.disabilities |= NOCLONE //This is so you can't just decapitate a husked guy and clone them without needing to get a new body -======= if(L.has_disability(DISABILITY_NOCLONE)) brainmob.disabilities[DISABILITY_NOCLONE] = L.disabilities[DISABILITY_NOCLONE] ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind var/obj/item/organ/zombie_infection/ZI = L.getorganslot(ORGAN_SLOT_ZOMBIE) if(ZI) brainmob.set_species(ZI.old_species) //For if the brain is cloned diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5e2ce2c1c9..2bca491c40 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -157,11 +157,7 @@ if(!throwable_mob.buckled) thrown_thing = throwable_mob stop_pulling() -<<<<<<< HEAD - if(disabilities & PACIFISM) -======= if(has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You gently let go of [throwable_mob].") var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) @@ -174,11 +170,7 @@ thrown_thing = I dropItemToGround(I) -<<<<<<< HEAD - if(disabilities & PACIFISM && I.throwforce) -======= if(has_disability(DISABILITY_PACIFISM) && I.throwforce) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You set [I] down gently on the ground.") return @@ -417,11 +409,7 @@ dropItemToGround(I) var/modifier = 0 -<<<<<<< HEAD - if(disabilities & CLUMSY) -======= if(has_disability(DISABILITY_CLUMSY)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind modifier -= 40 //Clumsy people are more likely to hit themselves -Honk! switch(rand(1,100)+modifier) //91-100=Nothing special happens diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 7b96428621..90502eae40 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -306,18 +306,10 @@ if(eyes.eye_damage > 20) if(prob(eyes.eye_damage - 20)) -<<<<<<< HEAD - if(become_nearsighted()) -======= if(!has_disability(DISABILITY_NEARSIGHT)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "Your eyes start to burn badly!") else if(prob(eyes.eye_damage - 25)) -<<<<<<< HEAD - if(become_blind()) -======= if(!has_disability(DISABILITY_BLIND)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You can't see anything!") else to_chat(src, "Your eyes are really starting to hurt. This can't be good for you!") diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 03285f4d57..5ef14d5d09 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -70,11 +70,7 @@ else msg += "[t_He] [t_is] severely deformed!\n" -<<<<<<< HEAD - if(disabilities & DUMB) -======= if(has_disability(DISABILITY_DUMB)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind msg += "[t_He] seem[p_s()] to be clumsy and unable to think.\n" if(fire_stacks > 0) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 3c6c1d076e..95788da39d 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -48,12 +48,7 @@ /mob/living/carbon/proc/Drain() -<<<<<<< HEAD - become_husk() - disabilities |= NOCLONE -======= become_husk(CHANGELING_DRAIN) add_disability(DISABILITY_NOCLONE, CHANGELING_DRAIN) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind blood_volume = 0 return 1 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index fae9d41569..bc4fd83334 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -273,7 +273,7 @@ msg += "[t_He] look[p_s()] like a drunken mess.\n" if(91.01 to INFINITY) msg += "[t_He] [t_is] a shitfaced, slobbering wreck.\n" - + for (var/I in src.vore_organs) var/datum/belly/B = vore_organs[I] msg += B.get_examine_msg() @@ -285,11 +285,7 @@ if(stat == UNCONSCIOUS) msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be asleep.\n" else -<<<<<<< HEAD - if(disabilities & DUMB) -======= if(has_disability(DISABILITY_DUMB)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" if(InCritical()) msg += "[t_He] [t_is] barely conscious.\n" @@ -354,7 +350,7 @@ msg += "\[Add comment\]\n" if(print_flavor_text() && get_visible_name() != "Unknown")//Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation. msg += "[print_flavor_text()]\n" - + msg += "*---------*" to_chat(user, msg) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 1ba1995265..7b0f50041d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -140,13 +140,8 @@ return ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) -<<<<<<< HEAD - if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && isliving(pulling)) - vore_attack(user, pulling) -======= if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (has_disability(DISABILITY_FAT)) && ismonkey(pulling)) devour_mob(pulling) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind else ..() diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 3384dac1b6..7f1d9560e0 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -103,11 +103,7 @@ /mob/living/carbon/human/IsAdvancedToolUser() -<<<<<<< HEAD - if(disabilities & MONKEYLIKE) -======= if(has_disability(DISABILITY_MONKEYLIKE)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return FALSE return TRUE//Humans can use guns and such diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm index 7f42e1dcb9..9d4b7a8420 100644 --- a/code/modules/mob/living/carbon/human/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive.dm @@ -339,11 +339,7 @@ if(TRAITS & TRAIT_SMART) smartness = 75 else if(TRAITS & TRAIT_DUMB) -<<<<<<< HEAD - disabilities |= CLUMSY -======= add_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind smartness = 25 if(TRAITS & TRAIT_MEAN) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index e44303b937..4dd26ebe6b 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -187,11 +187,7 @@ if(G.tint) update_tint() if(G.vision_correction) -<<<<<<< HEAD - if(disabilities & NEARSIGHT) -======= if(has_disability(DISABILITY_NEARSIGHT)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) adjust_eye_damage(0) if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 5e8402f1fa..c7dc99720f 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -125,7 +125,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) randname += " [pick(GLOB.last_names)]" return randname - + //Called when cloning, copies some vars that should be kept /datum/species/proc/copy_properties_from(datum/species/old_species) return @@ -312,11 +312,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!HD) //Decapitated return -<<<<<<< HEAD - if(H.disabilities & HUSK) -======= if(H.has_disability(DISABILITY_HUSK)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return var/datum/sprite_accessory/S var/list/standing = list() @@ -456,12 +452,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/list/standing = list() var/obj/item/bodypart/head/HD = H.get_bodypart("head") - -<<<<<<< HEAD - if(HD && !(H.disabilities & HUSK)) -======= if(HD && !(H.has_disability(DISABILITY_HUSK))) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind // lipstick if(H.lip_style && (LIPS in species_traits)) var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER) @@ -732,11 +723,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(S.center) accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y) -<<<<<<< HEAD - if(!(H.disabilities & HUSK)) -======= if(!(H.has_disability(DISABILITY_HUSK))) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(!forced_colour) switch(S.color_src) if(MUTCOLORS) @@ -1113,30 +1100,17 @@ GLOBAL_LIST_EMPTY(roundstart_races) //////// /datum/species/proc/handle_digestion(mob/living/carbon/human/H) - -<<<<<<< HEAD - //The fucking FAT mutation is the dumbest shit ever. It makes the code so difficult to work with - if(H.disabilities & FAT)//I share your pain, past coder. - if(H.overeatduration < 100) - to_chat(H, "You feel fit again!") - H.disabilities &= ~FAT -======= //The fucking DISABILITY_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with if(H.has_disability(DISABILITY_FAT))//I share your pain, past coder. if(H.overeatduration < 100) to_chat(H, "You feel fit again!") H.remove_disability(DISABILITY_FAT, OBESITY) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind H.update_inv_w_uniform() H.update_inv_wear_suit() else if(H.overeatduration > 500) to_chat(H, "You suddenly feel blubbery!") -<<<<<<< HEAD - H.disabilities |= FAT -======= H.add_disability(DISABILITY_FAT, OBESITY) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind H.update_inv_w_uniform() H.update_inv_wear_suit() @@ -1293,11 +1267,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) . += (health_deficiency / 25) if((hungry >= 70) && !flight) //Being hungry won't stop you from using flightpack controls/flapping your wings although it probably will in the wing case but who cares. . += hungry / 50 -<<<<<<< HEAD - if(H.disabilities & FAT) -======= if(H.has_disability(DISABILITY_FAT)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind . += (1.5 - flight) if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR @@ -1343,11 +1313,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) -<<<<<<< HEAD - if(user.disabilities & PACIFISM) -======= if(user.has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You don't want to harm [target]!") return FALSE if(target.check_block()) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index cd343953eb..90ab0cfceb 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -725,11 +725,7 @@ /obj/structure/cloth_pile/proc/revive() if(QDELETED(src) || QDELETED(cloth_golem)) //QDELETED also checks for null, so if no cloth golem is set this won't runtime return -<<<<<<< HEAD - if(cloth_golem.suiciding || cloth_golem.disabilities & NOCLONE) -======= if(cloth_golem.suiciding || cloth_golem.has_disability(DISABILITY_NOCLONE)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind QDEL_NULL(cloth_golem) return diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 5c4e92dd9d..5684d8eb68 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -609,11 +609,7 @@ generate/load female uniform sprites matching all previously decided variables if(BP.dmg_overlay_type) . += "-[BP.dmg_overlay_type]" -<<<<<<< HEAD - if(disabilities & HUSK) -======= if(has_disability(DISABILITY_HUSK)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind . += "-husk" /mob/living/carbon/human/load_limb_from_cache() diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index db60922f13..052e8eeaf5 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -122,11 +122,7 @@ if(L == src) return FALSE -<<<<<<< HEAD - if(disabilities & PACIFISM) -======= if(has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return FALSE if(enemies[L]) diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 9cd99fde8a..1bb4400087 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -19,11 +19,7 @@ if(!HD) //Decapitated return -<<<<<<< HEAD - if(disabilities & HUSK) -======= if(has_disability(DISABILITY_HUSK)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return var/hair_hidden = 0 diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 2e65814d56..147f14c945 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -290,11 +290,7 @@ else . += "-robotic" -<<<<<<< HEAD - if(disabilities & HUSK) -======= if(has_disability(DISABILITY_HUSK)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind . += "-husk" diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 1450d05e2b..0fc19e3882 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -54,7 +54,7 @@ handle_environment(environment) handle_fire() - + // Vore code for belly processes handle_internal_contents() @@ -126,11 +126,7 @@ /mob/living/proc/handle_disabilities() //Eyes if(eye_blind) //blindness, heals slowly over time -<<<<<<< HEAD - if(!stat && !(disabilities & BLIND)) -======= if(!stat && !(has_disability(DISABILITY_BLIND))) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind eye_blind = max(eye_blind-1,0) if(client && !eye_blind) clear_alert("blind") @@ -141,11 +137,7 @@ eye_blurry = max(eye_blurry-1, 0) if(client && !eye_blurry) clear_fullscreen("blurry") -<<<<<<< HEAD - if(disabilities & PACIFISM && a_intent == INTENT_HARM) -======= if(has_disability(DISABILITY_PACIFISM) && a_intent == INTENT_HARM) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You don't feel like harming anybody.") a_intent_change(INTENT_HELP) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9bdd419bca..4934f684ab 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -819,11 +819,7 @@ if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser()) to_chat(src, "You don't have the dexterity to do this!") return FALSE -<<<<<<< HEAD - if(disabilities & PACIFISM) -======= if(has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(src, "You don't want to risk harming anyone!") return FALSE return TRUE diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index f096f3b6fd..cfb700d9d7 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -136,11 +136,7 @@ to_chat(user, "[src] can't be grabbed more aggressively!") return FALSE -<<<<<<< HEAD - if(user.disabilities & PACIFISM) -======= if(user.has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You don't want to risk hurting [src]!") return FALSE @@ -197,11 +193,7 @@ M.Feedstop() return // can't attack while eating! -<<<<<<< HEAD - if(disabilities & PACIFISM) -======= if(has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -218,11 +210,7 @@ M.visible_message("\The [M] [M.friendly] [src]!") return FALSE else -<<<<<<< HEAD - if(M.disabilities & PACIFISM) -======= if(M.has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -241,11 +229,7 @@ return FALSE if (M.a_intent == INTENT_HARM) -<<<<<<< HEAD - if(M.disabilities & PACIFISM) -======= if(M.has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -271,11 +255,7 @@ return FALSE else -<<<<<<< HEAD - if(L.disabilities & PACIFISM) -======= if(L.has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(L, "You don't want to hurt anyone!") return @@ -300,11 +280,7 @@ grabbedby(M) return FALSE if("harm") -<<<<<<< HEAD - if(M.disabilities & PACIFISM) -======= if(M.has_disability(DISABILITY_PACIFISM)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "You don't want to hurt anyone!") return FALSE M.do_attack_animation(src) @@ -394,11 +370,7 @@ //called when the mob receives a bright flash /mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash) -<<<<<<< HEAD - if(get_eye_protection() < intensity && (override_blindness_check || !(disabilities & BLIND))) -======= if(get_eye_protection() < intensity && (override_blindness_check || !(has_disability(DISABILITY_BLIND)))) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind overlay_fullscreen("flash", type) addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25) return 1 diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a8227c41bc..b1a5e7f640 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -135,17 +135,9 @@ GLOBAL_LIST_INIT(department_radio_keys, list( // AIs use inherent channels for the holopad. Most inherent channels // ignore the language argument however. -<<<<<<< HEAD - var/datum/saymode/SM = SSradio.saymodes[key] - if(key && SM) - if(!SM.handle_message(src, message, language) && !message_mode) - return - -======= var/datum/saymode/SM = SSradio.saymodes[talk_key] if(SM && !SM.handle_message(src, message, language)) return ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(!can_speak_vocal(message)) to_chat(src, "You find yourself unable to speak!") @@ -291,11 +283,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/proc/can_speak_vocal(message) //Check AFTER handling of xeno and ling channels -<<<<<<< HEAD - if(disabilities & MUTE) -======= if(has_disability(DISABILITY_MUTE)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return 0 if(is_muzzled()) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 45363c9691..9bf2c8c430 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -558,11 +558,7 @@ Difficulty: Very Hard H.regenerate_limbs() H.regenerate_organs() H.revive(1,0) -<<<<<<< HEAD - H.disabilities |= NOCLONE //Free revives, but significantly limits your options for reviving except via the crystal -======= H.add_disability(DISABILITY_NOCLONE, MAGIC_DISABILITY) //Free revives, but significantly limits your options for reviving except via the crystal ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind H.grab_ghost(force = TRUE) /obj/machinery/anomalous_crystal/helpers //Lets ghost spawn as helpful creatures that can only heal people slightly. Incredibly fragile and they can't converse with humans @@ -723,11 +719,7 @@ Difficulty: Very Hard if(isliving(A) && holder_animal) var/mob/living/L = A L.notransform = 1 -<<<<<<< HEAD - L.disabilities |= MUTE -======= L.add_disability(DISABILITY_MUTE, STASIS_MUTE) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind L.status_flags |= GODMODE L.mind.transfer_to(holder_animal) var/obj/effect/proc_holder/spell/targeted/exit_possession/P = new /obj/effect/proc_holder/spell/targeted/exit_possession @@ -737,11 +729,7 @@ Difficulty: Very Hard /obj/structure/closet/stasis/dump_contents(var/kill = 1) STOP_PROCESSING(SSobj, src) for(var/mob/living/L in src) -<<<<<<< HEAD - L.disabilities &= ~MUTE -======= L.remove_disability(DISABILITY_MUTE, STASIS_MUTE) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind L.status_flags &= ~GODMODE L.notransform = 0 if(holder_animal) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index a109859222..86719ebb84 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -137,8 +137,6 @@ to_chat(src, "[priority_absorb_key["self_message"]]") priority_absorb_key["stuns_absorbed"] += amount return TRUE -<<<<<<< HEAD -======= /////////////////////////////////// DISABILITIES //////////////////////////////////// @@ -215,4 +213,3 @@ status_flags |= DISFIGURED //makes them unknown update_body() add_disability(DISABILITY_HUSK, source) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 039c5ca951..2b86a8c6a4 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -162,13 +162,10 @@ var/blind_minimum = 0 if((stat != CONSCIOUS && stat != SOFT_CRIT) || (disabilities & BLIND)) blind_minimum = 1 -<<<<<<< HEAD -======= if(isliving(src)) var/mob/living/L = src if(L.has_disability(DISABILITY_BLIND)) blind_minimum = 1 ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind eye_blind = max(eye_blind+amount, blind_minimum) if(!eye_blind) clear_alert("blind") @@ -186,13 +183,10 @@ var/blind_minimum = 0 if((stat != CONSCIOUS && stat != SOFT_CRIT) || (disabilities & BLIND)) blind_minimum = 1 -<<<<<<< HEAD -======= if(isliving(src)) var/mob/living/L = src if(L.has_disability(DISABILITY_BLIND)) blind_minimum = 1 ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind eye_blind = blind_minimum if(!eye_blind) clear_alert("blind") diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 4d27f920db..1597b7a810 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -202,11 +202,7 @@ if(!user.mind.hasSoul) to_chat(user, "You do not possess a soul.") return 0 -<<<<<<< HEAD - if(user.disabilities & DUMB) -======= if(user.has_disability(DISABILITY_DUMB)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You quickly scrawl 'your name' on the contract.") signIncorrectly() return 0 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 5e4e4744de..9d5b7ce0d5 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -93,11 +93,7 @@ return if(ishuman(usr)) var/mob/living/carbon/human/H = usr -<<<<<<< HEAD - if(H.disabilities & CLUMSY && prob(25)) -======= if(H.has_disability(DISABILITY_CLUMSY) && prob(25)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(H, "You cut yourself on the paper! Ahhhh! Ahhhhh!") H.damageoverlaytemp = 9001 H.update_damage_hud() @@ -321,11 +317,7 @@ to_chat(user, "You stamp the paper with your rubber stamp.") if(P.is_hot()) -<<<<<<< HEAD - if(user.disabilities & CLUMSY && prob(10)) -======= if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind user.visible_message("[user] accidentally ignites themselves!", \ "You miss the paper and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index f74643d2f1..af33dfb28c 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -65,11 +65,7 @@ update_icon() else if(P.is_hot()) -<<<<<<< HEAD - if(user.disabilities & CLUMSY && prob(10)) -======= if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind user.visible_message("[user] accidentally ignites themselves!", \ "You miss [src] and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d3f915907c..5321a8b300 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -158,11 +158,7 @@ //Exclude lasertag guns from the DISABILITY_CLUMSY check. if(clumsy_check) if(istype(user)) -<<<<<<< HEAD - if (user.disabilities & CLUMSY && prob(40)) -======= if (user.has_disability(DISABILITY_CLUMSY) && prob(40)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(user, "You shoot yourself in the foot with [src]!") var/shot_leg = pick("l_leg", "r_leg") process_fire(user,user,0,params, zone_override = shot_leg) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 8637928867..32b490a8e6 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -349,11 +349,7 @@ clumsy_check = 0 /obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user) -<<<<<<< HEAD - if((user.disabilities & CLUMSY) || (user.mind && user.mind.assigned_role == "Clown")) -======= if((user.has_disability(DISABILITY_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown")) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return ..() if(process_fire(user, user, 0, zone_override = "head")) user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!") diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 40ea23291e..92b2f8c0d4 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -129,11 +129,7 @@ // A gun with ultra-honk pin is useful for clown and useless for everyone else. /obj/item/device/firing_pin/clown/ultra/pin_auth(mob/living/user) playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1) -<<<<<<< HEAD - if(!(user.disabilities & CLUMSY) && !(user.mind && user.mind.assigned_role == "Clown")) -======= if(!(user.has_disability(DISABILITY_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown")) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return 0 return 1 diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 52a7f4cd10..4f4bb6fdd1 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -667,22 +667,14 @@ var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES) if (!eyes) return -<<<<<<< HEAD - if(M.disabilities & BLIND) -======= if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(prob(20)) to_chat(M, "Your vision slowly returns...") M.cure_blind() M.cure_nearsighted() M.blur_eyes(35) -<<<<<<< HEAD - else if(M.disabilities & NEARSIGHT) -======= else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind to_chat(M, "The blackness in your peripheral vision fades.") M.cure_nearsighted() M.blur_eyes(10) @@ -773,11 +765,7 @@ M.visible_message("[M]'s body convulses a bit, and then falls still once more.") return M.visible_message("[M]'s body convulses a bit.") -<<<<<<< HEAD - if(!M.suiciding && !(M.disabilities & NOCLONE) && !M.hellbound) -======= if(!M.suiciding && !(M.has_disability(DISABILITY_NOCLONE)) && !M.hellbound) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind if(!M) return if(M.notify_ghost_cloning(source = M)) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index e6771d7db5..6e1e8046fe 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -141,11 +141,7 @@ taste_description = "mint" /datum/reagent/toxin/minttoxin/on_mob_life(mob/living/M) -<<<<<<< HEAD - if(M.disabilities & FAT) -======= if(M.has_disability(DISABILITY_FAT)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind M.gib() return ..() diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index ba3104976e..eca4990290 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -214,13 +214,9 @@ target.bodytemperature -= 200 /obj/effect/proc_holder/spell/targeted/abyssal_gaze/proc/cure_blindness(mob/target) -<<<<<<< HEAD - target.adjust_blindness(-5) -======= if(isliving(target)) var/mob/living/L = target L.cure_blind(DISABILITY_BLIND, "abyssal_gaze") ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind /obj/effect/proc_holder/spell/targeted/dominate name = "Dominate" diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 6cffe0a939..fa8d04d987 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -217,11 +217,7 @@ C = owner no_update = 0 -<<<<<<< HEAD - if(C.disabilities & HUSK) -======= if(C.has_disability(DISABILITY_HUSK)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind species_id = "husk" //overrides species_id dmg_overlay_type = "" //no damage overlay shown when husked should_draw_gender = FALSE diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 8d96f03338..4afe4df220 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -61,11 +61,7 @@ C = owner real_name = C.real_name -<<<<<<< HEAD - if(C.disabilities & HUSK) -======= if(C.has_disability(DISABILITY_HUSK)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind real_name = "Unknown" hair_style = "Bald" facial_hair_style = "Shaved" diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index d156df8ea0..dfb41f90e0 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -4,11 +4,7 @@ possible_locs = list("chest") /datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target) -<<<<<<< HEAD - if(target.disabilities & FAT) -======= if(target.has_disability(DISABILITY_FAT)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind return 1 return 0 diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm index 028b4ed5f1..2a12005956 100644 --- a/code/modules/surgery/organs/ears.dm +++ b/code/modules/surgery/organs/ears.dm @@ -25,11 +25,7 @@ return var/mob/living/carbon/C = owner // genetic deafness prevents the body from using the ears, even if healthy -<<<<<<< HEAD - if(C.disabilities & DEAF) -======= if(C.has_disability(DISABILITY_DEAF)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind deaf = max(deaf, 1) else if(C.ears && (C.ears.flags_2 & HEALS_EARS_2)) @@ -46,11 +42,7 @@ var/mob/living/carbon/C = owner -<<<<<<< HEAD - if(iscarbon(owner) && C.disabilities & DEAF) -======= if(iscarbon(owner) && C.has_disability(DISABILITY_DEAF)) ->>>>>>> bc20a75... Merge pull request #33783 from Cruix/fix_blind deaf = 1 /obj/item/organ/ears/proc/adjustEarDamage(ddmg, ddeaf) From 1047dccdd5572349ca19a496a9ef85041266d6e5 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 29 Dec 2017 01:20:09 -0600 Subject: [PATCH 5/7] fk --- code/citadel/organs/genitals.dm | 2 +- .../modules/mob/living/carbon/status_procs.dm | 37 +------------------ code/modules/mob/living/say.dm | 2 +- code/modules/mob/living/status_procs.dm | 2 +- code/modules/mob/status_procs.dm | 29 +-------------- 5 files changed, 6 insertions(+), 66 deletions(-) diff --git a/code/citadel/organs/genitals.dm b/code/citadel/organs/genitals.dm index 1f46778aaf..79784a1eb8 100644 --- a/code/citadel/organs/genitals.dm +++ b/code/citadel/organs/genitals.dm @@ -260,7 +260,7 @@ for(var/L in relevant_layers) //Less hardcode H.remove_overlay(L) - if(H.disabilities & HUSK) + if(H.has_disability(DISABILITY_HUSK)) return //start scanning for genitals //var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index e0743e2815..efde375227 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -64,43 +64,8 @@ /mob/living/carbon/set_disgust(amount) disgust = CLAMP(amount, 0, DISGUST_LEVEL_MAXEDOUT) -/mob/living/carbon/cure_blind() - if(disabilities & BLIND) - disabilities &= ~BLIND - adjust_blindness(-1) - return 1 -/mob/living/carbon/become_blind() - if(!(disabilities & BLIND)) - disabilities |= BLIND - blind_eyes(1) - return 1 -/mob/living/carbon/cure_nearsighted() - if(disabilities & NEARSIGHT) - disabilities &= ~NEARSIGHT - clear_fullscreen("nearsighted") - return 1 - -/mob/living/carbon/become_nearsighted() - if(!(disabilities & NEARSIGHT)) - disabilities |= NEARSIGHT - overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) - return 1 - -/mob/living/carbon/cure_husk() - if(disabilities & HUSK) - disabilities &= ~HUSK - status_flags &= ~DISFIGURED - update_body() - return 1 - -/mob/living/carbon/become_husk() - if(disabilities & HUSK) - return - disabilities |= HUSK - status_flags |= DISFIGURED //makes them unknown - update_body() - return 1 +////////////////////////////////////////TRAUMAS///////////////////////////////////////// /mob/living/carbon/proc/get_traumas() . = list() diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index b1a5e7f640..fa315068ac 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( /mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE) var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) - var/key = get_key(message) + var/talk_key = get_key(message) var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 86719ebb84..95033b1459 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -212,4 +212,4 @@ if(!has_disability(DISABILITY_HUSK)) status_flags |= DISFIGURED //makes them unknown update_body() - add_disability(DISABILITY_HUSK, source) + add_disability(DISABILITY_HUSK, source) \ No newline at end of file diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 2b86a8c6a4..591498c084 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -160,7 +160,7 @@ overlay_fullscreen("blind", /obj/screen/fullscreen/blind) else if(eye_blind) var/blind_minimum = 0 - if((stat != CONSCIOUS && stat != SOFT_CRIT) || (disabilities & BLIND)) + if((stat != CONSCIOUS && stat != SOFT_CRIT)) blind_minimum = 1 if(isliving(src)) var/mob/living/L = src @@ -181,7 +181,7 @@ overlay_fullscreen("blind", /obj/screen/fullscreen/blind) else if(eye_blind) var/blind_minimum = 0 - if((stat != CONSCIOUS && stat != SOFT_CRIT) || (disabilities & BLIND)) + if(stat != CONSCIOUS && stat != SOFT_CRIT) blind_minimum = 1 if(isliving(src)) var/mob/living/L = src @@ -235,31 +235,6 @@ /mob/proc/set_disgust(amount) return -/////////////////////////////////// BLIND DISABILITY //////////////////////////////////// - -/mob/proc/cure_blind() //when we want to cure the BLIND disability only. - return - -/mob/proc/become_blind() - return - -/////////////////////////////////// NEARSIGHT DISABILITY //////////////////////////////////// - -/mob/proc/cure_nearsighted() - return - -/mob/proc/become_nearsighted() - return - - -//////////////////////////////// HUSK DISABILITY ///////////////////////////: - -/mob/proc/cure_husk() - return - -/mob/proc/become_husk() - return - From c7db4e8310015f199646ae1d0843ebe87828ee77 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 29 Dec 2017 04:12:43 -0600 Subject: [PATCH 6/7] also syncs a bunch of shit --- code/__DEFINES/antagonists.dm | 2 + code/datums/antagonists/monkey.dm | 34 ++++---- code/datums/diseases/_MobProcs.dm | 19 ++-- code/datums/diseases/_disease.dm | 11 ++- code/datums/diseases/transformation.dm | 24 ++++-- code/datums/emotes.dm | 13 +-- .../gamemodes/miniantags/monkey/monkey.dm | 86 +++++++++++-------- code/modules/projectiles/guns/beam_rifle.dm | 40 +-------- .../space_transition/space_transition.dm | 14 +-- code/modules/surgery/organs/heart.dm | 14 +++ .../objects/items/melee/eutactic_blades.dm | 2 +- 11 files changed, 133 insertions(+), 126 deletions(-) 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 += "The monkey leaders were:" parts += printplayerlist(SSticker.mode.ape_leaders) - if(LAZYLEN(SSticker.mode.ape_infectees)) + if(LAZYLEN(monkeys)) parts += "The monkeys were:" 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 From a56882556b428921170c84d9882a37adf5d8e792 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 29 Dec 2017 07:36:03 -0600 Subject: [PATCH 7/7] Update _eminence.dm --- .../gamemodes/clock_cult/clock_mobs/_eminence.dm | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm b/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm index 4561dc4f8b..8416e4651d 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm @@ -20,18 +20,7 @@ /mob/camera/eminence/Move(NewLoc, direct) var/OldLoc = loc if(NewLoc && !istype(NewLoc, /turf/open/indestructible/reebe_void)) - var/turf/T = get_turf(NewLoc) - if(T.flags_1 & NOJAUNT_1) - if(last_failed_turf != T) - T.visible_message("[T] suddenly emits a ringing sound!", ignore_mob = src) - playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 75, FALSE) - last_failed_turf = T - to_chat(src, "This turf is consecrated and can't be crossed!") - return - if(!GLOB.ratvar_awakens && istype(get_area(T), /area/chapel)) - to_chat(src, "The Chapel is hallowed ground under a heretical deity, and can't be accessed!") - return - forceMove(T) + forceMove(get_turf(NewLoc)) Moved(OldLoc, direct) if(GLOB.ratvar_awakens) for(var/turf/T in range(5, src))