diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 6d1a05defc..e728d49956 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -149,9 +149,9 @@ //OPEN TURF ATMOS #define OPENTURF_DEFAULT_ATMOS "o2=22;n2=82;TEMP=293.15" //the default air mix that open turfs spawn -#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15°C telecommunications. also used for xenobiology slime killrooms +#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15degC telecommunications. also used for xenobiology slime killrooms #define AIRLESS_ATMOS "TEMP=2.7" //space -#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15°C snow and ice turfs +#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15degC snow and ice turfs #define BURNMIX_ATMOS "o2=2500;plasma=5000;TEMP=370" //used in the holodeck burn test program //ATMOSPHERICS DEPARTMENT GAS TANK TURFS diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index b7b25f0b5a..9083783a48 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -312,23 +312,26 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb = list("stubbed", "poked") resistance_flags = FIRE_PROOF var/extended = 0 + var/extended_force = 20 + var/extended_throwforce = 23 + var/extended_icon_state = "switchblade_ext" /obj/item/switchblade/attack_self(mob/user) extended = !extended playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1) if(extended) - force = 20 + force = extended_force w_class = WEIGHT_CLASS_NORMAL - throwforce = 23 - icon_state = "switchblade_ext" + throwforce = extended_throwforce + icon_state = extended_icon_state attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP else - force = 3 + force = initial(force) w_class = WEIGHT_CLASS_SMALL - throwforce = 5 - icon_state = "switchblade" + throwforce = initial(throwforce) + icon_state = initial(icon_state) attack_verb = list("stubbed", "poked") hitsound = 'sound/weapons/genhit.ogg' sharpness = IS_BLUNT @@ -337,6 +340,23 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 user.visible_message("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) +/obj/item/switchblade/crafted + icon_state = "switchblade_ms" + desc = "A concealable spring-loaded knife." + force = 2 + throwforce = 3 + extended_force = 15 + extended_throwforce = 18 + extended_icon_state = "switchblade_ext_ms" + +/obj/item/switchblade/crafted/attackby(obj/item/I, mob/user, params) + . = ..() + if(istype(I, /obj/item/stack/sheet/mineral/silver)) + icon_state = extended ? "switchblade_ext_msf" : "switchblade_msf" + extended_icon_state = "switchblade_ext_msf" + icon_state = "switchblade_msf" + to_chat(user, "You use part of the silver to improve your Switchblade. Stylish!") + /obj/item/phone name = "red phone" desc = "Should anything ever go wrong..." diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 75daaabb99..a69b0c10b8 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -479,22 +479,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) be_random_body = sanitize_integer(be_random_body, 0, 1, initial(be_random_body)) - if(gender == MALE) - hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_male_list) - facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_male_list) - undershirt = sanitize_inlist(undershirt, GLOB.undershirt_m) - underwear = sanitize_inlist(underwear, GLOB.underwear_m) - else if(gender == FEMALE) - hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_female_list) - facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_female_list) - undershirt = sanitize_inlist(undershirt, GLOB.undershirt_f) - underwear = sanitize_inlist(underwear, GLOB.underwear_f) - else - hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_list) - facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_list) - underwear = sanitize_inlist(underwear, GLOB.underwear_list) - undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list) - + hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_list) + facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_list) + underwear = sanitize_inlist(underwear, GLOB.underwear_list) + undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list) undie_color = sanitize_hexcolor(undie_color, 3, FALSE, initial(undie_color)) shirt_color = sanitize_hexcolor(shirt_color, 3, FALSE, initial(shirt_color)) socks = sanitize_inlist(socks, GLOB.socks_list) diff --git a/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm b/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm index bc3a3dcf05..a519f00fe9 100644 --- a/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm @@ -109,6 +109,18 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON +/datum/crafting_recipe/switchblade_ms + name = "Switchblade" + result = /obj/item/switchblade/crafted + reqs = list(/obj/item/weaponcrafting/stock = 1, + /obj/item/weaponcrafting/receiver = 1, + /obj/item/kitchen/knife = 1, + /obj/item/stack/cable_coil = 2) + tools = list(TOOL_WELDER) + time = 45 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + ////////////////// ///BOMB CRAFTING// ////////////////// diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index aba640c550..c3548ff8ae 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -200,25 +200,25 @@ message_param = "blows a kiss to %t." emote_type = EMOTE_AUDIBLE -/datum/emote/living/laugh +/datum/emote/living/audio_emote + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/audio_emote/can_run_emote(mob/living/user, status_check = TRUE) + . = ..() + if(. && iscarbon(user)) + var/mob/living/carbon/C = user + return !C.silent && (!C.mind || !C.mind.miming) + +/datum/emote/living/audio_emote/laugh key = "laugh" key_third_person = "laughs" message = "laughs." message_mime = "laughs silently!" - emote_type = EMOTE_AUDIBLE -/datum/emote/living/laugh/can_run_emote(mob/living/user, status_check = TRUE) - . = ..() - if(. && iscarbon(user)) - var/mob/living/carbon/C = user - return !C.silent - -/datum/emote/living/laugh/run_emote(mob/user, params) +/datum/emote/living/audio_emote/laugh/run_emote(mob/user, params) . = ..() if(. && iscarbon(user)) //Citadel Edit because this is hilarious var/mob/living/carbon/C = user - if(!C.mind || C.mind.miming) - return if(iscatperson(C)) //we ask for is cat first because they're a subtype that tests true for ishumanbasic because HERESY playsound(C, pick('sound/voice/catpeople/nyahaha1.ogg', 'sound/voice/catpeople/nyahaha2.ogg', @@ -226,12 +226,27 @@ 'sound/voice/catpeople/nyahehe.ogg'), 50, 1) return - if(ishumanbasic(C)) + else if(ismoth(C)) + playsound(C, 'sound/voice/moth/mothlaugh.ogg', 50, 1) + else if(ishumanbasic(C)) if(user.gender == FEMALE) playsound(C, 'sound/voice/human/womanlaugh.ogg', 50, 1) else playsound(C, pick('sound/voice/human/manlaugh1.ogg', 'sound/voice/human/manlaugh2.ogg'), 50, 1) +/datum/emote/living/audio_emote/chitter + key = "chitter" + key_third_person = "chitters" + message = "chitters." + message_mime = "chitters silently!" + +/datum/emote/living/audio_emote/chitter/run_emote(mob/user, params) + . = ..() + if(. && iscarbon(user)) //Citadel Edit because this is hilarious + var/mob/living/carbon/C = user + if(ismoth(C)) + playsound(C, 'sound/voice/moth/mothchitter.ogg', 50, 1) + /datum/emote/living/look key = "look" key_third_person = "looks" diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index b1d7ab7166..af9e23ab70 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -22,6 +22,11 @@ var/list/fired = list() var/countdown_length = 10 var/countdown_step = 0 + var/static/next_id = 1 + var/id + +/datum/duel/New() + id = next_id++ /datum/duel/proc/try_begin() //Check if both guns are held and if so begin. @@ -157,6 +162,13 @@ setting_overlay = mutable_appearance(icon,setting_iconstate()) add_overlay(setting_overlay) +/obj/item/gun/energy/dueling/examine(mob/user) + . = ..() + if(duel) + . += "Its linking number is [duel.id]." + else + . += "ERROR: No linking number on gun." + /obj/item/gun/energy/dueling/proc/setting_iconstate() switch(setting) if(DUEL_SETTING_A) @@ -370,6 +382,8 @@ /obj/item/storage/lockbox/dueling/hugbox gun_type = /obj/item/gun/energy/dueling/hugbox + req_access = list(ACCESS_ARMORY) /obj/item/storage/lockbox/dueling/hugbox/stamina gun_type = /obj/item/gun/energy/dueling/hugbox/stamina + req_access = null diff --git a/html/changelogs/AutoChangeLog-pr-10644.yml b/html/changelogs/AutoChangeLog-pr-10644.yml new file mode 100644 index 0000000000..b7544495d7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10644.yml @@ -0,0 +1,4 @@ +author: "ShadeAware" +delete-after: True +changes: + - rscadd: "Craftable Switchblades, a weaker subtype of normal switchblades that can be crafted using a Kitchen Knife, Modular Receiver, Rifle Stock and some Cable Coil. Requires a welder to complete." diff --git a/html/changelogs/AutoChangeLog-pr-10768.yml b/html/changelogs/AutoChangeLog-pr-10768.yml new file mode 100644 index 0000000000..0a07505b5b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10768.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "moths now have unique laughs and can *chitter." diff --git a/html/changelogs/AutoChangeLog-pr-10782.yml b/html/changelogs/AutoChangeLog-pr-10782.yml new file mode 100644 index 0000000000..f66e75a113 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10782.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - tweak: "dueling pistol accesses have been changed to be more accessible." diff --git a/html/changelogs/AutoChangeLog-pr-10790.yml b/html/changelogs/AutoChangeLog-pr-10790.yml new file mode 100644 index 0000000000..43f949ce16 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10790.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Hair styles and undergarments are yet again free from gender restrictions." diff --git a/html/changelogs/AutoChangeLog-pr-10795.yml b/html/changelogs/AutoChangeLog-pr-10795.yml new file mode 100644 index 0000000000..b929aad0a5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10795.yml @@ -0,0 +1,4 @@ +author: "ShadeAware" +delete-after: True +changes: + - bugfix: "You can now actually craft Switchblades." diff --git a/html/changelogs/AutoChangeLog-pr-10809.yml b/html/changelogs/AutoChangeLog-pr-10809.yml new file mode 100644 index 0000000000..2a6c1dcdb8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10809.yml @@ -0,0 +1,4 @@ +author: "Arturlang" +delete-after: True +changes: + - bugfix: "Fancifying makeshift switchblades now works" diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 2169b87580..b74fa16e6a 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index f054d8f744..8c60c52e76 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index e3540a782b..561b1890e8 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/sound/voice/moth/mothchitter.ogg b/sound/voice/moth/mothchitter.ogg new file mode 100644 index 0000000000..842bcf8e53 Binary files /dev/null and b/sound/voice/moth/mothchitter.ogg differ diff --git a/sound/voice/moth/mothlaugh.ogg b/sound/voice/moth/mothlaugh.ogg new file mode 100644 index 0000000000..391d6c5aef Binary files /dev/null and b/sound/voice/moth/mothlaugh.ogg differ