diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index 9fc411443aa..389d8771a9f 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -135,21 +135,21 @@ qdel(src) return - if(weapon.chambered && weapon.chambered.BB) - weapon.chambered.BB.damage *= damage_mult - if(weapon.chambered.BB.wound_bonus != CANT_WOUND) - weapon.chambered.BB.wound_bonus += damage_mult * GUNPOINT_BASE_WOUND_BONUS - weapon.chambered.BB.bare_wound_bonus += damage_mult * GUNPOINT_BASE_WOUND_BONUS + if(weapon.chambered && weapon.chambered.loaded_projectile) + weapon.chambered.loaded_projectile.damage *= damage_mult + if(weapon.chambered.loaded_projectile.wound_bonus != CANT_WOUND) + weapon.chambered.loaded_projectile.wound_bonus += damage_mult * GUNPOINT_BASE_WOUND_BONUS + weapon.chambered.loaded_projectile.bare_wound_bonus += damage_mult * GUNPOINT_BASE_WOUND_BONUS if(weapon.check_botched(shooter)) return var/fired = weapon.process_fire(target, shooter) - if(!fired && weapon.chambered?.BB) - weapon.chambered.BB.damage /= damage_mult - if(weapon.chambered.BB.wound_bonus != CANT_WOUND) - weapon.chambered.BB.wound_bonus -= damage_mult * GUNPOINT_BASE_WOUND_BONUS - weapon.chambered.BB.bare_wound_bonus -= damage_mult * GUNPOINT_BASE_WOUND_BONUS + if(!fired && weapon.chambered?.loaded_projectile) + weapon.chambered.loaded_projectile.damage /= damage_mult + if(weapon.chambered.loaded_projectile.wound_bonus != CANT_WOUND) + weapon.chambered.loaded_projectile.wound_bonus -= damage_mult * GUNPOINT_BASE_WOUND_BONUS + weapon.chambered.loaded_projectile.bare_wound_bonus -= damage_mult * GUNPOINT_BASE_WOUND_BONUS qdel(src) diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm index 9ed2b2726e0..0b4cd788334 100644 --- a/code/datums/components/pellet_cloud.dm +++ b/code/datums/components/pellet_cloud.dm @@ -106,9 +106,9 @@ zone_override = shooter.zone_selected // things like mouth executions and gunpoints can multiply the damage and wounds of projectiles, so this makes sure those effects are applied to each pellet instead of just one - var/original_damage = shell.BB.damage - var/original_wb = shell.BB.wound_bonus - var/original_bwb = shell.BB.bare_wound_bonus + var/original_damage = shell.loaded_projectile.damage + var/original_wb = shell.loaded_projectile.wound_bonus + var/original_bwb = shell.loaded_projectile.bare_wound_bonus for(var/i in 1 to num_pellets) shell.ready_proj(target, user, SUPPRESSED_VERY, zone_override, fired_from) @@ -118,12 +118,12 @@ else //Smart spread spread = round((i / num_pellets - 0.5) * distro) - RegisterSignal(shell.BB, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/pellet_hit) - RegisterSignal(shell.BB, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), .proc/pellet_range) - shell.BB.damage = original_damage - shell.BB.wound_bonus = original_wb - shell.BB.bare_wound_bonus = original_bwb - pellets += shell.BB + RegisterSignal(shell.loaded_projectile, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/pellet_hit) + RegisterSignal(shell.loaded_projectile, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), .proc/pellet_range) + shell.loaded_projectile.damage = original_damage + shell.loaded_projectile.wound_bonus = original_wb + shell.loaded_projectile.bare_wound_bonus = original_bwb + pellets += shell.loaded_projectile if(!shell.throw_proj(target, targloc, shooter, params, spread)) return if(i != num_pellets) diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm index be160105967..c6e155960f8 100644 --- a/code/datums/wounds/slash.dm +++ b/code/datums/wounds/slash.dm @@ -203,9 +203,9 @@ user.visible_message("[user] begins aiming [lasgun] directly at [victim]'s [limb.name]...", "You begin aiming [lasgun] directly at [user == victim ? "your" : "[victim]'s"] [limb.name]...") if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) return - var/damage = lasgun.chambered.BB.damage - lasgun.chambered.BB.wound_bonus -= 30 - lasgun.chambered.BB.damage *= self_penalty_mult + var/damage = lasgun.chambered.loaded_projectile.damage + lasgun.chambered.loaded_projectile.wound_bonus -= 30 + lasgun.chambered.loaded_projectile.damage *= self_penalty_mult if(!lasgun.process_fire(victim, victim, TRUE, null, limb.body_zone)) return victim.emote("scream") diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index bf212d5285d..737cbf4f859 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -443,7 +443,7 @@ else A = new /obj/item/ammo_casing/caseless/gumball(src) - A.BB.color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) + A.loaded_projectile.color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) playsound(src.loc, 'sound/weapons/bulletflyby3.ogg', 50, TRUE) A.fire_casing(target, user, params, 0, 0, null, 0, src) user.visible_message("[user] shoots a high-velocity gumball at [target]!") diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index df654003ea7..bc3481691a2 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -267,7 +267,7 @@ to_chat(user, "The [name] is not ready yet.") /obj/item/gun/magic/tentacle/process_fire(atom/target, mob/living/user, message, params, zone_override, bonus_spread) - var/obj/projectile/tentacle/tentacle_shot = chambered.BB //Gets the actual projectile we will fire + var/obj/projectile/tentacle/tentacle_shot = chambered.loaded_projectile //Gets the actual projectile we will fire tentacle_shot.fire_modifiers = params2list(params) . = ..() if(charges == 0) diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index b59dd0993cd..4d3035444e0 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -252,9 +252,9 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca ..() else if(Pewgun) if(Pewgun.chambered) - if(Pewgun.chambered.BB) - qdel(Pewgun.chambered.BB) - Pewgun.chambered.BB = null //because qdel takes too long, ensures icon update + if(Pewgun.chambered.loaded_projectile) + qdel(Pewgun.chambered.loaded_projectile) + Pewgun.chambered.loaded_projectile = null //because qdel takes too long, ensures icon update Pewgun.chambered.update_icon() ..() else diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index a65a2217593..b8d7b3a0bdb 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -16,7 +16,7 @@ ///The bullet type to create when New() is called var/projectile_type = null ///the loaded projectile in this ammo casing - var/obj/projectile/BB = null + var/obj/projectile/loaded_projectile = null ///Pellets for spreadshot var/pellets = 1 ///Variance for inaccuracy fundamental to the casing @@ -35,12 +35,12 @@ /obj/item/ammo_casing/spent name = "spent bullet casing" - BB = null + loaded_projectile = null /obj/item/ammo_casing/Initialize() . = ..() if(projectile_type) - BB = new projectile_type(src) + loaded_projectile = new projectile_type(src) pixel_x = base_pixel_x + rand(-10, 10) pixel_y = base_pixel_y + rand(-10, 10) setDir(pick(GLOB.alldirs)) @@ -50,21 +50,21 @@ . = ..() var/turf/T = get_turf(src) - if(T && !BB && is_station_level(T.z)) + if(T && !loaded_projectile && is_station_level(T.z)) SSblackbox.record_feedback("tally", "station_mess_destroyed", 1, name) - QDEL_NULL(BB) + QDEL_NULL(loaded_projectile) /obj/item/ammo_casing/update_icon() . = ..() - icon_state = "[initial(icon_state)][BB ? "-live" : ""]" - desc = "[initial(desc)][BB ? "" : " This one is spent."]" + icon_state = "[initial(icon_state)][loaded_projectile ? "-live" : ""]" + desc = "[initial(desc)][loaded_projectile ? "" : " This one is spent."]" /* * On accidental consumption, 'spend' the ammo, and add in some gunpowder */ /obj/item/ammo_casing/on_accidental_consumption(mob/living/carbon/victim, mob/living/carbon/user, obj/item/source_item, discover_after = TRUE) - if(BB) - BB = null + if(loaded_projectile) + loaded_projectile = null update_icon() victim.reagents?.add_reagent(/datum/reagent/gunpowder, 3) source_item?.reagents?.add_reagent(/datum/reagent/gunpowder, source_item.reagents.total_volume*(2/3)) @@ -73,8 +73,8 @@ //proc to magically refill a casing with a new projectile /obj/item/ammo_casing/proc/newshot() //For energy weapons, syringe gun, shotgun shells and wands (!). - if(!BB) - BB = new projectile_type(src, src) + if(!loaded_projectile) + loaded_projectile = new projectile_type(src, src) /obj/item/ammo_casing/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/ammo_box)) @@ -84,7 +84,7 @@ for(var/obj/item/ammo_casing/bullet in loc) if (box.stored_ammo.len >= box.max_ammo) break - if (bullet.BB) + if (bullet.loaded_projectile) if (box.give_round(bullet, 0)) boolets++ else diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm index 546c0e5549d..489769c5e09 100644 --- a/code/modules/projectiles/ammunition/_firing.dm +++ b/code/modules/projectiles/ammunition/_firing.dm @@ -11,7 +11,7 @@ if(!throw_proj(target, targloc, user, params, spread)) return FALSE else - if(isnull(BB)) + if(isnull(loaded_projectile)) return FALSE AddComponent(/datum/component/pellet_cloud, projectile_type, pellets) SEND_SIGNAL(src, COMSIG_PELLET_CLOUD_INIT, target, user, fired_from, randomspread, spread, zone_override, params, distro) @@ -28,34 +28,34 @@ return TRUE /obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "", atom/fired_from) - if (!BB) + if (!loaded_projectile) return - BB.original = target - BB.firer = user - BB.fired_from = fired_from + loaded_projectile.original = target + loaded_projectile.firer = user + loaded_projectile.fired_from = fired_from if (zone_override) - BB.def_zone = zone_override + loaded_projectile.def_zone = zone_override else - BB.def_zone = user.zone_selected - BB.suppressed = quiet + loaded_projectile.def_zone = user.zone_selected + loaded_projectile.suppressed = quiet if(isgun(fired_from)) var/obj/item/gun/G = fired_from - BB.damage *= G.projectile_damage_multiplier + loaded_projectile.damage *= G.projectile_damage_multiplier - if(reagents && BB.reagents) - reagents.trans_to(BB, reagents.total_volume, transfered_by = user) //For chemical darts/bullets + if(reagents && loaded_projectile.reagents) + reagents.trans_to(loaded_projectile, reagents.total_volume, transfered_by = user) //For chemical darts/bullets qdel(reagents) /obj/item/ammo_casing/proc/throw_proj(atom/target, turf/targloc, mob/living/user, params, spread) var/turf/curloc = get_turf(user) - if (!istype(targloc) || !istype(curloc) || !BB) + if (!istype(targloc) || !istype(curloc) || !loaded_projectile) return FALSE var/firing_dir - if(BB.firer) - firing_dir = BB.firer.dir - if(!BB.suppressed && firing_effect_type) + if(loaded_projectile.firer) + firing_dir = loaded_projectile.firer.dir + if(!loaded_projectile.suppressed && firing_effect_type) new firing_effect_type(get_turf(src), firing_dir) var/direct_target @@ -63,9 +63,9 @@ if(target) //if the target is right on our location we'll skip the travelling code in the proj's fire() direct_target = target if(!direct_target) - BB.preparePixelProjectile(target, user, params, spread) - BB.fire(null, direct_target) - BB = null + loaded_projectile.preparePixelProjectile(target, user, params, spread) + loaded_projectile.fire(null, direct_target) + loaded_projectile = null return TRUE /obj/item/ammo_casing/proc/spread(turf/target, turf/current, distro) diff --git a/code/modules/projectiles/ammunition/caseless/foam.dm b/code/modules/projectiles/ammunition/caseless/foam.dm index 0f3cb1901c4..f36fccfe353 100644 --- a/code/modules/projectiles/ammunition/caseless/foam.dm +++ b/code/modules/projectiles/ammunition/caseless/foam.dm @@ -14,17 +14,17 @@ if (modified) icon_state = "foamdart_empty" desc = "It's Donk or Don't! ... Although, this one doesn't look too safe." - if(BB) - BB.icon_state = "foamdart_empty" + if(loaded_projectile) + loaded_projectile.icon_state = "foamdart_empty" else icon_state = initial(icon_state) desc = "It's Donk or Don't! Ages 8 and up." - if(BB) - BB.icon_state = initial(BB.icon_state) + if(loaded_projectile) + loaded_projectile.icon_state = initial(loaded_projectile.icon_state) /obj/item/ammo_casing/caseless/foam_dart/attackby(obj/item/A, mob/user, params) - var/obj/projectile/bullet/reusable/foam_dart/FD = BB + var/obj/projectile/bullet/reusable/foam_dart/FD = loaded_projectile if (A.tool_behaviour == TOOL_SCREWDRIVER && !modified) modified = TRUE FD.modified = TRUE @@ -49,7 +49,7 @@ return ..() /obj/item/ammo_casing/caseless/foam_dart/attack_self(mob/living/user) - var/obj/projectile/bullet/reusable/foam_dart/FD = BB + var/obj/projectile/bullet/reusable/foam_dart/FD = loaded_projectile if(FD.pen) FD.damage = initial(FD.damage) FD.nodamage = initial(FD.nodamage) diff --git a/code/modules/projectiles/ammunition/energy/portal.dm b/code/modules/projectiles/ammunition/energy/portal.dm index 6f2b0264464..63c86df0122 100644 --- a/code/modules/projectiles/ammunition/energy/portal.dm +++ b/code/modules/projectiles/ammunition/energy/portal.dm @@ -16,6 +16,6 @@ /obj/item/ammo_casing/energy/wormhole/throw_proj() . = ..() - if(istype(BB, /obj/projectile/beam/wormhole)) - var/obj/projectile/beam/wormhole/WH = BB + if(istype(loaded_projectile, /obj/projectile/beam/wormhole)) + var/obj/projectile/beam/wormhole/WH = loaded_projectile WH.gun = gun diff --git a/code/modules/projectiles/ammunition/special/syringe.dm b/code/modules/projectiles/ammunition/special/syringe.dm index d67202b0504..529609efe17 100644 --- a/code/modules/projectiles/ammunition/special/syringe.dm +++ b/code/modules/projectiles/ammunition/special/syringe.dm @@ -6,7 +6,7 @@ firing_effect_type = null /obj/item/ammo_casing/syringegun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") - if(!BB) + if(!loaded_projectile) return if(istype(loc, /obj/item/gun/syringe)) var/obj/item/gun/syringe/SG = loc @@ -15,16 +15,16 @@ var/obj/item/reagent_containers/syringe/S = SG.syringes[1] - S.reagents.trans_to(BB, S.reagents.total_volume, transfered_by = user) - BB.name = S.name - var/obj/projectile/bullet/dart/D = BB + S.reagents.trans_to(loaded_projectile, S.reagents.total_volume, transfered_by = user) + loaded_projectile.name = S.name + var/obj/projectile/bullet/dart/D = loaded_projectile D.piercing = S.proj_piercing SG.syringes.Remove(S) qdel(S) else if(istype(loc, /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun)) var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/syringe_gun = loc var/obj/item/reagent_containers/syringe/loaded_syringe = syringe_gun.syringes[1] - var/obj/projectile/bullet/dart/shot_dart = BB + var/obj/projectile/bullet/dart/shot_dart = loaded_projectile syringe_gun.reagents.trans_to(shot_dart, min(loaded_syringe.volume, syringe_gun.reagents.total_volume), transfered_by = user) shot_dart.name = loaded_syringe.name shot_dart.piercing = loaded_syringe.proj_piercing @@ -39,14 +39,14 @@ firing_effect_type = null /obj/item/ammo_casing/chemgun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") - if(!BB) + if(!loaded_projectile) return if(istype(loc, /obj/item/gun/chem)) var/obj/item/gun/chem/CG = loc if(CG.syringes_left <= 0) return - CG.reagents.trans_to(BB, 15, transfered_by = user) - BB.name = "piercing chemical dart" + CG.reagents.trans_to(loaded_projectile, 15, transfered_by = user) + loaded_projectile.name = "piercing chemical dart" CG.syringes_left-- return ..() @@ -57,7 +57,7 @@ firing_effect_type = null /obj/item/ammo_casing/dnainjector/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") - if(!BB) + if(!loaded_projectile) return if(istype(loc, /obj/item/gun/syringe/dna)) var/obj/item/gun/syringe/dna/SG = loc @@ -65,7 +65,7 @@ return var/obj/item/dnainjector/S = popleft(SG.syringes) - var/obj/projectile/bullet/dnainjector/D = BB + var/obj/projectile/bullet/dnainjector/D = loaded_projectile S.forceMove(D) D.injector = S return ..() diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index a40667b0736..15f63bc01fd 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -87,7 +87,7 @@ //for accessibles magazines (e.g internal ones) when full, start replacing spent ammo else if(replace_spent) for(var/obj/item/ammo_casing/AC in stored_ammo) - if(!AC.BB)//found a spent ammo + if(!AC.loaded_projectile)//found a spent ammo stored_ammo -= AC AC.forceMove(get_turf(src.loc)) @@ -161,7 +161,7 @@ /obj/item/ammo_box/magazine/proc/ammo_count(countempties = TRUE) var/boolets = 0 for(var/obj/item/ammo_casing/bullet in stored_ammo) - if(bullet && (bullet.BB || countempties)) + if(bullet && (bullet.loaded_projectile || countempties)) boolets++ return boolets diff --git a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm index 177aea74ac3..59d6519ec22 100644 --- a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm +++ b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm @@ -38,7 +38,7 @@ for(var/i in 1 to stored_ammo.len) var/obj/item/ammo_casing/bullet = stored_ammo[i] - if(!bullet || !bullet.BB) // found a spent ammo + if(!bullet || !bullet.loaded_projectile) // found a spent ammo stored_ammo[i] = R R.forceMove(src) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f9f95f3cfa2..88ecbf092bb 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -299,7 +299,7 @@ if(iteration > 1 && !(user.is_holding(src))) //for burst firing firing_burst = FALSE return FALSE - if(chambered?.BB) + if(chambered?.loaded_projectile) if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. if(chambered.harmful) // Is the bullet chambered harmful? to_chat(user, "[src] is lethally chambered! You don't want to risk harming anyone...") @@ -643,16 +643,16 @@ target.visible_message("[user] pulls the trigger!", "[(user == target) ? "You pull" : "[user] pulls"] the trigger!") - if(chambered?.BB) - chambered.BB.damage *= 5 - if(chambered.BB.wound_bonus != CANT_WOUND) - chambered.BB.wound_bonus += 5 // much more dramatic on multiple pellet'd projectiles really + if(chambered?.loaded_projectile) + chambered.loaded_projectile.damage *= 5 + if(chambered.loaded_projectile.wound_bonus != CANT_WOUND) + chambered.loaded_projectile.wound_bonus += 5 // much more dramatic on multiple pellet'd projectiles really var/fired = process_fire(target, user, TRUE, params, BODY_ZONE_HEAD) - if(!fired && chambered?.BB) - chambered.BB.damage /= 5 - if(chambered.BB.wound_bonus != CANT_WOUND) - chambered.BB.wound_bonus -= 5 + if(!fired && chambered?.loaded_projectile) + chambered.loaded_projectile.damage /= 5 + if(chambered.loaded_projectile.wound_bonus != CANT_WOUND) + chambered.loaded_projectile.wound_bonus -= 5 /obj/item/gun/proc/unlock() //used in summon guns and as a convience for admins if(pin) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index e05099c8456..b4f868abf82 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -91,7 +91,7 @@ var/suppressor_y_offset ///pixel offset for the suppressor overlay on the y axis. ///Gun internal magazine modification and misfiring - + ///Can we modify our ammo type in this gun's internal magazine? var/can_modify_ammo = FALSE ///our initial ammo type. Should match initial caliber, but a bit of redundency doesn't hurt. @@ -106,7 +106,7 @@ var/alternative_ammo_misfires = FALSE /// Whether our ammo misfires now or when it's set by the wrench_act. TRUE means it misfires. var/can_misfire = FALSE - ///How likely is our gun to misfire? + ///How likely is our gun to misfire? var/misfire_probability = 0 ///How much does shooting the gun increment the misfire probability? var/misfire_percentage_increment = 0 @@ -153,7 +153,7 @@ . += MA if(!chambered && empty_indicator) //this is duplicated in c20's update_overlayss due to a layering issue with the select fire icon. . += "[icon_state]_empty" - + if(gun_flags & TOY_FIREARM_OVERLAY) . += "[icon_state]_toy" @@ -296,7 +296,7 @@ return if (istype(A, /obj/item/ammo_casing) || istype(A, /obj/item/ammo_box)) if (bolt_type == BOLT_TYPE_NO_BOLT || internal_magazine) - if (chambered && !chambered.BB) + if (chambered && !chambered.loaded_projectile) chambered.forceMove(drop_location()) chambered = null var/num_loaded = magazine?.attackby(A, user, params, TRUE) @@ -326,16 +326,16 @@ if (can_be_sawn_off) if (sawoff(user, A)) return - + if(can_misfire && istype(A, /obj/item/stack/sheet/cloth)) if(guncleaning(user, A)) return - + return FALSE /obj/item/gun/ballistic/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) - if(magazine && chambered.BB && can_misfire && misfire_probability > 0) + if(magazine && chambered.loaded_projectile && can_misfire && misfire_probability > 0) if(prob(misfire_probability)) if(blow_up(user)) to_chat(user, "[src] misfires!") @@ -347,7 +347,7 @@ /obj/item/gun/ballistic/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) if(can_misfire) misfire_probability += misfire_percentage_increment - + . = ..() ///Installs a new suppressor, assumes that the suppressor is already in the contents of src @@ -490,7 +490,7 @@ #define BRAINS_BLOWN_THROW_SPEED 1 /obj/item/gun/ballistic/suicide_act(mob/user) var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN) - if (B && chambered && chambered.BB && can_trigger_gun(user) && !chambered.BB.nodamage) + if (B && chambered && chambered.loaded_projectile && can_trigger_gun(user) && !chambered.loaded_projectile.nodamage) user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") sleep(25) if(user.is_holding(src)) @@ -557,10 +557,10 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( if(misfire_probability == 0) to_chat(user, "\The [src] seems to be already clean of fouling.") return - + user.changeNext_move(CLICK_CD_MELEE) user.visible_message("[user] begins to cleaning \the [src].", "You begin to clean the internals of \the [src].") - + if(do_after(user, 100, target = src)) var/original_misfire_value = initial(misfire_probability) if(misfire_probability > original_misfire_value) @@ -572,15 +572,15 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( if(!user.is_holding(src)) to_chat(user, "You need to hold [src] to modify it.") return TRUE - + if(!can_modify_ammo) return - + if(bolt_type == BOLT_TYPE_STANDARD) - if(get_ammo()) + if(get_ammo()) to_chat(user, "You can't get at the internals while the gun has a bullet in it!") return - + else if(!bolt_locked) to_chat(user, "You can't get at the internals while the bolt is down!") return @@ -589,7 +589,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( I.play_tool_sound(src) if(!I.use_tool(src, user, 3 SECONDS)) return TRUE - + if(blow_up(user)) user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!") return @@ -612,7 +612,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( /obj/item/gun/ballistic/proc/blow_up(mob/user) . = FALSE for(var/obj/item/ammo_casing/AC in magazine.stored_ammo) - if(AC.BB) + if(AC.loaded_projectile) process_fire(user, user, FALSE) . = TRUE diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 7bcb8561cc1..ddca6c51197 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -105,7 +105,7 @@ var/skip_357_missfire_check = FALSE /obj/item/gun/ballistic/revolver/detective/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) - if(magazine && magazine.caliber != initial(magazine.caliber) && chambered.BB && !skip_357_missfire_check) + if(magazine && magazine.caliber != initial(magazine.caliber) && chambered.loaded_projectile && !skip_357_missfire_check) if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60 to_chat(user, "[src] misfires!") if(user.get_item_for_held_index(1) == src) @@ -126,7 +126,7 @@ return TRUE if(magazine.ammo_count()) //If it has any ammo inside.... user.visible_message("[src]'s hammer drops while you're handling it!") //...you learn an important lesson about firearms safety. - var/drop_the_gun_it_actually_fired = chambered.BB ? TRUE : FALSE //Is a live round chambered? + var/drop_the_gun_it_actually_fired = chambered.loaded_projectile ? TRUE : FALSE //Is a live round chambered? skip_357_missfire_check = TRUE //We set this true, then back to false after process_fire, to reduce redundacy of a round "misfiring" when it's already misfiring from wrench_act process_fire(user, user, FALSE) skip_357_missfire_check = FALSE diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 7379e5664f2..dfcdd96fe8f 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -72,9 +72,43 @@ can_bayonet = FALSE update_icon() +/* - SKYRAT EDIT REMOVAL +/obj/item/gun/ballistic/rifle/boltaction/attack_self(mob/user) + if(can_jam) + if(jammed) + if(prob(unjam_chance)) + jammed = FALSE + unjam_chance = 10 + else + unjam_chance += 10 + to_chat(user, "[src] is jammed!") + playsound(user,'sound/weapons/jammed.ogg', 75, TRUE) + return FALSE + ..() + +/obj/item/gun/ballistic/rifle/boltaction/process_fire(mob/user) + if(can_jam) + if(chambered.loaded_projectile) + if(prob(jamming_chance)) + jammed = TRUE + jamming_chance += jamming_increment + jamming_chance = clamp (jamming_chance, 0, 100) + return ..() + +/obj/item/gun/ballistic/rifle/boltaction/attackby(obj/item/item, mob/user, params) + . = ..() + if(can_jam) + if(bolt_locked) + if(istype(item, /obj/item/gun_maintenance_supplies)) + if(do_after(user, 10 SECONDS, target = src)) + user.visible_message("[user] finishes maintenance of [src].") + jamming_chance = 10 + qdel(item) +*/ //SKYRAT EDIT END + /obj/item/gun/ballistic/rifle/boltaction/blow_up(mob/user) . = FALSE - if(chambered?.BB) + if(chambered?.loaded_projectile) process_fire(user, user, FALSE) . = TRUE diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 637cf9ce941..80c0138a3b0 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -30,7 +30,7 @@ /obj/item/gun/ballistic/shotgun/blow_up(mob/user) . = 0 - if(chambered?.BB) + if(chambered?.loaded_projectile) process_fire(user, user, FALSE) . = 1 diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index dcf96f1687b..192ee873800 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -48,7 +48,7 @@ /obj/item/gun/ballistic/shotgun/toy/process_chamber(empty_chamber = 0) ..() - if(chambered && !chambered.BB) + if(chambered && !chambered.loaded_projectile) qdel(chambered) /obj/item/gun/ballistic/shotgun/toy/unrestricted diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 26fcd52d535..0a9202b7376 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -106,11 +106,11 @@ var/obj/item/ammo_casing/energy/AC = ammo_type[select] if(cell.charge >= AC.e_cost) //if there's enough power in the cell cell... chambered = AC //...prepare a new shot based on the current ammo type selected - if(!chambered.BB) + if(!chambered.loaded_projectile) chambered.newshot() /obj/item/gun/energy/process_chamber() - if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... + if(chambered && !chambered.loaded_projectile) //if loaded_projectile is null, i.e the shot has been fired... var/obj/item/ammo_casing/energy/shot = chambered cell.use(shot.e_cost)//... drain the cell cell chambered = null //either way, released the prepared shot @@ -223,25 +223,25 @@ . = "" else var/obj/item/ammo_casing/energy/E = ammo_type[select] - var/obj/projectile/energy/BB = E.BB - if(!BB) + var/obj/projectile/energy/loaded_projectile = E.loaded_projectile + if(!loaded_projectile) . = "" - else if(BB.nodamage || !BB.damage || BB.damage_type == STAMINA) + else if(loaded_projectile.nodamage || !loaded_projectile.damage || loaded_projectile.damage_type == STAMINA) user.visible_message("[user] tries to light [A.loc == user ? "[user.p_their()] [A.name]" : A] with [src], but it doesn't do anything. Dumbass.") playsound(user, E.fire_sound, 50, TRUE) - playsound(user, BB.hitsound, 50, TRUE) + playsound(user, loaded_projectile.hitsound, 50, TRUE) cell.use(E.e_cost) . = "" - else if(BB.damage_type != BURN) + else if(loaded_projectile.damage_type != BURN) user.visible_message("[user] tries to light [A.loc == user ? "[user.p_their()] [A.name]" : A] with [src], but only succeeds in utterly destroying it. Dumbass.") playsound(user, E.fire_sound, 50, TRUE) - playsound(user, BB.hitsound, 50, TRUE) + playsound(user, loaded_projectile.hitsound, 50, TRUE) cell.use(E.e_cost) qdel(A) . = "" else playsound(user, E.fire_sound, 50, TRUE) - playsound(user, BB.hitsound, 50, TRUE) + playsound(user, loaded_projectile.hitsound, 50, TRUE) cell.use(E.e_cost) . = "[user] casually lights [A.loc == user ? "[user.p_their()] [A.name]" : A] with [src]. Damn." diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index 9f3cf7141b0..bd466ce41c1 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -248,7 +248,7 @@ /obj/item/ammo_casing/energy/duel/ready_proj(atom/target, mob/living/user, quiet, zone_override) . = ..() - var/obj/projectile/energy/duel/D = BB + var/obj/projectile/energy/duel/D = loaded_projectile D.setting = setting D.update_icon() diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index b77a34de101..748ec85d871 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -166,7 +166,7 @@ ..() if(loc && istype(loc, /obj/item/gun/energy/kinetic_accelerator)) var/obj/item/gun/energy/kinetic_accelerator/KA = loc - KA.modify_projectile(BB) + KA.modify_projectile(loaded_projectile) //Projectiles /obj/projectile/kinetic diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 10aa4f65de9..16bdf841757 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -232,7 +232,7 @@ var/obj/item/ammo_casing/energy/wormhole/W = ammo_type[i] if(istype(W)) W.gun = src - var/obj/projectile/beam/wormhole/WH = W.BB + var/obj/projectile/beam/wormhole/WH = W.loaded_projectile if(istype(WH)) WH.gun = src diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index fdff86776af..e501112d6d1 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -40,11 +40,11 @@ return charges /obj/item/gun/magic/recharge_newshot() - if (charges && chambered && !chambered.BB) + if (charges && chambered && !chambered.loaded_projectile) chambered.newshot() /obj/item/gun/magic/process_chamber() - if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... + if(chambered && !chambered.loaded_projectile) //if BB is null, i.e the shot has been fired... charges--//... drain a charge recharge_newshot() diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index c01b8b9ea63..4581d83a31b 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -361,7 +361,7 @@ /obj/item/ammo_casing/energy/beam_rifle/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") . = ..() - var/obj/projectile/beam/beam_rifle/hitscan/HS_BB = BB + var/obj/projectile/beam/beam_rifle/hitscan/HS_BB = loaded_projectile if(!istype(HS_BB)) return HS_BB.impact_direct_damage = projectile_damage @@ -382,7 +382,7 @@ /obj/item/ammo_casing/energy/beam_rifle/throw_proj(atom/target, turf/targloc, mob/living/user, params, spread) var/turf/curloc = get_turf(user) - if(!istype(curloc) || !BB) + if(!istype(curloc) || !loaded_projectile) return FALSE var/obj/item/gun/energy/beam_rifle/gun = loc if(!targloc && gun) @@ -390,13 +390,13 @@ else if(!targloc) return FALSE var/firing_dir - if(BB.firer) - firing_dir = BB.firer.dir - if(!BB.suppressed && firing_effect_type) + if(loaded_projectile.firer) + firing_dir = loaded_projectile.firer.dir + if(!loaded_projectile.suppressed && firing_effect_type) new firing_effect_type(get_turf(src), firing_dir) - BB.preparePixelProjectile(target, user, params, spread) - BB.fire(gun? gun.lastangle : null, null) - BB = null + loaded_projectile.preparePixelProjectile(target, user, params, spread) + loaded_projectile.fire(gun? gun.lastangle : null, null) + loaded_projectile = null return TRUE /obj/item/ammo_casing/energy/beam_rifle/hitscan diff --git a/code/modules/projectiles/guns/misc/chem_gun.dm b/code/modules/projectiles/guns/misc/chem_gun.dm index 5ee41da6b0c..c25dbde0df3 100644 --- a/code/modules/projectiles/guns/misc/chem_gun.dm +++ b/code/modules/projectiles/guns/misc/chem_gun.dm @@ -31,7 +31,7 @@ return syringes_left /obj/item/gun/chem/process_chamber() - if(chambered && !chambered.BB && syringes_left) + if(chambered && !chambered.loaded_projectile && syringes_left) chambered.newshot() /obj/item/gun/chem/process() @@ -41,6 +41,6 @@ return to_chat(loc, "You hear a click as [src] synthesizes a new dart.") syringes_left++ - if(chambered && !chambered.BB) + if(chambered && !chambered.loaded_projectile) chambered.newshot() last_synth = world.time diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm index a12d1464b79..18d8ceed1ea 100644 --- a/code/modules/projectiles/guns/misc/syringe_gun.dm +++ b/code/modules/projectiles/guns/misc/syringe_gun.dm @@ -34,7 +34,7 @@ return syringes.len /obj/item/gun/syringe/process_chamber() - if(chambered && !chambered.BB) //we just fired + if(chambered && !chambered.loaded_projectile) //we just fired recharge_newshot() update_icon() diff --git a/code/modules/projectiles/projectile/reusable/foam_dart.dm b/code/modules/projectiles/projectile/reusable/foam_dart.dm index 29c8281ef60..c944741b4dd 100644 --- a/code/modules/projectiles/projectile/reusable/foam_dart.dm +++ b/code/modules/projectiles/projectile/reusable/foam_dart.dm @@ -18,7 +18,7 @@ dropped = 1 var/obj/item/ammo_casing/caseless/foam_dart/newcasing = new ammo_type(T) newcasing.modified = modified - var/obj/projectile/bullet/reusable/foam_dart/newdart = newcasing.BB + var/obj/projectile/bullet/reusable/foam_dart/newdart = newcasing.loaded_projectile newdart.modified = modified if(modified) newdart.damage = 5 diff --git a/modular_skyrat/modules/medical/code/wounds/slash.dm b/modular_skyrat/modules/medical/code/wounds/slash.dm index bd43307e453..6d910156f05 100644 --- a/modular_skyrat/modules/medical/code/wounds/slash.dm +++ b/modular_skyrat/modules/medical/code/wounds/slash.dm @@ -216,9 +216,9 @@ user.visible_message("[user] begins aiming [lasgun] directly at [victim]'s [limb.name]...", "You begin aiming [lasgun] directly at [user == victim ? "your" : "[victim]'s"] [limb.name]...") if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) return - var/damage = lasgun.chambered.BB.damage - lasgun.chambered.BB.wound_bonus -= 30 - lasgun.chambered.BB.damage *= self_penalty_mult + var/damage = lasgun.chambered.loaded_projectile.damage + lasgun.chambered.loaded_projectile.wound_bonus -= 30 + lasgun.chambered.loaded_projectile.damage *= self_penalty_mult if(!lasgun.process_fire(victim, victim, TRUE, null, limb.body_zone)) return victim.emote("scream") diff --git a/modular_skyrat/modules/sec_haul/code/misc/bullet_drive.dm b/modular_skyrat/modules/sec_haul/code/misc/bullet_drive.dm index cedf2e14ec2..ddf1a5a3ce3 100644 --- a/modular_skyrat/modules/sec_haul/code/misc/bullet_drive.dm +++ b/modular_skyrat/modules/sec_haul/code/misc/bullet_drive.dm @@ -32,7 +32,7 @@ return var/disposed = 0 for(var/obj/item/ammo_casing/A in dish_drive_contents) - if(!A.BB) + if(!A.loaded_projectile) LAZYREMOVE(dish_drive_contents, A) qdel(A) use_power(active_power_usage)