diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 7e194d5889..d4ec44a641 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -20,7 +20,7 @@ var/override = 0 for(var/datum/mutation/human/HM in dna.mutations) - override += HM.on_attack_hand(src, A, proximity) + override += HM.on_attack_hand(A, proximity) if(override) return @@ -95,7 +95,7 @@ return for(var/datum/mutation/human/HM in dna.mutations) - HM.on_ranged_attack(src, A, mouseparams) + HM.on_ranged_attack(A, mouseparams) if(isturf(A) && get_dist(src,A) <= 1) src.Move_Pulled(A) diff --git a/code/datums/mutations.dm b/code/datums/mutations/_mutations.dm similarity index 83% rename from code/datums/mutations.dm rename to code/datums/mutations/_mutations.dm index 9234e124c5..2156581cb1 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -51,45 +51,46 @@ if(copymut && istype(copymut, /datum/mutation/human)) copy_mutation(copymut) -/datum/mutation/human/proc/on_acquiring(mob/living/carbon/human/owner) - if(!owner || !istype(owner) || owner.stat == DEAD || (src in owner.dna.mutations)) +/datum/mutation/human/proc/on_acquiring(mob/living/carbon/human/H) + if(!H || !istype(H) || H.stat == DEAD || (src in H.dna.mutations)) return TRUE - if(species_allowed.len && !species_allowed.Find(owner.dna.species.id)) + if(species_allowed.len && !species_allowed.Find(H.dna.species.id)) return TRUE - if(health_req && owner.health < health_req) + if(health_req && H.health < health_req) return TRUE - if(limb_req && !owner.get_bodypart(limb_req)) + if(limb_req && !H.get_bodypart(limb_req)) return TRUE - dna = owner.dna + owner = H + dna = H.dna dna.mutations += src if(text_gain_indication) - to_chat(owner, text_gain_indication) + to_chat(H, text_gain_indication) if(visual_indicators.len) - var/list/mut_overlay = list(get_visual_indicator(owner)) - if(owner.overlays_standing[layer_used]) - mut_overlay = owner.overlays_standing[layer_used] - mut_overlay |= get_visual_indicator(owner) - owner.remove_overlay(layer_used) - owner.overlays_standing[layer_used] = mut_overlay - owner.apply_overlay(layer_used) + var/list/mut_overlay = list(get_visual_indicator()) + if(H.overlays_standing[layer_used]) + mut_overlay = H.overlays_standing[layer_used] + mut_overlay |= get_visual_indicator() + H.remove_overlay(layer_used) + H.overlays_standing[layer_used] = mut_overlay + H.apply_overlay(layer_used) - grant_spell(owner) + grant_spell() if(!modified) addtimer(CALLBACK(src, .proc/modify, 5)) //gonna want children calling ..() to run first -/datum/mutation/human/proc/get_visual_indicator(mob/living/carbon/human/owner) +/datum/mutation/human/proc/get_visual_indicator() return -/datum/mutation/human/proc/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) +/datum/mutation/human/proc/on_attack_hand(atom/target, proximity) return -/datum/mutation/human/proc/on_ranged_attack(mob/living/carbon/human/owner, atom/target) +/datum/mutation/human/proc/on_ranged_attack(atom/target, mouseparams) return -/datum/mutation/human/proc/on_move(mob/living/carbon/human/owner, new_loc) +/datum/mutation/human/proc/on_move(atom/new_loc) return -/datum/mutation/human/proc/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/proc/on_life() return /datum/mutation/human/proc/on_losing(mob/living/carbon/human/owner) @@ -172,7 +173,7 @@ else qdel(src) -/datum/mutation/human/proc/grant_spell(mob/living/carbon/human/owner) +/datum/mutation/human/proc/grant_spell() if(!ispath(power) || !owner) return FALSE @@ -180,4 +181,4 @@ power.action_background_icon_state = "bg_tech_blue_on" power.panel = "Genetic" owner.AddSpell(power) - return TRUE \ No newline at end of file + return TRUE diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index e3ee336097..f036b25518 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -111,7 +111,7 @@ energy_coeff = 1 synchronizer_coeff = 1 -/datum/mutation/human/void/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/void/on_life() if(!isturf(owner.loc)) return if(prob((0.5+((100-dna.stability)/20))) * GET_MUTATION_SYNCHRONIZER(src)) //very rare, but enough to annoy you hopefully. +0.5 probability for every 10 points lost in stability diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index a2700f7862..978802fd80 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -36,7 +36,7 @@ if(!(type in visual_indicators)) visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1))//-MUTATIONS_LAYER+1 -/datum/mutation/human/antenna/get_visual_indicator(mob/living/carbon/human/owner) +/datum/mutation/human/antenna/get_visual_indicator() return visual_indicators[type][1] /datum/mutation/human/mindreader @@ -104,5 +104,5 @@ if(!(type in visual_indicators)) visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1)) -/datum/mutation/human/mindreader/get_visual_indicator(mob/living/carbon/human/owner) +/datum/mutation/human/mindreader/get_visual_indicator() return visual_indicators[type][1] diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index e229fdde9a..cc286058f1 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -9,7 +9,7 @@ synchronizer_coeff = 1 power_coeff = 1 -/datum/mutation/human/epilepsy/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/epilepsy/on_life() if(prob(1 * GET_MUTATION_SYNCHRONIZER(src)) && owner.stat == CONSCIOUS) owner.visible_message("[owner] starts having a seizure!", "You have a seizure!") owner.Unconscious(200 * GET_MUTATION_POWER(src)) @@ -57,7 +57,7 @@ synchronizer_coeff = 1 power_coeff = 1 -/datum/mutation/human/cough/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/cough/on_life() if(prob(5 * GET_MUTATION_SYNCHRONIZER(src)) && owner.stat == CONSCIOUS) owner.drop_all_held_items() owner.emote("cough") @@ -118,7 +118,7 @@ text_gain_indication = "You twitch." synchronizer_coeff = 1 -/datum/mutation/human/tourettes/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/tourettes/on_life() if(prob(10 * GET_MUTATION_SYNCHRONIZER(src)) && owner.stat == CONSCIOUS && !owner.IsStun()) owner.Stun(200) switch(rand(1, 3)) @@ -212,7 +212,7 @@ synchronizer_coeff = 1 power_coeff = 1 -/datum/mutation/human/fire/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/fire/on_life() if(prob((1+(100-dna.stability)/10)) * GET_MUTATION_SYNCHRONIZER(src)) owner.adjust_fire_stacks(2 * GET_MUTATION_POWER(src)) owner.IgniteMob() @@ -268,7 +268,7 @@ text_gain_indication = "You feel screams echo through your mind..." text_lose_indication = "The screaming in your mind fades." -/datum/mutation/human/paranoia/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/paranoia/on_life() if(prob(5) && owner.stat == CONSCIOUS) owner.emote("scream") owner.jitteriness = min(max(0, owner.jitteriness + 5), 30) diff --git a/code/datums/mutations/chameleon.dm b/code/datums/mutations/chameleon.dm index 7682351ebf..f552ccaa75 100644 --- a/code/datums/mutations/chameleon.dm +++ b/code/datums/mutations/chameleon.dm @@ -14,13 +14,13 @@ return owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY -/datum/mutation/human/chameleon/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/chameleon/on_life() owner.alpha = max(0, owner.alpha - 25) -/datum/mutation/human/chameleon/on_move(mob/living/carbon/human/owner) +/datum/mutation/human/chameleon/on_move(atom/new_loc) owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY -/datum/mutation/human/chameleon/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) +/datum/mutation/human/chameleon/on_attack_hand(atom/target, proximity) if(proximity) //stops tk from breaking chameleon owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY return diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index eb6c9665f3..4f8cd6b25e 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -19,11 +19,11 @@ SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk) RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) -/datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner,atom/target, proximity) +/datum/mutation/human/hulk/on_attack_hand(atom/target, proximity) if(proximity) //no telekinetic hulk attack return target.attack_hulk(owner) -/datum/mutation/human/hulk/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/hulk/on_life() if(owner.health < 0) on_losing(owner) to_chat(owner, "You suddenly feel very weak.") diff --git a/code/datums/mutations/radioactive.dm b/code/datums/mutations/radioactive.dm index f76e6885d0..df30aaa9d2 100644 --- a/code/datums/mutations/radioactive.dm +++ b/code/datums/mutations/radioactive.dm @@ -7,7 +7,7 @@ instability = 5 difficulty = 8 -/datum/mutation/human/radioactive/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/radioactive/on_life() radiation_pulse(owner, 20) /datum/mutation/human/radioactive/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) diff --git a/code/datums/mutations/space_adaptation.dm b/code/datums/mutations/space_adaptation.dm index 90535fbf6e..94c829d367 100644 --- a/code/datums/mutations/space_adaptation.dm +++ b/code/datums/mutations/space_adaptation.dm @@ -13,7 +13,7 @@ if(!(type in visual_indicators)) visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "fire", -MUTATIONS_LAYER)) -/datum/mutation/human/space_adaptation/get_visual_indicator(mob/living/carbon/human/owner) +/datum/mutation/human/space_adaptation/get_visual_indicator() return visual_indicators[type][1] /datum/mutation/human/space_adaptation/on_acquiring(mob/living/carbon/human/owner) diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index 5716b2595b..56ce3533fc 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -7,7 +7,7 @@ quality = MINOR_NEGATIVE text_gain_indication = "You feel nervous." -/datum/mutation/human/nervousness/on_life(mob/living/carbon/human/owner) +/datum/mutation/human/nervousness/on_life() if(prob(10)) owner.stuttering = max(10, owner.stuttering) diff --git a/code/datums/mutations/telekinesis.dm b/code/datums/mutations/telekinesis.dm index b03ac04027..5377829408 100644 --- a/code/datums/mutations/telekinesis.dm +++ b/code/datums/mutations/telekinesis.dm @@ -13,8 +13,8 @@ if(!(type in visual_indicators)) visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER)) -/datum/mutation/human/telekinesis/get_visual_indicator(mob/living/carbon/human/owner) +/datum/mutation/human/telekinesis/get_visual_indicator() return visual_indicators[type][1] -/datum/mutation/human/telekinesis/on_ranged_attack(mob/living/carbon/human/owner, atom/target) - target.attack_tk(owner) \ No newline at end of file +/datum/mutation/human/telekinesis/on_ranged_attack(atom/target, mouseparams) + target.attack_tk(owner) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 68db9b4807..50620b90fe 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -177,7 +177,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) STR.max_items = 28 /obj/item/storage/toolbox/brass/prefilled/PopulateContents() - new fabricator_type(src) + if(fabricator_type) + new fabricator_type(src) new /obj/item/screwdriver/brass(src) new /obj/item/wirecutters/brass(src) new /obj/item/wrench/brass(src) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 83a03ed2d9..25dc529f9d 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -228,6 +228,7 @@ M.DefaultCombatKnockdown(40) M.adjustBruteLoss(60) Expand() + return TRUE return ..() /obj/item/reagent_containers/food/snacks/monkeycube/proc/Expand() diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index b6cf0f5a82..a26bdd99cd 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -52,7 +52,7 @@ var/oldpseudoheight = pseudo_z_axis . = ..() for(var/datum/mutation/human/HM in dna.mutations) - HM.on_move(src, NewLoc) + HM.on_move(NewLoc) if(. && (combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) && !(movement_type & FLYING) && CHECK_ALL_MOBILITY(src, MOBILITY_MOVE|MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby) if(!HAS_TRAIT(src, TRAIT_FREESPRINT)) doSprintLossTiles(1) diff --git a/tgstation.dme b/tgstation.dme index 825910b716..6c39587922 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -338,7 +338,6 @@ #include "code\datums\map_config.dm" #include "code\datums\mind.dm" #include "code\datums\mutable_appearance.dm" -#include "code\datums\mutations.dm" #include "code\datums\numbered_display.dm" #include "code\datums\outfit.dm" #include "code\datums\position_point_vector.dm" @@ -537,6 +536,7 @@ #include "code\datums\mood_events\generic_positive_events.dm" #include "code\datums\mood_events\mood_event.dm" #include "code\datums\mood_events\needs_events.dm" +#include "code\datums\mutations\_mutations.dm" #include "code\datums\mutations\actions.dm" #include "code\datums\mutations\antenna.dm" #include "code\datums\mutations\body.dm"