From 73df3fcf1422258949fd6fc8638569fef14f7138 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Tue, 3 Oct 2023 12:10:55 -0400 Subject: [PATCH] Antimatter now innacurate without zooming. Sniper projectiles are faster / pass through weak stuff. (#22506) * I should port the sniper rifle bot from blood blockade battlefront * fuck that a * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * variable on bullet --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> --- code/__DEFINES/flags.dm | 17 +++++++++-------- code/datums/uplink_items/uplink_nuclear.dm | 2 +- code/game/objects/structures/girders.dm | 6 ++++-- .../projectiles/guns/projectile/sniper.dm | 18 +++++++++++++++--- code/modules/surgery/organs/organ_external.dm | 1 + 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index d4972d13802..ad9524414da 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -127,14 +127,15 @@ #define SAFE 16 //flags for pass_flags -#define PASSTABLE 1 -#define PASSGLASS 2 -#define PASSGRILLE 4 -#define PASSBLOB 8 -#define PASSMOB 16 -#define LETPASSTHROW 32 -#define PASSFENCE 64 -#define PASSDOOR 128 +#define PASSTABLE (1<<0) +#define PASSGLASS (1<<1) +#define PASSGRILLE (1<<2) +#define PASSBLOB (1<<3) +#define PASSMOB (1<<4) +#define LETPASSTHROW (1<<5) +#define PASSFENCE (1<<6) +#define PASSDOOR (1<<7) +#define PASSGIRDER (1<<8) //turf-only flags #define NOJAUNT 1 diff --git a/code/datums/uplink_items/uplink_nuclear.dm b/code/datums/uplink_items/uplink_nuclear.dm index 325fb7aee9c..cbd61cfe8ac 100644 --- a/code/datums/uplink_items/uplink_nuclear.dm +++ b/code/datums/uplink_items/uplink_nuclear.dm @@ -294,7 +294,7 @@ /datum/uplink_item/ammo/sniper/antimatter name = "Sniper - .50 Antimatter Magazine" desc = "A 6-round magazine of antimatter ammo for use with .50 sniper rifles. \ - Able to heavily damage objects, and delimb people." + Able to heavily damage objects, and delimb people. Requires zooming in for accurate aiming." reference = "50A" item = /obj/item/ammo_box/magazine/sniper_rounds/antimatter cost = 30 diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 716b5984bb7..faad01cd7b4 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -399,8 +399,10 @@ qdel(src) /obj/structure/girder/CanPass(atom/movable/mover, turf/target, height=0) - if(height==0) - return 1 + if(!height) + return TRUE + if(istype(mover) && mover.checkpass(PASSGIRDER)) + return TRUE if(istype(mover) && mover.checkpass(PASSGRILLE)) return prob(girderpasschance) else diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index ec1c3331d01..efb4ca3d8c0 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -20,6 +20,14 @@ slot_flags = SLOT_BACK actions_types = list() +/obj/item/gun/projectile/automatic/sniper_rifle/process_fire(atom/target, mob/living/user, message = TRUE, params, zone_override, bonus_spread = 0) + if(istype(chambered.BB, /obj/item/projectile/bullet/sniper) && !zoomed) + var/obj/item/projectile/bullet/sniper/S = chambered.BB + if(S.non_zoom_spread) + to_chat(user, "[src] must be zoomed in to fire this ammunition accurately!") + bonus_spread += S.non_zoom_spread + return ..() + /obj/item/gun/projectile/automatic/sniper_rifle/syndicate name = "syndicate sniper rifle" desc = "Syndicate flavoured sniper rifle, it packs quite a punch, a punch to your face." @@ -59,10 +67,13 @@ weaken = 10 SECONDS armour_penetration_flat = 70 forced_accuracy = TRUE + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSGIRDER + speed = 0.5 + var/non_zoom_spread = 0 /obj/item/ammo_box/magazine/sniper_rounds/antimatter name = "sniper rounds (Antimatter)" - desc = "Antimatter sniper rounds, for when you really don't like something." + desc = "Antimatter sniper rounds, for when you really don't like something. Requires zooming in to fire accurately." icon_state = "antimatter" ammo_type = /obj/item/ammo_casing/antimatter @@ -75,6 +86,7 @@ /obj/item/projectile/bullet/sniper/antimatter name = "antimatter bullet" dismemberment = 50 + non_zoom_spread = 60 /obj/item/projectile/bullet/sniper/antimatter/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && (!ismob(target))) @@ -110,8 +122,6 @@ return ..() - - //hemorrhage ammo /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage name = "sniper rounds (Bleed)" @@ -159,6 +169,8 @@ damage = 60 forcedodge = -1 weaken = 0 + speed = 0.75 + pass_flags = PASSTABLE //damage glass //toy magazine /obj/item/ammo_box/magazine/toy/sniper_rounds diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 4a5e028e7ba..f865d6faf41 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -552,6 +552,7 @@ Note that amputating the affected organ does in fact remove the infection from t "\The [owner]'s [name] explodes[gore]!",\ "Your [name] explodes[gore]!",\ "You hear the [gore_sound].") + disembowel(limb_name) var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed(). // Let people make limbs become fun things when removed