mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Update projectile.dm
This commit is contained in:
@@ -134,6 +134,8 @@
|
|||||||
// This is distinct from the hitscan's "impact_type" var.
|
// This is distinct from the hitscan's "impact_type" var.
|
||||||
var/impact_effect_type = null
|
var/impact_effect_type = null
|
||||||
|
|
||||||
|
var/list/impacted_mobs = list()
|
||||||
|
|
||||||
/obj/item/projectile/proc/Range()
|
/obj/item/projectile/proc/Range()
|
||||||
range--
|
range--
|
||||||
if(range <= 0 && loc)
|
if(range <= 0 && loc)
|
||||||
@@ -442,6 +444,12 @@
|
|||||||
if(hitscan)
|
if(hitscan)
|
||||||
finalize_hitscan_and_generate_tracers()
|
finalize_hitscan_and_generate_tracers()
|
||||||
STOP_PROCESSING(SSprojectiles, src)
|
STOP_PROCESSING(SSprojectiles, src)
|
||||||
|
|
||||||
|
if(impacted_mobs)
|
||||||
|
if(LAZYLEN(impacted_mobs))
|
||||||
|
impacted_mobs.Cut()
|
||||||
|
impacted_mobs = null
|
||||||
|
|
||||||
qdel(trajectory)
|
qdel(trajectory)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
@@ -634,6 +642,9 @@
|
|||||||
if(!istype(target_mob))
|
if(!istype(target_mob))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if(target_mob in impacted_mobs)
|
||||||
|
return
|
||||||
|
|
||||||
//roll to-hit
|
//roll to-hit
|
||||||
miss_modifier = max(15*(distance-2) - accuracy + miss_modifier + target_mob.get_evasion(), 0)
|
miss_modifier = max(15*(distance-2) - accuracy + miss_modifier + target_mob.get_evasion(), 0)
|
||||||
var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss
|
var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss
|
||||||
@@ -646,6 +657,10 @@
|
|||||||
if(!istype(target_mob))
|
if(!istype(target_mob))
|
||||||
return FALSE // Mob deleted itself or something.
|
return FALSE // Mob deleted itself or something.
|
||||||
|
|
||||||
|
// Safe to add the target to the list that is soon to be poofed. No double jeopardy, pixel projectiles.
|
||||||
|
if(islist(impacted_mobs))
|
||||||
|
impacted_mobs |= target_mob
|
||||||
|
|
||||||
if(result == PROJECTILE_FORCE_MISS)
|
if(result == PROJECTILE_FORCE_MISS)
|
||||||
if(!silenced)
|
if(!silenced)
|
||||||
target_mob.visible_message("<span class='notice'>\The [src] misses \the [target_mob] narrowly!</span>")
|
target_mob.visible_message("<span class='notice'>\The [src] misses \the [target_mob] narrowly!</span>")
|
||||||
@@ -792,4 +807,4 @@
|
|||||||
var/volume = CLAMP(vol_by_damage() + 20, 0, 100)
|
var/volume = CLAMP(vol_by_damage() + 20, 0, 100)
|
||||||
if(silenced)
|
if(silenced)
|
||||||
volume = 5
|
volume = 5
|
||||||
playsound(get_turf(A), hitsound_wall, volume, 1, -1)
|
playsound(A, hitsound_wall, volume, 1, -1)
|
||||||
|
|||||||
Reference in New Issue
Block a user