Throwing Datum Fix (#19635)

This commit is contained in:
Cameron Lennox
2026-07-30 01:09:50 +02:00
committed by GitHub
parent 8c7172b993
commit 0fe39c5f85
5 changed files with 9 additions and 22 deletions
+2 -4
View File
@@ -39,13 +39,12 @@
. = ..()
if(istype(thrower) && thrower.a_intent == I_HURT)
violent_throw = TRUE
throw_source = get_turf(thrower)
/obj/item/reagent_containers/food/drinks/bottle/throw_impact(atom/hit_atom)
/obj/item/reagent_containers/food/drinks/bottle/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
..()
if(isGlass && violent_throw)
var/throw_dist = get_dist(throw_source, loc)
var/throw_dist = get_dist(throwingdatum.starting_turf, loc)
if(smash_check(throw_dist)) //not as reliable as smashing directly
if(reagents)
hit_atom.visible_message(span_notice("The contents of \the [src] splash all over [hit_atom]!"))
@@ -53,7 +52,6 @@
src.smash(loc, hit_atom)
violent_throw = FALSE
throw_source = null
/obj/item/reagent_containers/food/drinks/bottle/proc/smash_check(distance)
if(!isGlass || !smash_duration)
@@ -383,8 +383,8 @@ emp_act
//check if we hit
var/miss_chance = 15
if (thrown_object.throw_source)
var/distance = get_dist(thrown_object.throw_source, loc)
if(throwingdatum?.starting_turf)
var/distance = get_dist(throwingdatum.starting_turf, loc)
miss_chance = max(15*(distance-2), 0)
zone = get_zone_with_miss_chance(zone, src, miss_chance, ranged_attack=1, attacker = thrower)
@@ -433,8 +433,8 @@ emp_act
var/mass = thrown_object.w_class/THROWNOBJ_KNOCKBACK_DIVISOR
var/momentum = speed*mass
if(thrown_object.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED && !buckled)
var/dir = get_dir(thrown_object.throw_source, src)
if(throwingdatum?.starting_turf && momentum >= THROWNOBJ_KNOCKBACK_SPEED && !buckled)
var/dir = get_dir(throwingdatum.starting_turf, src)
visible_message(span_filter_warning("[span_red("[src] staggers under the impact!")]"),span_filter_warning("[span_red("You stagger under the impact!")]"))
src.throw_at(get_edge_target_turf(src,dir),1,momentum)
+2 -11
View File
@@ -255,15 +255,6 @@
var/dtype = O.damtype
var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR)
var/miss_chance = 15
if (O.throw_source)
var/distance = get_dist(O.throw_source, loc)
miss_chance = max(15*(distance-2), 0)
if (prob(miss_chance))
visible_message(span_notice("\The [O] misses [src] narrowly!"))
return
src.visible_message(span_filter_warning("[span_red("[src] has been hit by [O].")]"))
var/armor = run_armor_check(null, "melee")
@@ -281,8 +272,8 @@
var/mass = O.w_class/THROWNOBJ_KNOCKBACK_DIVISOR
var/momentum = speed*mass
if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED)
var/dir = get_dir(O.throw_source, src)
if(throwingdatum.starting_turf && momentum >= THROWNOBJ_KNOCKBACK_SPEED)
var/dir = get_dir(throwingdatum.starting_turf, src)
visible_message(span_filter_warning("[span_red("[src] staggers under the impact!")]"),span_filter_warning("[span_red("You stagger under the impact!")]"))
src.throw_at(get_edge_target_turf(src,dir),1,momentum)