From 3c2cb76792b0ee9890a683ba69ed2f3a6c9d64c4 Mon Sep 17 00:00:00 2001
From: Ghommie <42542238+Ghommie@users.noreply.github.com>
Date: Sun, 22 Mar 2020 15:23:05 +0100
Subject: [PATCH] Fixing owner not being set in mutation/on_aquiring.
---
code/_onclick/other_mobs.dm | 4 +-
.../{mutations.dm => mutations/_mutations.dm} | 45 ++++++++++---------
code/datums/mutations/actions.dm | 2 +-
code/datums/mutations/antenna.dm | 4 +-
code/datums/mutations/body.dm | 10 ++---
code/datums/mutations/chameleon.dm | 6 +--
code/datums/mutations/hulk.dm | 4 +-
code/datums/mutations/radioactive.dm | 2 +-
code/datums/mutations/space_adaptation.dm | 2 +-
code/datums/mutations/speech.dm | 2 +-
code/datums/mutations/telekinesis.dm | 6 +--
code/game/objects/items/storage/toolbox.dm | 3 +-
.../food_and_drinks/food/snacks_meat.dm | 1 +
.../mob/living/carbon/human/human_movement.dm | 2 +-
tgstation.dme | 2 +-
15 files changed, 49 insertions(+), 46 deletions(-)
rename code/datums/{mutations.dm => mutations/_mutations.dm} (83%)
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"