Files
Bubberstation/code/modules/projectiles/projectile/bullets/sniper.dm
paganiy 8326dd1021 Auto-aim in combat mode at mobs on the floor is disabled after 10 tiles. (#83270)
## About The Pull Request
As stated in the title, auto-aiming at prone targets is disabled after
the projectile passed more than 10 tiles (the limit of vision of an
ordinary spaceman is 9 tiles). Within 10 tiles, shooting in combat mode
remains unchanged. This also does not apply to sniper rifles.
Here's a preview of how it works:

https://github.com/tgstation/tgstation/assets/126676387/d62fbb03-9f63-4a73-a32a-62b4d11e4515
## Why It's Good For The Game
The main problem of shooting in combat mode is shooting in busy
corridors. Often, you are unwilling to become a participant in the
security's pursuit of the antagonist, and receive unintended
projectiles. You will be lucky if the projectile turns out to be
non-lethal, but if it is a laser, you can get a second-degree burn or
even a catastrophic one from just one shot. (depending on which laser
was fired and where you were hit), which is not very pleasant. To stay
unharmed and simplify the work of security, it is logical to lie down on
the floor.
This will not revive the lie-down meta to dodge projectiles, because
within sight of the spaceman and even a little further, lying targets
will still be hit by projectiles. And if you decide to lie down during
the chase to dodge the projectiles, then the pursuers will quickly catch
up with you and shoot you in combat mode.
## Changelog
🆑
balance: Auto-aim in combat mode at mobs on the floor is disabled after
the projectile passes 10 tiles.
/🆑

---------

Co-authored-by: paganiy <leunscrupuloustrolle@ gmail.com>
2024-05-22 08:34:59 -04:00

119 lines
3.5 KiB
Plaintext

// .50 BMG (Sniper)
/obj/projectile/bullet/p50
name =".50 BMG bullet"
speed = 0.4
range = 400 // Enough to travel from one corner of the Z to the opposite corner and then some.
damage = 70
paralyze = 100
dismemberment = 50
catastropic_dismemberment = TRUE
armour_penetration = 50
ignore_range_hit_prone_targets = TRUE
///Determines object damage.
var/object_damage = 80
///Determines how much additional damage the round does to mechs.
var/mecha_damage = 10
/obj/projectile/bullet/p50/on_hit(atom/target, blocked = 0, pierce_hit)
if(isobj(target) && (blocked != 100))
var/obj/thing_to_break = target
var/damage_to_deal = object_damage
if(ismecha(thing_to_break) && mecha_damage)
damage_to_deal += mecha_damage
if(damage_to_deal)
thing_to_break.take_damage(damage_to_deal, BRUTE, BULLET, FALSE)
return ..()
/obj/projectile/bullet/p50/surplus
name =".50 BMG surplus bullet"
armour_penetration = 0
paralyze = 0
dismemberment = 0
catastropic_dismemberment = FALSE
/obj/projectile/bullet/p50/disruptor
name =".50 BMG disruptor bullet"
damage_type = STAMINA
paralyze = 0
dismemberment = 0
catastropic_dismemberment = FALSE
object_damage = 0
mecha_damage = 100
var/emp_radius = 2
/obj/projectile/bullet/p50/disruptor/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if((blocked != 100) && isliving(target))
var/mob/living/living_guy = target
living_guy.Sleeping(40 SECONDS) //Yes, its really 40 seconds of sleep, I hope you had your morning coffee.
if(issilicon(target)) //also especially good against borgs
var/mob/living/silicon/borg_boy = target
borg_boy.apply_damage(damage, BRUTE)
empulse(target, emp_radius, emp_radius)
/obj/projectile/bullet/p50/incendiary
name =".50 BMG incendiary bullet"
damage_type = BURN
paralyze = 0
dismemberment = 0
catastropic_dismemberment = FALSE
object_damage = 30
mecha_damage = 0
/obj/projectile/bullet/p50/incendiary/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/poor_burning_dork = target
poor_burning_dork.adjust_fire_stacks(20)
poor_burning_dork.ignite_mob()
for(var/turf/nearby_turf as anything in RANGE_TURFS(2, target))
new /obj/effect/hotspot(nearby_turf)
/obj/projectile/bullet/p50/penetrator
name = ".50 BMG penetrator round"
icon_state = "gauss"
damage = 60
range = 50
projectile_piercing = PASSMOB|PASSVEHICLE
projectile_phasing = ~(PASSMOB|PASSVEHICLE)
phasing_ignore_direct_target = TRUE
dismemberment = 0 //It goes through you cleanly.
catastropic_dismemberment = FALSE
paralyze = 0
object_damage = 0
/obj/projectile/bullet/p50/penetrator/shuttle //Nukeop Shuttle Variety
name = ".50 BMG aggression dissuasion round"
icon_state = "gaussstrong"
damage = 25
speed = 0.3
range = 16
/obj/projectile/bullet/p50/marksman
name = ".50 BMG marksman round"
damage = 50
range = 50
paralyze = 0
tracer_type = /obj/effect/projectile/tracer/sniper
impact_type = /obj/effect/projectile/impact/sniper
muzzle_type = /obj/effect/projectile/muzzle/sniper
hitscan = TRUE
impact_effect_type = null
hitscan_light_intensity = 3
hitscan_light_range = 0.75
hitscan_light_color_override = LIGHT_COLOR_DIM_YELLOW
muzzle_flash_intensity = 5
muzzle_flash_range = 1
muzzle_flash_color_override = LIGHT_COLOR_DIM_YELLOW
impact_light_intensity = 5
impact_light_range = 1
impact_light_color_override = LIGHT_COLOR_DIM_YELLOW
ricochets_max = 1
ricochet_chance = 100
ricochet_auto_aim_angle = 45
ricochet_auto_aim_range = 15
ricochet_incidence_leeway = 90
ricochet_decay_damage = 1
ricochet_shoots_firer = FALSE