diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index a6a7aa53f182..17fd8b32c280 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -54,24 +54,25 @@ #define GUN_TRIGGER_SAFETY (1<<1) #define GUN_UNUSUAL_DESIGN (1<<2) #define GUN_SILENCED (1<<3) +#define GUN_CANT_EXECUTE (1<<4) ///If checking for ammo with current.mag you have to check it against numerical values, as booleans will not trigger. -#define GUN_INTERNAL_MAG (1<<4) -#define GUN_AUTO_EJECTOR (1<<5) -#define GUN_AMMO_COUNTER (1<<6) -#define GUN_BURST_FIRING (1<<7) -#define GUN_FLASHLIGHT_ON (1<<8) -#define GUN_WY_RESTRICTED (1<<9) -#define GUN_SPECIALIST (1<<10) -#define GUN_WIELDED_FIRING_ONLY (1<<11) +#define GUN_INTERNAL_MAG (1<<5) +#define GUN_AUTO_EJECTOR (1<<6) +#define GUN_AMMO_COUNTER (1<<7) +#define GUN_BURST_FIRING (1<<8) +#define GUN_FLASHLIGHT_ON (1<<9) +#define GUN_WY_RESTRICTED (1<<10) +#define GUN_SPECIALIST (1<<11) +#define GUN_WIELDED_FIRING_ONLY (1<<12) /// removes unwielded accuracy and scatter penalties (not recoil) -#define GUN_ONE_HAND_WIELDED (1<<12) -#define GUN_ANTIQUE (1<<13) +#define GUN_ONE_HAND_WIELDED (1<<13) +#define GUN_ANTIQUE (1<<14) /// Whether the gun has been fired by its current user (reset upon `dropped()`) -#define GUN_RECOIL_BUILDUP (1<<14) +#define GUN_RECOIL_BUILDUP (1<<15) /// support weapon, bipod will grant autofire -#define GUN_SUPPORT_PLATFORM (1<<15) +#define GUN_SUPPORT_PLATFORM (1<<16) /// No gun description, only base desc -#define GUN_NO_DESCRIPTION (1<<16) +#define GUN_NO_DESCRIPTION (1<<17) // NOTE: Don't add flags past 1<<23, it'll break things due to BYOND limitations. You can usually use a Component instead. #define USES_STREAKS (1<<0) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index d3fc9994414a..72e02deb8c1a 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -108,6 +108,7 @@ DEFINE_BITFIELD(flags_gun_features, list( "GUN_TRIGGER_SAFETY" = GUN_TRIGGER_SAFETY, "GUN_UNUSUAL_DESIGN" = GUN_UNUSUAL_DESIGN, "GUN_SILENCED" = GUN_SILENCED, + "GUN_CANT_EXECUTE" = GUN_CANT_EXECUTE, "GUN_INTERNAL_MAG" = GUN_INTERNAL_MAG, "GUN_AUTO_EJECTOR" = GUN_AUTO_EJECTOR, "GUN_AMMO_COUNTER" = GUN_AMMO_COUNTER, diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index b75baccd7353..a065a0b8671f 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -132,7 +132,7 @@ icon_state = "workshop" /area/almayer/engineering/lower/workshop/hangar - name = "\improper Ordnance workshop" + name = "\improper Ordnance Workshop" /area/almayer/engineering/lower/engine_core name = "\improper Engine Reactor Core Room" diff --git a/code/game/machinery/vending/vendor_types/engineering.dm b/code/game/machinery/vending/vendor_types/engineering.dm index 6da719e883ba..3662d447a346 100644 --- a/code/game/machinery/vending/vendor_types/engineering.dm +++ b/code/game/machinery/vending/vendor_types/engineering.dm @@ -89,7 +89,7 @@ list("Supply Ordering Console", 2, /obj/item/circuitboard/computer/ordercomp, VENDOR_ITEM_REGULAR), list("Research Data Terminal", 2, /obj/item/circuitboard/computer/research_terminal, VENDOR_ITEM_REGULAR), list("P.A.C.M.A.N Generator", 1, /obj/item/circuitboard/machine/pacman, VENDOR_ITEM_REGULAR), - list("Auxiliar Power Storage Unit", 2, /obj/item/circuitboard/machine/ghettosmes, VENDOR_ITEM_REGULAR), + list("Auxiliary Power Storage Unit", 2, /obj/item/circuitboard/machine/ghettosmes, VENDOR_ITEM_REGULAR), list("Air Alarm Electronics", 2, /obj/item/circuitboard/airalarm, VENDOR_ITEM_REGULAR), list("Security Camera Monitor", 2, /obj/item/circuitboard/computer/cameras, VENDOR_ITEM_REGULAR), list("Television Set", 4, /obj/item/circuitboard/computer/cameras/tv, VENDOR_ITEM_REGULAR), diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 2dc064aa86d4..77b15e22d055 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -277,7 +277,11 @@ //trying to buckle a mob /obj/proc/buckle_mob(mob/M, mob/user) - if (!ismob(M) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.stat || buckled_mob || M.buckled || !isturf(user.loc)) + if (!ismob(M) || (get_dist(src, user) > 1) || user.stat || buckled_mob || M.buckled || !isturf(user.loc)) + return + + if (user.is_mob_incapacitated() || HAS_TRAIT(user, TRAIT_IMMOBILIZED) || HAS_TRAIT(user, TRAIT_FLOORED)) + to_chat(user, SPAN_WARNING("You can't do this right now.")) return if (isxeno(user) && !HAS_TRAIT(user, TRAIT_OPPOSABLE_THUMBS)) @@ -286,11 +290,6 @@ if (iszombie(user)) return - // mobs that become immobilized should not be able to buckle themselves. - if(M == user && HAS_TRAIT(user, TRAIT_IMMOBILIZED)) - to_chat(user, SPAN_WARNING("You are unable to do this in your current state.")) - return - if(density) density = FALSE if(!step(M, get_dir(M, src)) && loc != M.loc) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d16f1b6fdd30..08fd3dd5b0b6 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1340,6 +1340,8 @@ and you're good to go. if(EXECUTION_CHECK) //Execution if(!able_to_fire(user)) //Can they actually use guns in the first place? return ..() + if(flags_gun_features & GUN_CANT_EXECUTE) + return ..() user.visible_message(SPAN_DANGER("[user] puts [src] up to [attacked_mob], steadying their aim."), SPAN_WARNING("You put [src] up to [attacked_mob], steadying your aim."),null, null, CHAT_TYPE_COMBAT_ACTION) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|INTERRUPT_DIFF_INTENT, BUSY_ICON_HOSTILE)) return TRUE diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 717914e38eba..b3dcae388a13 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -214,6 +214,7 @@ charge_icon = "+taser" black_market_value = 20 actions_types = list(/datum/action/item_action/taser/change_mode) + flags_gun_features = GUN_UNUSUAL_DESIGN|GUN_CAN_POINTBLANK|GUN_CANT_EXECUTE /// Determines if the taser will hit any target, or if it checks for wanted status. Default is wanted only. var/mode = TASER_MODE_P var/skilllock = SKILL_POLICE_SKILLED diff --git a/html/changelogs/AutoChangeLog-pr-6696.yml b/html/changelogs/AutoChangeLog-pr-6696.yml new file mode 100644 index 000000000000..b1e9c292943d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6696.yml @@ -0,0 +1,4 @@ +author: "zzzmike" +delete-after: True +changes: + - rscdel: "Disablers can't execute people anymore" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6807.yml b/html/changelogs/AutoChangeLog-pr-6807.yml new file mode 100644 index 000000000000..d8078014420a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6807.yml @@ -0,0 +1,4 @@ +author: "zzzmike" +delete-after: True +changes: + - bugfix: "stops people from buckling others when they are knocked out etc." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6813.yml b/html/changelogs/AutoChangeLog-pr-6813.yml new file mode 100644 index 000000000000..fdd4fff55258 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6813.yml @@ -0,0 +1,4 @@ +author: "coldironwarrior" +delete-after: True +changes: + - spellcheck: "Fixed capitalization of ordnance workshop area" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6814.yml b/html/changelogs/AutoChangeLog-pr-6814.yml new file mode 100644 index 000000000000..cc6bcb38d9a6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6814.yml @@ -0,0 +1,4 @@ +author: "coldironwarrior" +delete-after: True +changes: + - spellcheck: "Fixed spelling of auxiliary in the circuit board vendor" \ No newline at end of file