diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 1bf6a0a7908..375c0b7e5e5 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -577,7 +577,7 @@ log_message("Hit by [AM].") if(isitem(AM)) var/obj/item/I = AM - add_attack_logs(I.thrownby, OCCUPANT_LOGGING, "threw [AM] at mech [src]") + add_attack_logs(locateUID(I.thrownby), OCCUPANT_LOGGING, "threw [AM] at mech [src]") . = ..() /obj/mecha/bullet_act(obj/item/projectile/Proj) //wrapper diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 307234f6946..a6b2f0116e1 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -82,7 +82,8 @@ GLOBAL_DATUM_INIT(fire_overlay, /image, image("icon" = 'icons/goonstation/effect // non-clothing items var/datum/dog_fashion/dog_fashion = null - var/mob/thrownby = null + /// UID of a /mob + var/thrownby //So items can have custom embedd values //Because customisation is king @@ -651,7 +652,7 @@ GLOBAL_DATUM_INIT(fire_overlay, /image, image("icon" = 'icons/goonstation/effect return hit_atom.hitby(src, 0, itempush, throwingdatum = throwingdatum) /obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force) - thrownby = thrower + thrownby = thrower.UID() callback = CALLBACK(src, .proc/after_throw, callback) //replace their callback with our own . = ..(target, range, speed, thrower, spin, diagonals_first, callback, force) diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm index a0d8aeadca4..1efd1fe797f 100644 --- a/code/game/objects/items/weapons/dice.dm +++ b/code/game/objects/items/weapons/dice.dm @@ -315,7 +315,7 @@ diceroll(user) /obj/item/dice/throw_impact(atom/target) - diceroll(thrownby) + diceroll(locateUID(thrownby)) . = ..() /obj/item/dice/proc/diceroll(mob/user) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 52ed1e9c24c..090e09895d8 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -206,7 +206,7 @@ visible_message("[owner] Deflects [I] directly back at the thrower! It's a home run!", "You deflect [I] directly back at the thrower! It's a home run!") playsound(get_turf(owner), 'sound/weapons/homerun.ogg', 100, 1) do_attack_animation(I, ATTACK_EFFECT_DISARM) - I.throw_at(I.thrownby, 20, 20, owner) + I.throw_at(locateUID(I.thrownby), 20, 20, owner) deflectmode = FALSE if(!istype(I, /obj/item/beach_ball)) lastdeflect = world.time + 3000 diff --git a/code/modules/admin/verbs/onlyoneteam.dm b/code/modules/admin/verbs/onlyoneteam.dm index 311a0bac2d8..62087f91513 100644 --- a/code/modules/admin/verbs/onlyoneteam.dm +++ b/code/modules/admin/verbs/onlyoneteam.dm @@ -76,7 +76,7 @@ return if(H.l_hand == src) return - var/mob/A = thrownby + var/mob/A = locateUID(thrownby) if((H in GLOB.team_alpha) && (A in GLOB.team_alpha)) to_chat(A, "He's on your team!") return diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index e5d4f501c5d..fefe8a4b144 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -119,7 +119,7 @@ /obj/item/reagent_containers/food/snacks/grown/throw_impact(atom/hit_atom) if(!..()) //was it caught by a mob? if(seed) - log_action(thrownby, hit_atom, "Thrown [src] at") + log_action(locateUID(thrownby), hit_atom, "Thrown [src] at") for(var/datum/plant_gene/trait/T in seed.genes) T.on_throw_impact(src, hit_atom) if(seed.get_gene(/datum/plant_gene/trait/squash)) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 1c893fe6ef5..e567899fe97 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -537,7 +537,7 @@ emp_act if(istype(AM, /obj/item)) I = AM throwpower = I.throwforce - if(I.thrownby == src) //No throwing stuff at yourself to trigger reactions + if(locateUID(I.thrownby) == src) //No throwing stuff at yourself to trigger reactions return ..() if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK)) hitpush = FALSE diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index 95642f9f3c6..a15c9095ea2 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -465,7 +465,7 @@ var/obj/item/I if(istype(AM, /obj/item)) I = AM - if(I.thrownby == H) //No throwing stuff at yourself to trigger the teleport + if(locateUID(I.thrownby) == H) //No throwing stuff at yourself to trigger the teleport return 0 else reactive_teleport(H) @@ -610,7 +610,7 @@ var/obj/item/I if(istype(AM, /obj/item)) I = AM - if(I.thrownby == H) //No throwing stuff at yourself to make bananas + if(locateUID(I.thrownby) == H) //No throwing stuff at yourself to make bananas return 0 else new/obj/item/grown/bananapeel/specialpeel(get_turf(H)) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 6edcec8c385..4e1508e44ba 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -110,9 +110,9 @@ if(blocked) return TRUE - - if(thrown_item.thrownby) - add_attack_logs(thrown_item.thrownby, src, "Hit with thrown [thrown_item]", !thrown_item.throwforce ? ATKLOG_ALMOSTALL : null) // Only message if the person gets damages + var/mob/thrower = locateUID(thrown_item.thrownby) + if(thrower) + add_attack_logs(thrower, src, "Hit with thrown [thrown_item]", !thrown_item.throwforce ? ATKLOG_ALMOSTALL : null) // Only message if the person gets damages if(nosell_hit) return ..() visible_message("[src] is hit by [thrown_item]!", "You're hit by [thrown_item]!") diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 45e3f76d0e2..61e416a3492 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -557,9 +557,9 @@ /mob/living/simple_animal/bot/ed209/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) var/obj/item/I = AM - if(I.throwforce < src.health && I.thrownby && ishuman(I.thrownby)) - var/mob/living/carbon/human/H = I.thrownby - retaliate(H) + var/mob/thrower = locateUID(I.thrownby) + if(I.throwforce < src.health && ishuman(thrower)) + retaliate(thrower) ..() /mob/living/simple_animal/bot/ed209/RangedAttack(atom/A, params) diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 84a87fbd51f..b93c430d6ea 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -142,9 +142,9 @@ if(istype(AM, /obj/item)) playsound(src, honksound, 50, TRUE, -1) var/obj/item/I = AM - if(I.throwforce < src.health && I.thrownby && ishuman(I.thrownby)) - var/mob/living/carbon/human/H = I.thrownby - retaliate(H) + var/mob/thrower = locateUID(I.thrownby) + if(I.throwforce < src.health && ishuman(thrower)) + retaliate(thrower) ..() /mob/living/simple_animal/bot/honkbot/proc/bike_horn() //use bike_horn diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index dbac3728a37..bf8660d35a5 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -230,9 +230,9 @@ /mob/living/simple_animal/bot/secbot/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) var/obj/item/I = AM - if(I.throwforce < src.health && I.thrownby && ishuman(I.thrownby)) - var/mob/living/carbon/human/H = I.thrownby - retaliate(H) + var/mob/thrower = locateUID(I.thrownby) + if(I.throwforce < src.health && ishuman(thrower)) + retaliate(thrower) ..()