diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f848018a6115..4d7099518208 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -963,7 +963,7 @@ // for guns firing on their own without a user /obj/item/gun/proc/discharge(cause, seek_chance = 10) var/target - if(!safety) + if(!safety && has_safety) // someone is very unlucky and about to be shot if(prob(seek_chance)) for(var/mob/living/target_mob in range(6, get_turf(src))) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index f64586871ccf..33d3ac0a3491 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -206,7 +206,7 @@ if (.) return if(sealed_magazine) - to_chat(user, span_warning("The magazine on [src] is sealed and cannot be reloaded!")) + to_chat(user, span_warning("The [magazine_wording] on [src] is sealed and cannot be reloaded!")) return if (!internal_magazine && istype(A, /obj/item/ammo_box/magazine)) var/obj/item/ammo_box/magazine/AM = A @@ -270,30 +270,35 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/gun/ballistic/attack_hand(mob/user) - if(!internal_magazine && loc == user && user.is_holding(src) && magazine) - eject_magazine(user) - return - return ..() + if(user.is_holding(src) && loc == user) + if(sealed_magazine) + to_chat(user, span_warning("The [magazine_wording] on [src] is sealed and cannot be accessed!")) + return + if(bolt_type == BOLT_TYPE_NO_BOLT && (chambered || internal_magazine)) + chambered = null + var/num_unloaded = 0 + for(var/obj/item/ammo_casing/CB in get_ammo_list(FALSE, TRUE)) + CB.forceMove(drop_location()) -/obj/item/gun/ballistic/unique_action(mob/living/user) - if(bolt_type == BOLT_TYPE_NO_BOLT) - chambered = null - var/num_unloaded = 0 - for(var/obj/item/ammo_casing/CB in get_ammo_list(FALSE, TRUE)) - CB.forceMove(drop_location()) + var/angle_of_movement =(rand(-3000, 3000) / 100) + dir2angle(turn(user.dir, 180)) + CB.AddComponent(/datum/component/movable_physics, _horizontal_velocity = rand(350, 450) / 100, _vertical_velocity = rand(400, 450) / 100, _horizontal_friction = rand(20, 24) / 100, _z_gravity = PHYSICS_GRAV_STANDARD, _z_floor = 0, _angle_of_movement = angle_of_movement, _bounce_sound = CB.bounce_sfx_override) - var/angle_of_movement =(rand(-3000, 3000) / 100) + dir2angle(turn(user.dir, 180)) - CB.AddComponent(/datum/component/movable_physics, _horizontal_velocity = rand(350, 450) / 100, _vertical_velocity = rand(400, 450) / 100, _horizontal_friction = rand(20, 24) / 100, _z_gravity = PHYSICS_GRAV_STANDARD, _z_floor = 0, _angle_of_movement = angle_of_movement, _bounce_sound = CB.bounce_sfx_override) + num_unloaded++ + SSblackbox.record_feedback("tally", "station_mess_created", 1, CB.name) + if (num_unloaded) + to_chat(user, span_notice("You unload [num_unloaded] [cartridge_wording]\s from [src].")) + playsound(user, eject_sound, eject_sound_volume, eject_sound_vary) + update_appearance() + else + to_chat(user, span_warning("[src] is empty!")) + return + if(!internal_magazine && magazine) + eject_magazine(user) + return + return ..() + return ..() - num_unloaded++ - SSblackbox.record_feedback("tally", "station_mess_created", 1, CB.name) - if (num_unloaded) - to_chat(user, "You unload [num_unloaded] [cartridge_wording]\s from [src].") - playsound(user, eject_sound, eject_sound_volume, eject_sound_vary) - update_appearance() - else - to_chat(user, "[src] is empty!") - return +/obj/item/gun/ballistic/unique_action(mob/living/user) if((bolt_type == BOLT_TYPE_LOCKING || bolt_type == BOLT_TYPE_CLIP) && bolt_locked) drop_bolt(user) return @@ -318,7 +323,8 @@ . += "It does not seem to have a round chambered." if (bolt_locked) . += "The [bolt_wording] is locked back and needs to be released before firing." - . += "You can [bolt_wording] [src] by pressing the unique action key. By default, this is space" + if(bolt_type != BOLT_TYPE_NO_BOLT) + . += "You can [bolt_wording] [src] by pressing the unique action key. By default, this is space" ///Gets the number of bullets in the gun /obj/item/gun/ballistic/proc/get_ammo(countchambered = TRUE) diff --git a/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm b/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm index 224712438b90..a110dcec8a6d 100644 --- a/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm @@ -252,6 +252,8 @@ sealed_magazine = TRUE manufacturer = MANUFACTURER_IMPORT slot_flags = ITEM_SLOT_BACK + has_safety = FALSE + safety = FALSE /obj/item/gun/ballistic/rocketlauncher/oneshot/Initialize() diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm index ede0e69b3ea9..536cfdf0be32 100644 --- a/code/modules/projectiles/projectile/special/rocket.dm +++ b/code/modules/projectiles/projectile/special/rocket.dm @@ -13,13 +13,13 @@ desc = "USE A WEEL GUN" icon_state= "84mm-hedp" damage = 80 - var/anti_armour_damage = 200 + var/anti_armour_damage = 120 armour_penetration = 100 - dismemberment = 100 + dismemberment = 30 /obj/projectile/bullet/a84mm/on_hit(atom/target, blocked = FALSE) ..() - explosion(target, 1, 1, 2, 1, 0, flame_range = 4) + explosion(target, 0, 1, 2, 1, 0, flame_range = 4) if(ismecha(target)) var/obj/mecha/M = target