From f852d982358e938ee1c09af70541919162215936 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Wed, 4 May 2016 15:52:34 +0100 Subject: [PATCH 001/260] Datum Emotes MK II --- code/__HELPERS/global_lists.dm | 8 + code/_globalvars/lists/mobs.dm | 1 + code/datums/Emote system/emote.dm | 368 ++++++++++++++++++ code/datums/Emote system/emote_handler.dm | 84 ++++ code/datums/Emote system/emotes.dm | 91 +++++ code/game/gamemodes/blob/overmind.dm | 2 + code/game/gamemodes/miniantags/borer/borer.dm | 2 + code/modules/mob/dead/observer/say.dm | 21 +- code/modules/mob/emote.dm | 8 +- .../mob/living/carbon/alien/humanoid/emote.dm | 4 +- .../mob/living/carbon/alien/larva/emote.dm | 4 +- code/modules/mob/living/carbon/brain/emote.dm | 4 +- code/modules/mob/living/carbon/human/emote.dm | 3 +- code/modules/mob/living/carbon/slime/emote.dm | 4 +- code/modules/mob/living/say.dm | 5 +- code/modules/mob/living/silicon/emote.dm | 4 +- code/modules/mob/living/silicon/pai/emote.dm | 2 + .../modules/mob/living/silicon/robot/emote.dm | 4 +- code/modules/mob/living/silicon/say.dm | 4 +- .../mob/living/simple_animal/bot/emote.dm | 4 +- .../living/simple_animal/friendly/diona.dm | 14 +- code/modules/mob/mob.dm | 1 + code/modules/mob/mob_defines.dm | 2 + code/modules/mob/say.dm | 16 +- paradise.dme | 3 + 25 files changed, 620 insertions(+), 43 deletions(-) create mode 100644 code/datums/Emote system/emote.dm create mode 100644 code/datums/Emote system/emote_handler.dm create mode 100644 code/datums/Emote system/emotes.dm diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 36bb824e642..a8c548bdd7a 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -46,6 +46,14 @@ if(S.flags & IS_WHITELISTED) whitelisted_species += S.name + paths = subtypesof(/datum/emote) + for(var/T in paths) + var/datum/emote/E = new T + if(istype(T, /datum/emote/custom)) + continue + emotes += E + + init_subtypes(/datum/table_recipe, table_recipes) return 1 diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index b6dc1c58b8f..e1e8b818356 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -4,6 +4,7 @@ var/global/list/all_languages[0] var/global/list/language_keys[0] // Table of say codes for all languages var/global/list/all_superheroes[0] var/global/list/all_nations[0] +var/global/list/emotes[0] var/global/list/whitelisted_species = list() var/list/clients = list() //list of all clients diff --git a/code/datums/Emote system/emote.dm b/code/datums/Emote system/emote.dm new file mode 100644 index 00000000000..62c3c6a14d8 --- /dev/null +++ b/code/datums/Emote system/emote.dm @@ -0,0 +1,368 @@ +/******************************************************************************************************* + Emotes +Remember, only 1 instance of each emote is made, and used by all mobs that can access it. As such, the +ONLY place you can safely set object variables during runtime is in New(). Otherwise override the emote. +The only exception to this is custom emotes, which are created as needed and only last until they are finished +VampyrBytes + +*******************************************************************************************************/ + +/datum/emote + var/name = "" + var/desc = "" + var/list/commands[0] // commands that trigger the emote. Set these in New() + var/text = "" + var/selfText = "" // the version of text that you should see - eg, if text is screams, you want scream here, as You screams is bad grammer + var/startText = "" // if you need to put something in before [user]. Should end with a space + var/mimeText = "" + var/sound // sound file + var/vol = 50 + var/audible = 0 + var/muzzledNoise = "" // if the emote is audible and you're muzzled, this is what type of noise you make (eg weak, loud). End with a space + var/restrained = "" // 1 if being restrained prevents this emote + var/cooldown = 0 + + var/canTarget = 0 // 1 if the emote accepts a target Emotes only recieve 1 parameter, so its either or with these 2 + var/takesParam = 0 // 1 if the emote uses a non target parameter + + var/targetMob = 0 // 0 if target can be any atom, 1 if it has to be a mob + var/targetText = "at" // what goes inbetween user and target + var/spanClass = "notice" + var/baseLevel = 1 + var/baseSet = 0 + + +/datum/emote/New() + var/pathString = "[type]" + var/count = 0 + for(var/i in 1 to lentext(pathString)) + var/char = copytext(pathString, i, i+1) + if(char == "/") + count++ + if(count == 4) + baseLevel = 0 + break + +/datum/emote/proc/doEmote(var/mob/user, var/param) + if(!istype(user)) + return 0 + if(cooldown) + if(handle_emote_CD(user)) + return 0 + + var/message = createMessage(user, param) + + if(canTarget && param) + param = getTarget(user, param) + + if(message) + message = addTarget(user, param, message) + message += "" + outputMessage(user, message) + + if(audible) + if(!(user.mind && user.mind.miming)) + playSound(user, vol) + + doAction(user, param) + return 1 + +// for things that the emote does that aren't text or sound based +/datum/emote/proc/doAction(var/mob/user, var/param) + return + +// returns the reason the user can't currently do the emote +/datum/emote/proc/prevented(var/mob/user) + if(user.stat == DEAD) + return "you are dead" + if(restrained && user.restrained()) + return "you are restrained" + +// return 1 if this emote can be used by this type of user +/datum/emote/proc/available(var/mob/user) + return + +/datum/emote/proc/createMessage(var/mob/user, var/param) + if(!text) + return + var/message + if(audible && user.mind && user.mind.miming) + message = mimeMessage(user) + else if(audible && user.is_muzzled()) + message = muzzleMessage(user) + else if(takesParam && param) + message = paramMessage(user, param) + else + message = "[startText + " "][user] [text]" + return message + +/datum/emote/proc/mimeMessage(var/mob/user) + if(!mimeText) + return + + var/message = "[startText + " "][user] [mimeText]" + return message + +/datum/emote/proc/muzzleMessage(var/mob/user) + var/message = "makes a [muzzledNoise + " "]noise" + return message + +// if the emote takes a non target parameter, set up and return the with parameter version in here +/datum/emote/proc/paramMessage(var/mob/user, var/param) + return + +/datum/emote/proc/addTarget(var/mob/user, var/target = "", var/message = "") + if(!canTarget) + return message + target = getTarget(user, target) + if(!target) + return message + if(ismob(target)) + message += " [targetText] [target]" + else + message += " [targetText] \the [target]" + return message + +/datum/emote/proc/getTarget(var/mob/user, var/target = "") + if(!target) + return + if(targetMob) + return getMobTarget(user, target) + else + return getAtomTarget(user, target) + +/datum/emote/proc/getMobTarget(var/mob/user, var/target = "") + for (var/mob/M in view(null, user)) + if (target == M.name) + return M + +/datum/emote/proc/getAtomTarget(var/mob/user, var/target = "") + if (target) + for (var/atom/A as mob|obj|turf in view(null, user)) + if (target == A.name) + return A + +/datum/emote/proc/outputMessage(var/mob/user, var/message = "") + if(!message) + return + log_emote("[user.name]/[user.key] : [message]") + if(audible) + audible_message(message, user) + else + visible_message(message, user) + sendToDead(message) + +// What you should see when you perform the emote +/datum/emote/proc/createSelfMessage(var/mob/user, var/message = "") + var/selfMessage + if(startText) + selfMessage = replacetext(message, "[user]", "you") + else + selfMessage = replacetext(message, "[user]", "You") + if(selfText) + selfMessage = replacetext(selfMessage, text, selfText) + return selfMessage + +/datum/emote/proc/visible_message(var/message = "", var/mob/user) + var/selfMessage = createSelfMessage(user, message) + for(var/mob/M in viewers(user)) + if(M.see_invisible < user.invisibility) + continue //can't view the invisible + var/msg = message + if(selfMessage && M==user) + msg = selfMessage + if(M.sdisabilities & BLIND || M.blinded || M.paralysis) + if(M.sdisabilities & DEAF || M.ear_deaf) + continue + msg = createBlindMessage(message, user) + if(msg) + outputAudibleMessage(msg, M, user, 1) + else + outputVisibleMessage(msg, M, user) + +/datum/emote/proc/audible_message(var/message = "", var/mob/user) + var/selfMessage = createSelfMessage(user, message) + testing(selfMessage) + for(var/mob/M in get_mobs_in_view(7, user)) + var/msg = message + if(selfMessage && M==src) + msg = selfMessage + if(M.sdisabilities & DEAF || M.ear_deaf) + if(M.sdisabilities & BLIND || M.blinded || M.paralysis) + continue + msg = createDeafMessage(user, message) + if(msg) + outputVisibleMessage(msg, M, user, 1) + else + outputAudibleMessage(msg, M, user) + +/datum/emote/proc/outputVisibleMessage(var/message, var/mob/recipient, var/mob/user, var/retest = 0) + if(retest) + if(!user) + return + var/found = 0 + for(var/mob/M in viewers(user)) + if(M == recipient) + found = 1 + if(recipient.see_invisible < user.invisibility) + return + break + if(!found) + return + if(recipient.sdisabilities & DEAF || recipient.ear_deaf) + var/msg = createDeafMessage(user, message) + if(msg) + message = msg + if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) + to_chat(recipient, "... You can almost hear someone talking ...") + else + to_chat(recipient, message) + +/datum/emote/proc/outputAudibleMessage(var/message = "", var/mob/recipient, var/mob/user, var/retest = 0) + if(retest) + if(!user) + return + var/found = 0 + for(var/mob/M in get_mobs_in_view(7, user)) + if(M == recipient) + found = 1 + break + if(!found) + return + if(recipient.sdisabilities & BLIND || recipient.blinded || recipient.paralysis) + var/msg = createBlindMessage(user, message) + if(msg) + message = msg + if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) + to_chat(recipient, "... You can almost hear someone talking ...") + else + to_chat(recipient, message) + +// set up different messages for blind people here. Empty will mean no message for +//non-audible emotes and the standard message for audible ones +/datum/emote/proc/createBlindMessage(var/mob/user, var/message) + return + +// set up different messages for deaf people here. Empty will mean no message for +// audible emotes and standard for non-audible ones +/datum/emote/proc/createDeafMessage(var/mob/user, var/message) + return + +/datum/emote/proc/sendToDead(message) + for(var/mob/M in dead_mob_list) + if(!M.client || istype(M, /mob/new_player)) + continue //skip monkeys, leavers and new players + if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) + M.show_message(message) + +/datum/emote/proc/playSound(var/mob/user) + if(sound) + playsound(user, sound, vol) + +//Emote Cooldown System (it's so simple!) +/datum/emote/proc/handle_emote_CD(var/mob/user) + if(user.emote_cd == 2) return 1 // Cooldown emotes were disabled by an admin, prevent use + if(user.emote_cd == 1) return 1 // Already on CD, prevent use + + user.emote_cd = 1 // Starting cooldown + spawn(cooldown) + if(user.emote_cd == 2) return 1 // Don't reset if cooldown emotes were disabled by an admin during the cooldown + user.emote_cd = 0 // Cooldown complete, ready for more! + + return 0 // Proceed with emote +//--FalseIncarnate + +/datum/emote/proc/addVerbs(var/mob/user) + if(!istype(user)) + return + new /obj/emoteVerb(user, src, commands) + +// Dummy object to allow access to the verb, needed as verbs require a valid loc for setting the src +/obj/emoteVerb + var/datum/emote/emote + var/mob/owner + +/obj/emoteVerb/New(var/mob/user, var/datum/emote/toAccess) + if(!(istype(user))) + return + if(!(istype(toAccess))) + return + if(!toAccess.commands) + return + owner = user + emote = toAccess + name = emote.name + loc = user + user.verbs += new/obj/emoteVerb/proc/runEmote(src, emote.commands[1], emote.desc) + +/obj/emoteVerb/proc/runEmote() + set src = usr.contents + set category = "Emotes" + usr.emoteHandler.runEmote(emote.commands[1]) + +/obj/emoteVerb/Destroy() + owner.verbs -= new/obj/emoteVerb/proc/runEmote(src, emote.commands[1]) + ..() + +/obj/emoteVerb/custom + +obj/emoteVerb/custom/New(var/mob/user) + if(!(istype(user))) + return + owner = user + name = "custom" + user.verbs += new/obj/emoteVerb/proc/runEmote(src, "custom", "Make your own emote") + +/obj/emoteVerb/custom/runEmote(message as text, audible as num) + set src = usr.contents + set category = "Emotes" + usr.emoteHandler.runEmote("me", null, message, audible) + +/************************************************************************************************************************** + Custom Emotes +As these are made as needed, they aren't searched for the appropriate one. As such, you need to specify conditions for which +one is used in /datum/emote_handler/customEmote(). As the checks for the type are done there, you chouldn't need to override +available, but if you do, make sure you return ..() so the check for use_me is still done - VampyrBytes + +***************************************************************************************************************************/ + +/datum/emote/custom + name = "Custom emote" + baseLevel = 0 + +/datum/emote/custom/New(var/mob/user, var/message = "", var/isAudible) + if(!message) + message = getMessage(user) + text = message + audible = isAudible + if(user.mind && user.mind.miming) + audible = 0 + +/datum/emote/custom/proc/getMessage(var/mob/user) + var/input = sanitize(copytext(input(user,"Choose an emote to display.") as text|null,1,MAX_MESSAGE_LEN)) + return input + +/datum/emote/custom/available(var/mob/user) + if(user.use_me) + return 1 + +/datum/emote/custom/ghost + name = "Ghost emote" + startText = "DEAD: " + spanClass = "game deadsay" + +/datum/emote/custom/ghost/prevented(var/mob/user) + if(user.client.prefs.muted & MUTE_DEADCHAT) + return "you are muted from deadchat" + if(!(user.client.prefs.toggles & CHAT_DEAD)) + return "you have deadchat muted" + if(!user.client.holder) + if(!config.dsay_allowed) + return "deadchat is globally muted" + +/datum/emote/custom/ghost/outputMessage(var/mob/user, var/message = "") + if(!message) + return + log_emote("Ghost/[user.key] : [message]") + sendToDead(message) + diff --git a/code/datums/Emote system/emote_handler.dm b/code/datums/Emote system/emote_handler.dm new file mode 100644 index 00000000000..afcb4f0253b --- /dev/null +++ b/code/datums/Emote system/emote_handler.dm @@ -0,0 +1,84 @@ +/datum/emoteHandler + var/mob/owner + var/list/commands + +/datum/emoteHandler/New(var/mob/user) + owner = user + setupCommands() + +/datum/emoteHandler/proc/setupCommands(var/reset = 0) + if(reset) + deleteEmoteVerbs() + commands = new/list() + for(var/e in emotes) + var/datum/emote/emote = e + if(emote.baseLevel) + var/datum/emote/found = searchTree(emote) + if(found) + for(var/command in found.commands) + commands[command] = found + found.addVerbs(owner) + +/datum/emoteHandler/proc/deleteEmoteVerbs() + for(var/obj/emoteVerb/E in owner.contents) + qdel(E) + +/datum/emoteHandler/proc/runEmote(var/command = "", var/param = "", var/message = "", var/audible = 0) // message and audible only used in custom emotes + if(!command) + return 0 + if(command == "help") + showCommands() + return 1 + + var/datum/emote/emote + //testing("[command]") + if(command == "me") + emote = customEmote(message, audible) + if(!emote) + return 0 + if(!commands[command] && !(command == "me")) + to_chat(owner, "Unknown emote, please check *help for emotes available to your character") + return 0 + if(!emote) + emote = commands[command] + if(!emote.available(owner)) // something's changed, remake the commands list, then try again to see if they've got a different version + setupCommands() + return runEmote(command, param, message) + + var/prevented = emote.prevented(owner) + if(prevented) + to_chat(owner, "You can't do that because [prevented]!") + return 0 + return emote.doEmote(owner) + +/datum/emoteHandler/proc/showCommands() + var/emoteList = "Available emotes are " + var/commandAdded = 0 + for (var/c in commands) + if(commandAdded) + emoteList += ", " + emoteList += c + commandAdded = 1 + + to_chat(owner, emoteList) + +// recursive search of subtypes - starts checking at the lowest level and breaks out if it finds one that can be done +/datum/emoteHandler/proc/searchTree(var/datum/emote/emote) + var/list/subtypes = subtypesof(emote.type) + var/datum/emote/found + for(var/t in subtypes) + var/datum/emote/em = new t // not keen on this, but it's this or loop through the emotes list and the + found = searchTree(em) // thought of a nested for loop in a recursive proc makes me want to *cry - VB + if(found) + return (found) + if(emote.available(owner)) + return emote + +/datum/emoteHandler/proc/customEmote(var/custom, var/audible) + var/datum/emote/custom/emote + if(isobserver(owner)) + emote = new /datum/emote/custom/ghost + else + emote = new /datum/emote/custom(owner, custom, audible) + if (emote.available(owner)) + return emote diff --git a/code/datums/Emote system/emotes.dm b/code/datums/Emote system/emotes.dm new file mode 100644 index 00000000000..5ab3b76b56d --- /dev/null +++ b/code/datums/Emote system/emotes.dm @@ -0,0 +1,91 @@ +/************************************************************************************ + Emotes +New() must call ..() to set the baseLevel for the emoteHandler search. As the commands +are set in New(), this means that the emote will pick up all the commands from the emotes +above it. If you don't want this, make the call to ..() then use commands = new /list() +*************************************************************************************/ + +/datum/emote/scream + name = "scream" + text = "screams!" + selfText = "scream!" + audible = 1 + mimeText = "acts out a scream" + muzzledNoise = "very loud " + cooldown = 50 + vol = 80 + +/datum/emote/scream/New() + ..() + commands += "scream" + commands += "screams" + +/datum/emote/scream/available(var/mob/user) + if(isliving(user)) + return 1 + +/datum/emote/scream/machine + name = "machine scream" + sound = 'sound/goonstation/voice/robot_scream.ogg' + +/datum/emote/scream/machine/available(var/mob/user) + if(issilicon(user)) + return 1 + if(istype(user, /mob/living/simple_animal/bot)) + return 1 + +/datum/emote/scream/human + name = "human scream" + +/datum/emote/scream/human/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/scream/human/playSound(var/mob/user) + var/mob/living/carbon/human/H = user + if(H.gender == FEMALE) + playsound(H, "[H.species.female_scream_sound]", vol, 1, 0, pitch = H.get_age_pitch()) + else + playsound(H, "[H.species.male_scream_sound]", vol, 1, 0, pitch = H.get_age_pitch()) + +/datum/emote/fart + name = "fart" + cooldown = 50 + +/datum/emote/fart/New() + ..() + commands += "fart" + commands += "farts" + +/datum/emote/fart/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/fart/doAction(var/mob/user) + // todo change this to work with superfarts + if(TOXIC_FARTS in user.mutations) + for(var/mob/M in range(get_turf(user),2)) + if (M.internal != null && M.wear_mask && (M.wear_mask.flags & AIRTIGHT)) + continue + if (M == user) + continue + M.reagents.add_reagent("space_drugs",rand(1,10)) + + if(locate(/obj/item/weapon/storage/bible) in get_turf(user)) + to_chat(viewers(user), "[user] farts on the Bible!") + to_chat(viewers(user), "A mysterious force smites [user]!") + var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + s.set_up(3, 1, user) + s.start() + user.gib() + +/datum/emote/fart/createMessage(var/mob/user) + var/message + if(TOXIC_FARTS in user.mutations) + message = "[user] unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart." + else + message = "[user] [pick("passes wind","farts")]." + return message + + + diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 1238adebcf5..8b3d599f50a 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -103,8 +103,10 @@ if(isovermind(M) || isobserver(M)) M.show_message(rendered, 2) +/* /mob/camera/blob/emote(var/act,var/m_type=1,var/message = null) return +*/ /mob/camera/blob/blob_act() return diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 9e25a50a811..401a1731b7c 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -33,8 +33,10 @@ return 0 return B.host.say_understands(other, speaking) +/* /mob/living/captive_brain/emote(var/message) return +*/ /mob/living/captive_brain/resist_borer() var/mob/living/simple_animal/borer/B = loc diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index 7f63a8f1261..022fbb85a5d 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -16,29 +16,14 @@ . = src.say_dead(message) - +/* /mob/dead/observer/emote(var/act, var/type, var/message) message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN)) - if(!message) - return + if(act = "me") + return ..() - if(act != "me") - return - log_emote("Ghost/[src.key] : [message]") - - if(src.client) - if(src.client.prefs.muted & MUTE_DEADCHAT) - to_chat(src, "\red You cannot emote in deadchat (muted).") - return - - if(src.client.handle_spam_prevention(message, MUTE_DEADCHAT)) - return - - . = src.emote_dead(message) - -/* for (var/mob/M in hearers(null, null)) if (!M.stat) if(M.job == "Chaplain") diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 8d03cdd969a..1c82e1c2755 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -1,6 +1,7 @@ #define EMOTE_COOLDOWN 20 //Time in deciseconds that the cooldown lasts //Emote Cooldown System (it's so simple!) +/* /mob/proc/handle_emote_CD(cooldown = EMOTE_COOLDOWN) if(emote_cd == 2) return 1 // Cooldown emotes were disabled by an admin, prevent use if(src.emote_cd == 1) return 1 // Already on CD, prevent use @@ -12,11 +13,13 @@ return 0 // Proceed with emote //--FalseIncarnate - +*/ // All mobs should have custom emote, really.. /mob/proc/custom_emote(var/m_type=1,var/message = null) - if(stat || !use_me && usr == src) + emoteHandler.runEmote("me", null, message, m_type) + +/* if(stat || !use_me && usr == src) to_chat(usr, "You are unable to emote.") return @@ -122,3 +125,4 @@ else if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to regular ghosts with deadchat toggled on M.show_message(message, 2) +*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/emote.dm b/code/modules/mob/living/carbon/alien/humanoid/emote.dm index caf3cc4e5ad..79445eec13a 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/emote.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/carbon/alien/humanoid/emote(var/act,var/m_type=1,var/message = null) var/param = null if (findtext(act, "-", 1, null)) @@ -112,4 +113,5 @@ playsound(src.loc, 'sound/voice/hiss5.ogg', 40, 1, 1) if (act == "deathgasp") playsound(src.loc, 'sound/voice/hiss6.ogg', 80, 1, 1) - ..(act, m_type, message) \ No newline at end of file + ..(act, m_type, message) +*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/emote.dm b/code/modules/mob/living/carbon/alien/larva/emote.dm index b617a1fc883..72be5c029fa 100644 --- a/code/modules/mob/living/carbon/alien/larva/emote.dm +++ b/code/modules/mob/living/carbon/alien/larva/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/carbon/alien/larva/emote(var/act,var/m_type=1,var/message = null) var/param = null if (findtext(act, "-", 1, null)) @@ -123,4 +124,5 @@ for(var/mob/O in hearers(src, null)) O.show_message(message, m_type) //Foreach goto(746) - return \ No newline at end of file + return +*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm index fd2a4879c9d..b173ac63460 100644 --- a/code/modules/mob/living/carbon/brain/emote.dm +++ b/code/modules/mob/living/carbon/brain/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/carbon/brain/emote(var/act,var/m_type=1,var/message = null) if(!(container && istype(container, /obj/item/device/mmi)))//No MMI, no emotes return @@ -47,4 +48,5 @@ to_chat(src, "alarm, alert, notice, flash,blink, whistle, beep, boop") if(message && !stat) - ..(act, m_type, message) \ No newline at end of file + ..(act, m_type, message) +*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 657d40983de..96c05ee627a 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null,var/force) if (stat == DEAD) @@ -836,7 +837,7 @@ visible_message(message) if(2) audible_message(message) - +*/ /mob/living/carbon/human/verb/pose() set name = "Set Pose" set desc = "Sets a description which will be shown when someone examines you." diff --git a/code/modules/mob/living/carbon/slime/emote.dm b/code/modules/mob/living/carbon/slime/emote.dm index 64838a1704d..dfb0b9cada8 100644 --- a/code/modules/mob/living/carbon/slime/emote.dm +++ b/code/modules/mob/living/carbon/slime/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/carbon/slime/emote(var/act, var/m_type=1, var/message = null) if (findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) @@ -71,4 +72,5 @@ for(var/mob/O in hearers(src, null)) O.show_message(message, m_type) //Foreach goto(746) - return \ No newline at end of file + return +*/ \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 3260015f64b..28f30b58714 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -287,7 +287,8 @@ proc/get_radio_key_from_channel(var/channel) /mob/living/emote(var/act, var/type, var/message) //emote code is terrible, this is so that anything that isn't if(stat) return 0 //already snowflaked to shit can call the parent and handle emoting sanely - + return ..() +/* if(..(act, type, message)) return 1 @@ -312,7 +313,7 @@ proc/get_radio_key_from_channel(var/channel) else //everything else failed, emote is probably invalid if(act == "help") return //except help, because help is handled individually to_chat(src, "\blue Unusable emote '[act]'. Say *help for a list.") - +*/ /mob/living/whisper(message as text) message = trim_strip_html_properly(message) diff --git a/code/modules/mob/living/silicon/emote.dm b/code/modules/mob/living/silicon/emote.dm index c5c3603466e..0b9d0a7bb0f 100644 --- a/code/modules/mob/living/silicon/emote.dm +++ b/code/modules/mob/living/silicon/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/silicon/emote(var/act, var/m_type=1, var/message = null) var/param = null if (findtext(act, "-", 1, null)) @@ -117,4 +118,5 @@ if("help") to_chat(src, "yes, no, beep, ping, buzz") - ..(act, m_type, message) \ No newline at end of file + ..(act, m_type, message) +*/ \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/emote.dm b/code/modules/mob/living/silicon/pai/emote.dm index a418c0972d5..40c32f9fcc3 100644 --- a/code/modules/mob/living/silicon/pai/emote.dm +++ b/code/modules/mob/living/silicon/pai/emote.dm @@ -1,2 +1,4 @@ +/* // what the hell was the point of this file! /mob/living/silicon/pai/emote(var/act, var/m_type=1, var/message = null) ..(act, m_type, message) +*/ \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 30273aec02c..3d438296ec3 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/silicon/robot/emote(var/act, var/m_type=1, var/message = null) var/param = null if (findtext(act, "-", 1, null)) @@ -159,4 +160,5 @@ if ("help") to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitches, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look,\n law, halt") - ..(act, m_type, message) \ No newline at end of file + ..(act, m_type, message) +*/ \ No newline at end of file diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index a546e164901..be3b778cb3c 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -129,11 +129,13 @@ return 1 /mob/living/silicon/ai/emote(var/act, var/type, var/message) +/* var/obj/machinery/hologram/holopad/T = src.holo if(T && T.hologram && T.master == src) //Is the AI using a holopad? src.holopad_emote(message) else //Emote normally, then. - ..() +*/ + ..() #undef IS_AI #undef IS_ROBOT diff --git a/code/modules/mob/living/simple_animal/bot/emote.dm b/code/modules/mob/living/simple_animal/bot/emote.dm index 4054e520ecf..ba8b1d86daf 100644 --- a/code/modules/mob/living/simple_animal/bot/emote.dm +++ b/code/modules/mob/living/simple_animal/bot/emote.dm @@ -1,3 +1,4 @@ +/* /mob/living/simple_animal/bot/emote(var/act, var/m_type=1, var/message = null) var/param = null if (findtext(act, "-", 1, null)) @@ -116,4 +117,5 @@ playsound(src.loc, 'sound/goonstation/voice/robot_scream.ogg', 80, 0) m_type = 2 - ..(act, m_type, message) \ No newline at end of file + ..(act, m_type, message) +*/ \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index 4606558d271..7a8a682e7af 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -250,18 +250,19 @@ return /mob/living/simple_animal/diona/emote(var/act, var/m_type=1, var/message = null) - if(stat) + if(stat) return - + ..() + /* var/on_CD = 0 switch(act) if("chirp") - on_CD = handle_emote_CD() + on_CD = handle_emote_CD() else - on_CD = 0 + on_CD = 0 if(on_CD == 1) - return + return switch(act) //IMPORTANT: Emotes MUST NOT CONFLICT anywhere along the chain. if("chirp") @@ -269,4 +270,5 @@ m_type = 2 //audible playsound(src, 'sound/misc/nymphchirp.ogg', 40, 1, 1) - ..(act, m_type, message) \ No newline at end of file + ..(act, m_type, message) + */ \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 658959001a1..36c7d172488 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -21,6 +21,7 @@ else living_mob_list += src prepare_huds() + emoteHandler = new /datum/emoteHandler(src) ..() /atom/proc/prepare_huds() diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 8b4b39e006a..5151d9adab9 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -232,3 +232,5 @@ var/datum/vision_override/vision_type = null //Vision override datum. var/list/permanent_huds = list() + + var/datum/emoteHandler/emoteHandler \ No newline at end of file diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index e5b12ed022b..43248d54db4 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -34,10 +34,7 @@ message = strip_html_properly(message) set_typing_indicator(0) - if(use_me) - custom_emote(usr.emote_type, message) - else - usr.emote(message) + emoteHandler.runEmote("me", null, message) /mob/proc/say_dead(var/message) if(!src.client.holder) @@ -98,8 +95,15 @@ /mob/proc/emote(var/act, var/type, var/message) - if(act == "me") - return custom_emote(type, message) + var/param + if (findtext(act, "-", 1, null)) + var/t1 = findtext(act, "-", 1, null) + param = copytext(act, t1 + 1, length(act) + 1) + act = copytext(act, 1, t1) + + emoteHandler.runEmote(act, param, message, type) + + /mob/proc/get_ear() // returns an atom representing a location on the map from which this diff --git a/paradise.dme b/paradise.dme index 3a5da1134eb..b8e3c3dd148 100644 --- a/paradise.dme +++ b/paradise.dme @@ -258,6 +258,9 @@ #include "code\datums\diseases\advance\symptoms\weakness.dm" #include "code\datums\diseases\advance\symptoms\weight.dm" #include "code\datums\diseases\advance\symptoms\youth.dm" +#include "code\datums\Emote system\emote.dm" +#include "code\datums\Emote system\emote_handler.dm" +#include "code\datums\Emote system\emotes.dm" #include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\global_iterator.dm" From 974d09da59a9ed8d50dac838c3060b31ee674571 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Thu, 5 May 2016 17:40:08 +0100 Subject: [PATCH 002/260] Params Adds support for params. A few other little tweaks too --- .../{Emote system => Emote_system}/emote.dm | 137 +++++++++++------- .../emote_handler.dm | 5 +- .../{Emote system => Emote_system}/emotes.dm | 34 +++++ code/modules/mob/say.dm | 9 +- paradise.dme | 6 +- 5 files changed, 129 insertions(+), 62 deletions(-) rename code/datums/{Emote system => Emote_system}/emote.dm (81%) rename code/datums/{Emote system => Emote_system}/emote_handler.dm (92%) rename code/datums/{Emote system => Emote_system}/emotes.dm (78%) diff --git a/code/datums/Emote system/emote.dm b/code/datums/Emote_system/emote.dm similarity index 81% rename from code/datums/Emote system/emote.dm rename to code/datums/Emote_system/emote.dm index 62c3c6a14d8..f0a7e6ddb1b 100644 --- a/code/datums/Emote system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -22,11 +22,11 @@ VampyrBytes var/restrained = "" // 1 if being restrained prevents this emote var/cooldown = 0 - var/canTarget = 0 // 1 if the emote accepts a target Emotes only recieve 1 parameter, so its either or with these 2 - var/takesParam = 0 // 1 if the emote uses a non target parameter - - var/targetMob = 0 // 0 if target can be any atom, 1 if it has to be a mob + var/canTarget = 0 // 1 if the emote accepts a target + var/targetMob = 0 // 0 if target can be any atom, 1 if it has to be a mob, var/targetText = "at" // what goes inbetween user and target + var/takesNumber = 0 // 1 if the emote uses a number parameter + var/spanClass = "notice" var/baseLevel = 1 var/baseSet = 0 @@ -43,20 +43,31 @@ VampyrBytes baseLevel = 0 break -/datum/emote/proc/doEmote(var/mob/user, var/param) +/datum/emote/proc/doEmote(var/mob/user) if(!istype(user)) return 0 if(cooldown) if(handle_emote_CD(user)) return 0 - var/message = createMessage(user, param) + var/number + var/target - if(canTarget && param) - param = getTarget(user, param) + if(takesNumber) + number = getNumber(user) + + if(canTarget) + target = getTarget(user) + + if(number == "failed" || target == "failed") // If you need to test the input, override the appopriate get proc, call the parent, + return // then test it. If it fails, tell the user why, then return "failed" to halt the emote + + var/message = createMessage(user, number) + + if(canTarget && message) + message = addTarget(user, target, message) if(message) - message = addTarget(user, param, message) message += "" outputMessage(user, message) @@ -64,13 +75,30 @@ VampyrBytes if(!(user.mind && user.mind.miming)) playSound(user, vol) - doAction(user, param) + doAction(user, target, number) return 1 // for things that the emote does that aren't text or sound based -/datum/emote/proc/doAction(var/mob/user, var/param) +/datum/emote/proc/doAction(var/mob/user, var/atom/target, var/number) return +/datum/emote/proc/getNumber(var/mob/user) + var/number = input("How many") as null|num + return number + +/datum/emote/proc/getTarget(var/mob/user) + if(targetMob) + return getMobTarget() + return getAtomTarget() + +/datum/emote/proc/getMobTarget() + var/mob/target = input("Select target", "Target Mob") as null|mob in view() + return target + +/datum/emote/proc/getAtomTarget() + var/atom/target = input("Select target", "Target") as null|mob|obj|turf in oview() + return target + // returns the reason the user can't currently do the emote /datum/emote/proc/prevented(var/mob/user) if(user.stat == DEAD) @@ -82,39 +110,58 @@ VampyrBytes /datum/emote/proc/available(var/mob/user) return -/datum/emote/proc/createMessage(var/mob/user, var/param) +/datum/emote/proc/createMessage(var/mob/user, var/number) if(!text) return var/message - if(audible && user.mind && user.mind.miming) + if(takesNumber && number) + message = getParamMessage(user, number) + else if(audible && user.mind && user.mind.miming) message = mimeMessage(user) else if(audible && user.is_muzzled()) message = muzzleMessage(user) - else if(takesParam && param) - message = paramMessage(user, param) else - message = "[startText + " "][user] [text]" + message = "[user] [text]" + if(startText) + message = "[startText] [message]" + message = "[message]" return message /datum/emote/proc/mimeMessage(var/mob/user) if(!mimeText) return - var/message = "[startText + " "][user] [mimeText]" + var/message = "[user] [mimeText]" return message /datum/emote/proc/muzzleMessage(var/mob/user) - var/message = "makes a [muzzledNoise + " "]noise" + var/message = "[user] makes a " + if(muzzledNoise) + message += "[muzzledNoise] " + message += "noise" + return message + +/datum/emote/proc/getParamMessage(var/mob/user, var/param) + var/message + if(audible && user.mind && user.mind.miming) + message = paramMimeMessage(user, param) + else if (audible && user.is_muzzled()) + message = muzzleMessage(user) + else + message = paramMessage(user, param) return message // if the emote takes a non target parameter, set up and return the with parameter version in here /datum/emote/proc/paramMessage(var/mob/user, var/param) return -/datum/emote/proc/addTarget(var/mob/user, var/target = "", var/message = "") +// as above, but for mimes trying to do audible messages +/datum/emote/proc/paramMimeMessage(var/mob/user, var/param) + return + +/datum/emote/proc/addTarget(var/mob/user, var/atom/target, var/message = "") if(!canTarget) return message - target = getTarget(user, target) if(!target) return message if(ismob(target)) @@ -123,35 +170,6 @@ VampyrBytes message += " [targetText] \the [target]" return message -/datum/emote/proc/getTarget(var/mob/user, var/target = "") - if(!target) - return - if(targetMob) - return getMobTarget(user, target) - else - return getAtomTarget(user, target) - -/datum/emote/proc/getMobTarget(var/mob/user, var/target = "") - for (var/mob/M in view(null, user)) - if (target == M.name) - return M - -/datum/emote/proc/getAtomTarget(var/mob/user, var/target = "") - if (target) - for (var/atom/A as mob|obj|turf in view(null, user)) - if (target == A.name) - return A - -/datum/emote/proc/outputMessage(var/mob/user, var/message = "") - if(!message) - return - log_emote("[user.name]/[user.key] : [message]") - if(audible) - audible_message(message, user) - else - visible_message(message, user) - sendToDead(message) - // What you should see when you perform the emote /datum/emote/proc/createSelfMessage(var/mob/user, var/message = "") var/selfMessage @@ -163,6 +181,16 @@ VampyrBytes selfMessage = replacetext(selfMessage, text, selfText) return selfMessage +/datum/emote/proc/outputMessage(var/mob/user, var/message = "") + if(!message) + return + log_emote("[user.name]/[user.key] : [message]") + if(audible) + audible_message(message, user) + else + visible_message(message, user) + sendToDead(message) + /datum/emote/proc/visible_message(var/message = "", var/mob/user) var/selfMessage = createSelfMessage(user, message) for(var/mob/M in viewers(user)) @@ -182,7 +210,6 @@ VampyrBytes /datum/emote/proc/audible_message(var/message = "", var/mob/user) var/selfMessage = createSelfMessage(user, message) - testing(selfMessage) for(var/mob/M in get_mobs_in_view(7, user)) var/msg = message if(selfMessage && M==src) @@ -272,6 +299,11 @@ VampyrBytes return 0 // Proceed with emote //--FalseIncarnate + +/****************************************************************************************** + Emote Verbs +******************************************************************************************/ + /datum/emote/proc/addVerbs(var/mob/user) if(!istype(user)) return @@ -318,6 +350,7 @@ obj/emoteVerb/custom/New(var/mob/user) set category = "Emotes" usr.emoteHandler.runEmote("me", null, message, audible) + /************************************************************************************************************************** Custom Emotes As these are made as needed, they aren't searched for the appropriate one. As such, you need to specify conditions for which @@ -346,6 +379,10 @@ available, but if you do, make sure you return ..() so the check for use_me is s if(user.use_me) return 1 +// Yeah, no +/datum/emote/custom/createSelfMessage(var/mob/user, var/message = "") + return message + /datum/emote/custom/ghost name = "Ghost emote" startText = "DEAD: " diff --git a/code/datums/Emote system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm similarity index 92% rename from code/datums/Emote system/emote_handler.dm rename to code/datums/Emote_system/emote_handler.dm index afcb4f0253b..a20199155d2 100644 --- a/code/datums/Emote system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -19,11 +19,12 @@ commands[command] = found found.addVerbs(owner) + /datum/emoteHandler/proc/deleteEmoteVerbs() for(var/obj/emoteVerb/E in owner.contents) qdel(E) -/datum/emoteHandler/proc/runEmote(var/command = "", var/param = "", var/message = "", var/audible = 0) // message and audible only used in custom emotes +/datum/emoteHandler/proc/runEmote(var/command = "", var/message = "", var/audible = 0) // message and audible only used in custom emotes if(!command) return 0 if(command == "help") @@ -43,7 +44,7 @@ emote = commands[command] if(!emote.available(owner)) // something's changed, remake the commands list, then try again to see if they've got a different version setupCommands() - return runEmote(command, param, message) + return runEmote(command, message, audible) var/prevented = emote.prevented(owner) if(prevented) diff --git a/code/datums/Emote system/emotes.dm b/code/datums/Emote_system/emotes.dm similarity index 78% rename from code/datums/Emote system/emotes.dm rename to code/datums/Emote_system/emotes.dm index 5ab3b76b56d..691ad7ab26e 100644 --- a/code/datums/Emote system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -88,4 +88,38 @@ above it. If you don't want this, make the call to ..() then use commands = new return message +/datum/emote/signal + name = "signal" + desc = "raise x number of fingers" + text = "raises" + selfText = "raise" + canTarget = 1 + restrained = 1 + targetMob = 1 + takesNumber = 1 +/datum/emote/signal/New() + ..() + commands += "signal" + commands += "signals" + +/datum/emote/signal/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/signal/getNumber(var/mob/user) + var/number = ..() + var/fingersAvailable = 0 + if(!user.r_hand) + fingersAvailable += 5 + if(!user.l_hand) + fingersAvailable += 5 + if(fingersAvailable < number) + to_chat(user, "You don't have enough fingers free") + return "failed" + return number + +/datum/emote/signal/paramMessage(var/mob/user, var/param) + var/message = "[user] raises [param] finger\s" + testing(message) + return message diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 43248d54db4..709c1d778b3 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -29,7 +29,7 @@ /mob/verb/me_verb(message as text) set name = "Me" - set category = "IC" + set category = "Emotes" message = strip_html_properly(message) @@ -95,13 +95,8 @@ /mob/proc/emote(var/act, var/type, var/message) - var/param - if (findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) - emoteHandler.runEmote(act, param, message, type) + emoteHandler.runEmote(act, message, type) diff --git a/paradise.dme b/paradise.dme index b8e3c3dd148..a1cfc939216 100644 --- a/paradise.dme +++ b/paradise.dme @@ -258,9 +258,9 @@ #include "code\datums\diseases\advance\symptoms\weakness.dm" #include "code\datums\diseases\advance\symptoms\weight.dm" #include "code\datums\diseases\advance\symptoms\youth.dm" -#include "code\datums\Emote system\emote.dm" -#include "code\datums\Emote system\emote_handler.dm" -#include "code\datums\Emote system\emotes.dm" +#include "code\datums\Emote_system\emote.dm" +#include "code\datums\Emote_system\emote_handler.dm" +#include "code\datums\Emote_system\emotes.dm" #include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\global_iterator.dm" From e61d774a7c8794ec38bf938d56d91b3cf9afe020 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Sun, 8 May 2016 05:34:31 +0100 Subject: [PATCH 003/260] Makes emotes case insensitive (#4386) Also prevents unconscious emoting --- code/datums/Emote_system/emote.dm | 2 ++ code/datums/Emote_system/emote_handler.dm | 2 +- code/modules/mob/say.dm | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index f0a7e6ddb1b..75c8314ce7a 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -103,6 +103,8 @@ VampyrBytes /datum/emote/proc/prevented(var/mob/user) if(user.stat == DEAD) return "you are dead" + if(user.stat == UNCONSCIOUS) + return "you are unconscious" if(restrained && user.restrained()) return "you are restrained" diff --git a/code/datums/Emote_system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm index a20199155d2..ef4441857e5 100644 --- a/code/datums/Emote_system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -16,7 +16,7 @@ var/datum/emote/found = searchTree(emote) if(found) for(var/command in found.commands) - commands[command] = found + commands[lowertext(command)] = found found.addVerbs(owner) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 709c1d778b3..8078a101861 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -96,6 +96,7 @@ /mob/proc/emote(var/act, var/type, var/message) + act = lowertext(act) emoteHandler.runEmote(act, message, type) From a642606d18271d1d9ba76359173a94c88ee47b0e Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Sun, 8 May 2016 09:23:30 +0100 Subject: [PATCH 004/260] fixes bug with species specific emotes Emotes were being allocated before a human's species was set --- code/datums/Emote_system/emote_handler.dm | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/code/datums/Emote_system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm index ef4441857e5..c036954bbaa 100644 --- a/code/datums/Emote_system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -7,17 +7,18 @@ setupCommands() /datum/emoteHandler/proc/setupCommands(var/reset = 0) - if(reset) - deleteEmoteVerbs() - commands = new/list() - for(var/e in emotes) - var/datum/emote/emote = e - if(emote.baseLevel) - var/datum/emote/found = searchTree(emote) - if(found) - for(var/command in found.commands) - commands[lowertext(command)] = found - found.addVerbs(owner) + spawn(0) // needed so at mob creation species is set before emotes are allocated + if(reset) + deleteEmoteVerbs() + commands = new/list() + for(var/e in emotes) + var/datum/emote/emote = e + if(emote.baseLevel) + var/datum/emote/found = searchTree(emote) + if(found) + for(var/command in found.commands) + commands[lowertext(command)] = found + found.addVerbs(owner) /datum/emoteHandler/proc/deleteEmoteVerbs() From bcfe01b03867b0ca01c216a1aafef03af4ba8f71 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Tue, 10 May 2016 03:19:00 +0100 Subject: [PATCH 005/260] 1st batch of emotes + tweaks --- code/datums/Emote_system/emote.dm | 6 +- code/datums/Emote_system/emote_handler.dm | 9 +- code/datums/Emote_system/emotes.dm | 195 ++++++++++++++++++++++ 3 files changed, 205 insertions(+), 5 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 75c8314ce7a..f6b8feaebbc 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -29,7 +29,7 @@ VampyrBytes var/spanClass = "notice" var/baseLevel = 1 - var/baseSet = 0 + var/allowParent = 0 // 1 if you want the parent available as well as this one /datum/emote/New() @@ -107,6 +107,10 @@ VampyrBytes return "you are unconscious" if(restrained && user.restrained()) return "you are restrained" + if(isbrain(user)) + var/mob/living/carbon/brain/brain = user + if(!(brain.container && istype(brain.container, /obj/item/device/mmi))) + return "you need to be in an mmi to do this" // return 1 if this emote can be used by this type of user /datum/emote/proc/available(var/mob/user) diff --git a/code/datums/Emote_system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm index c036954bbaa..422892b847b 100644 --- a/code/datums/Emote_system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -13,7 +13,7 @@ commands = new/list() for(var/e in emotes) var/datum/emote/emote = e - if(emote.baseLevel) + if(emote.baseLevel || emote.allowParent) var/datum/emote/found = searchTree(emote) if(found) for(var/command in found.commands) @@ -33,7 +33,6 @@ return 1 var/datum/emote/emote - //testing("[command]") if(command == "me") emote = customEmote(message, audible) if(!emote) @@ -69,8 +68,10 @@ var/list/subtypes = subtypesof(emote.type) var/datum/emote/found for(var/t in subtypes) - var/datum/emote/em = new t // not keen on this, but it's this or loop through the emotes list and the - found = searchTree(em) // thought of a nested for loop in a recursive proc makes me want to *cry - VB + var/datum/emote/em = new t + if(em.allowParent) + continue + found = searchTree(em, 1) if(found) return (found) if(emote.available(owner)) diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index 691ad7ab26e..509ff9eca2a 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -5,6 +5,201 @@ are set in New(), this means that the emote will pick up all the commands from t above it. If you don't want this, make the call to ..() then use commands = new /list() *************************************************************************************/ +/datum/emote/airguitar + name = "airguitar" + desc = "Play an air guitar" + text = "is strumming the air and headbanging like a safari chimp." + selfText = "are strumming the air and headbanging like a safari chimp." + restrained = 1 + +/datum/emote/airguitar/New() + ..() + commands += "airguitar" + +/datum/emote/airguitar/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/alarm + name = "alarm" + desc = "Sound an alarm" + text = "sounds an alarm" + selfText = "sound an alarm" + audible = 1 + +/datum/emote/alarm/New() + ..() + commands += "alarm" + +/datum/emote/alarm/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/alarm/createBlindMessage(var/mob/user, var/messaage) + return "You hear an alarm" + +/datum/emote/alert + name = "alert" + desc = "Sound an alert" + text = "lets out a distressed noise" + selfText = "let out a distressed noise)" + audible = 1 + +/datum/emote/alert/New() + ..() + commands += "alert" + +/datum/emote/alert/available(var/mob/user) + if(isbrain(user)) + return 1 +/datum/emote/alert/createBlindMessage(var/mob/user, var/message) + return "you hear an alert" + +/datum/emote/beep + name = "beep" + desc = "let out a beep" + text = "beeps" + selfText = "beep" + audible = 1 + +/datum/emote/beep/New() + ..() + commands += "beep" + commands += "beeps" + +/datum/emote/beep/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/beep/createBlindMessage(var/mob/user, var/message) + return "You hear a beep" + +/datum/emote/beep/targetted + cooldown = 1 + sound = 'sound/machines/twobeep.ogg' + canTarget = 1 + targetMob = 1 + +/datum/emote/beep/targetted/available(var/mob/user) + if(issilicon(user)) + return 1 + if(isbot(user)) + return 1 + if(user.get_species() == "Machine") + return 1 + +/datum/emote/blink + name = "blink" + desc = "blink" + text = "blinks" + selfText = "blink" + +/datum/emote/blink/New() + ..() + commands += "blink" + commands += "blinks" + +/datum/emote/blink/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isbrain(user)) + return 1 + +/datum/emote/blink/rapid + name = "rapid blink" + desc = "blink rapidly" + allowParent = 1 + +/datum/emote/blink/rapid/New() + ..() + commands = new/list() + commands += "blink_r" + commands += "blinks_r" + +/datum/emote/blink/rapid/available(var/mob/user) + if(ishuman(user)) + return + +/datum/emote/blink/rapid/createMessage(var/mob/user, var/number) + var/message = ..() + message += " rapidly" + return message + +/datum/emote/blush + name = "blush" + desc = "blush" + text = "blushes" + selfText = "blush" + +/datum/emote/blush/New() + ..() + commands += "blush" + commands += "blushes" + +/datum/emote/blush/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/boop + name = "boop" + desc = "boop" + text = "boops" + selfText = "boop" + +/datum/emote/boop/New() + ..() + commands += "boop" + commands += "boops" + +/datum/emote/boop/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/bounce + name = "bounce" + desc = "bounce" + text = "bounces in place" + selfText = "bounce in place" + +/datum/emote/bounce/New() + ..() + commands += "bounce" + commands += "bounces" + +/datum/emote/bounce/available(var/mob/user) + if(isslime(user)) + return 1 + +/datum/emote/bow + name = "bow" + desc = "bow" + text = "bows" + selfText = "bow" + canTarget = 1 + targetMob = 1 + targetText = "to" + +/datum/emote/bow/New() + ..() + commands += "bow" + commands += "bows" + +/datum/emote/bow/available(var/mob/user) + if(isrobot(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/bow/prevented(var/mob/user) + . = ..() + if(!. && user.buckled) + return "you are buckled to something" + + + + /datum/emote/scream name = "scream" text = "screams!" From 06331768930bca71c2009ca2ea31fe5f40805dd2 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Tue, 10 May 2016 04:33:21 +0100 Subject: [PATCH 006/260] fixes derps in merge --- code/datums/Emote_system/emotes.dm | 2 +- .../carbon/human/species/{abdcutor.dm => abductor.dm} | 0 paradise.dme | 6 ++++++ 3 files changed, 7 insertions(+), 1 deletion(-) rename code/modules/mob/living/carbon/human/species/{abdcutor.dm => abductor.dm} (100%) diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index 7a3f9ea2b10..c00f5be5fd1 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -202,7 +202,7 @@ above it. If you don't want this, make the call to ..() then use commands = new desc = "burp" text = "burps" selfText = "burp" - muzzledNoise = "peculiar + muzzledNoise = "peculiar" /datum/emote/scream diff --git a/code/modules/mob/living/carbon/human/species/abdcutor.dm b/code/modules/mob/living/carbon/human/species/abductor.dm similarity index 100% rename from code/modules/mob/living/carbon/human/species/abdcutor.dm rename to code/modules/mob/living/carbon/human/species/abductor.dm diff --git a/paradise.dme b/paradise.dme index c3a14848062..dc3b70ad7bf 100644 --- a/paradise.dme +++ b/paradise.dme @@ -214,19 +214,23 @@ #include "code\datums\diseases\anxiety.dm" #include "code\datums\diseases\appendicitis.dm" #include "code\datums\diseases\beesease.dm" +#include "code\datums\diseases\berserker.dm" #include "code\datums\diseases\brainrot.dm" #include "code\datums\diseases\cold.dm" #include "code\datums\diseases\cold9.dm" #include "code\datums\diseases\fake_gbs.dm" #include "code\datums\diseases\flu.dm" #include "code\datums\diseases\fluspanish.dm" +#include "code\datums\diseases\food_poisoning.dm" #include "code\datums\diseases\gbs.dm" +#include "code\datums\diseases\kuru.dm" #include "code\datums\diseases\magnitis.dm" #include "code\datums\diseases\pierrot_throat.dm" #include "code\datums\diseases\retrovirus.dm" #include "code\datums\diseases\rhumba_beat.dm" #include "code\datums\diseases\transformation.dm" #include "code\datums\diseases\tuberculosis.dm" +#include "code\datums\diseases\vampire.dm" #include "code\datums\diseases\wizarditis.dm" #include "code\datums\diseases\advance\advance.dm" #include "code\datums\diseases\advance\presets.dm" @@ -773,6 +777,7 @@ #include "code\game\objects\items\stacks\tiles\tile_types.dm" #include "code\game\objects\items\weapons\AI_modules.dm" #include "code\game\objects\items\weapons\alien_specific.dm" +#include "code\game\objects\items\weapons\bee_briefcase.dm" #include "code\game\objects\items\weapons\cards_ids.dm" #include "code\game\objects\items\weapons\cash.dm" #include "code\game\objects\items\weapons\caution.dm" @@ -857,6 +862,7 @@ #include "code\game\objects\items\weapons\implants\implantuplink.dm" #include "code\game\objects\items\weapons\melee\energy.dm" #include "code\game\objects\items\weapons\melee\misc.dm" +#include "code\game\objects\items\weapons\storage\artistic_toolbox.dm" #include "code\game\objects\items\weapons\storage\backpack.dm" #include "code\game\objects\items\weapons\storage\bags.dm" #include "code\game\objects\items\weapons\storage\belt.dm" From 29152ceec04c9ba357a5ff670e7ce6ebb805d5e9 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Wed, 11 May 2016 14:42:05 +0100 Subject: [PATCH 007/260] tweaks Better mime support system returns 0,1 or 2(0 failed, 1 for visible and 2 for audible) cleaned up creating message --- code/datums/Emote_system/emote.dm | 119 ++++++++++++++++------------- code/datums/Emote_system/emotes.dm | 2 + code/modules/mob/emote.dm | 2 +- code/modules/mob/say.dm | 4 +- 4 files changed, 73 insertions(+), 54 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index f6b8feaebbc..3d3a2e669e4 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -45,43 +45,47 @@ VampyrBytes /datum/emote/proc/doEmote(var/mob/user) if(!istype(user)) - return 0 + return if(cooldown) if(handle_emote_CD(user)) - return 0 + return - var/number + var/message = "" + var/num var/target if(takesNumber) - number = getNumber(user) + num = getNumber(user) if(canTarget) target = getTarget(user) - if(number == "failed" || target == "failed") // If you need to test the input, override the appopriate get proc, call the parent, - return // then test it. If it fails, tell the user why, then return "failed" to halt the emote + if(num == "invalid" || target == "invalid") + return - var/message = createMessage(user, number) - - if(canTarget && message) - message = addTarget(user, target, message) + if(text) + message = createMessage(user, num, target) + if(message == "failed") + return if(message) - message += "" - outputMessage(user, message) + . = outputMessage(user, message) - if(audible) - if(!(user.mind && user.mind.miming)) - playSound(user, vol) + var/played = 0 + if(!doMime(user)) + played = playSound(user, vol) - doAction(user, target, number) - return 1 + if(played) + . = 2 + + doAction(user) + return // for things that the emote does that aren't text or sound based /datum/emote/proc/doAction(var/mob/user, var/atom/target, var/number) return +// return "invalid" from either of these getters if you've tested the input and it's failed /datum/emote/proc/getNumber(var/mob/user) var/number = input("How many") as null|num return number @@ -116,27 +120,43 @@ VampyrBytes /datum/emote/proc/available(var/mob/user) return -/datum/emote/proc/createMessage(var/mob/user, var/number) +/datum/emote/proc/createMessage(var/mob/user, var/param, var/target) if(!text) return var/message - if(takesNumber && number) - message = getParamMessage(user, number) - else if(audible && user.mind && user.mind.miming) - message = mimeMessage(user) - else if(audible && user.is_muzzled()) - message = muzzleMessage(user) - else - message = "[user] [text]" - if(startText) - message = "[startText] [message]" - message = "[message]" + + if(doMime(user)) + message = mimeMessage(user, param, target) + + if(!message) + if(muzzledNoise && user.is_muzzled()) + message = muzzleMessage(user) + + else if(takesNumber && param) + message = paramMessage(user, param) + else + message = "[user] [text]" + + if(message && target) + message = addTarget(user, target, message) + + message = addExtras(message) + return message -/datum/emote/proc/mimeMessage(var/mob/user) +/datum/emote/proc/addExtras(var/message) + if(!message) + return + if(startText) + message = "[startText] [message]" + message = "[message]" + return message + +/datum/emote/proc/mimeMessage(var/mob/user, var/param, var/target) if(!mimeText) return - + if(takesNumber) + return paramMimeMessage(user, param) var/message = "[user] [mimeText]" return message @@ -147,16 +167,6 @@ VampyrBytes message += "noise" return message -/datum/emote/proc/getParamMessage(var/mob/user, var/param) - var/message - if(audible && user.mind && user.mind.miming) - message = paramMimeMessage(user, param) - else if (audible && user.is_muzzled()) - message = muzzleMessage(user) - else - message = paramMessage(user, param) - return message - // if the emote takes a non target parameter, set up and return the with parameter version in here /datum/emote/proc/paramMessage(var/mob/user, var/param) return @@ -170,10 +180,7 @@ VampyrBytes return message if(!target) return message - if(ismob(target)) - message += " [targetText] [target]" - else - message += " [targetText] \the [target]" + message += " [targetText] \the [target]" return message // What you should see when you perform the emote @@ -191,11 +198,11 @@ VampyrBytes if(!message) return log_emote("[user.name]/[user.key] : [message]") - if(audible) - audible_message(message, user) - else - visible_message(message, user) sendToDead(message) + if(audible) + return audible_message(message, user) + else + return visible_message(message, user) /datum/emote/proc/visible_message(var/message = "", var/mob/user) var/selfMessage = createSelfMessage(user, message) @@ -213,8 +220,11 @@ VampyrBytes outputAudibleMessage(msg, M, user, 1) else outputVisibleMessage(msg, M, user) + return 1 /datum/emote/proc/audible_message(var/message = "", var/mob/user) + if(doMime(user)) + return visible_message(message, user) var/selfMessage = createSelfMessage(user, message) for(var/mob/M in get_mobs_in_view(7, user)) var/msg = message @@ -228,6 +238,7 @@ VampyrBytes outputVisibleMessage(msg, M, user, 1) else outputAudibleMessage(msg, M, user) + return 2 /datum/emote/proc/outputVisibleMessage(var/message, var/mob/recipient, var/mob/user, var/retest = 0) if(retest) @@ -252,6 +263,7 @@ VampyrBytes to_chat(recipient, message) /datum/emote/proc/outputAudibleMessage(var/message = "", var/mob/recipient, var/mob/user, var/retest = 0) + if(retest) if(!user) return @@ -291,6 +303,11 @@ VampyrBytes /datum/emote/proc/playSound(var/mob/user) if(sound) playsound(user, sound, vol) + return 1 + +/datum/emote/proc/doMime(var/mob/user) + if(mimeText && user.mind && user.mind.miming) + return 1 //Emote Cooldown System (it's so simple!) /datum/emote/proc/handle_emote_CD(var/mob/user) @@ -336,7 +353,7 @@ VampyrBytes /obj/emoteVerb/proc/runEmote() set src = usr.contents set category = "Emotes" - usr.emoteHandler.runEmote(emote.commands[1]) + return usr.emoteHandler.runEmote(emote.commands[1]) /obj/emoteVerb/Destroy() owner.verbs -= new/obj/emoteVerb/proc/runEmote(src, emote.commands[1]) @@ -354,7 +371,7 @@ obj/emoteVerb/custom/New(var/mob/user) /obj/emoteVerb/custom/runEmote(message as text, audible as num) set src = usr.contents set category = "Emotes" - usr.emoteHandler.runEmote("me", null, message, audible) + return usr.emoteHandler.runEmote("me", null, message, audible) /************************************************************************************************************************** diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index c00f5be5fd1..abbb89fce36 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -203,6 +203,8 @@ above it. If you don't want this, make the call to ..() then use commands = new text = "burps" selfText = "burp" muzzledNoise = "peculiar" + mimeText = "opens their mouth rather obnoxiously" + /datum/emote/scream diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 1c82e1c2755..201e54ef839 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -17,7 +17,7 @@ // All mobs should have custom emote, really.. /mob/proc/custom_emote(var/m_type=1,var/message = null) - emoteHandler.runEmote("me", null, message, m_type) + return emoteHandler.runEmote("me", null, message, m_type) /* if(stat || !use_me && usr == src) to_chat(usr, "You are unable to emote.") diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 8078a101861..7362cdd78ab 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -34,7 +34,7 @@ message = strip_html_properly(message) set_typing_indicator(0) - emoteHandler.runEmote("me", null, message) + return emoteHandler.runEmote("me", null, message) /mob/proc/say_dead(var/message) if(!src.client.holder) @@ -97,7 +97,7 @@ /mob/proc/emote(var/act, var/type, var/message) act = lowertext(act) - emoteHandler.runEmote(act, message, type) + return emoteHandler.runEmote(act, message, type) From 3de48b83f8d0d2eaa50e3d5b579ee883cf5b610c Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Fri, 13 May 2016 10:41:42 +0100 Subject: [PATCH 008/260] better param support --- code/datums/Emote_system/emote.dm | 84 ++++++++++++++--------- code/datums/Emote_system/emote_handler.dm | 1 - code/datums/Emote_system/emotes.dm | 17 +++-- 3 files changed, 63 insertions(+), 39 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 3d3a2e669e4..47311cc994b 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -51,22 +51,16 @@ VampyrBytes return var/message = "" - var/num - var/target + var/list/params[0] - if(takesNumber) - num = getNumber(user) + params = getParams(user) - if(canTarget) - target = getTarget(user) - - if(num == "invalid" || target == "invalid") - return + for(var/p in params) + if(params[p] == "invalid") + return if(text) - message = createMessage(user, num, target) - if(message == "failed") - return + message = createMessage(user, params) if(message) . = outputMessage(user, message) @@ -78,13 +72,25 @@ VampyrBytes if(played) . = 2 - doAction(user) + doAction(user, params) + return // for things that the emote does that aren't text or sound based -/datum/emote/proc/doAction(var/mob/user, var/atom/target, var/number) +/datum/emote/proc/doAction(var/mob/user, var/list/params) return +/datum/emote/proc/getParams(var/mob/user) + var/list/params[0] + + if(takesNumber) + params["num"] = getNumber(user) + + if(canTarget) + params["target"] = getTarget(user) + + return params + // return "invalid" from either of these getters if you've tested the input and it's failed /datum/emote/proc/getNumber(var/mob/user) var/number = input("How many") as null|num @@ -120,30 +126,37 @@ VampyrBytes /datum/emote/proc/available(var/mob/user) return -/datum/emote/proc/createMessage(var/mob/user, var/param, var/target) +/datum/emote/proc/createMessage(var/mob/user, var/list/params) if(!text) return var/message if(doMime(user)) - message = mimeMessage(user, param, target) + message = mimeMessage(user, params) if(!message) if(muzzledNoise && user.is_muzzled()) message = muzzleMessage(user) - else if(takesNumber && param) - message = paramMessage(user, param) + else if(checkForParams(params)) + message = paramMessage(user, params) else message = "[user] [text]" - if(message && target) - message = addTarget(user, target, message) + if(message && "target" in params) + if(params["target"]) + message = addTarget(user, params, message) message = addExtras(message) return message +/datum/emote/proc/checkForParams(var/list/params) + for(var/p in params) + if(params[p] == "target") + continue + return 1 + /datum/emote/proc/addExtras(var/message) if(!message) return @@ -152,12 +165,16 @@ VampyrBytes message = "[message]" return message -/datum/emote/proc/mimeMessage(var/mob/user, var/param, var/target) +/datum/emote/proc/mimeMessage(var/mob/user, var/list/params) if(!mimeText) return - if(takesNumber) - return paramMimeMessage(user, param) + if(takesNumber && "num" in params) + if(params["num"] != null) + return paramMimeMessage(user, params) var/message = "[user] [mimeText]" + if(message && "target" in params) + if(params["target"]) + message = addTarget(user, params, message) return message /datum/emote/proc/muzzleMessage(var/mob/user) @@ -168,31 +185,30 @@ VampyrBytes return message // if the emote takes a non target parameter, set up and return the with parameter version in here -/datum/emote/proc/paramMessage(var/mob/user, var/param) +/datum/emote/proc/paramMessage(var/mob/user, var/list/params) return -// as above, but for mimes trying to do audible messages -/datum/emote/proc/paramMimeMessage(var/mob/user, var/param) +// as above, but for mimes when there is mimeText +/datum/emote/proc/paramMimeMessage(var/mob/user, var/list/params) return -/datum/emote/proc/addTarget(var/mob/user, var/atom/target, var/message = "") +/datum/emote/proc/addTarget(var/mob/user, var/list/params, var/message = "") if(!canTarget) return message - if(!target) + if(!params["target"]) return message - message += " [targetText] \the [target]" + message += " [targetText] \the [params["target"]]" return message // What you should see when you perform the emote /datum/emote/proc/createSelfMessage(var/mob/user, var/message = "") - var/selfMessage if(startText) - selfMessage = replacetext(message, "[user]", "you") + message = replacetext(message, "[user]", "you") else - selfMessage = replacetext(message, "[user]", "You") + message = replacetext(message, "[user]", "You") if(selfText) - selfMessage = replacetext(selfMessage, text, selfText) - return selfMessage + message = replacetext(message, text, selfText) + return message /datum/emote/proc/outputMessage(var/mob/user, var/message = "") if(!message) diff --git a/code/datums/Emote_system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm index 422892b847b..d30d542aaec 100644 --- a/code/datums/Emote_system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -20,7 +20,6 @@ commands[lowertext(command)] = found found.addVerbs(owner) - /datum/emoteHandler/proc/deleteEmoteVerbs() for(var/obj/emoteVerb/E in owner.contents) qdel(E) diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index abbb89fce36..8a03a1febc9 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -207,6 +207,7 @@ above it. If you don't want this, make the call to ..() then use commands = new + /datum/emote/scream name = "scream" text = "screams!" @@ -252,6 +253,8 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/fart name = "fart" + text = "farts" + selfText = "fart" cooldown = 50 /datum/emote/fart/New() @@ -289,6 +292,11 @@ above it. If you don't want this, make the call to ..() then use commands = new message = "[user] [pick("passes wind","farts")]." return message +/datum/emote/fart/createSelfMessage(var/mob/user, var/message) + message = ..() + message = replacetext(message, "unleashes", "unleash") + message = replacetext(message, "passes", "pass") + return message /datum/emote/signal name = "signal" @@ -311,6 +319,8 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/signal/getNumber(var/mob/user) var/number = ..() + if(number == null) + return "invalid" var/fingersAvailable = 0 if(!user.r_hand) fingersAvailable += 5 @@ -318,10 +328,9 @@ above it. If you don't want this, make the call to ..() then use commands = new fingersAvailable += 5 if(fingersAvailable < number) to_chat(user, "You don't have enough fingers free") - return "failed" + return "invalid" return number -/datum/emote/signal/paramMessage(var/mob/user, var/param) - var/message = "[user] raises [param] finger\s" - testing(message) +/datum/emote/signal/paramMessage(var/mob/user, var/list/params) + var/message = "[user] raises [params["num"]] finger\s" return message From a355f84e1cf10859ad456bf92e846db8c6be4601 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Sat, 14 May 2016 07:59:21 +0100 Subject: [PATCH 009/260] Adds default blind and deaf messages + bug fixes --- code/datums/Emote_system/emote.dm | 55 +++++++++++++++--------------- code/datums/Emote_system/emotes.dm | 11 +++++- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 47311cc994b..65a09d23ea3 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -63,7 +63,7 @@ VampyrBytes message = createMessage(user, params) if(message) - . = outputMessage(user, message) + . = outputMessage(user, message, params) var/played = 0 if(!doMime(user)) @@ -168,9 +168,8 @@ VampyrBytes /datum/emote/proc/mimeMessage(var/mob/user, var/list/params) if(!mimeText) return - if(takesNumber && "num" in params) - if(params["num"] != null) - return paramMimeMessage(user, params) + if(checkForParams(params)) + return paramMimeMessage(user, params) var/message = "[user] [mimeText]" if(message && "target" in params) if(params["target"]) @@ -210,17 +209,17 @@ VampyrBytes message = replacetext(message, text, selfText) return message -/datum/emote/proc/outputMessage(var/mob/user, var/message = "") +/datum/emote/proc/outputMessage(var/mob/user, var/message = "", var/list/params) if(!message) return log_emote("[user.name]/[user.key] : [message]") sendToDead(message) if(audible) - return audible_message(message, user) + return audible_message(message, user, params) else - return visible_message(message, user) + return visible_message(message, user, params) -/datum/emote/proc/visible_message(var/message = "", var/mob/user) +/datum/emote/proc/visible_message(var/message = "", var/mob/user, var/list/params) var/selfMessage = createSelfMessage(user, message) for(var/mob/M in viewers(user)) if(M.see_invisible < user.invisibility) @@ -228,25 +227,25 @@ VampyrBytes var/msg = message if(selfMessage && M==user) msg = selfMessage - if(M.sdisabilities & BLIND || M.blinded || M.paralysis) + else if(M.sdisabilities & BLIND || M.blinded || M.paralysis) if(M.sdisabilities & DEAF || M.ear_deaf) continue - msg = createBlindMessage(message, user) + msg = createBlindMessage(message, user, params) if(msg) outputAudibleMessage(msg, M, user, 1) else - outputVisibleMessage(msg, M, user) + outputVisibleMessage(msg, M, user, params) return 1 -/datum/emote/proc/audible_message(var/message = "", var/mob/user) +/datum/emote/proc/audible_message(var/message = "", var/mob/user, var/list/params) if(doMime(user)) return visible_message(message, user) var/selfMessage = createSelfMessage(user, message) for(var/mob/M in get_mobs_in_view(7, user)) var/msg = message - if(selfMessage && M==src) + if(selfMessage && M==user) msg = selfMessage - if(M.sdisabilities & DEAF || M.ear_deaf) + else if(M.sdisabilities & DEAF || M.ear_deaf) if(M.sdisabilities & BLIND || M.blinded || M.paralysis) continue msg = createDeafMessage(user, message) @@ -256,7 +255,7 @@ VampyrBytes outputAudibleMessage(msg, M, user) return 2 -/datum/emote/proc/outputVisibleMessage(var/message, var/mob/recipient, var/mob/user, var/retest = 0) +/datum/emote/proc/outputVisibleMessage(var/message, var/mob/recipient, var/mob/user, var/list/params, var/retest = 0) if(retest) if(!user) return @@ -270,16 +269,16 @@ VampyrBytes if(!found) return if(recipient.sdisabilities & DEAF || recipient.ear_deaf) - var/msg = createDeafMessage(user, message) - if(msg) - message = msg + if(!(recipient == user)) + var/msg = createDeafMessage(user, message, params) + if(msg) + message = msg if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) to_chat(recipient, "... You can almost hear someone talking ...") else to_chat(recipient, message) -/datum/emote/proc/outputAudibleMessage(var/message = "", var/mob/recipient, var/mob/user, var/retest = 0) - +/datum/emote/proc/outputAudibleMessage(var/message = "", var/mob/recipient, var/mob/user, var/list/params, var/retest = 0) if(retest) if(!user) return @@ -291,9 +290,10 @@ VampyrBytes if(!found) return if(recipient.sdisabilities & BLIND || recipient.blinded || recipient.paralysis) - var/msg = createBlindMessage(user, message) - if(msg) - message = msg + if(!(recipient == user)) + var/msg = createBlindMessage(user, message, params) + if(msg) + message = msg if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) to_chat(recipient, "... You can almost hear someone talking ...") else @@ -301,13 +301,14 @@ VampyrBytes // set up different messages for blind people here. Empty will mean no message for //non-audible emotes and the standard message for audible ones -/datum/emote/proc/createBlindMessage(var/mob/user, var/message) - return +/datum/emote/proc/createBlindMessage(var/mob/user, var/message, var/list/params) + if(audible && selfText) + return "You hear someone [selfText]" // set up different messages for deaf people here. Empty will mean no message for // audible emotes and standard for non-audible ones -/datum/emote/proc/createDeafMessage(var/mob/user, var/message) - return +/datum/emote/proc/createDeafMessage(var/mob/user, var/message, var/list/params) + return mimeMessage(user, params) /datum/emote/proc/sendToDead(message) for(var/mob/M in dead_mob_list) diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index 8a03a1febc9..12d30be4c26 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -204,9 +204,18 @@ above it. If you don't want this, make the call to ..() then use commands = new selfText = "burp" muzzledNoise = "peculiar" mimeText = "opens their mouth rather obnoxiously" + audible = 1 +/datum/emote/burp/New() + ..() + commands += "burp" + commands += "burps" - +/datum/emote/burp/available(var/mob/user) + if(ishuman(user)) + return 1 + if(istype(user, /mob/living/carbon/alien/larva) || istype(user, /mob/living/carbon/alien/humanoid)) + return 1 /datum/emote/scream name = "scream" From 636081e47e16e22cb9152286bb481d14ecd6cb0b Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Mon, 16 May 2016 22:56:03 +0100 Subject: [PATCH 010/260] Cleans up message output + bugfixes and tweaks --- code/datums/Emote_system/emote.dm | 179 +++++++++++++----------------- 1 file changed, 76 insertions(+), 103 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 65a09d23ea3..f12d0e20214 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -14,14 +14,18 @@ VampyrBytes var/text = "" var/selfText = "" // the version of text that you should see - eg, if text is screams, you want scream here, as You screams is bad grammer var/startText = "" // if you need to put something in before [user]. Should end with a space + var/selfStart = 1 // whether the start text is used in what you see + + var/audible = 0 var/mimeText = "" var/sound // sound file var/vol = 50 - var/audible = 0 - var/muzzledNoise = "" // if the emote is audible and you're muzzled, this is what type of noise you make (eg weak, loud). End with a space - var/restrained = "" // 1 if being restrained prevents this emote + var/muzzleAffected = 0 // whether being muzzled affects this emote + var/muzzledNoise = "" // if the emote is audible and you're muzzled, this is what type of noise you make (eg weak, loud). var/cooldown = 0 + var/restrained = 0 // 1 if being restrained prevents this emote + var/canTarget = 0 // 1 if the emote accepts a target var/targetMob = 0 // 0 if target can be any atom, 1 if it has to be a mob, var/targetText = "at" // what goes inbetween user and target @@ -65,12 +69,10 @@ VampyrBytes if(message) . = outputMessage(user, message, params) - var/played = 0 - if(!doMime(user)) - played = playSound(user, vol) - if(played) - . = 2 + if(!doMime(user)) + if(playSound(user, vol)) + . = 2 doAction(user, params) @@ -88,7 +90,6 @@ VampyrBytes if(canTarget) params["target"] = getTarget(user) - return params // return "invalid" from either of these getters if you've tested the input and it's failed @@ -97,15 +98,17 @@ VampyrBytes return number /datum/emote/proc/getTarget(var/mob/user) + if(user.sdisabilities & BLIND || user.blinded || user.paralysis) + return if(targetMob) - return getMobTarget() - return getAtomTarget() + return getMobTarget(user) + return getAtomTarget(user) -/datum/emote/proc/getMobTarget() +/datum/emote/proc/getMobTarget(var/mob/user) var/mob/target = input("Select target", "Target Mob") as null|mob in view() return target -/datum/emote/proc/getAtomTarget() +/datum/emote/proc/getAtomTarget(var/mob/user) var/atom/target = input("Select target", "Target") as null|mob|obj|turf in oview() return target @@ -135,25 +138,23 @@ VampyrBytes message = mimeMessage(user, params) if(!message) - if(muzzledNoise && user.is_muzzled()) + if(muzzleAffected && user.is_muzzled()) message = muzzleMessage(user) - else if(checkForParams(params)) message = paramMessage(user, params) else - message = "[user] [text]" + message = "[user] [text]" if(message && "target" in params) if(params["target"]) message = addTarget(user, params, message) - message = addExtras(message) return message /datum/emote/proc/checkForParams(var/list/params) for(var/p in params) - if(params[p] == "target") + if(p == "target") continue return 1 @@ -170,14 +171,14 @@ VampyrBytes return if(checkForParams(params)) return paramMimeMessage(user, params) - var/message = "[user] [mimeText]" + var/message = "[user] [mimeText]" if(message && "target" in params) if(params["target"]) message = addTarget(user, params, message) return message /datum/emote/proc/muzzleMessage(var/mob/user) - var/message = "[user] makes a " + var/message = "[user] makes a " if(muzzledNoise) message += "[muzzledNoise] " message += "noise" @@ -201,109 +202,81 @@ VampyrBytes // What you should see when you perform the emote /datum/emote/proc/createSelfMessage(var/mob/user, var/message = "") - if(startText) + if(startText && selfStart) message = replacetext(message, "[user]", "you") else message = replacetext(message, "[user]", "You") if(selfText) message = replacetext(message, text, selfText) + if(!selfStart) + var/start = findtextEx(message, startText) + var/end = start + lentext(startText) + 1 + message = copytext(message, 1, start) + copytext(message, end, lentext(message) + 1) + return message /datum/emote/proc/outputMessage(var/mob/user, var/message = "", var/list/params) - if(!message) - return + var/visualOrAudible = audible + 1 + if(doMime(user)) + visualOrAudible = 1 + var/selfMessage = createSelfMessage(user, message) + log_emote("[user.name]/[user.key] : [message]") sendToDead(message) - if(audible) - return audible_message(message, user, params) - else - return visible_message(message, user, params) -/datum/emote/proc/visible_message(var/message = "", var/mob/user, var/list/params) - var/selfMessage = createSelfMessage(user, message) - for(var/mob/M in viewers(user)) - if(M.see_invisible < user.invisibility) - continue //can't view the invisible - var/msg = message + for(var/mob/M in getRecipients(user, visualOrAudible)) + var/msg = "" + if(selfMessage && M==user) msg = selfMessage - else if(M.sdisabilities & BLIND || M.blinded || M.paralysis) - if(M.sdisabilities & DEAF || M.ear_deaf) + + else if(M.stat == UNCONSCIOUS || (M.sleeping > 0 && M.stat != 2)) + if (visualOrAudible == 2) + msg = "... You can almost hear someone talking ..." + else continue - msg = createBlindMessage(message, user, params) - if(msg) - outputAudibleMessage(msg, M, user, 1) - else - outputVisibleMessage(msg, M, user, params) - return 1 -/datum/emote/proc/audible_message(var/message = "", var/mob/user, var/list/params) - if(doMime(user)) - return visible_message(message, user) - var/selfMessage = createSelfMessage(user, message) - for(var/mob/M in get_mobs_in_view(7, user)) - var/msg = message - if(selfMessage && M==user) - msg = selfMessage else if(M.sdisabilities & DEAF || M.ear_deaf) if(M.sdisabilities & BLIND || M.blinded || M.paralysis) continue - msg = createDeafMessage(user, message) - if(msg) - outputVisibleMessage(msg, M, user, 1) - else - outputAudibleMessage(msg, M, user) - return 2 + if((!(M in getRecipients(user, 1))) || M.see_invisible < user.invisibility) + continue + msg = createDeafMessage(user, message, params) -/datum/emote/proc/outputVisibleMessage(var/message, var/mob/recipient, var/mob/user, var/list/params, var/retest = 0) - if(retest) - if(!user) - return - var/found = 0 - for(var/mob/M in viewers(user)) - if(M == recipient) - found = 1 - if(recipient.see_invisible < user.invisibility) - return - break - if(!found) - return - if(recipient.sdisabilities & DEAF || recipient.ear_deaf) - if(!(recipient == user)) - var/msg = createDeafMessage(user, message, params) - if(msg) - message = msg - if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) - to_chat(recipient, "... You can almost hear someone talking ...") - else - to_chat(recipient, message) + if(!msg && visualOrAudible == 2) + continue + + else if(M.sdisabilities & BLIND || M.blinded || M.paralysis || (M.see_invisible < user.invisibility && visualOrAudible == 2)) + if(!(M in getRecipients(user, 2))) + continue + msg = createBlindMessage(user, message, params) + if(!msg && visualOrAudible == 1) + continue + + else if(M.see_invisible < user.invisibility) + continue + + if(!msg) + msg = message + + to_chat(M, msg) + return visualOrAudible + +/datum/emote/proc/getRecipients(var/mob/user, var/visualOrAudible) + var/list/recipients[0] + switch(visualOrAudible) + if(1) + recipients = viewers(user) + if(2) + recipients = get_mobs_in_view(7, user) + return recipients -/datum/emote/proc/outputAudibleMessage(var/message = "", var/mob/recipient, var/mob/user, var/list/params, var/retest = 0) - if(retest) - if(!user) - return - var/found = 0 - for(var/mob/M in get_mobs_in_view(7, user)) - if(M == recipient) - found = 1 - break - if(!found) - return - if(recipient.sdisabilities & BLIND || recipient.blinded || recipient.paralysis) - if(!(recipient == user)) - var/msg = createBlindMessage(user, message, params) - if(msg) - message = msg - if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) - to_chat(recipient, "... You can almost hear someone talking ...") - else - to_chat(recipient, message) // set up different messages for blind people here. Empty will mean no message for //non-audible emotes and the standard message for audible ones /datum/emote/proc/createBlindMessage(var/mob/user, var/message, var/list/params) if(audible && selfText) - return "You hear someone [selfText]" + return "You hear someone [selfText]" // set up different messages for deaf people here. Empty will mean no message for // audible emotes and standard for non-audible ones @@ -318,9 +291,10 @@ VampyrBytes M.show_message(message) /datum/emote/proc/playSound(var/mob/user) - if(sound) - playsound(user, sound, vol) - return 1 + if(!sound) + return + playsound(user, sound, vol) + return 1 /datum/emote/proc/doMime(var/mob/user) if(mimeText && user.mind && user.mind.miming) @@ -408,8 +382,7 @@ available, but if you do, make sure you return ..() so the check for use_me is s message = getMessage(user) text = message audible = isAudible - if(user.mind && user.mind.miming) - audible = 0 + /datum/emote/custom/proc/getMessage(var/mob/user) var/input = sanitize(copytext(input(user,"Choose an emote to display.") as text|null,1,MAX_MESSAGE_LEN)) From 97d9831bd9482df317c56ce611719d203a1d4f62 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Tue, 17 May 2016 11:27:51 +0100 Subject: [PATCH 011/260] more tweaks --- code/datums/Emote_system/emote.dm | 37 ++++++++++++++++--------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index f12d0e20214..6343c17c7c5 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -143,13 +143,12 @@ VampyrBytes else if(checkForParams(params)) message = paramMessage(user, params) else - message = "[user] [text]" + message = "\The [user] [text]" if(message && "target" in params) - if(params["target"]) - message = addTarget(user, params, message) - message = addExtras(message) + message = addTarget(user, params, message) + message = addExtras(user, params, message) return message /datum/emote/proc/checkForParams(var/list/params) @@ -158,7 +157,7 @@ VampyrBytes continue return 1 -/datum/emote/proc/addExtras(var/message) +/datum/emote/proc/addExtras(var/mob/user, var/list/params, var/message) if(!message) return if(startText) @@ -173,8 +172,7 @@ VampyrBytes return paramMimeMessage(user, params) var/message = "[user] [mimeText]" if(message && "target" in params) - if(params["target"]) - message = addTarget(user, params, message) + message = addTarget(user, params, message) return message /datum/emote/proc/muzzleMessage(var/mob/user) @@ -202,16 +200,20 @@ VampyrBytes // What you should see when you perform the emote /datum/emote/proc/createSelfMessage(var/mob/user, var/message = "") - if(startText && selfStart) - message = replacetext(message, "[user]", "you") - else - message = replacetext(message, "[user]", "You") - if(selfText) - message = replacetext(message, text, selfText) - if(!selfStart) - var/start = findtextEx(message, startText) - var/end = start + lentext(startText) + 1 - message = copytext(message, 1, start) + copytext(message, end, lentext(message) + 1) + if(!selfText) + return message + + message = replacetext(message, text, selfText) + + if(startText) + if(selfStart) + message = replacetext(message, "[user]", "you") + else + message = replacetext(message, "[user]", "You") + + var/start = findtextEx(message, startText) + var/end = start + lentext(startText) + 1 + message = copytext(message, 1, start) + copytext(message, end, lentext(message) + 1) return message @@ -271,7 +273,6 @@ VampyrBytes recipients = get_mobs_in_view(7, user) return recipients - // set up different messages for blind people here. Empty will mean no message for //non-audible emotes and the standard message for audible ones /datum/emote/proc/createBlindMessage(var/mob/user, var/message, var/list/params) From 5c6474ffc0976e8b9384f926ae778a0184251fa0 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Wed, 18 May 2016 14:45:14 +0100 Subject: [PATCH 012/260] Adds better text macro support, default cooldown for emotes with sound and some cleaning --- code/datums/Emote_system/emote.dm | 92 ++++++++++++++++------- code/datums/Emote_system/emote_handler.dm | 2 +- code/modules/mob/emote.dm | 2 +- 3 files changed, 68 insertions(+), 28 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 6343c17c7c5..09a111b009f 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -6,6 +6,7 @@ The only exception to this is custom emotes, which are created as needed and onl VampyrBytes *******************************************************************************************************/ +#define EMOTE_COOLDOWN 20 //Time in deciseconds that the cooldown lasts /datum/emote var/name = "" @@ -18,11 +19,12 @@ VampyrBytes var/audible = 0 var/mimeText = "" + var/mimeSelf = "" //self version of mimeText var/sound // sound file var/vol = 50 var/muzzleAffected = 0 // whether being muzzled affects this emote var/muzzledNoise = "" // if the emote is audible and you're muzzled, this is what type of noise you make (eg weak, loud). - var/cooldown = 0 + var/cooldown = 0 // How long the cooldown should be on this emote. Defaults to EMOTE_COOLDOWN if not set and the emote plays a sound var/restrained = 0 // 1 if being restrained prevents this emote @@ -46,6 +48,8 @@ VampyrBytes if(count == 4) baseLevel = 0 break + if(sound && !cooldown) + cooldown = EMOTE_COOLDOWN /datum/emote/proc/doEmote(var/mob/user) if(!istype(user)) @@ -67,7 +71,8 @@ VampyrBytes message = createMessage(user, params) if(message) - . = outputMessage(user, message, params) + message = addExtras(user, params, message) + . = outputMessage(user, params, message) if(!doMime(user)) @@ -132,7 +137,7 @@ VampyrBytes /datum/emote/proc/createMessage(var/mob/user, var/list/params) if(!text) return - var/message + var/message = "" if(doMime(user)) message = mimeMessage(user, params) @@ -143,12 +148,11 @@ VampyrBytes else if(checkForParams(params)) message = paramMessage(user, params) else - message = "\The [user] [text]" + message = standardMessage(user) if(message && "target" in params) message = addTarget(user, params, message) - message = addExtras(user, params, message) return message /datum/emote/proc/checkForParams(var/list/params) @@ -157,7 +161,7 @@ VampyrBytes continue return 1 -/datum/emote/proc/addExtras(var/mob/user, var/list/params, var/message) +/datum/emote/proc/addExtras(var/mob/user, var/list/params, var/message = "") if(!message) return if(startText) @@ -165,18 +169,22 @@ VampyrBytes message = "[message]" return message +/datum/emote/proc/standardMessage(var/mob/user) + var/message = "\The [user] [text]" + return message + /datum/emote/proc/mimeMessage(var/mob/user, var/list/params) if(!mimeText) return if(checkForParams(params)) return paramMimeMessage(user, params) - var/message = "[user] [mimeText]" + var/message = "\The [user] [mimeText]" if(message && "target" in params) message = addTarget(user, params, message) return message /datum/emote/proc/muzzleMessage(var/mob/user) - var/message = "[user] makes a " + var/message = "\The [user] makes a " if(muzzledNoise) message += "[muzzledNoise] " message += "noise" @@ -195,37 +203,44 @@ VampyrBytes return message if(!params["target"]) return message - message += " [targetText] \the [params["target"]]" + if(params["target"] == user) + message += " [targetText] [getHimself(user)]" + else + message += " [targetText] \the [params["target"]]" return message // What you should see when you perform the emote -/datum/emote/proc/createSelfMessage(var/mob/user, var/message = "") +/datum/emote/proc/createSelfMessage(var/mob/user, var/list/params, var/message = "") if(!selfText) return message message = replacetext(message, text, selfText) + message = changeTextMacros(user, message) - if(startText) - if(selfStart) - message = replacetext(message, "[user]", "you") - else - message = replacetext(message, "[user]", "You") + if(mimeSelf) + message = replacetext(message, mimeText, mimeSelf) - var/start = findtextEx(message, startText) - var/end = start + lentext(startText) + 1 - message = copytext(message, 1, start) + copytext(message, end, lentext(message) + 1) + if(selfStart && startText) + message = replacetext(message, "\The [user]", "you") + else + message = replacetext(message, "\The [user]", "You") + + if(startText && !selfStart) + var/start = findtextEx(message, startText) + var/end = start + lentext(startText) + 1 + message = copytext(message, 1, start) + copytext(message, end, lentext(message) + 1) return message -/datum/emote/proc/outputMessage(var/mob/user, var/message = "", var/list/params) +/datum/emote/proc/outputMessage(var/mob/user, var/list/params, var/message = "") var/visualOrAudible = audible + 1 if(doMime(user)) visualOrAudible = 1 - var/selfMessage = createSelfMessage(user, message) + var/selfMessage = createSelfMessage(user, params, message) log_emote("[user.name]/[user.key] : [message]") sendToDead(message) - + testing(message) for(var/mob/M in getRecipients(user, visualOrAudible)) var/msg = "" @@ -243,7 +258,7 @@ VampyrBytes continue if((!(M in getRecipients(user, 1))) || M.see_invisible < user.invisibility) continue - msg = createDeafMessage(user, message, params) + msg = createDeafMessage(user, params, message) if(!msg && visualOrAudible == 2) continue @@ -251,7 +266,7 @@ VampyrBytes else if(M.sdisabilities & BLIND || M.blinded || M.paralysis || (M.see_invisible < user.invisibility && visualOrAudible == 2)) if(!(M in getRecipients(user, 2))) continue - msg = createBlindMessage(user, message, params) + msg = createBlindMessage(user, params, message) if(!msg && visualOrAudible == 1) continue @@ -275,16 +290,16 @@ VampyrBytes // set up different messages for blind people here. Empty will mean no message for //non-audible emotes and the standard message for audible ones -/datum/emote/proc/createBlindMessage(var/mob/user, var/message, var/list/params) +/datum/emote/proc/createBlindMessage(var/mob/user, var/list/params, var/message) if(audible && selfText) return "You hear someone [selfText]" // set up different messages for deaf people here. Empty will mean no message for // audible emotes and standard for non-audible ones -/datum/emote/proc/createDeafMessage(var/mob/user, var/message, var/list/params) +/datum/emote/proc/createDeafMessage(var/mob/user, var/list/params, var/message) return mimeMessage(user, params) -/datum/emote/proc/sendToDead(message) +/datum/emote/proc/sendToDead(var/message = "") for(var/mob/M in dead_mob_list) if(!M.client || istype(M, /mob/new_player)) continue //skip monkeys, leavers and new players @@ -307,6 +322,7 @@ VampyrBytes if(user.emote_cd == 1) return 1 // Already on CD, prevent use user.emote_cd = 1 // Starting cooldown + spawn(cooldown) if(user.emote_cd == 2) return 1 // Don't reset if cooldown emotes were disabled by an admin during the cooldown user.emote_cd = 0 // Cooldown complete, ready for more! @@ -314,6 +330,30 @@ VampyrBytes return 0 // Proceed with emote //--FalseIncarnate +/datum/emote/proc/changeTextMacros(var/mob/user, var/message = "") + message = swapHisToYour(user, message) + message = swapHimselfToYourself(user, message) + return message + +/datum/emote/proc/getHis(var/mob/user) + var/his = "[user]\his" + his = copytext(his, lentext("[user]") + 1) + return his + +/datum/emote/proc/swapHisToYour(var/mob/user, var/message = "") + var/his = getHis(user) + message = replacetext(message, his, "your") + return message + +/datum/emote/proc/getHimself(var/mob/user) + var/himself = "[user]\himself" + himself = copytext(himself, lentext("[user]") + 1) + return himself + +/datum/emote/proc/swapHimselfToYourself(var/mob/user, var/message) + var/himself = getHimself(user) + message = replacetext(message, himself, "yourself") + return message /****************************************************************************************** Emote Verbs diff --git a/code/datums/Emote_system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm index d30d542aaec..ca8c14914f3 100644 --- a/code/datums/Emote_system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -70,7 +70,7 @@ var/datum/emote/em = new t if(em.allowParent) continue - found = searchTree(em, 1) + found = searchTree(em) if(found) return (found) if(emote.available(owner)) diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 201e54ef839..2832d70c90a 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -1,4 +1,4 @@ -#define EMOTE_COOLDOWN 20 //Time in deciseconds that the cooldown lasts + //Emote Cooldown System (it's so simple!) /* From 0661c056053305a84a2fcb0e41e45f5301cdc730 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Thu, 26 May 2016 12:13:29 +0100 Subject: [PATCH 013/260] tweaks and cleaning --- code/datums/Emote_system/emote.dm | 168 ++++++++++++++-------- code/datums/Emote_system/emote_handler.dm | 2 +- 2 files changed, 112 insertions(+), 58 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 09a111b009f..a8da598c573 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -7,6 +7,7 @@ VampyrBytes *******************************************************************************************************/ #define EMOTE_COOLDOWN 20 //Time in deciseconds that the cooldown lasts +#define HEARING_RANGE 7 /datum/emote var/name = "" @@ -33,7 +34,8 @@ VampyrBytes var/targetText = "at" // what goes inbetween user and target var/takesNumber = 0 // 1 if the emote uses a number parameter - var/spanClass = "notice" + var/emoteSpanClass = "notice" + var/userSpanClass = "em" var/baseLevel = 1 var/allowParent = 0 // 1 if you want the parent available as well as this one @@ -48,10 +50,15 @@ VampyrBytes if(count == 4) baseLevel = 0 break + if(sound && !cooldown) cooldown = EMOTE_COOLDOWN -/datum/emote/proc/doEmote(var/mob/user) + if(targetText) + if(!findtextEx(targetText, " ", lentext(targetText))) + targetText += " " + +/datum/emote/proc/doEmote(var/mob/user, var/command = "") if(!istype(user)) return if(cooldown) @@ -72,15 +79,18 @@ VampyrBytes if(message) message = addExtras(user, params, message) - . = outputMessage(user, params, message) + . = processMessage(user, params, message) - - if(!doMime(user)) + if(!doMime(user) && (!muzzleAffected || !isMuzzled(user))) if(playSound(user, vol)) . = 2 doAction(user, params) + for (var/obj/item/weapon/implant/I in user) + if (I.implanted) + I.trigger(command, user) + return // for things that the emote does that aren't text or sound based @@ -99,7 +109,7 @@ VampyrBytes // return "invalid" from either of these getters if you've tested the input and it's failed /datum/emote/proc/getNumber(var/mob/user) - var/number = input("How many") as null|num + var/number = input("How many?", "Enter number") as null|num return number /datum/emote/proc/getTarget(var/mob/user) @@ -141,20 +151,30 @@ VampyrBytes if(doMime(user)) message = mimeMessage(user, params) + if(message) + return message - if(!message) - if(muzzleAffected && user.is_muzzled()) - message = muzzleMessage(user) - else if(checkForParams(params)) - message = paramMessage(user, params) - else - message = standardMessage(user) + if(muzzleAffected && isMuzzled(user)) + message = muzzleMessage(user, params) + return message - if(message && "target" in params) - message = addTarget(user, params, message) + if(checkForParams(params)) + message = paramMessage(user, params) + return message + + message = standardMessage(user, params) return message +/datum/emote/proc/isMuzzled(var/mob/user) + if(user.sdisabilities & MUTE || user.is_muzzled()) + return 1 + if(!isliving(user)) + return + var/mob/living/L = user + if (L.silent) + return 1 + /datum/emote/proc/checkForParams(var/list/params) for(var/p in params) if(p == "target") @@ -166,11 +186,13 @@ VampyrBytes return if(startText) message = "[startText] [message]" - message = "[message]" + message = "[message]" return message -/datum/emote/proc/standardMessage(var/mob/user) - var/message = "\The [user] [text]" +/datum/emote/proc/standardMessage(var/mob/user, var/list/params) + var/message = "\The [user] [text]" + if("target" in params) + message = addTarget(user, params, message) return message /datum/emote/proc/mimeMessage(var/mob/user, var/list/params) @@ -178,13 +200,13 @@ VampyrBytes return if(checkForParams(params)) return paramMimeMessage(user, params) - var/message = "\The [user] [mimeText]" + var/message = "\The [user] [mimeText]" if(message && "target" in params) message = addTarget(user, params, message) return message -/datum/emote/proc/muzzleMessage(var/mob/user) - var/message = "\The [user] makes a " +/datum/emote/proc/muzzleMessage(var/mob/user, var/list/params) + var/message = "\The [user] makes a " if(muzzledNoise) message += "[muzzledNoise] " message += "noise" @@ -204,11 +226,12 @@ VampyrBytes if(!params["target"]) return message if(params["target"] == user) - message += " [targetText] [getHimself(user)]" - else - message += " [targetText] \the [params["target"]]" + message += " [targetText][getHimself(user)]" + return message + message += " [targetText]\the [params["target"]]" return message + // What you should see when you perform the emote /datum/emote/proc/createSelfMessage(var/mob/user, var/list/params, var/message = "") if(!selfText) @@ -220,23 +243,26 @@ VampyrBytes if(mimeSelf) message = replacetext(message, mimeText, mimeSelf) - if(selfStart && startText) - message = replacetext(message, "\The [user]", "you") - else - message = replacetext(message, "\The [user]", "You") - if(startText && !selfStart) var/start = findtextEx(message, startText) var/end = start + lentext(startText) + 1 message = copytext(message, 1, start) + copytext(message, end, lentext(message) + 1) + message = replaceMobWithYou(user, message) + return message -/datum/emote/proc/outputMessage(var/mob/user, var/list/params, var/message = "") +/datum/emote/proc/replaceMobWithYou(var/mob/M, var/message = "", var/mob/user) // user passed in in case an override needs to do something different if M != user (see johnny) VB + + message = replacetext(message, "\The [M]", "You") + message = replacetext(message, "\the [M]", "you") + + return message + +/datum/emote/proc/processMessage(var/mob/user, var/list/params, var/message = "") var/visualOrAudible = audible + 1 if(doMime(user)) visualOrAudible = 1 - var/selfMessage = createSelfMessage(user, params, message) log_emote("[user.name]/[user.key] : [message]") sendToDead(message) @@ -244,55 +270,83 @@ VampyrBytes for(var/mob/M in getRecipients(user, visualOrAudible)) var/msg = "" - if(selfMessage && M==user) - msg = selfMessage - - else if(M.stat == UNCONSCIOUS || (M.sleeping > 0 && M.stat != 2)) - if (visualOrAudible == 2) - msg = "... You can almost hear someone talking ..." - else + if(M==user) + msg = createSelfMessage(user, params, message) + if(msg) + outputMessage(M, msg) continue - else if(M.sdisabilities & DEAF || M.ear_deaf) + if(M.stat == UNCONSCIOUS || (M.sleeping > 0 && M.stat != 2)) + if (!visualOrAudible == 2) + continue + msg = "... You can almost hear someone talking ..." + outputMessage(M, msg) + continue + + if(M.sdisabilities & DEAF || M.ear_deaf) if(M.sdisabilities & BLIND || M.blinded || M.paralysis) continue - if((!(M in getRecipients(user, 1))) || M.see_invisible < user.invisibility) + if(!(M in getRecipients(user, 1)) || M.see_invisible < user.invisibility) continue - msg = createDeafMessage(user, params, message) + msg = createDeafMessage(user, params, message) if(!msg && visualOrAudible == 2) continue + if(msg) + outputMessage(M, msg) + continue - else if(M.sdisabilities & BLIND || M.blinded || M.paralysis || (M.see_invisible < user.invisibility && visualOrAudible == 2)) + if(M.sdisabilities & BLIND || M.blinded || M.paralysis || (M.see_invisible < user.invisibility && visualOrAudible == 2)) if(!(M in getRecipients(user, 2))) continue + msg = createBlindMessage(user, params, message) if(!msg && visualOrAudible == 1) continue + if(msg) + outputMessage(M, msg) + continue - else if(M.see_invisible < user.invisibility) + if(M.see_invisible < user.invisibility && visualOrAudible == 1) continue - if(!msg) - msg = message + msg = message + outputMessage(M, msg) + + if(visualOrAudible == 2) + handleListeningObjects(user, message) - to_chat(M, msg) return visualOrAudible +/datum/emote/proc/outputMessage(var/mob/M, var/msg = "") + msg = replaceMobWithYou(M, msg, M) + to_chat(M, msg) + +/datum/emote/proc/handleListeningObjects(var/mob/user, var/message = "") + // based on say code + var/omsg = replacetext(message, "[user] ", "") + var/list/listening_obj = new + for(var/atom/movable/A in view(HEARING_RANGE, user)) + if(istype(A, /mob)) + var/mob/M = A + for(var/obj/O in M.contents) + listening_obj |= O + else if(istype(A, /obj)) + var/obj/O = A + listening_obj |= O + for(var/obj/O in listening_obj) + O.hear_message(user, omsg) + /datum/emote/proc/getRecipients(var/mob/user, var/visualOrAudible) - var/list/recipients[0] - switch(visualOrAudible) - if(1) - recipients = viewers(user) - if(2) - recipients = get_mobs_in_view(7, user) - return recipients + if(visualOrAudible == 1) + return viewers(user) + return get_mobs_in_view(HEARING_RANGE, user) // set up different messages for blind people here. Empty will mean no message for //non-audible emotes and the standard message for audible ones /datum/emote/proc/createBlindMessage(var/mob/user, var/list/params, var/message) if(audible && selfText) - return "You hear someone [selfText]" + return "You hear someone [selfText]" // set up different messages for deaf people here. Empty will mean no message for // audible emotes and standard for non-audible ones @@ -306,7 +360,7 @@ VampyrBytes if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) M.show_message(message) -/datum/emote/proc/playSound(var/mob/user) +/datum/emote/proc/playSound(var/mob/user, var/list/params) if(!sound) return playsound(user, sound, vol) @@ -440,7 +494,7 @@ available, but if you do, make sure you return ..() so the check for use_me is s /datum/emote/custom/ghost name = "Ghost emote" startText = "DEAD: " - spanClass = "game deadsay" + emoteSpanClass = "game deadsay" /datum/emote/custom/ghost/prevented(var/mob/user) if(user.client.prefs.muted & MUTE_DEADCHAT) @@ -451,7 +505,7 @@ available, but if you do, make sure you return ..() so the check for use_me is s if(!config.dsay_allowed) return "deadchat is globally muted" -/datum/emote/custom/ghost/outputMessage(var/mob/user, var/message = "") +/datum/emote/custom/ghost/processMessage(var/mob/user, var/message = "") if(!message) return log_emote("Ghost/[user.key] : [message]") diff --git a/code/datums/Emote_system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm index ca8c14914f3..1417e83f9a8 100644 --- a/code/datums/Emote_system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -49,7 +49,7 @@ if(prevented) to_chat(owner, "You can't do that because [prevented]!") return 0 - return emote.doEmote(owner) + return emote.doEmote(owner, command) /datum/emoteHandler/proc/showCommands() var/emoteList = "Available emotes are " From 2bd66d86928b7ec692cf319ba6fe4bbaf57c9be3 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Thu, 26 May 2016 12:14:52 +0100 Subject: [PATCH 014/260] Every emote added! Thank god that's over with! --- code/datums/Emote_system/emotes.dm | 1895 ++++++++++++++++++++++++++-- 1 file changed, 1801 insertions(+), 94 deletions(-) diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index 12d30be4c26..190759df693 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -2,12 +2,12 @@ Emotes New() must call ..() to set the baseLevel for the emoteHandler search. As the commands are set in New(), this means that the emote will pick up all the commands from the emotes -above it. If you don't want this, make the call to ..() then use commands = new /list() +above it. If you don't want this, make the call to ..() then use commands.cut() *************************************************************************************/ /datum/emote/airguitar name = "airguitar" - desc = "Play an air guitar" + desc = "Makes the mob play an air guitar" text = "is strumming the air and headbanging like a safari chimp." selfText = "are strumming the air and headbanging like a safari chimp." restrained = 1 @@ -24,7 +24,7 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/alarm name = "alarm" - desc = "Sound an alarm" + desc = "makes the mob sound an alarm" text = "sounds an alarm" selfText = "sound an alarm" audible = 1 @@ -37,14 +37,14 @@ above it. If you don't want this, make the call to ..() then use commands = new if(isbrain(user)) return 1 -/datum/emote/alarm/createBlindMessage(var/mob/user, var/messaage) +/datum/emote/alarm/createBlindMessage(var/mob/user, var/params, var/messaage) return "You hear an alarm" /datum/emote/alert name = "alert" - desc = "Sound an alert" + desc = "Makes the mob sound an alert" text = "lets out a distressed noise" - selfText = "let out a distressed noise)" + selfText = "let out a distressed noise" audible = 1 /datum/emote/alert/New() @@ -54,12 +54,10 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/alert/available(var/mob/user) if(isbrain(user)) return 1 -/datum/emote/alert/createBlindMessage(var/mob/user, var/message) - return "you hear an alert" /datum/emote/beep name = "beep" - desc = "let out a beep" + desc = "makes the mob let out a beep" text = "beeps" selfText = "beep" audible = 1 @@ -73,26 +71,19 @@ above it. If you don't want this, make the call to ..() then use commands = new if(isbrain(user)) return 1 -/datum/emote/beep/createBlindMessage(var/mob/user, var/message) - return "You hear a beep" - /datum/emote/beep/targetted - cooldown = 1 sound = 'sound/machines/twobeep.ogg' + cooldown = 50 canTarget = 1 targetMob = 1 /datum/emote/beep/targetted/available(var/mob/user) - if(issilicon(user)) - return 1 - if(isbot(user)) - return 1 - if(user.get_species() == "Machine") + if(user.is_mechanical()) return 1 /datum/emote/blink name = "blink" - desc = "blink" + desc = "Makes the mob blink" text = "blinks" selfText = "blink" @@ -109,27 +100,27 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/blink/rapid name = "rapid blink" - desc = "blink rapidly" + desc = "Makes the mob blink rapidly" allowParent = 1 /datum/emote/blink/rapid/New() ..() - commands = new/list() + commands = new /list() commands += "blink_r" commands += "blinks_r" /datum/emote/blink/rapid/available(var/mob/user) if(ishuman(user)) - return + return 1 -/datum/emote/blink/rapid/createMessage(var/mob/user, var/number) +/datum/emote/blink/rapid/standardMessage(var/mob/user) var/message = ..() message += " rapidly" return message /datum/emote/blush name = "blush" - desc = "blush" + desc = "Makes the mob blush" text = "blushes" selfText = "blush" @@ -144,7 +135,7 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/boop name = "boop" - desc = "boop" + desc = "Makes the mob boop" text = "boops" selfText = "boop" @@ -159,7 +150,7 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/bounce name = "bounce" - desc = "bounce" + desc = "Makes the mob bounce" text = "bounces in place" selfText = "bounce in place" @@ -174,7 +165,7 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/bow name = "bow" - desc = "bow" + desc = "Makes the mob bow" text = "bows" selfText = "bow" canTarget = 1 @@ -199,12 +190,14 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/burp name = "burp" - desc = "burp" + desc = "Makes the mob burp" text = "burps" selfText = "burp" - muzzledNoise = "peculiar" - mimeText = "opens their mouth rather obnoxiously" audible = 1 + mimeText = "opens their mouth rather obnoxiously" + mimeSelf = "open your mouth rather obnoxiously" + muzzleAffected = 1 + muzzledNoise = "peculiar" /datum/emote/burp/New() ..() @@ -214,16 +207,1194 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/burp/available(var/mob/user) if(ishuman(user)) return 1 - if(istype(user, /mob/living/carbon/alien/larva) || istype(user, /mob/living/carbon/alien/humanoid)) + if(islarva(user) || isalienadult(user)) + return 1 + +/datum/emote/buzz + name = "buzz" + desc = "Makes the mob buzz" + text = "buzzes" + selfText = "buzz" + audible = 1 + sound = 'sound/machines/buzz-sigh.ogg' + cooldown = 50 + canTarget = 1 + targetMob = 1 + +/datum/emote/buzz/New() + ..() + commands += "buzz" + commands += "buzzes" + commands += "buzzs" + +/datum/emote/buzz/available(var/mob/user) + if(user.is_mechanical()) + return 1 + +/datum/emote/chirp + name = "chirp" + desc = "Makes the mob chirp" + text = "chirps" + selfText = "chirp" + audible = 1 + sound = 'sound/misc/nymphchirp.ogg' + vol = 40 + cooldown = 50 + +/datum/emote/chirp/New() + ..() + commands += "chirp" + commands += "chirps" + +/datum/emote/chirp/available(var/mob/user) + if(istype(user, /mob/living/simple_animal/diona)) + return 1 + +/datum/emote/chirp/playSound(var/mob/user) + if (!sound) + return + playsound(user, sound, vol, 1, 1) + return 1 + +/datum/emote/choke + name = "choke" + desc = "Makes the mob choke" + text = "chokes" + selfText = "choke" + audible = 1 + mimeText = "clutches" + mimeSelf = "clutch" + muzzleAffected = 1 + muzzledNoise = "strong" + +/datum/emote/choke/New() + ..() + commands += "choke" + commands += "chokes" + +/datum/emote/choke/available(var/mob/user) + if(ishuman(user)) + return 1 + if(islarva(user) || isalienadult(user)) + return 1 + +// This has to be done here not mimeText because \his will throw a compile error +// instead of a runtime if there's not a valid target in the string *frown VB +/datum/emote/choke/mimeMessage(var/mob/user, var/list/params) + var/message = "[user] [mimeText] \his throat desperately" + return message + +/datum/emote/chuckle + name = "chuckle" + desc = "chuckle" + text = "chuckles" + selfText = "chuckle" + audible = 1 + mimeText = "appears to chuckle" + mimeSelf = "appear to chuckle" + muzzleAffected = 1 + +/datum/emote/chuckle/New() + ..() + commands += "chuckle" + commands += "chuckles" + +/datum/emote/chuckle/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/clap + name = "clap" + desc = "clap" + text = "claps" + selfText = "clap" + audible = 1 + mimeText = "claps silently" + restrained = 1 + +/datum/emote/clap/New() + ..() + commands += "clap" + commands += "claps" + +/datum/emote/clap/available(var/mob/user) + if(isrobot(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/collapse + name = "collapse" + desc = "Makes the mob collapse" + text = "collapses" + selfText = "collapse" + audible = 1 + mimeText = "collapses without a sound" + +/datum/emote/collapse/New() + ..() + commands += "collapse" + commands += "collapses" + +/datum/emote/collapse/available(var/mob/user) + if(islarva(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/collapse/doAction(var/mob/user, var/list/params) + user.Paralyse(2) + +/datum/emote/cough + name = "cough" + desc = "Makes the mob cough" + text = "coughs" + selfText = "cough" + audible = 1 + mimeText = "appears to cough" + mimeSelf = "appear to cough" + muzzleAffected = 1 + muzzledNoise = "strong" + +/datum/emote/cough/New() + ..() + commands += "cough" + commands += "coughs" + +/datum/emote/cough/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/cry + name = "cry" + desc = "Makes the mob cry" + text = "cries" + selfText = "cry" + audible = 1 + mimeText = "cries silently" + muzzleAffected = 1 + muzzledNoise = "weak" + +/datum/emote/cry/New() + ..() + commands += "cry" + commands += "cries" + +/datum/emote/cry/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/dance + name = "dance" + desc = "makes the mob dance around happily" + text = "dances around happily" + selfText = "dance around happily" + restrained = 1 + +/datum/emote/dance/New() + ..() + commands += "dance" + commands += "dances" + +/datum/emote/dance/available(var/mob/user) + if(islarva(user)) + return 1 + +/datum/emote/dap + name = "dap" + desc = "Makes the mob give daps" + text = "gives daps" + selfText = "give daps" + restrained = 1 + canTarget = 1 + targetMob = 1 + targetText = "to" + +/datum/emote/dap/New() + ..() + commands += "dap" + commands += "daps" + +/datum/emote/dap/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/dap/addTarget(var/mob/user, var/list/params, var/message = "") + if(!params["target"] || params["target"] == user) + message = "[user] sadly can't find anybody to give daps to, and daps \himself. Shameful." + return message + return ..() + +/datum/emote/deathgasp + name = "deathgasp" + desc = "Makes the mob let out it's final gasp" + audible = 1 + +/datum/emote/deathgasp/New() + ..() + commands += "deathgasp" + commands += "deathgasps" + +/datum/emote/deathgasp/alien + text = "lets out a waning guttural screech, green blood bubbling from its maw..." + selfText = "let out a waning guttural screech, green blood bubbling from your maw..." + +/datum/emote/deathgasp/alien/available(var/mob/user) + if(isalienadult(user)) + return 1 + +// sorry, no selftext for humans as we'd have to add a var to species for it and that's yuk - VB +/datum/emote/deathgasp/human + text = "dummytext" + +/datum/emote/deathgasp/human/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/deathgasp/human/standardMessage(var/mob/user, var/list/params) + var/mob/living/carbon/human/U = user + var/message = "\The [user] [U.species.death_message]" + return message + +/datum/emote/deathgasp/robot + text = "shudders violently for a moment, then becomes motionless, its eyes slowly darkening." + selfText = "shudder violently for a moment, then become motionless, your eyes slowly darkening." + audible = 0 + +/datum/emote/drone + name = "drone" + desc = "Makes the mob drone and rumble" + text = "rumbles" + selfText = "rumble" + audible = 1 + sound = 'sound/voice/DraskTalk.ogg' + canTarget = 1 + targetMob = 1 + +/datum/emote/drone/New() + ..() + commands += "drone" + commands += "drones" + commands += "rumble" + commands += "rumbles" + commands += "hum" + commands += "hums" + +/datum/emote/drone/available(var/mob/user) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(H.species == "Drask") + return 1 + +/datum/emote/drone/addTarget(var/mob/user, var/list/params, var/message) + var/msg = ..() + if(msg == message) + return message + message = replacetext(message, "rumbles", "drones") + return message + +/datum/emote/drone/createSelfMessage(var/mob/user, var/list/params, var/message) + message = ..() + message = replacetext(message, "drones", "drone") + return message + +/datum/emote/deathgasp/robot/available(var/mob/user) + if(isrobot(user)) + return 1 + +/datum/emote/drool + name = "drool" + desc = "Makes the mob drool" + text = "drools" + selfText = "drool" + +/datum/emote/drool/New() + ..() + commands += "drool" + commands += "drools" + +/datum/emote/drool/available(var/mob/user) + if(isalienadult(user) || islarva(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/eyebrow + name = "eyebrow" + desc = "Makes the mob raise an eyebrow" + text = "raises an eyebrow" + selfText = "raise an eyebrow" + +/datum/emote/eyebrow/New() + ..() + commands += "eyebrow" + +/datum/emote/eyebrow/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/faint + name = "faint" + desc = "makes the mob faint" + text = "faints" + selfText = "faint" + +/datum/emote/faint/New() + ..() + commands += "faint" + commands += "faints" + +/datum/emote/faint/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/faint/doAction(var/mob/user, var/list/params) + if(!user.sleeping) + user.sleeping += 1 + +/datum/emote/fart + name = "fart" + text = "farts" + selfText = "fart" + cooldown = 50 + audible = 1 + +/datum/emote/fart/New() + ..() + commands += "fart" + commands += "farts" + +/datum/emote/fart/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/fart/standardMessage(var/mob/user) + var/message + if(SUPER_FART in user.mutations) + return // super fart will make the message when triggered + + if(TOXIC_FARTS in user.mutations) + message = "\The [user] unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart." + else + message = "\The [user] [pick("passes wind","farts")]." + return message + +/datum/emote/fart/createSelfMessage(var/mob/user, var/list/params, var/message) + message = ..() + message = replacetext(message, "unleashes", "unleash") + message = replacetext(message, "passes", "pass") + return message + +/datum/emote/fart/doAction(var/mob/user) + if(TOXIC_FARTS in user.mutations) + for(var/mob/M in range(get_turf(user),2)) + if (M.internal != null && M.wear_mask && (M.wear_mask.flags & AIRTIGHT)) + continue + if (M == user) + continue + M.reagents.add_reagent("space_drugs",rand(1,10)) + + if(SUPER_FART in user.mutations) + var/mob/living/U = user + for(var/datum/action/spell_action/spell in U.actions) + if (spell.name == "Super Fart") + spell.Trigger() + break + + if(locate(/obj/item/weapon/storage/bible) in get_turf(user)) + if(SUPER_FART in user.mutations) + sleep(30) // need to wait for them to finish the super fart before gibbing them + + to_chat(viewers(user), "[user] farted on the Bible!") + to_chat(viewers(user), "A mysterious force smites [user]!") + var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + s.set_up(3, 1, user) + s.start() + user.gib() + +/datum/emote/flap + name = "flap" + desc = "Makes the mob flap their wings" + text = "flaps" + selfText = "flap" + restrained = 1 + audible = 1 + +/datum/emote/flap/New() + ..() + commands += "flap" + commands += "flaps" + +/datum/emote/flap/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/flap/standardMessage(var/mob/user, var/list/params) + var/message = "\The [user] [text] \his wings" + return message + +/datum/emote/flap/angry + name = "angry flap" + desc = "makes the mob flap their wings angrily" + allowParent = 1 + +/datum/emote/flap/angry/New() + ..() + commands = new /list() + commands += "a_flap" + commands += "a_flaps" + +/datum/emote/flap/angry/standardMessage(var/mob/user) + var/message = ..() + message += " angrily" + return message + +/datum/emote/flash + name = "flash" + desc = "Makes the lights on the mob flash quickly" + text = "flash quickly" + selfText = "flash quickly" + startText = "The lights on" + +/datum/emote/flash/New() + ..() + commands += "flash" + commands += "flashes" + +/datum/emote/flash/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/flip + name = "flip" + desc = "Makes the mob flip, possibly in the direction of someone" + text = "flips" + selfText = "flip" + canTarget = 1 + targetMob = 1 + targetText = "in" + +/datum/emote/flip/New() + ..() + commands += "flip" + commands += "flips" + +/datum/emote/flip/available(var/mob/user) + if(isrobot(user)) + return 1 + +/datum/emote/flip/prevented(var/mob/user) + . = ..() + if(!. && user.buckled) + return "you are buckled to something" + +/datum/emote/flip/createMessage(var/mob/user, var/list/params) + var/message = "" + if(user.lying || user.weakened) + message = "\The [user] flops and flails around on the floor." + else + message = ..() + return message + +/datum/emote/flip/addTarget(var/mob/user, var/list/params, var/message) + message = ..() + if(params["target"]) + message += "'s general direction" + return message + +/datum/emote/flip/createSelfMessage(var/mob/user, var/list/params, var/message) + message = ..() + message = replacetext(message, "flops", "flop") + message = replacetext(message, "flails", "flail") + return message + +/datum/emote/flip/doAction(var/mob/user, var/list/params, var/message) + if(user.lying || user.weakened) + return + user.SpinAnimation(5,1) + +/datum/emote/flip/flipOver + desc = "Makes the mob flip, possibly in the direction of, or even over someone" + +/datum/emote/flip/flipOver/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/flip/flipOver/createMessage(var/mob/user, var/params) + var/message = "" + var/obj/item/weapon/grab/G = user.get_active_hand() + if(istype(G) && G.affecting && !G.affecting.buckled) + params["target"] = G.affecting + message = "\The [user] [text] over [params["target"]]!" + return message + return ..() + +/datum/emote/flip/flipOver/doAction(var/mob/user, var/params, var/message) + var/obj/item/weapon/grab/G = user.get_active_hand() + if(G == params["target"]) + var/turf/oldloc = user.loc + var/turf/newloc = G.affecting.loc + if(isturf(oldloc) && isturf(newloc)) + user.SpinAnimation(5,1) + user.forceMove(newloc) + G.affecting.forceMove(oldloc) + return + ..() + +/datum/emote/frown + name = "frown" + desc = "Makes the mob frown" + text = "frowns" + selfText = "frown" + +/datum/emote/frown/New() + ..() + commands += "frown" + commands += "frowns" + +/datum/emote/frown/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/gasp + name = "gasp" + desc = "Makes the mob gasp" + text = "gasps" + selfText = "gasp" + audible = 1 + mimeText = "appears to be gasping" + mimeSelf = "appear to be gasping" + muzzleAffected = 1 + muzzledNoise = "weak" + +/datum/emote/gasp/New() + ..() + commands += "gasp" + commands += "gasps" + +/datum/emote/gasp/available(var/mob/user) + if(isalienadult(user) || islarva(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/giggle + name = "giggle" + desc = "Makes the mob giggle" + text = "giggles" + selfText = "giggle" + audible = 1 + mimeText = "giggles silently" + muzzleAffected = 1 + +/datum/emote/giggle/New() + ..() + commands += "giggle" + commands += "giggles" + +/datum/emote/giggle/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/glare + name = "glare" + desc = "Makes the mob glare" + text = "glares" + selfText = "glare" + canTarget = 1 + targetMob = 1 + +/datum/emote/glare/New() + ..() + commands += "glare" + commands += "glares" + +/datum/emote/glare/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/gnarl + name = "gnarl" + desc = "Makes the mob grarl and show its teeth" + text = "gnarls and shows its teeth" + selfText = "gnarl and show your teeth" + audible = 1 + muzzleAffected = 1 + +/datum/emote/gnarl/New() + ..() + commands += "gnarl" + commands += "gnarls" + +/datum/emote/gnarl/available(var/mob/user) + if(islarva(user)) + return 1 + +/datum/emote/grin + name = "grin" + desc = "Makes the mob grin" + text = "grins" + selfText = "grin" + +/datum/emote/grin/New() + ..() + commands += "grin" + commands += "grins" + +/datum/emote/grin/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/groan + name = "groan" + desc = "Makes the mob groan" + text = "groans" + selfText = "groan" + audible = 1 + mimeText = "appears to groan" + mimeSelf = "appear to groan" + muzzleAffected = 1 + +/datum/emote/groan/New() + ..() + commands += "groan" + commands += "groans" + +/datum/emote/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/grumble + name = "grumble" + desc = "Makes the mob grumble" + text = "grumbles" + selfText = "grumble" + audible = 1 + mimeText = "grumbles" + muzzleAffected = 1 + +/datum/emote/grumble/New() + ..() + commands += "grumble" + commands += "grumbles" + +/datum/emote/grumble/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/halt + name = "halt" + desc = "Makes the mob sound a halt warning. Only available with a security module" + text = "'s speakers skreech, \"Halt! Security!\"." + selfText = " speakers skreech, \"Halt! Security!\"." + audible = 1 + sound = 'sound/voice/halt.ogg' + +/datum/emote/halt/New() + ..() + commands += "halt" + +/datum/emote/halt/available(var/mob/user) + if(isrobot(user)) + return 1 + +/datum/emote/halt/prevented(var/mob/user) + . = ..() + if(.) + return + var/mob/living/silicon/robot/U = user + if (!(istype(U.module, /obj/item/weapon/robot_module/security))) + return "you are not security" + +/datum/emote/halt/standardMessage(var/mob/user) + var/message = "\The [user][text]" + return message + +/datum/emote/handshake + name = "handshake" + desc = "Makes the mob shake hands with a target" + text = "shakes hands" + selfText = "shake hands" + canTarget = 1 + targetMob = 1 + targetText = "with" + restrained = 1 + +/datum/emote/handshake/New() + ..() + commands += "handshake" + +/datum/emote/handshake/prevented(var/mob/user) + . = ..() + if(!. && user.r_hand) + return "you need your right hand free" + +/datum/emote/handshake/getMobTarget(var/mob/user) + var/mob/target = ..() + if(!target) + to_chat(user, "You need someone to shake hands with") + return "invalid" + +/datum/emote/handshake/addTarget(var/mob/user, var/list/params, var/message) + var/mob/target = params["target"] + if(target.r_hand) + message = "\The [user] holds out his hand to [params["target"]]" + return message + return ..() + +/datum/emote/hiss + name = "hiss" + desc = "Makes the mob hiss" + text = "hisses" + selfText = "hiss" + audible = 1 + +/datum/emote/hiss/New() + ..() + commands += "hiss" + commands += "hisses" + +/datum/emote/hiss/available(var/mob/user) + if(isalienadult(user) || islarva(user)) + return 1 + +/datum/emote/hug + name = "hug" + desc = "Makes the mob hug a target or themselves" + text = "hugs" + selfText = "hug" + canTarget = 1 + targetMob = 1 + +/datum/emote/hug/New() + ..() + commands += "hug" + commands += "hugs" + +/datum/emote/hug/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/hug/getTarget(var/mob/user) + var/mob/target = input("Select target", "Target Mob") as null|mob in view(1) + if(target) + return target + return user + +/datum/emote/jiggle + name = "jiggle" + desc = "Makes the mob jiggle" + text = "jiggles" + selfText = "jiggle" + +/datum/emote/jiggle/New() + ..() + commands += "jiggle" + commands += "jiggles" + +/datum/emote/jiggle/available(var/mob/user) + if(isslime(user)) + return 1 + +/datum/emote/johnny + name = "johnny" + desc = "Yeah, just try it" + text = "takes a drag from a cigarette and blows their name out in smoke." + selfText = "take a drag from a cigarette and blow their name out in smoke." + audible = 1 + mimeText = "takes a drag from a cigarette and blows" + mimeSelf = "take a drag from a cigarette and blow" + canTarget = 1 + targetMob = 1 + targetText = "" + +/datum/emote/johnny/New() + ..() + commands += "johnny" + +/datum/emote/johnny/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/johnny/getTarget(var/mob/user) + var/mob/target = ..() + if(target && target != user) + return target + to_chat(user, "You need a target that isn't yourself") + return "invalid" + +/datum/emote/johnny/createMessage(var/mob/user, var/params) + if(doMime(user)) + return ..() + var/message = "\The [user] says \"[params["target"]], please. They had a family.\" [user] [text]" + return message + +/datum/emote/johnny/createSelfMessage(var/mob/user, var/list/params, var/message = "") + message = ..() + message = replacetext(message, "says", "say") + return message + +/datum/emote/johnny/createDeafMessage(var/mob/user, vap/list/params, var/message) + message = "\The [user] says something, then [text]" + return message + +/datum/emote/johnny/replaceMobWithYou(var/mob/M, var/message, var/mob/user) + if(user && M != user) + return message + return ..() + +/datum/emote/jump + name = "jump" + desc = "Makes the mob jump" + text = "jumps" + selfText = "jump" + +/datum/emote/jump/New() + ..() + commands += "jump" + commands += "jumps" + +/datum/emote/jump/available(var/mob/user) + if(islarva(user)) + return 1 + +/datum/emote/laugh + name = "laugh" + desc = "Makes the mob laugh" + text = "laughs" + selfText = "laugh" + audible = 1 + mimeText = "acts out a laugh" + mimeSelf = "act out a laugh" + muzzleAffected = 1 + +/datum/emote/laugh/New() + ..() + commands += "laugh" + commands += "laughs" + +/datum/emote/laugh/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/law + name = "law" + desc = "Makes the mob prove it is the law" + text = "shows its legal authorization barcode." + selfText = "show your legal authorization barcode." + audible = 1 + sound = 'sound/voice/biamthelaw.ogg' + +/datum/emote/law/New() + ..() + commands += "law" + +/datum/emote/law/available(var/mob/user) + if(isrobot(user)) + return 1 + +/datum/emote/law/prevented(var/mob/user) + . = ..() + if(.) + return + var/mob/living/silicon/robot/U = user + if (!(istype(U.module, /obj/item/weapon/robot_module/security))) + return "You are not THE LAW, pal." + +/datum/emote/light + name = "light" + desc = "makes the mob light up" + text = "lights up for a bit, then stops." + selfText = "light up for a bit, then stop." + +/datum/emote/light/New() + ..() + commands += "light" + commands += "lights" + +/datum/emote/light/available(var/mob/user) + if(isslime(user)) + return 1 + +/datum/emote/look + name = "look" + desc = "Makes the mob look" + text = "looks" + selfText = "look" + canTarget = 1 + targetMob = 1 + +/datum/emote/look/New() + ..() + commands += "look" + commands += "looks" + +/datum/emote/look/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/moan + name = "moan" + desc = "Makes the mob moan" + text = "moans" + selfText = "moan" + audible = 1 + +/datum/emote/moan/New() + ..() + commands += "moan" + commands += "moans" + +/datum/emote/moan/available(var/mob/user) + if(isslime(user)) + return 1 + if(islarva(user)) + return 1 + +/datum/emote/mumble + name = "mumble" + desc = "Makes the mob mumble" + text = "mumbles" + selfText = "mumble" + audible = 1 + mimeText = "mumbles" + +/datum/emote/mumble/New() + ..() + commands += "mumble" + commands += "mumbles" + +/datum/emote/mumble/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/no + name = "no" + desc = "Makes the mob let out a negative blip" + text = "emits a negative blip" + selfText = "emit a negative blip" + audible = 1 + sound = 'sound/machines/synth_no.ogg' + +/datum/emote/no/New() + ..() + commands += "no" + +/datum/emote/no/available(var/mob/user) + if(user.is_mechanical()) + return 1 + +/datum/emote/nod + name = "nod" + desc = "Makes the mob nod" + text = "nods" + selfText = "nod" + +/datum/emote/nod/New() + ..() + commands += "nod" + commands += "nods" + +/datum/emote/nod/available(var/mob/user) + if(islarva(user)) + return 1 + if(isrobot(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/notice + name = "notice" + desc = "Makes the mob play a loud tone" + text = "plays a loud tone" + selfText = "play a loud tone" + audible = 1 + +/datum/emote/notice/New() + ..() + commands += "notice" + +/datum/emote/notice/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/pale + name = "pale" + desc = "Makes the mob go pale" + text = "goes pale for a second." + selfText = "go pale for a second" + +/datum/emote/pale/New() + ..() + commands += "pale" + commands += "pales" + +/datum/emote/pale/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/ping + name = "ping" + desc = "Makes the mob ping" + text = "pings" + selfText = "ping" + audible = 1 + sound = 'sound/machines/ping.ogg' + canTarget = 1 + targetMob = 1 + +/datum/emote/ping/New() + ..() + commands += "ping" + commands += "pings" + +/datum/emote/ping/available(var/mob/user) + if(user.is_mechanical()) + return 1 + +/datum/emote/point + name = "point" + desc = "Makes the mob point" + text = "points" + selfText = "point" + canTarget = 1 + +/datum/emote/point/New() + ..() + commands += "point" + commands += "points" + +/datum/emote/point/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/point/createMessage(var/mob/user, var/list/params) + if(params["target"]) + return + return ..() + +/datum/emote/point/doAction(var/mob/user, var/list/params) + if(!params["target"]) + return + user.pointed(params["target"]) + +/datum/emote/quiver + name = "quiver" + desc = "Makes the mob quiver" + text = "quivers" + selfText = "quiver" + +/datum/emote/quiver/New() + ..() + commands += "quiver" + commands += "quivers" + +/datum/emote/quiver/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/raise + name = "raise" + desc = "Makes the mob raise a hand" + text = "raises a hand" + selfText = "raise a hand" + restrained = 1 + +/datum/emote/raise/New(var/mob/user) + ..() + commands += "raise" + commands += "raises" + +/datum/emote/raise/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/roar + name = "roar" + desc = "Makes the mob roar" + text = "roars" + selfText = "roar" + audible = 1 + muzzleAffected = 1 + muzzledNoise = "loud" + +/datum/emote/roar/New() + ..() + commands += "roar" + commands += "roars" + +/datum/emote/roar/available(var/mob/user) + if(isalienadult(user)) + return 1 + +/datum/emote/roll + name = "roll" + desc = "Makes the mob roll" + text = "rolls" + selfText = "roll" + +/datum/emote/roll/New() + ..() + commands += "roll" + commands += "rolls" + +/datum/emote/roll/available(var/mob/user) + if(islarva(user)) + return 1 + +/datum/emote/salute + name = "salute" + desc = "Makes the mob salute" + text = "salutes" + selfText = "salute" + canTarget = 1 + targetMob = 1 + targetText = "to" + +/datum/emote/salute/New() + ..() + commands += "salute" + commands += "salutes" + +/datum/emote/salute/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/salute/prevented(var/mob/user) + . = ..() + if(!. && user.buckled) + return "you are buckled to something" + +/datum/emote/scratch + name = "scratch" + desc = "Makes the mob scratch" + text = "scratches" + selfText = "scratch" + restrained = 1 + +/datum/emote/scratch/New() + ..() + commands += "scratch" + commands += "scratches" + +/datum/emote/scratch/available(var/mob/user) + if(islarva(user) || isalienadult(user)) return 1 /datum/emote/scream name = "scream" - text = "screams!" - selfText = "scream!" audible = 1 mimeText = "acts out a scream" - muzzledNoise = "very loud " + muzzledNoise = "very loud" cooldown = 50 vol = 80 @@ -232,18 +1403,12 @@ above it. If you don't want this, make the call to ..() then use commands = new commands += "scream" commands += "screams" -/datum/emote/scream/available(var/mob/user) - if(isliving(user)) - return 1 - /datum/emote/scream/machine name = "machine scream" sound = 'sound/goonstation/voice/robot_scream.ogg' /datum/emote/scream/machine/available(var/mob/user) - if(issilicon(user)) - return 1 - if(istype(user, /mob/living/simple_animal/bot)) + if(user.is_mechanical()) return 1 /datum/emote/scream/human @@ -255,80 +1420,147 @@ above it. If you don't want this, make the call to ..() then use commands = new /datum/emote/scream/human/playSound(var/mob/user) var/mob/living/carbon/human/H = user + if(H.gender == FEMALE) playsound(H, "[H.species.female_scream_sound]", vol, 1, 0, pitch = H.get_age_pitch()) else playsound(H, "[H.species.male_scream_sound]", vol, 1, 0, pitch = H.get_age_pitch()) + return 1 -/datum/emote/fart - name = "fart" - text = "farts" - selfText = "fart" - cooldown = 50 +/datum/emote/scretch + name = "scretch" + desc = "makes the mob scretch" //whatever that is! + text = "scretches" + selfText = "scretch" + audible = 1 + muzzleAffected = 1 -/datum/emote/fart/New() +/datum/emote/scretch/New() ..() - commands += "fart" - commands += "farts" + commands += "scretch" + commands += "scretches" -/datum/emote/fart/available(var/mob/user) +/datum/emote/scretch/available(var/mob/user) + if(isalienadult(user) || islarva(user)) + return 1 + +/datum/emote/shake + name = "shake" + desc = "Makes the mob shake its head" + text = "shakes" + selfText = "shake" + +/datum/emote/shake/New() + ..() + commands += "shake" + commands += "shakes" + +/datum/emote/shake/available(var/mob/user) + if(islarva(user)) + return 1 if(ishuman(user)) return 1 -/datum/emote/fart/doAction(var/mob/user) - // todo change this to work with superfarts - if(TOXIC_FARTS in user.mutations) - for(var/mob/M in range(get_turf(user),2)) - if (M.internal != null && M.wear_mask && (M.wear_mask.flags & AIRTIGHT)) - continue - if (M == user) - continue - M.reagents.add_reagent("space_drugs",rand(1,10)) - - if(locate(/obj/item/weapon/storage/bible) in get_turf(user)) - to_chat(viewers(user), "[user] farts on the Bible!") - to_chat(viewers(user), "A mysterious force smites [user]!") - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(3, 1, user) - s.start() - user.gib() - -/datum/emote/fart/createMessage(var/mob/user) - var/message - if(TOXIC_FARTS in user.mutations) - message = "[user] unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart." - else - message = "[user] [pick("passes wind","farts")]." +/datum/emote/shake/standardMessage(var/mob/user) + var/message = ..() + message += " [getHis(user)] head" return message -/datum/emote/fart/createSelfMessage(var/mob/user, var/message) - message = ..() - message = replacetext(message, "unleashes", "unleash") - message = replacetext(message, "passes", "pass") - return message +/datum/emote/shiver + name = "shiver" + desc = "Makes the mob shiver" + text = "shivers" + selfText = "shiver" + audible = 1 + mimeText = "shivers" -/datum/emote/signal - name = "signal" - desc = "raise x number of fingers" - text = "raises" - selfText = "raise" - canTarget = 1 +/datum/emote/shiver/New() + ..() + commands += "shiver" + commands += "shivers" + +/datum/emote/shiver/available(var/mob/user) + if(isalienadult(user) || islarva(user)) + return 1 + if(isslime(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/shrug + name = "shrug" + desc = "Makes the mob shrug" + text = "shrugs" + selfText = "shrug" + +/datum/emote/shrug/New() + ..() + commands += "shrug" + commands += "shrugs" + +/datum/emote/shrug/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/sigh + name = "sigh" + desc = "Makes the mob sigh" + text = "sighs" + selfText = "sigh" + audible = 1 + mimeText = "sighs" + muzzleAffected = 1 + muzzledNoise = "weak" + +/datum/emote/sigh/New() + ..() + commands += "sigh" + commands += "sighs" + +/datum/emote/sigh/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/sign + name = "sign" + desc = "Makes the mob sign a number" + text = "signs" + selfText = "sign" restrained = 1 - targetMob = 1 takesNumber = 1 -/datum/emote/signal/New() +/datum/emote/sign/New() ..() - commands += "signal" - commands += "signals" + commands += "sign" + commands += "signs" -/datum/emote/signal/available(var/mob/user) +/datum/emote/sign/available(var/mob/user) + if(isalienadult(user) || islarva(user)) + return 1 + +/datum/emote/sign/getNumber(var/mob/user) + var/number = ..() + if(number == null) + to_chat(user, "You need a number to sign") + return "invalid" + return number + +/datum/emote/sign/paramMessage(var/mob/user, var/list/params) + var/message = "\The [user] [text] [params["num"]]" + return message + +/datum/emote/sign/fingers + desc = "Makes the mob raise a number of fingers" + text = "raises" + selfText = "raise" + +/datum/emote/sign/fingers/available(var/mob/user) if(ishuman(user)) return 1 -/datum/emote/signal/getNumber(var/mob/user) +/datum/emote/sign/fingers/getNumber(var/mob/user) var/number = ..() - if(number == null) + if(number == "invalid") return "invalid" var/fingersAvailable = 0 if(!user.r_hand) @@ -340,6 +1572,481 @@ above it. If you don't want this, make the call to ..() then use commands = new return "invalid" return number -/datum/emote/signal/paramMessage(var/mob/user, var/list/params) - var/message = "[user] raises [params["num"]] finger\s" +/datum/emote/sign/fingers/paramMessage(var/mob/user, var/list/params) + var/message = "\The [user] [text] [params["num"]] finger\s" // no, we can't just add " finger\s" to the parent version because the text macro won't work then :( VB return message + +/datum/emote/slap + name = "slap" + desc = "makes the mob slap someone" + text = "slaps" + selfText = "slap" + audible = 1 + sound = 'sound/effects/snap.ogg' + canTarget = 1 + targetMob = 1 + targetText = "" + +/datum/emote/slap/New() + ..() + commands += "slap" + commands += "slaps" + +/datum/emote/slap/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/slap/getMobTarget(var/mob/user) + var/mob/target = input("Select target", "Target Mob") as null|mob in view(1) + if(!target) + target = user + return target + +/datum/emote/slap/doAction(var/mob/user, var/list/params) + if(user == params["target"]) + var/mob/living/U = user + U.adjustFireLoss(4) + +/datum/emote/smile + name = "smile" + desc = "Makes the mob smile" + text = "smiles" + selfText = "smile" + +/datum/emote/smile/New() + ..() + commands += "smile" + commands += "smiles" + +/datum/emote/smile/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/snap + name = "snap" + desc = "Makes the mob snap it's fingers" + text = "snaps" + selfText = "snap" + audible = 1 + sound = 'sound/effects/fingersnap.ogg' + +/datum/emote/snap/New() + ..() + commands += "snap" + commands += "snaps" + +/datum/emote/snap/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/snap/prevented(var/mob/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/H = user + var/obj/item/organ/external/L = H.get_organ("l_hand") + var/obj/item/organ/external/R = H.get_organ("r_hand") + var/left_hand_good = 0 + var/right_hand_good = 0 + if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.status & ORGAN_SPLINTED)) && (!(L.status & ORGAN_BROKEN))) + left_hand_good = 1 + if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.status & ORGAN_SPLINTED)) && (!(R.status & ORGAN_BROKEN))) + right_hand_good = 1 + + if (!left_hand_good && !right_hand_good) + return "You need at least one hand in good working order to snap your fingers." + +/datum/emote/snap/standardMessage(var/mob/user, var/list/params) + var/message = ..() + message += " [getHis(user)] fingers" + params["prob"] = prob(5) + if(!params["prob"]) + return message + message += " right off!" + +/datum/emote/snap/playSound(var/mob/user, var/list/params) + if(params["prob"]) + playsound(user.loc, 'sound/effects/snap.ogg', 50, 1) + return 1 + return ..() + +/datum/emote/sneeze + name = "sneeze" + desc = "Makes the mob sneezze" + text = "sneezes" + selfText = "sneeze" + audible = 1 + mimeText = "sneeze" + muzzleAffected = 1 + muzzledNoise = "strange" + +/datum/emote/sneeze/New() + ..() + commands += "sneeze" + commands += "sneezes" + +/datum/emote/sneeze/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/sniff + name = "sniff" + desc = "Makes the mob sniff" + text = "sniffs" + selfText = "sniff" + audible = 1 + mimeText = "sniffs" + +/datum/emote/sniff/New() + ..() + commands += "sniff" + commands += "sniffs" + +/datum/emote/sniff/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/snore + name = "snore" + desc = "Makes the mob snore" + text = "snores" + selfText = "snore" + audible = 1 + mimeText = "sleeps soundly" + mimeSelf = "sleep soundly" + muzzleAffected = 1 + +/datum/emote/snore/New() + ..() + commands += "snore" + commands += "snores" + +/datum/emote/snore/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/squish + name = "squish" + desc = "Makes the mob squish" + text = "squishes" + selfText = "squish" + audible = 1 + sound = 'sound/effects/slime_squish.ogg' + canTarget = 1 + targetMob = 1 + +/datum/emote/squish/New() + ..() + commands += "squish" + commands += "squishes" + +/datum/emote/available(var/mob/user) + if(isslime(user)) + return 1 + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.species.name == "Slime People") //Only Slime People can squish + return 1 + for(var/obj/item/organ/external/L in H.organs) // if your limbs are squishy you can squish too! + if(L.dna.species =="Slime People") + return 1 + +/datum/emote/stare + name = "stare" + desc = "Makes the mob stare" + text = "stares" + selfText = "stare" + canTarget = 1 + targetMob = 1 + +/datum/emote/stare/New() + ..() + commands += "stare" + commands += "stares" + +/datum/emote/stare/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/sulk + name = "sulk" + desc = "Makes the mob sulk" + text = "sulks down sadly" + selfText = "sulk down sadly" + +/datum/emote/sulk/New() + ..() + commands += "sulk" + commands += "sulks" + +/datum/emote/sulk/available(var/mob/user) + if(islarva(user)) + return 1 + +/datum/emote/sway + name = "sway" + desc = "Makes the mob sway" + text = "sways around dizzily" + selfText = "sway around dizzily" + +/datum/emote/sway/New() + ..() + commands += "sway" + commands += "sways" + +/datum/emote/sway/available(var/mob/user) + if(islarva(user)) + return 1 + if(isslime(user)) + return 1 + +/datum/emote/tail + name = "tail" + desc = "Makes the mob wave it's tail" + text = "waves it's tail" + selfText = "wave your tail" + +/datum/emote/tail/New() + ..() + commands += "tail" + +/datum/emote/tail/available(var/mob/user) + if(islarva(user) || isalienadult(user)) + return 1 + +/datum/emote/tail/wag + name = "wag" + desc = "Makes the mob start wagging its tail" + text = "starts" + selfText = "start" + +/datum/emote/tail/wag/New() + ..() + commands = new /list() + commands += "wag" + commands += "wags" + +/datum/emote/tail/wag/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/tail/wag/prevented(var/mob/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/H = user + if(H.species.bodyflags & TAIL_WAGGING) + if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAIL || istype(H.wear_suit, /obj/item/clothing/suit/space))) + return "your clothing is stopping you wag your tail" + return + if(!H.body_accessory) + return "you have no tail to wag!" + if(!H.body_accessory.try_restrictions()) + return "your clothing is stopping you wag your tail" + +/datum/emote/tail/wag/standardMessage(var/mob/user, var/list/params) + var/message = ..() + message += " wagging [getHis(user)] tail" + return message + +/datum/emote/tail/wag/doAction(var/mob/user, var/list/params) + var/mob/living/carbon/human/H = user + H.start_tail_wagging(1) + +/datum/emote/tail/wag/stop + name = "swag" + desc = "Makes the mob stop wagging its tail" + text = "stops" + selfText = "stop" + allowParent = 1 + +/datum/emote/tail/wag/stop/New() + ..() + commands = new /list() + commands += "swag" + commands += "swags" + +// seemingly no way to tell if a mob is wagging it's tail! VB +/datum/emote/tail/wag/stop/available(var/mob/user) + var/mob/living/carbon/human/H = user + if(!H.species.bodyflags & TAIL_WAGGING && !H.body_accessory) + return "you can't stop wagging a tail you don't have!" + +/datum/emote/tail/wag/stop/doAction(var/mob/user, var/list/params) + var/mob/living/carbon/human/H = user + H.stop_tail_wagging(1) + +/datum/emote/tremble + name = "tremble" + desc = "Makes the mob tremble" + text = "trembles" + selfText = "tremble" + +/datum/emote/tremble/New() + ..() + commands += "tremble" + commands += "trembles" + +/datum/emote/tremble/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/twitch_s + name = "twitch_s" + desc = "Makes the mob twitch" + text = "twitches" + selfText = "twitch" + +/datum/emote/twitch_s/New() + ..() + commands += "twitch_s" + commands += "twitches_s" + +/datum/emote/twitch_s/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/twitch_s/twitch + name = "twitch" + desc = "Makes the mob twitch violently" + allowParent = 1 + +/datum/emote/twitch_s/twitch/New() + ..() + commands = new /list() + commands += "twitch" + commands += "twitches" + +/datum/emote/twitch_s/twitch/available(var/mob/user) + if(isslime(user)) + return 1 + if(islarva(user)) + return 1 + return ..() + +/datum/emote/twitch_s/twitch/standardMessage(var/mob/user, var/list/params) + var/message = ..() + message += " violently" + return message + +/datum/emote/vibrate + name = "vibrate" + desc = "Makes the mob vibrate" + text = "vibrates" + selfText = "vibrate" + +/datum/emote/vibrate/New() + ..() + commands += "vibrate" + commands += "vibrates" + +/datum/emote/vibrate/available(var/mob/user) + if(isslime(user)) + return 1 + +/datum/emote/wave + name = "wave" + desc = "Makes the mob wave" + text = "waves" + selfText = "wave" + +/datum/emote/wave/New() + ..() + commands += "wave" + commands += "waves" + +/datum/emote/wave/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/whimper + name = "whimper" + desc = "Makes the mob whimper" + text = "whimpers" + selfText = "whimper" + audible = 1 + mimeText = "appears hurt" + mimeSelf = "appear hurt" + muzzleAffected = 1 + +/datum/emote/whimper/New() + ..() + commands += "whimper" + commands += "whimpers" + +/datum/emote/whimper/available(var/mob/user) + if(islarva(user) || isalienadult(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/whistle + name = "whistle" + desc = "Makes the mob whistle" + text = "whistles" + selfText = "whistle" + audible = 1 + +/datum/emote/whistle/New() + ..() + commands += "whistle" + commands += "whistles" + +/datum/emote/whistle/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/wink + name = "wink" + desc = "Makes the mob wink" + text = "winks" + desc = "wink" + +/datum/emote/wink/New() + ..() + commands += "wink" + commands += "winks" + +/datum/emote/wink/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/yawn + name = "yawn" + desc = "makes the mob yawn" + text = "yawns" + selfText = "yawn" + audible = 1 + mimeText = "yawns" + muzzleAffected = 1 + +/datum/emote/yawn/New() + ..() + commands += "yawn" + commands += "yawns" + +/datum/emote/yawn/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/yes + name = "yes" + desc = "Makes the mob let out an affirmative beep" + text = "lets out an affirmative beep" + selfText = "let out an affirmative beep" + audible = 1 + sound = 'sound/machines/synth_yes.ogg' + canTarget = 1 + targetMob = 1 + +/datum/emote/yes/New() + ..() + commands += "yes" + +/datum/emote/yes/available(var/mob/user) + if(user.is_mechanical()) + return 1 \ No newline at end of file From ac9eac44a183785c4a74690ad0de624fc2e7540d Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Sat, 28 May 2016 05:55:59 +0100 Subject: [PATCH 015/260] Adds support for holopad emoting --- code/datums/Emote_system/emote.dm | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index a8da598c573..3015d42f4ac 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -264,10 +264,14 @@ VampyrBytes if(doMime(user)) visualOrAudible = 1 + var/location = checkForHolopad(user) + if(!location) + location = user + log_emote("[user.name]/[user.key] : [message]") sendToDead(message) testing(message) - for(var/mob/M in getRecipients(user, visualOrAudible)) + for(var/mob/M in getRecipients(location, visualOrAudible)) var/msg = "" if(M==user) @@ -311,17 +315,27 @@ VampyrBytes continue msg = message - outputMessage(M, msg) + outputMessage(M, msg, user) if(visualOrAudible == 2) handleListeningObjects(user, message) return visualOrAudible -/datum/emote/proc/outputMessage(var/mob/M, var/msg = "") - msg = replaceMobWithYou(M, msg, M) +/datum/emote/proc/outputMessage(var/mob/M, var/msg = "", var/mob/user) + msg = replaceMobWithYou(M, msg, user) to_chat(M, msg) +/datum/emote/proc/checkForHolopad(var/mob/user, var/message) + if(!isAI(user)) + return + var/mob/living/silicon/ai/AI = user + var/obj/machinery/hologram/holopad/T = AI.holo + if(!(T && T.hologram && T.master == AI)) + return + to_chat(AI, "Holopad action relayed, [AI.real_name] [message]") + return T + /datum/emote/proc/handleListeningObjects(var/mob/user, var/message = "") // based on say code var/omsg = replacetext(message, "[user] ", "") @@ -337,10 +351,10 @@ VampyrBytes for(var/obj/O in listening_obj) O.hear_message(user, omsg) -/datum/emote/proc/getRecipients(var/mob/user, var/visualOrAudible) +/datum/emote/proc/getRecipients(var/location, var/visualOrAudible) if(visualOrAudible == 1) - return viewers(user) - return get_mobs_in_view(HEARING_RANGE, user) + return viewers(location) + return get_mobs_in_view(HEARING_RANGE, location) // set up different messages for blind people here. Empty will mean no message for //non-audible emotes and the standard message for audible ones From fd4ac0920dc2a6aa8a148c1aefe0418b27461713 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 28 May 2016 16:48:45 +0200 Subject: [PATCH 016/260] Posibrain fix --- code/modules/mob/living/carbon/brain/life.dm | 23 ++++++++++---------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 857546732d7..78eed1d4228 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -33,20 +33,21 @@ updatehealth() /mob/living/carbon/brain/handle_environment(datum/gas_mixture/environment) - if(!environment) - return - var/environment_heat_capacity = environment.heat_capacity() - if(istype(get_turf(src), /turf/space)) - var/turf/heat_turf = get_turf(src) - environment_heat_capacity = heat_turf.heat_capacity + if(!istype(src, /obj/item/device/mmi/posibrain)) //we don't want posibrains suffocating, now do we? + if(!environment) + return + var/environment_heat_capacity = environment.heat_capacity() + if(istype(get_turf(src), /turf/space)) + var/turf/heat_turf = get_turf(src) + environment_heat_capacity = heat_turf.heat_capacity - if((environment.temperature > (T0C + 50)) || (environment.temperature < (T0C + 10))) - var/transfer_coefficient = 1 + if((environment.temperature > (T0C + 50)) || (environment.temperature < (T0C + 10))) + var/transfer_coefficient = 1 - handle_temperature_damage(HEAD, environment.temperature, environment_heat_capacity*transfer_coefficient) + handle_temperature_damage(HEAD, environment.temperature, environment_heat_capacity*transfer_coefficient) - if(stat == DEAD) - bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000) + if(stat == DEAD) + bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000) /mob/living/carbon/brain/proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity) if(status_flags & GODMODE) From 1575a48e91e8fded44c47d401451a563d7a7eee3 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 May 2016 12:32:52 +0200 Subject: [PATCH 017/260] K den --- code/modules/mob/living/carbon/brain/life.dm | 17 ----------------- code/modules/mob/living/carbon/life.dm | 4 +++- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 78eed1d4228..99639b8777b 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -32,23 +32,6 @@ adjustToxLoss(3) updatehealth() -/mob/living/carbon/brain/handle_environment(datum/gas_mixture/environment) - if(!istype(src, /obj/item/device/mmi/posibrain)) //we don't want posibrains suffocating, now do we? - if(!environment) - return - var/environment_heat_capacity = environment.heat_capacity() - if(istype(get_turf(src), /turf/space)) - var/turf/heat_turf = get_turf(src) - environment_heat_capacity = heat_turf.heat_capacity - - if((environment.temperature > (T0C + 50)) || (environment.temperature < (T0C + 10))) - var/transfer_coefficient = 1 - - handle_temperature_damage(HEAD, environment.temperature, environment_heat_capacity*transfer_coefficient) - - if(stat == DEAD) - bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000) - /mob/living/carbon/brain/proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity) if(status_flags & GODMODE) return diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 7b3f74ef65f..558780a4453 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -41,6 +41,8 @@ return if(NO_BREATH in mutations) return // No breath mutation means no breathing. + if(istype(src, /mob/living/carbon/brain)) + return var/datum/gas_mixture/environment if(loc) @@ -465,4 +467,4 @@ else healths.icon_state = "health6" else - healths.icon_state = "health7" \ No newline at end of file + healths.icon_state = "health7" From 7dc7fbd2a24df273f15e98c12cede5723d229f68 Mon Sep 17 00:00:00 2001 From: monster860 Date: Mon, 30 May 2016 08:39:17 -0400 Subject: [PATCH 018/260] Adds some new vox_fem words --- code/defines/vox_sounds.dm | 22 ++++++++++++++++++++++ sound/vox_fem/arrival.ogg | Bin 0 -> 8217 bytes sound/vox_fem/arrivals.ogg | Bin 0 -> 8904 bytes sound/vox_fem/closet.ogg | Bin 0 -> 8339 bytes sound/vox_fem/dock.ogg | Bin 0 -> 6892 bytes sound/vox_fem/docked.ogg | Bin 0 -> 7558 bytes sound/vox_fem/docking.ogg | Bin 0 -> 7961 bytes sound/vox_fem/docks.ogg | Bin 0 -> 7592 bytes sound/vox_fem/emag.ogg | Bin 0 -> 7836 bytes sound/vox_fem/hallway.ogg | Bin 0 -> 8420 bytes sound/vox_fem/imminent.ogg | Bin 0 -> 8306 bytes sound/vox_fem/n2o.ogg | Bin 0 -> 11164 bytes sound/vox_fem/pod.ogg | Bin 0 -> 6861 bytes sound/vox_fem/sequencer.ogg | Bin 0 -> 9823 bytes sound/vox_fem/space.ogg | Bin 0 -> 8767 bytes sound/vox_fem/sword.ogg | Bin 0 -> 7666 bytes sound/vox_fem/technology.ogg | Bin 0 -> 9863 bytes sound/vox_fem/teleport.ogg | Bin 0 -> 9128 bytes sound/vox_fem/teleported.ogg | Bin 0 -> 9368 bytes sound/vox_fem/teleporter.ogg | Bin 0 -> 9325 bytes sound/vox_fem/teleporting.ogg | Bin 0 -> 9586 bytes sound/vox_fem/tesla.ogg | Bin 0 -> 7797 bytes sound/vox_fem/tool.ogg | Bin 0 -> 6981 bytes sound/vox_fem/vault.ogg | Bin 0 -> 7403 bytes 24 files changed, 22 insertions(+) create mode 100644 sound/vox_fem/arrival.ogg create mode 100644 sound/vox_fem/arrivals.ogg create mode 100644 sound/vox_fem/closet.ogg create mode 100644 sound/vox_fem/dock.ogg create mode 100644 sound/vox_fem/docked.ogg create mode 100644 sound/vox_fem/docking.ogg create mode 100644 sound/vox_fem/docks.ogg create mode 100644 sound/vox_fem/emag.ogg create mode 100644 sound/vox_fem/hallway.ogg create mode 100644 sound/vox_fem/imminent.ogg create mode 100644 sound/vox_fem/n2o.ogg create mode 100644 sound/vox_fem/pod.ogg create mode 100644 sound/vox_fem/sequencer.ogg create mode 100644 sound/vox_fem/space.ogg create mode 100644 sound/vox_fem/sword.ogg create mode 100644 sound/vox_fem/technology.ogg create mode 100644 sound/vox_fem/teleport.ogg create mode 100644 sound/vox_fem/teleported.ogg create mode 100644 sound/vox_fem/teleporter.ogg create mode 100644 sound/vox_fem/teleporting.ogg create mode 100644 sound/vox_fem/tesla.ogg create mode 100644 sound/vox_fem/tool.ogg create mode 100644 sound/vox_fem/vault.ogg diff --git a/code/defines/vox_sounds.dm b/code/defines/vox_sounds.dm index 6f9bcf122fd..9e36364cefc 100644 --- a/code/defines/vox_sounds.dm +++ b/code/defines/vox_sounds.dm @@ -51,6 +51,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "armory" = 'sound/vox_fem/armory.ogg', "array" = 'sound/vox_fem/array.ogg', "arrest" = 'sound/vox_fem/arrest.ogg', +"arrival" = 'sound/vox_fem/arrival.ogg', +"arrivals" = 'sound/vox_fem/arrivals.ogg', "asimov" = 'sound/vox_fem/asimov.ogg', "ass" = 'sound/vox_fem/ass.ogg', "asshole" = 'sound/vox_fem/asshole.ogg', @@ -147,6 +149,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "clear" = 'sound/vox_fem/clear.ogg', "clearance" = 'sound/vox_fem/clearance.ogg', "close" = 'sound/vox_fem/close.ogg', +"closet" = 'sound/vox_fem/closet.ogg', "clown" = 'sound/vox_fem/clown.ogg', "clowns" = 'sound/vox_fem/clowns.ogg', "cmo" = 'sound/vox_fem/cmo.ogg', @@ -218,6 +221,10 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "distance" = 'sound/vox_fem/distance.ogg', "distortion" = 'sound/vox_fem/distortion.ogg', "do" = 'sound/vox_fem/do.ogg', +"dock" = 'sound/vox_fem/dock.ogg', +"docked" = 'sound/vox_fem/docked.ogg', +"docking" = 'sound/vox_fem/docking.ogg', +"docks" = 'sound/vox_fem/docks.ogg', "doctor" = 'sound/vox_fem/doctor.ogg', "doctors" = 'sound/vox_fem/doctors.ogg', "doop" = 'sound/vox_fem/doop.ogg', @@ -240,6 +247,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "elevator" = 'sound/vox_fem/elevator.ogg', "eleven" = 'sound/vox_fem/eleven.ogg', "eliminate" = 'sound/vox_fem/eliminate.ogg', +"emag" = 'sound/vox_fem/emag.ogg', "emergency" = 'sound/vox_fem/emergency.ogg', "energy" = 'sound/vox_fem/energy.ogg', "engage" = 'sound/vox_fem/engage.ogg', @@ -332,6 +340,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "hacker" = 'sound/vox_fem/hacker.ogg', "hackers" = 'sound/vox_fem/hackers.ogg', "hacking" = 'sound/vox_fem/hacking.ogg', +"hallway" = 'sound/vox_fem/hallway.ogg', "handling" = 'sound/vox_fem/handling.ogg', "hangar" = 'sound/vox_fem/hangar.ogg', "happening" = 'sound/vox_fem/happening.ogg', @@ -371,6 +380,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "illegal" = 'sound/vox_fem/illegal.ogg', "immediate" = 'sound/vox_fem/immediate.ogg', "immediately" = 'sound/vox_fem/immediately.ogg', +"imminent" = 'sound/vox_fem/imminent.ogg', "in" = 'sound/vox_fem/in.ogg', "inches" = 'sound/vox_fem/inches.ogg', "india" = 'sound/vox_fem/india.ogg', @@ -473,6 +483,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "must" = 'sound/vox_fem/must.ogg', "my" = 'sound/vox_fem/my.ogg', "n" = 'sound/vox_fem/n.ogg', +"n2o" = 'sound/vox_fem/n2o.ogg', "nanotrasen" = 'sound/vox_fem/nanotrasen.ogg', "nearest" = 'sound/vox_fem/nearest.ogg', "negative" = 'sound/vox_fem/negative.ogg', @@ -526,6 +537,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "plasma" = 'sound/vox_fem/plasma.ogg', "platform" = 'sound/vox_fem/platform.ogg', "please" = 'sound/vox_fem/please.ogg', +"pod" = 'sound/vox_fem/pod.ogg', "point" = 'sound/vox_fem/point.ogg', "port" = 'sound/vox_fem/port.ogg', "portal" = 'sound/vox_fem/portal.ogg', @@ -612,6 +624,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "select" = 'sound/vox_fem/select.ogg', "selected" = 'sound/vox_fem/selected.ogg', "sensors" = 'sound/vox_fem/sensors.ogg', +"sequencer" = 'sound/vox_fem/sequencer.ogg', "service" = 'sound/vox_fem/service.ogg', "seven" = 'sound/vox_fem/seven.ogg', "seventeen" = 'sound/vox_fem/seventeen.ogg', @@ -654,6 +667,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "son" = 'sound/vox_fem/son.ogg', "sorry" = 'sound/vox_fem/sorry.ogg', "south" = 'sound/vox_fem/south.ogg', +"space" = 'sound/vox_fem/space.ogg', "squad" = 'sound/vox_fem/squad.ogg', "square" = 'sound/vox_fem/square.ogg', "ss13" = 'sound/vox_fem/ss13.ogg', @@ -680,6 +694,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "surround" = 'sound/vox_fem/surround.ogg', "surrounded" = 'sound/vox_fem/surrounded.ogg', "switch" = 'sound/vox_fem/switch.ogg', +"sword" = 'sound/vox_fem/sword.ogg', "syndicate" = 'sound/vox_fem/syndicate.ogg', "system" = 'sound/vox_fem/system.ogg', "systems" = 'sound/vox_fem/systems.ogg', @@ -692,13 +707,19 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "tank" = 'sound/vox_fem/tank.ogg', "target" = 'sound/vox_fem/target.ogg', "team" = 'sound/vox_fem/team.ogg', +"technology" = 'sound/vox_fem/technology.ogg', "telecomms" = 'sound/vox_fem/telecomms.ogg', +"teleport" = 'sound/vox_fem/teleport.ogg', +"teleported" = 'sound/vox_fem/teleported.ogg', +"teleporter" = 'sound/vox_fem/teleporter.ogg', +"teleporting" = 'sound/vox_fem/teleporting.ogg', "temperature" = 'sound/vox_fem/temperature.ogg', "temporal" = 'sound/vox_fem/temporal.ogg', "ten" = 'sound/vox_fem/ten.ogg', "terminal" = 'sound/vox_fem/terminal.ogg', "terminated" = 'sound/vox_fem/terminated.ogg', "termination" = 'sound/vox_fem/termination.ogg', +"tesla" = 'sound/vox_fem/tesla.ogg', "test" = 'sound/vox_fem/test.ogg', "that" = 'sound/vox_fem/that.ogg', "the" = 'sound/vox_fem/the.ogg', @@ -758,6 +779,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "vampire" = 'sound/vox_fem/vampire.ogg', "vampires" = 'sound/vox_fem/vampires.ogg', "vapor" = 'sound/vox_fem/vapor.ogg', +"vault" = 'sound/vox_fem/vault.ogg', "vent" = 'sound/vox_fem/vent.ogg', "ventilation" = 'sound/vox_fem/ventilation.ogg', "victor" = 'sound/vox_fem/victor.ogg', diff --git a/sound/vox_fem/arrival.ogg b/sound/vox_fem/arrival.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f3eea1ebc104e8eb0c4916639194aef27c0ea043 GIT binary patch literal 8217 zcmcgwc|26#-@o=j7~6z~h73l?pkyn?K1Ga(QNq}_Fr<)eh-_KL+K^=?*(rO4%1-vB z$d)YG(nhK8x95(Y@9$Y&&+B!xtQ-xcBI?r3!Yjxa_jDWVn8U`5DS5ZoLBU7URaU0t06P;_htmOqmvFuGO@ zfHnXKVW6@sm4syV9zpR$;i3XeAF5jvGb~;#sT-%>b+TKCVA$*wkLisZPO${&6R7Y@ zX8y+Vs}y3f(4_&tH3ZmOMz{|6u_M7=vf65ze=_7wIp(2)~QHje)pcQE*%Nu16d52JO5(H8JprBAD{+$drROAr{&;tNaZ9f6SRDpA~@ct1=E(n(m3#beL0**7f zO*M+AStq-==Su|_$>bKvmOpaudnDKYXro2pV7d_in3)T7`U~#xM zWeyky&Z{em8PqMMkrq%fNW!Q^g$_hK^rP0^T*${iCV&EfgTU#y$Zko9c(kK{w4UDs z1lU`awC=mPCJC7(K`~8~kp5L<3C#qh+;(YBgj8IuWNg-D2pa_ZRE}{Qujvc506d1}X?34mB z7%gxB>JQ?<|A++=>6-wqkCQa?mo!Y1>`jw1PS@;zOs^*6dM1LF6PDgnyWUrKz2_&K z=XafFCY-NiI?vX7UzxmeWh(H$)&tQan1P7o_n_9nYLrYh;y5r)3IhNIB8pGPFByUM zNJiSENx5gb-pnkynfvgL*ufCcFre1J5>a$uHc6Yz2k!YLbYqv5#Xl%5EAz;G;Qqf? z#zOIO0AL3I(QZGup&z{4k1o}Lh7n8v0swT);rjk^-DxW4KpDsMhQ3}lKNVyD22a$_Wa-U#&Ac zWT196o5+(!B!f_aIQ+TFiCld7$@EdYdu3M&K7qb?0@@Xamn-eG#>b;Ovxy1vQ^WWw za1DzDwQf8qt#;QAUrvXLuLPkKPj%;OV4E{1gB2>j*%1{mlW!B;E{mnj~bTAi;$w$+4Yh&z>&3%0NHdnlyg=I;+e6b&Y(Ndxte93oVGO(I~Y_XgQR zp>p{$enV?gB=nUUWCXvB>YB4ics7-PujUz>IKCf*BE_S>=MojwR~;`_J_iL%sfQJY zoWQOk$Yu3xIi6-pQy^65T0z1I0I+Xo01)lbN@i|7@c_aUh|uX#qX|W0QINuDGDZev znP}XTO-e&c)5thH1X&MSEr)

ZV5X;boC^d|3BV@+e-0R-cJaMAgG|QKd0B{Bc@c zCcX?^Z$;?HCJ(5gz!_LnWd;sk4o^=*%aoE*uqad~4wnGhS!wNI02C`*+Hn!*UP&Fr zp=h83c%eEk+9uTBrmMQc3g>~Y2OrT>acGn99 zP^hjntXE}cuC15azb}sUsGZ0pc-F3r8j5}7=@4{_;v}iET zgxVF*!%t4l5lqws0YGs9-1qhvVHp)CBmf0-m(WWg0#t-X0kv>wI@05ZN{>Z;MPaP*5f2qp&`7>i~tL>r)15h`6W zopfV&QPRy&pgWr>f$n04U7--6SaxwT4vQ6!#(_}ahGnF0;3FzX7#qlt{vU=26y-s2 zjy&2RPO`Lk(%e&qCUPz@ugfZAqj^ju#JgFQj7=(?O!n+=o|tnt(Q1T)3~7K2Y1BYD zxNO*g_h29gImjjs3dac1bNL}$B0aUogXtcWjZOel4M+f;F%3-j(NOFfoj(*U03;NW zaq6oGkUvx&$S#UT1~W1TJyv-MyrI}jJ{(TT0JOzG7e9mhz2znkM05wDLS1(gh4enaRNv{M5oXR zP|O+y42ux)06HNWs=itP3JU>+pl9s=Nr=;67CFe}|NjlhDrlGg+DHREjV~D5e?RXM zwn`i1FeGu(jTy}Z0313pG)K@DNbq2R%1Z|=l}f^4KY;rc%MJz*EaadOCF3xlxj@7H z)2RQ`>r+F~(&+@fL1Pr%0Z}x%f&UrzPw!ucoBu^2j6l;7IDp{uqBtNwRQRei9ry!y zuqzNCCSxHeatiKYc2P10g`(oH9K3`<<8?Tgiood9rv{->$rxGjz(E~0WK0TMbW^WTS|svjZidGFy~PPFf!sXptwj{8o1{&E@Ie04sbGs zAPOjR8V)?kFC0W_hq$Rj=gJc($N118-|j3ppw{Tyj7R2QP2D)$m< zk#^^k03lIL#z2=F{hlmz7z-&RIciE}==PbJH#d%}v2?-+p&x4xgU130BfuQZ35ov8ST@X*lcP}0rtfFR})|060R6bIEBN}dUtomKL%>#v#%*{kP0$ImA^W8 zt-ZY!_9BgCq`umnJuFh|Lz`g?C(CqJ@IaUw3n1xZh&%tz_tw%7%OzI6p;q-?@>-$H zyN}_li{9T2CBA>~w;wW}zfW`t5t1mJVm5gIzo+hMt248D_)zBP=VR}ov6?d1uUeki z_QsNxw=16lf$s_Jd047i^4#JaHh8B=}tO&M;v+sde<*X=g7W7CI*8b$KY{6%HQR6RZ`kHd*+q-2`Z=Ap{n&FcRa)xCO37qv(n2F! zLu_y{PZ1E&aah|TO|*(5w=Zq=RqZl&{|~+tt0{;hy4u;#DAXnLDb)WBb1nQ^fY9rz zW9Oe_$nrv2O>?qx5eZY?+%JQS8~<|J|3+%Xhm@;?S-7EHI5L=@uNm9jjbRW>o~!u* zFc&H{n*}nErL~7w-$rK{YPP-FdXow_T8zxe|8iB(kfATyy?d%yY4Z0m^51_M{}g-L zbS*d}bumc>b$jiFg#|lj+kWYJKhzq`uOIn467|zu#-MHaS=9uUMe_JbbJuiM;QAC# zfdcUDN5ZwBzUANPnX!e>Lkrt(%nOlf&FW!`Cr0mw!*a8-etYw>wv)frAFZoX1if6IPkg%;sj*i`4U<2rA+eWT|L4^KeLRdt)z>{Rz~B{doM zADiNW-bM32b-Kn4ZSCg@?ksq&$StKzDCfG#I{DA+n}3i#igd4dF45BuZ)U-qU~8FX zV!&B)Xjb3XI`?IF#JKvUqj(IBe-{v3QrRo0erUehLG(U@=s#J;$jK&Mr zTv?XB&hB!QP4tJSx@4oz5wUl_le@%pY0qjFeFIJ`3!5D4k6EttOQc>KS5g#HWvwv( zal@u{qN)-R(s1}{=WJUR?Np)W>BAowPU$ry+g6v%#OyP)_N6mY71f4YkHC$D>=z=r z#qOjc*(?_&ci!&K70tPb*3P#KH|WTMSh#ll@&C$$w}vL7RD+5I3xh54$p@QjBgJJ7Mj#X1w)W@{VD%C~KGF|NhYgcnUxPx!ian97!7hj-58 z35{x-%W{_LE@vP8!2i_m3r8;p!<|^(xcb(qSl5k2%c{wvbNjj+1qAy>G22}yo|^XJ zGcyCG+HJdwy;HH$jiU+IPiF1C{kX++VH;W~m(S|2{xD~!L~^2Q^$V}zN=xS+oVnOi z%9D}QKATl~W;T9(U7`P^v`Iblh>=u}rEh-}v$?P4#Xt+`XR#sk8a=T)T#wyx2@>O# z8e8Q>u-pFAu(0(d)~5K#_gsz|?2H-_{Y6my)lF@eSew6oxh|%rS0|ah3Ev7k!SX5y z5*;u|(|OCb)~M@qNpF@VV&z8;%XlNQnHcq=G{fTUdFz3NfpEgI#bse(>x`dDz~1Tg zyS!0vR8zBMY^k>3D<^FFP{$zauM~qNk8<9u1(BLr!la-vTIk`! z`mU8Qf(3(JOFx(lZD_R!{T8(SO&E&OOWUTu-S29R9EUP!32>2v5 zcpSKb$eY)WzbSr7JRED^6|*NzZr%?+GLpKtci8sy;Eb<6gG;J?^U-sg`{=Gpt-?>I z#+w~dzOCL-`&FM6tnkUnA}{dyF^1r4h#a3Nd#(UR0WoT+2JtVe4)>2H@1Fcod3$` z`BENU?xJW3 zbg%>Y92Iq}?b@FWd~V67E-c(g8s@gnF70>JE}dUBn;(1l5#lgLcx}0Te(z4gx6Hq4 zg#%(c1ho8S|Mio%GaLe`CE_O4_Ohn@EYd}k6mjEqKT_s(6o8E-cTXBH2K4L z#PMl*P+#F19HK#qX-&KHP3qJy@(>j^RGs&0xns|0Lr-vcR1pyK9LF)GAZ{LO{HFea zDX+GhQwUHNZipTjeWH84phaaYv#HP!N0NH|)S_#_rNu6*@^h4Ue!1V{wwL&K-uzRZ z{7J6w`$*cVnsX0ThraqI9v%4NvUzg0oWJFs#dB%Bg^H2-u&b4Ut_>c+!6ILy6RUn^ zYzmZ}VEkHL*PncOe@a|l*d;<1R&`AfxqhE~*Z`Q7aD@bhyo-xbQKbMQlis*i%R}<=Xx5inena4EG zZDH%UuU^l3P^?+Y_>X%E&mElHTY@2kToBS|E`EX*Ako;!o<9Ami@72$~ z-%oE$bZEnllyo!YuYbWYDyBS5ZJ0ttn7&?N0Hk`MkHshb-i-%^JZsxc^s@ckJ$=ru zZfxz=lP!HU$zSPtvTWfV&nv=S4Clz-v-Ct9Jujxm?T=t)ut{>= zTp2;_I?2Gx!n!>~-?OI|ggm*i=RGaIr<`+W^U~{#bs_+~ zLshenb(kaX9AoDuJP38SuFrGh7`jlQ>*d3$JSOoxXSLQ=XteeDLteht(rW?yZUt?7 zapo99R!sloM$P+;ekj3-BL z2v$E;&LYY-2$$z~@`Mq!w+mXC!lu)~Ad>I)$)^}8hhNXVBDXL-8TOO&C(q9ut<~J; zKYa3R7rApTobq(D-rVXH+h3R3t7WfSk#JXFQrwju`0eV(YxYT*Vcbytnv$O9YqDb; zTkyu_rmL))VNP}5rxW*S!LfuMP5&6tElROk>(Jw|4#BgbNkbFOEr5;PbES36IKRI- z&57+yS%QGf5kR$A+AC@!lF969prcjA(7h|p-$OlrIw;1>F7<{j6)W67&#v0_)>HX= ztU)4lCmZJ4b232ic3U^KzO>sb=VYd3xK zMDCWB9(}R6oF47@Qo;06i-(u5gvqRm62fOt)eI;zoBnw_PbINu?WN>O_UR@6$$<&^ zWQsHK>28K$mx=*pXff@r20C&$-@u&l$n33;3clT+vCx5@>2>)VpEC`{@WqH%Yt@1C z8g^x0IP`9klr0#=KQt)f%U;Ul%DVFlr`%1;5w6=z{tD-lMM1_VvF!j<@4sZa#fDK!d*_R^4D=) zxVA3VAG!BZ+JJThe-OM-253y?Qa+2(uS`aA65M*KzEVz%aRLqco?ZyVpXq7GOTi zQaWpWnkK?*AT`t3_u{%NXR6SZT83};{g^zYmXEC>n#lz)KI#kBHj5y!x!8NRl6^DT zUz~-PjNczy((X7lCr(;n}gOH;dYSIku3-nefPvBe$|5 zvxB5$XVha!sb-&j9qJ@!Oou86F%8TGD)O`Io>dxeOSIOCs8X52s&x-)wuPoWptI3S z?!LF)+?I4Xr-nSa?$aV-K6Uryeg1SU3k_?-H5-@Xn1pjSuy=LU_jv4t`?;C-SbYik z=`f+o1!vOk$hsP}C35wdw){ZpE_YXQW@UU|jX_W|%beOSdlJVHI(HrIJ41=nDP&gqmZ*|?zfVoyyJAN|6b?W=Sx z%J9|k(QQfd zSuZ?r*5;S*yx+EZ-{rs{_)XD|W4A&Ch}X1V(rirmA_Y0oG5j-|n4jto#U)NuL^yhU z^LMJx-SsyuO;m3k{Z#Pq#uvRwt*^q$4MUo%TE~T*sxQoDsrNLNt^ps|ruzmhIXh0s z6tcgw&?uyqu(kH!B9(3CbR3U{xY;tAk)^%V9t9VF;j7u3vK2^Mk>LM2aufd~Jg6oP zHMgvQ7R?Eo4!vc4bYG{*J#ol4G=^0yPD1DSND--nYd!-FL`-^l=Gb#rxdfH`jtjW9 zl=IroFHrDP=&Fiuaoo*s#a~;@838j#_~Z9}WP=oQS5l2ZpHp9K^YIC%UI$MXy?20c#ApVuG|1RP%3?_Ro)I zKc7IHFE*^rIELmGaojxe3FGs<-*texaW1^?d6e8ov#T~z9zGD9TVGke!zFp;w{L(D zA%k13A)~U=mvhVzp327vC*mKRf~~v=*3RErVz-OKU(Ae_oPYWJ>l|FB@vnm`8fyyYn}CSj!6J zTK%P2$bbpuQ2(xr1QXYrJ)0k@CmTh%nj`eW8a46W>$bGHOEyv${ZPf2tDU2-9KX*0 zb+et#4zjQ-o7!(>+PtRba+j`Z#2Qtcy+vY#P>tD+if?L}6iV#A@VqwB0~r`LW- z)*GI^g=sJIYGNU826wF8VVqqvDI!3I-g}@d1w=REPQgfbf68|Y=Lc1F#~fC|yP-8L zsZp%pG7;ea7L|mCEw9yf`<-pOYu92isg_!Vu0(d;j|5Zb4XqUmp1nLxc=z2UBffYE z5w2pq1K7J?sWHawyEy+S?JA7sTETFhqdsAe_WQBR5_35QMNzf#| Vi{6pkb5l3(9R)o|28c)p{te}xN4Ed~ literal 0 HcmV?d00001 diff --git a/sound/vox_fem/arrivals.ogg b/sound/vox_fem/arrivals.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bb3af84dc8c4511eb79f2725f65be7d28432f011 GIT binary patch literal 8904 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/closet.ogg b/sound/vox_fem/closet.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9e388fc46d525b7a18b3f7f4ec7b534087e4950b GIT binary patch literal 8339 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/docked.ogg b/sound/vox_fem/docked.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1b7e84953741d1dc86d6f164901c56f53f0fda4c GIT binary patch literal 7558 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/docking.ogg b/sound/vox_fem/docking.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2d7e2edd6faaeff7f0155a8e1930726073827c51 GIT binary patch literal 7961 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/docks.ogg b/sound/vox_fem/docks.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2345da5f4378cf595faa912620ab380e5fc35e2b GIT binary patch literal 7592 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 VwI!}{&fvmlVr%uAKnxqe|8HAYJjnn6 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/emag.ogg b/sound/vox_fem/emag.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4a3b3786f8cceaa1d82670043ebbecbf6b112548 GIT binary patch literal 7836 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/hallway.ogg b/sound/vox_fem/hallway.ogg new file mode 100644 index 0000000000000000000000000000000000000000..307becd533d9a181b01d3270880df2246007c876 GIT binary patch literal 8420 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 Xk#ycFH~J70WuKd+*vRWEL^J#^yq(do literal 0 HcmV?d00001 diff --git a/sound/vox_fem/imminent.ogg b/sound/vox_fem/imminent.ogg new file mode 100644 index 0000000000000000000000000000000000000000..87f40306ee89cf4e614c4e378e9cf554b26552ed GIT binary patch literal 8306 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/pod.ogg b/sound/vox_fem/pod.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0c26d50977b23bf48ccd5cd1209706a68713dcda GIT binary patch literal 6861 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/sequencer.ogg b/sound/vox_fem/sequencer.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6fb668d8985943c0844d41ede176c6e5a3f7880c GIT binary patch literal 9823 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/sword.ogg b/sound/vox_fem/sword.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5f8891db78a7929c2ba09f5848a78b433df34b48 GIT binary patch literal 7666 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/technology.ogg b/sound/vox_fem/technology.ogg new file mode 100644 index 0000000000000000000000000000000000000000..60602a4294bc5f0a9383bcd1f553b0e14302bc13 GIT binary patch literal 9863 zcmch5cQ{;MwCK@dl!zWZBOzwgj39a#qKuj$$|%7QT`)tmAX-F=GD@^)Ll9Ai5Jc}p zCxj4D5(!C^M2Wm3zx%uQ-S@rke($fhzkT*u=d8WfUTv?n&oOXxGy=$h|7iUpAv&kv z(vrIx86TPNU2i*Q-02IlQ03Db0EE8!=Uz%?a7y`~?Ua%Xd>VGDwPH~E^S`xjihtOM zfmkzVPbYB$Z%3$`vz^Ib=1^^@P(UqOzDK&31FP9+AA{_FFq(J^I3+0J zF*Wqo7F*B86>^vkd2K*JXcg)>d<$jgVte1I`9a@EiReE`6y;>D_&#Hv%xGdL!27IM~{3N!`) z0q1E&6=}r~%@Xc7=UxsdfMpg4m)AHC)QAq&Y&MDiCD#G~!<($#o~+b=>FfajVgrjQ zluh_(mP|CyrH+VtP7Z_u03|q&UbC82@4LX8ABt~w{?Go;vQPj3!eI6s6#u#a!q3I2 zmV;)tq-96)Fsbn(N7PD*;Y;vHLF~BEb5#g`(6-Xg#lY=evR2U_^p*zyV%FKx@H^GwfpEy*#)f zL@zX)UUDNZMPI(ZC|O^AK%g)I?FuKc8tGQAvSTYq)7iL6RX8>d(Zlgy!==Aw02O9D z!)c!g3K+rqm#H_%kLMq?K;-Er;JJYo(DWA2Ocv-*7S&Es9IQRyh)1^OdF&^-CFbDE=nT8V$=vqyY?r+|(Dtp>Kxg1>GPFi$IX&Mi50c3D|WacNnZ zOJ=e2|J=#*`O5)-1^{?_y?8XeczV4~wfbveC{{NG z@i8)W|JMoNl+)IWQv`cIXbKQWQPiH0())kxr-mg5z~Ey{Nkr*an`*#&1nR7Xi&#@8 z1D|Es>B@gCMV^6EH$Fu16Z0k(C5ee>`oNM5WFN=p{P09XWYx?Z?oG>2KG1ngfI664 zdZ0aw*gnK%!Ek0ouYf)J;(9hgA9a~nWP%wgipW64CgJo^LV_u13|*;1GRjr37<4H) z4|s`2fU-~mHvu3Tp#?8uMWYZU8EPnaF9E9sU(NQ`m+Q^IGYYSB;2BUw1n&g7l58Ba zBy}o|0eLwGbOS&QUUd1RiELyl+2C^`E(QT%!ZIRh;E{&tvh0*`RqfL7WVCi^cQQII z6^E9mf%`C{h2h<1=oqmgW302-%s4t;tS8$dt|f|KCssOz!IU?4o8e-mfA-0tatPD% z@CxFzi(bXloVK%A(X^ejSkJWGFuW)GD!d{x%}%7Wd)97Hnv{V9S+Qc@zdfysTe#$DQ0%UbXrZ-ms)tELNAYQR&jT1*szl(Je zTc30}C)|^Z8)=_?7tUC*n(gvMse3kXOO9h6_pM@j$zu3MUv~ItaaJD`;2_GKSfL_beL4w#?*aRkcv_V+KK1;W3C`nYb(R z>vqN!?Vy5*B=-D33Di22P)4GD;%X>41G4Jg$cvQ#0Gl>40NNHIY3S4!13>kGP}M#; zB1Z%Y4#|%oAYt%ZaoT+u;mHUgA_0wo2$DdrJ;9i1q4P5g2^~&_XmAGDK!0P%4lWv1l3-M=GAghzXKFR@DUNQ&#LcdSJ+) zgc0Bxu86fvOe_LKz~Mc~D7T94Oba);|5zO5QazQ1b*)~TM90HPAfmB{VDy-@pAAL^ z$@mmuW^orxnhIc$ftm|;XJBHh!LWo0*8g3c1Ei>D$DYftGXq%_F=N5iI4lxMNf;1O zJZV=!+UK$GP$IIs##XO^5iUKmh}Dy01Ar?_;J&v(a>AtS1p!8|c5!raU>UiH+29rp zC*Vf3`?JBsj{-vjsRhUBBT-@wBdS`ZBtsOcqMIG1T}oo70|1yOSh}iIjqJQa|0a{a z8yJN+laJ7VuS2DJVBM$A?#WIugoEL1C<%s(A!;of$B3fgC!kR%{s=V43f!>dryH1C zN|2oz6zIl30%5bSj_}jw5J%7grG?WsU13Bnow%GHlfcc!39dl*#%lyreCc$8>tN&5 zqO+b-0}m*W0w|C|6(j9ga~j|yn8-m1GH@fDksPPBoE{x_TH0g4au4cuiU3Ouhya5z z87%h^jHr!M`QSu6h{z|P<=3I0eDEAlTsV;cR%F`KT;<04Hrqzv*=S-apuz`+I6ZPi z+quGaNDd-4HG8Fphd{841$PBHwozk9RSVvervQVKINZMFL=Z5sa?~m4Sn2h}aL|;Q z;Uh{@CZ{Ph+wM8|4hL?Sd+lVvmo|;0VH%CF|5O5UYP=CnA_s0rZaoeihX5@YgXjSd zDXQHZ*bzBuek_Q9MkJmh7?B&U5w3^{`r_PL^003H57|{;&g&=safaj!uo=OTwqdtNA z6-5Ik5ESI^z)L_QL3e?U`*)E47aEX*6H`tR>Lc3l(*T4MPaXX4ynmtpJly;b1|bJt za`OOCX18ox!B5XUrC$Dx2k>B*$BIipLEwZ$^s|hD1SA|@ghtUaVMnw-^MIuY%uWMx z5MmJlDa`LPqDn0onTV$0Pfd{DfDsJQ!h(cxIT$g56@`MQCL*;;@dPwXF!gkDDjKCF zn97Kv%_%ZQ(Uuk&qaiu?M5K^lQ8M_LLI7!r1QbdTk46f^iQvvHB`~72;6#0}<`uCb zVf>Mxx`M=HaL=V0BWXYh(6D@v3#fB48a&A_{ms-6`Tl1$5N^Gf-vCyw8fE}IiKr0p z)6ON@7a@onPlV3Gd!VEu(N0FA3&Pztg;0}a7fIOk0r_FCyy$mR-sB2LH zk7#1XBgG;7VR$C{?`@GR*K%JjM=-embJ$`8zL5cmh5!@O*w8IAOB;J9H&47@P$~wCr4nu)9AJ49mUH~>@=cuY>fUs2RC~AclxuVOLPSymCiK5)#m~wDi~lihbrWA z=>faJ0Fe07eRz%eVR`%YM{IdrJNU=;1BYa+zm9OM!Ld)Ni(b`Rv2EFj|CH8xoOYe! zVgn{Y@BWZXq&t2Jd#SL^^kpCGu@>Su#_EL#wqccC_`_l`|CYga{Hu$fWv;ZRr|RQ7 zXSU2lzf)Uh9KO{ev^_AdmUQi)(K)F)S5wlg_$YvU{&iv-Y|OrC<4aNLY9KEgowQ0| ztl;8hw=Q`$qL1t=;a!Pf&e=BeY9rgIlk(+HDcc=eVx-j2-4YQ2X+@)5m$#S?-}|}E z9)#3WfQt;C0NLS1B*KIFjyB^lHByeoH8G~M2`fI&w=;4L2ds+?j&!c&g*q0Q?ec4k z-K7}tb*u>RjlLi;@X5)6Co(_#VBz(SmvveZPgZATRPA1cZt5gunB&*EAXlE?>)-;1 z5P(6;@+skC_86xBXKEg?b0;FLEq7X~o0l)8XRshQ@Zb}KqNENT zE~;#u%cpE&>i_#4@u*m4vZ>%?c`cX3lNBZzSU!_JVHkS#scs5g)u@$|89ny%^p{U^Ar5|XAB?k$jSpyld=kPeLQ)5h-@sIF zI9OOf;{nP-YQ)n6Rsg61hC9fwISAfPxOms&!_jc&ynzJ0LE5y3xc(cj=Llr;gUG2*kXsM%R^spXA2aoO{j8HZ$I2fv1O^OWTrpnSEih|ofKbk^X*y~rl0*@ z{qBuuS7~59x~T#%Ayj^>1;ZpE-e5xLjSK>z!(Q5F~ zt)Fcw_2YkfxvDgO-hY>s=(G8Lo`n`rDa1W5o;Q3Xb9cGsKs8y>!o`z5Y3B9AhsD&_ zX;61KvB`SDiAsLD{w6VGtlctUUwmwUX>t>42GK@3mBi-T^VpKFw%J{obDU4VF06Mq zJEjzJ(ueIjX}RdJFwb2h`SC=h;b1|gw<{vSFF&`O?<$H)vunS0E6+cc{&CyRFIfIc zL>Myh*ew~ygUldf8J;9>iC6tV_Qj2x%U@s~xFDagNe1u%Hq=m*|6AIH)+w%F8RzeJ z1EuCH6fTi|;~C-$L;k#{w)id|tw3!SVV9P~#nGekq(WKg=3UMorOw@~(sv(aj*+g^ zv7ZsD3S%f;wq9+SNS66tI@hlt|GpVJ$m1cPeQR@aJ?n3dG_IevI(B++JL_qr#!jw55Nl=G`-{a| zb>^`=EFxvH?2^se%gKxi%^CO5B2^86fDIPwmWGy%2VT1ys-4wjBV(ZNn#x&su5je= z!R8;jn4DSi|JZU@L?Qq#5&eCagb=8%!YNi>z3K*~3l#RToGyI8J__W@N6@3y9&FS$ zY=%*~R8aKw4>I6pj?lOxt-41v2FE{k9vR51<1uMGTGE0wFVu;TrwjOF;WmlxHy|cP zn)eVz9m6rId>sx1ReKr#v^BR{H$|O(rh$qY%vbhZiK};!>oyA|C7FU*<`;h!nSKq# ze>Re;OtXC%y!XQeY1c+>Ei6FA_~=YK_oSuOWu`WALMh`Toj$hi*Yfu=(;wW$S0x`A zuq2-?Ww`oosW3I+gCEwcCOzb_vcX7ExpCZlhktW{8v0^ zY~S~;O1X!~ef@+M@!NG!dSx#W=`u(R@jMA}8oiiPd0WFjJ=-yNZ3JcTuroA)O1TLu z%@_&XSv+eI#hGku3t;B_ko}?GPO^v(Fq0?ZGC?i1Z5LMUpk;oD4xiYJ6+8AA68puS z3&6A%mTiDtTj38(l486sTFE@%rYR=T?D2%B;nFjyzE8=1w))e`zA#@(+=ntuHas-`fmYOt?bCcjsRNipUZaAl^sg`rrS~3>mTAW zBq@|jJDFq+q4>^R7 zD?1U=&vPT*Q+r(?u?&-?JTd+;gL@^)7vo`dQUe_`dnIwzHo*VDi>1~tlG?EUUR6&j zeLm{9m4~oc!-e=8qniWa9y;@@UUr?Y8gzwTePzffopY<~vE1SQYz*wrS%@-5lD|~# zlp3-CJjsl6q%&-exTZI6n6}Iol%&_TGF-p5Y0}ZxKJG-n@=og>mBj<5P9K^6@PUM7 zx-ds-?W%Zlo$!TqMAk>qAFmY9=eTH7H8A6G^Lnn)ZB#$seZ5n)vwQYqvH06J(m98f z);Q8c!+^Hjxg0aYXZ7*%qQaFvsT2`%qN-KCjt`2RWi8)&_%f_RdE?w4bHvVP)n-QY z_(Y5!lq{)6-P*xVfA8A%;vHYTFubNjFOzh=?&Ov7*_)E_6n9Z0QVzT8m+lnF$Y>T_ z9lKVWLs#|Kl7st_bVt^UL3;(nluorxXk}U4r^-XKt$V(|Z+G&rHz+S(Z%u3A;|~r> z*?ZH}c@QCPpZev)C10PyD`}UMuf-!q@}-vIB5AHxQ@q`iNFs;rZt^?}sa!weSrKwi z{45Y1sr_EJXqYZ@Acb9B5(wt<7(FPalJ!2MV6ZW^Ldsl}KmM_zZm>NipSAXq{pbe% zlFK)zx&`{fy{~i62R_gml5;*k%GyQV_7loOJ8P+Guoo(iqKAD>^Pk9tf zo46RCu~r#wPN9+)>bqAfloPJiu+kE=vmSoTob>i6AX=~PiRkSuncDH1Iw7}9p~r*j zzYa2G__kxurWcELUgi`bA+@PF&$at~xh1VR|FqEdVc!u^vA@~x%@d{^H_Yd6nlDR>LjaSOIj_h}hCl!9)B zbqkG34|CpOxs;#Cr!KQe*6U+xBu>2#OH)h~o^Qp@3|lF)d?`x`Oc|8J4x>N5qcqKb zdWW8x4LJF{WBEO1xy|;qd836EgrT>MMKGoC1!k=zwLkE^#qE;MgDWO8{*TkQ?LYHD1D?XCa=*}$Ti;Gs?si-7wuOIfZ(Yw||?FFCn zsnd3vMK9)lj^$AIrG5G4nzs_SO6<3GDx39WIaPmt#a|cSx1K-ovh?TQ<2re^Ua@EK zFu=Xsj&|OSxju8PJol!RWNET| zfjJ|d9Fco0z9hXrbAGd}eIql-U6_P2tTO1GjKjtXhag}11ccK2OjVNURSRX_3p~J` zbW4Wdx!%2(zDG}1FIN~CZ0k4Ie0<%sJoR~Ojxj-4QgTf6gz4t=r-a$2Yg<#iZQ-o>R$+#|2!sOlsucbu({-=i>CfutPXZkJSx?U8x9Wc|2=zL2TG z_{NEVfc!Gtk$HW{H| zs=4Tv@PS6P-jzk~d1&dF_bnF&dp32(M+@vhN?0>}tTTCNSW=a2@t>3D&fIe(iv$JD zkgeF37T;@M+nvmEgI>^W8i~*-n_GI#j=bxu+`nN=4;$X?9RV8hCsLP}JMY>x1)lo2b1`h#<&WaD7e4%uSk>Mrpi(DE@NdSxAChkVkIw` zBq@2t)*Bq_V$v%>IVYTRy4I zutbN@ALPTwb=3wZhAe4{Vjc~waTY%oPKKECCYX+9ZainCk#G%r8cVOgwg44(tWQBv z^E&n#{?xg-)dbaiS${Ji@qC8!?(f6HTDBGSz|#G(bj3`S3f#fuCmcNhPyqJB`A&qV z@*R8>0K=DX@>T4H1-aJ3ZBx^xEw4&D8TNSn_|%!t(vKT5ld^v@%%q~*`4S1v6%kvqL~`F-T3)6p$pML?Xoi#v zqwYe~hlgK^^JbMPO4g$aKao4(Y=~9~Fd%;V4D{M-zLV@x-Nnh)=|~r$?%7A3AtfDX z-CdKy>6bDe3#}Gd+~sRelgPg?RyeB1a6!7rIll((H)^jEWRA1 zm(L~i5n1+-SJ8M+qYLFk4z zFJyc%VgCgHQY<7xGFVQW@{#6@{Ppzv^Oc`%hkn)%_t(GF6{^E19%;=>owHk4W3akU zin1tfY7kys4DnQFX18m(a^Y~vG$!8i;Y}VTSuq#aD#5ZKgP#Xs=FK7Q5$4Z4*Xm!+ z*yWONOsp*3BGQ#77Z1zIsQwD zsBewM2!gb1h zFT5Ai`}O9!_s$h!{3=j>aElkP`mjK={mmU}w8NP05qaOm{++C2GrcRge2;r^SvV3SNqjrNeCUS~1%lfPHXZ+n-r;#1Y zQL7@_^tN-TJ&tYO=BWewkPrHwP0P|9r~VzYaXn z{R_HT&qqDxz(g(7YSwIyQ;=;8C#$)D5E1U)3Lye(1UGE z+fBb6o5c%0n;0K_<2#U{9grMqKGpTPKpJtzt2sW(>2VtUCSG(5m*DrB{m(C{hwQou z4+>@8VQo+p@sPBf9gjg)gGezzby(XlN|Sk}J$s zuyLn!VD&l+ZwP)wY5w6*pPq=CfWmt5jOr%~jm}4UR@D;Z11d>`4~?FmeGHVJL>(1t zY(*Nx*3Oq-c3%CaCba&@lk{-4tfsKHrb$D>NMWDr$)kLkKGHRDUS<*&b2+ai|LyJ&}+ z{DF#P9b=SzE6rbM2|6lx)$KYv@AaVS*!wT@i}X^q%F$6*-Dx2)5*iAZ!@N9SH83jWyi(0%hO)nOIr^X z@trs9`Dp*A_mY_OQ@u~o1eJc2=$^I$#hdsqa+;)G`FFO(2);mlGGetM8nAkQfUUlX}n^k=Kv8P{9L zvbH-Uj^TDH6UsNhm%a^acYL+e{j@kOZ~y*ahoEQl`oPZlz!%ZZ@2={l8s4CkKP%JP zkcz7hf5ECNwC80n1RnJHEA*RoTuA89fHOSTwkNZmMIEX5bA)p1uYV+`HPjne zqiNp_h;-U*CA$`*`fHYhR#2#f!aONoEvgDnAuneiJ)y3?FEz(57q}dRqvZIr<|k#F ztxC$nHs&lU$-juU;YyVtht90UEx6+X#>*GC^A#JECQ4j+tumMRVMAJPImvSG(JFW@8oBX8{Vfmb1;}kEnkW1JGNi2d&?X3Y{ow^O)IcNk#$Q*zo%7x zl}8h1nx8tU$imzLPuXIz50F%nYIzbKCAFV`lo>8X28w&6YQAyd>1q(UQu)fZI(*bV_miuFZ2p*7 zTDc3W`5>o)=VrPTZ%d@#4cISK@_pf9QnMnyhTnHsls_Xb9@heUKHouSyDNX8SEsSq z5kGJFDyVX5|GPl%LhtvK)I(p{!ARFg7Vo05d$$@LR4s}I`cNq9*7e3z@DKi2eRo8= zTozeqJ?(2&;?naCRzLG*g64j-hxD}Vl^|c*@lQ;ZUr`fw4S^E#A7qqjnh9jqr7vuw zbm%5W7~_a!U#_LA31F6O}b_y91*I{Gio%ZXNp;G4zt8F)-&(D)0kT$-Bj)a`L?4o0xIG>p1}VCmtKy; literal 0 HcmV?d00001 diff --git a/sound/vox_fem/teleport.ogg b/sound/vox_fem/teleport.ogg new file mode 100644 index 0000000000000000000000000000000000000000..67270957d52325bbdc20f0c3701d8d280e8abe3b GIT binary patch literal 9128 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/teleporter.ogg b/sound/vox_fem/teleporter.ogg new file mode 100644 index 0000000000000000000000000000000000000000..29ff68f82fc87d0f447397f22e8ac534c96076bf GIT binary patch literal 9325 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/teleporting.ogg b/sound/vox_fem/teleporting.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1fd6e81ac84238c7a24d1896c30222a96f379c32 GIT binary patch literal 9586 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/tesla.ogg b/sound/vox_fem/tesla.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d45cc8c02e3a89f06f6a2d5678bb2d3d215ce075 GIT binary patch literal 7797 zcmch6c{o&W*zg&|SdujMZIo?+5HfbMjIlP^nz2i0Y^6x{ zHTzOhvZPSB?P<^7BnkzsC5eBjT&9!(cO24QfvSQ z0aeu2GQdP}i9&cNXxrz%3~f*#xfoD41<41S*(oD-pS(XLGT84!SCLEn zghvc6;H~K2XK+S*ncmTi|rV)F$Qwk~>=>n5A z@GpXc(1Mg*&#h%C=vyKWx`7hh+XzzZn*!9a1s=(R2IqhSf=b33BZ{(I;t`#qgg#^^ zoXDlJoS$Z)*-a%`X!b}wOu~92=rAj@>IHs$C4HPisM15=6OkQ)|7$q5Zw63d9#$dO z6i~oO*gn$$ke}#ZwLm0e6NnmOrHlfkj7U=5Bn6W+?cQ2OHy<@H=d&5J@txT5y|m-| zZp`i7j@!(b+rtNVU-fVnAUx?KXmzj~CsB<#_MMXg0eFD$hZ^zo z#-Klvr0q#Eo*5puGKz2Il*EbePXQeRS`BRBh5K%kvd<{;%q?a(yR0m}sI;uiE2qfw zf9^~LlH~xv4gg}E{-Q?yqMiN>t@bSpX9nN^pnqP}FhHS`q-qN4IASok<#=BGx|OZ( zzfJ(BFj^-;8|>YnDL^1i+hj!5{Qt2t49f(7!N-%9g0ZN!J&Wj&dg3Hcg{6%Kmt?t^ zX|9%{SrKfFF&If&{>ZEfEd|RJT%3jO5?m=DrXZspPfQaAn|H-Q=N$$Nz}(US@8H3A zA!VeAyvR-|SM1Rx3fTf9L!(~6^-&|UFbSyy3yiFE8WzV{>PEtNOBaDIWfBE{3Xz~J zEWmjHh(#JBs4y%BS)8ShL3EPw#)t(G`v1OFBVLg*lA_;3!+D^hIrW3H5?1<~U zSb0Rd9X4K(YK`|)oEXO5Q|zEPBsNErT@*{laJcfub~{3X+HMyL^ME|AiKwKFdzn{` zO`CWsQpa696+6aV`Vk$JlZeWw4431j?UOFOYV<4u$O?uZM0DhOS2T7~h{}~?6kIQ= zJuA4cdMS%=h(sWRtgd5mrj=tkxN^0$VVq}WM+z>1v3LT~1B+8AZMVb4BipkG35pX# zxJTd`Rtcz19FbJLGl+fdE60RsNjd~rD@5m(# zv`)Su@>DKRyuRqPPX@1{1ZN0eE63*?`VG4%#G%H$qG08-W7EVwIy9TWqq%%E@N4%? zvX@fjf+Oy;&bV+$KMML9w}$ALwMuB7$i4r#nN1Sc3$h}{BlmI$%9=|q)|IWGf+=+V zg5VRFB{;c^&X(@Apw*bQRx==L1NDKm65J^VM zA#4&&y0VBQq%4h$#X+U%px3hTSd~s{Bri^0`Ux+_vy?oHlcUiyaES;yzdoWg3X3~V zdy;`GL((tcUuBW|PzaC$gQ!f$;>tzSNJzO-VhRR>T{Sq^Si4 z8K}8*dloLC8VpN0>AL;J1wo2Be*B?=Cw3q!DlZ;fP0%5!l#T-tMWZg2^c_)$t2#7( z?}X|_Fv8U)X7T1IJ^)aj1NZ%9w2+*tt2Dp^)-J&|K|GHzjRI~_BAGB?(oF#qKL!j9 zv@wEUfyOAh4d@w{(k(HV%65K?NhzJ569D9{fu-xQo|TJ#_mY78ffd|7bNycI@l95=D6}VxU7#mnbRhpj-6v*(eKzPc@ z0ZEPrv;nMC>BI5!-f}cy)5HfI7lJ=GjtB?)Hl8A5?v;)wdG|Js&3c;a)Qf@wX@LT1 zJ?7y!XwMFO1QR(ZK^9>^C`yn~%ek^x6gS11L60Jcxit zrZ5mZ=w%9+7NL@X3`8W4=2AYWEEH6NQL+DTN@##pWWSdG{~th6LBIU>K^Ew$e+g;% z)7l|)fi%EjMC4>RGm;qqIP~ObE}$=@!Gi_jK^o|(R3aAh3EZz3b})fpp!8ELGxdz2Zf-eF%Sj=CJ06VB4`W;|2ywr=)Vp(|ARr8fCdp!0M6?}ahCp6aZR;h zKOVq?T|SJEgn=T+DcF*%!Xz{TLB(P?4&w(*Rz$&41ZJlm6qH6Kqva*959qN;N2Ord zCDW5Mm*vQoSb1skFiMUV3BzCz=_zRA(m*m+PCA`2IUS2JmQLrva6F(|V>n8w)>!C+ zz!bEsG?fJ2rjbEf8X1F;4#cA65j1e;mXdie#t51PSo5ebw47uVsID}P1n#+XYcxA3 z0amU6tIv)6NEQ^pKnsX2+A`_-J(lMi>qk)s+WGMz>(v6_u>i^hutc%| zf^fMk2*An)J;uf)24Ug$1;Xz_v)Q>g3R?AK0Bv0Z;{!k(d;D;e5>zrG@UZK*mZ&4A zavR=9a{K;0Z1DhJAwY^HaQN`+J{vp7%dS^^t_9u<2?u#I8Wact0I8$81_r7GK7Ii~ zAz=|wF>wjFB;&1Tzv=4g?qA{HsH^+;^(b6>{}I4=Jz^X%Ays*vM|A?ceZ4}x-LI13 zdyc36q&s)LO?vqcYDvRLSO@o;EB1{SDrjiFwx4@u z=hnO!Yj0ZhuadM&*-8`XW)2O`51CQX@jpj`=O4woUyV31%wGOtZj!vm>@@k~D?1>1 z6V>2rE)}^}{pXi$Tx;&vpM0$rK+>0h7e_TaPpxDqX=@qZ<@p7wn{p~+m5=(9-J=LgRUK$SXe$-2=RkIFGdp%c+ z-~I`CKGAgVHvo)|$x6=z!FRGXhx>h5GekCG3a=Xt>xbhn+qs>;Hk+8waP4>=dQnzln@rQ*MaFnK)2&Reju)#!NsnhOc4)&tJhs_ATO7jo90l|4J%V_MuF zacB{dwN>-3Ls)geqgrYHNsG)*j=w?ROioPK@$|NHjhrcY(Q9Z&Q3)%7SphDOOG3Fn z@~r%Gu=L!^pFhdsW}!-+-`0G;%A4#-?uqIOLw*%$rEL5I;{?JFlrZz}*<&|+;-5`* zbmpkl=RM*UFfE@6-gqf{>*t#<*-}SGMU6bEQ5QyhOAPMU zU%T~{IHc_$zs-XRZD+$0%Ognk>P7JHdOLH-1^ZHnLT}u$sn0Dy#eoWLQM&+vaQJnX zAD+dl`jl5W(?WTxZ|}E1^RRl&#j1B(kc68M#ID{^OK!6~F7p2A4=-W+SMezA`MWnY zC&%YUWKW2De|hoo>#xAeP+dvmP}TRMT9HEV*L?~tz7#3(mVr7*(=wS&_tx@dAwSMJ z*yCZ%@Z)2{J#B*%(e+0ZD4d;BWq(%7k32jkNsl}CXVoa^!}ze*&tNAfk)RVbSjB;w zJ1pG6kIQSQE$XiFc4k5J`-VvKXbCrgw)>`)F$)%}AH^P|O}7da9CX;`R?Dct|Lmcr zrB7_Bro>deH@?bue>Chj>0y*#z49~kbFZKnbU_#M>8Y(F`3jm@-#;+Pi|CRc0f|o6 zuL}=``DodfD;z?m;m(b3_?|x`oQy%xU07mv;(UceD&~CK+KiuyOTL|L`~DNa74n%y z4q4w*4mo#4c-^9T)8|@$eCAC)rAPNmuSJd%HYMsfWgvaD%xZZ^G)0^i*=_qclw7b^Nb4VJ=VESJXO&S`qJMzhtKDHIQTH#h`s4639rC1k`ywX7E+Je(j7Tf}tip7$nrPw}=n1+AMQ&hx- z&8d)Y-Od?){WBlhKDYW_b#q52*2BmqYr!Oyhph$TYRVm2FgO74g>SQ2@~X1=gtE5u zPkCh5ym7qY5UOAu>!UfKY-@c!=wsvtJK3Z3lJ3|F0Pdqno^4fmY z<%}=Q3j7_U|8p)gl|_^Y+yugJKkbZoGjU}Mm{Y79+)nm_7-=3ejN7FpG>xyHi!~^@ z6MH=EVc{z3m@IEr>z$JlF#SIg5@VsRQ;pRko@-`xq3@GVtjyia-^n!ej`gSo&^z7z zKi^EFTcD@kJW=$E5LXmR$bS?Z`Vkdq=)Z3HrHi{gWuqc`K~~ZCQFh^KrnIJtL_8|c zk@g}$+MNPdPi?2gMca2u{mHLM)T z?$f>a40+G}3AKq=pUqEE$q9clptnW^7ZNh65{{UBA^Yrzkn~A!wc4398FP$+W`^a< zkK4aqf7-2WSG#lQo5p6c(*Q2!r`{pvZ<%jisD5YPXed5qaaaz3ECRXR+bmfTO#OG- z6wd>ebA0(E;;r_Gq%W5?S_@Y1f8aiFxV!&_XBM&hb#2yNey2HeW23gD&`Om>TKem$ z0d3X7$_vw8{LQ_S;bp>vN6$v9R&1c^_FFkk$8J|sX%?8a?7VYa$M1a)xL9N}8jGK@ zvw(lQ;yeQL4ACnw& z+d0bb&*tx|s$oC1Mz-erFbVRXCqu(Lv|m-X8x{{NqB>=@c*_%U!aq)jRW;Qo@!x@c zgc}1a=@+4YK7I~VTDYa};d)joCFte1kl!K7dI;Ivjnw*^+h>1dMxNW&*n5dNdi#?5 z^#$MDWCd!zh}3BZ8%TaSRI?#(_3Gy*Ot@Y{*{Z%^&AvFo?kfk|VsF2<*V`g>CLAi~ zR6G%G@42GSe%KvoeKm10ebU3>x3`wGwuzeE(Cy@VH1^ zi(Nu*x)QI@`)w($mAvLmM2j2WAxhJF=i=?`0Gttz=#Y2qt$&)5ZTVqOEwcHCAh}-Y zth#mK?m@)i1beAGrXl8O>9e*M*(X+>^xIa5(8Q`R_3=Spq{%c)#@L!k7w0*_#*ciOk(-x0HA{C1Ui*T*({LHoNmE*SY@bt<2$8ntD zvZfb+<;Us23Uky))`r$L5P8>6tP7dd&>Fq6aaLTN&}q>{b-Ri|y3}*W&ly~3-bGAi1 zh=$*5OZ=HWRr0XjfWO@)mu6zQr(D_QX#9LFT(xDYkpUPp_^WK;8c}p*hI=xXil0KSs_C z82soJwmG|7J)wC?M*EsvrfgJ_2i1DyB+-H7%P*6sA&k*XvkRv~6VjJWvc zdEWe3=G6PuZ%>CCyk~lB66B$^v1#)3gJbndVBOovfo^99Ukfdx!Z>x(qsMCbsIiw0 z%QH+iB$WtToN*)cvdPM;=B4UOfwH^zHHn!)odfpG_6eexbh;piG+v2`&Uet&&loPE zgl8>$)o<8;0%!bbw|y(^&go0B_1Sx#=Tj99Ja0+^-#V`LeM-s!U{^M9*HF-(yJswH z>ng@lDVo*gaf)X+%l-2D-6e`9zE>gdm)i#Xv1y>b===4&&6Q$}PCVB+__!dcH1h_*&q%;g==+YjMtW{I}&Fo)=9$?(h{3G~Bt3dxrg{R*mTq?Ca-myK%s& zYy`$a6O4V6I9PT-*)prHbE>a(*TvzJjqb=J2ZgQQX1-->6UKWlvyw?kLWF1IHfi(6 zKUc{~LMPAp{x z8SQ&(k-n4yNnQNOiQ&G{Gvf-Myt2ExdvnHx)jq4bY8%>?;Hux)%!ofXVdet3nN9`v zygs0N1UqwNL&J45)R(rhd45w-p~jn7rY@x9cLrB+lK0V>$t9BP&W+_()VqUEb)@FC z^g#atQ`dTe!~Q_JP;kXfr!NgsyJBQa75 z(NHy8SRCn9FPi<1H9H=U!5aMtP^@=3Vp48YBX)gSGwkcINl)Bs<#eZk(e|TtHc){b z;Y(e(mGAx##Z<}VMsu0xl_s8QAAdOcI9QoN1Ag;Ps=0CsZPy&3&_r&~rN?~U?I!K5 zTveOCQ|038a5H%gepJM*|F$1Cy~Eb}X%L6_P4wi^8W>OW84j%1b-7ngh^}s&e!HjovPwfPQ{9j?L~Kd8lvv@+J+8X6thVl%dHZ8 z$>p^7y#uQ2Z*T*MS5MQ9ptRWiXnD1I?7VcAv%smBECzIswSaRcC6&8J&LHbfJaL{` zWR3`ZC~K(~E64mM-o1Hz~SB>)O(_T4L zefo}J-v3I$^6#I!jIR{nhcEy`mVFArIZb{)90sHs$~g!7bX0u!C9rz}FiV^=i)Qsz zS2{5aXRd`6v7fuly19wjf;&7jo1c$fD~|SZWL=XuFT$00kD2vUmq6AB&k)D64QiFv Q8>2I;>5E@qMzk^g2ObiabN~PV literal 0 HcmV?d00001 diff --git a/sound/vox_fem/tool.ogg b/sound/vox_fem/tool.ogg new file mode 100644 index 0000000000000000000000000000000000000000..07075884a1afce3ae8a1fff7d2921dfd3c5f5024 GIT binary patch literal 6981 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 QI=0@}NKF18tDkrO2G%YIY5)KL literal 0 HcmV?d00001 diff --git a/sound/vox_fem/vault.ogg b/sound/vox_fem/vault.ogg new file mode 100644 index 0000000000000000000000000000000000000000..55fe3b6beb759631d8c31e9e9333cb9ac5b4e739 GIT binary patch literal 7403 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 Date: Mon, 30 May 2016 09:25:38 -0400 Subject: [PATCH 019/260] Adds species words --- code/defines/vox_sounds.dm | 6 ++++++ sound/vox_fem/diona.ogg | Bin 0 -> 8947 bytes sound/vox_fem/drask.ogg | Bin 0 -> 8287 bytes sound/vox_fem/kida.ogg | Bin 0 -> 7471 bytes sound/vox_fem/kidan.ogg | Bin 0 -> 7964 bytes sound/vox_fem/skrell.ogg | Bin 0 -> 8338 bytes sound/vox_fem/vulpkanin.ogg | Bin 0 -> 9239 bytes 7 files changed, 6 insertions(+) create mode 100644 sound/vox_fem/diona.ogg create mode 100644 sound/vox_fem/drask.ogg create mode 100644 sound/vox_fem/kida.ogg create mode 100644 sound/vox_fem/kidan.ogg create mode 100644 sound/vox_fem/skrell.ogg create mode 100644 sound/vox_fem/vulpkanin.ogg diff --git a/code/defines/vox_sounds.dm b/code/defines/vox_sounds.dm index 9e36364cefc..accbf42333c 100644 --- a/code/defines/vox_sounds.dm +++ b/code/defines/vox_sounds.dm @@ -214,6 +214,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "did" = 'sound/vox_fem/did.ogg', "die" = 'sound/vox_fem/die.ogg', "dimensional" = 'sound/vox_fem/dimensional.ogg', +"diona" = 'sound/vox_fem/diona.ogg', "dirt" = 'sound/vox_fem/dirt.ogg', "disengaged" = 'sound/vox_fem/disengaged.ogg', "dish" = 'sound/vox_fem/dish.ogg', @@ -231,6 +232,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "door" = 'sound/vox_fem/door.ogg', "dorms" = 'sound/vox_fem/dorms.ogg', "down" = 'sound/vox_fem/down.ogg', +"drask" = 'sound/vox_fem/drask.ogg', "dual" = 'sound/vox_fem/dual.ogg', "duct" = 'sound/vox_fem/duct.ogg', "e" = 'sound/vox_fem/e.ogg', @@ -400,6 +402,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "juliet" = 'sound/vox_fem/juliet.ogg', "k" = 'sound/vox_fem/k.ogg', "key" = 'sound/vox_fem/key.ogg', +"kida" = 'sound/vox_fem/kida.ogg', +"kidan" = 'sound/vox_fem/kidan.ogg', "kill" = 'sound/vox_fem/kill.ogg', "killed" = 'sound/vox_fem/killed.ogg', "killing" = 'sound/vox_fem/killing.ogg', @@ -655,6 +659,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "sixteen" = 'sound/vox_fem/sixteen.ogg', "sixty" = 'sound/vox_fem/sixty.ogg', "skipjack" = 'sound/vox_fem/skipjack.ogg', +"skrell" = 'sound/vox_fem/skrell.ogg', "slime" = 'sound/vox_fem/slime.ogg', "slow" = 'sound/vox_fem/slow.ogg', "smoke" = 'sound/vox_fem/smoke.ogg', @@ -789,6 +794,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "voltage" = 'sound/vox_fem/voltage.ogg', "vox" = 'sound/vox_fem/vox.ogg', "vox_login" = 'sound/vox_fem/vox_login.ogg', +"vulpkanin" = 'sound/vox_fem/vulpkanin.ogg', "w" = 'sound/vox_fem/w.ogg', "walk" = 'sound/vox_fem/walk.ogg', "wall" = 'sound/vox_fem/wall.ogg', diff --git a/sound/vox_fem/diona.ogg b/sound/vox_fem/diona.ogg new file mode 100644 index 0000000000000000000000000000000000000000..defd627bc01f5419fcebd29e6e1611837c45e237 GIT binary patch literal 8947 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/kidan.ogg b/sound/vox_fem/kidan.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bd76447699d6d3dac4960ba261a7c22a28035a62 GIT binary patch literal 7964 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 b5C?ickkd~aUl#~i5t2_SQ_==Tn1TNVxqigI literal 0 HcmV?d00001 diff --git a/sound/vox_fem/skrell.ogg b/sound/vox_fem/skrell.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a5cb267c27e41e2c6dfa5d396816fb5e64270567 GIT binary patch literal 8338 zcmch5c{o&W*zgfDh@`;~Lbj1@EHPvovWzT^h_O_b?7|>hC1VRAhAcxSGxj}06ls|u zd-kOyWy{{8Qu=*o^#0!Wd%x?u-s}78d#>j^=RW6tp8L7?`#HzT)6)hx0Q^VOdu+nb z055H-qM1aQ!mb9pdgB-`m|}DpHvouv{P$kLWW`wdpN+AS34FplyjRJs^Uwd*Xv}}f zD1cad??5j_t6)ztKW|sNed1zfVk*iAWdzv8WNqBME{9(62nhA`^az17Xfv_?T`Ykz zv||GF0RV>Lkz=iKOVjG+6HgU

kw302 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 LuqPK!i^u;0F4lTg literal 0 HcmV?d00001 From 7f3d120d0e9a2828be92d705d40ebb17f08b25c4 Mon Sep 17 00:00:00 2001 From: monster860 Date: Mon, 30 May 2016 09:40:18 -0400 Subject: [PATCH 020/260] Fixes kida and kidan --- sound/vox_fem/kida.ogg | Bin 7471 -> 8145 bytes sound/vox_fem/kidan.ogg | Bin 7964 -> 8831 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/vox_fem/kida.ogg b/sound/vox_fem/kida.ogg index 1b0a5595102c2dbb90406f38dedb2e8feb71e5e7..e9831a06b785b6d080db52487d6dfa6980354a0a 100644 GIT binary patch delta 4812 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 delta 4132 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 diff --git a/sound/vox_fem/kidan.ogg b/sound/vox_fem/kidan.ogg index bd76447699d6d3dac4960ba261a7c22a28035a62..6a1f37750517d40ee0ec689ce605287f3a71ebaf 100644 GIT binary patch delta 5494 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 Cl)gX! From a547781fb166e02a5471d79ae3515352c1ebe3c5 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 May 2016 16:55:59 +0200 Subject: [PATCH 021/260] Fixes a grave mistake --- code/game/machinery/recycler.dm | 6 +++--- sound/machines/recycler.ogg | Bin 0 -> 17157 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 sound/machines/recycler.ogg diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 9bcf3de53a8..2db551b67fa 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -129,7 +129,7 @@ var/const/SAFETY_COOLDOWN = 100 return if(sound) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + playsound(src.loc, 'sound/machines/recycler.ogg', 100, 0) var/material_amount = materials.get_item_material_amount(I) if(!material_amount) qdel(I) @@ -155,7 +155,7 @@ var/const/SAFETY_COOLDOWN = 100 L.loc = src.loc if(issilicon(L)) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + playsound(src.loc, 'sound/machines/recycler.ogg', 100, 0) else playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) @@ -219,4 +219,4 @@ var/const/SAFETY_COOLDOWN = 100 /obj/item/weapon/paper/recycler name = "paper - 'garbage duty instructions'" - info = "

New Assignment

You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect the said trash.

There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then deliver these minerals to cargo or engineering. You are our last hope for a clean station, do not screw this up!" \ No newline at end of file + info = "

New Assignment

You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect the said trash.

There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then deliver these minerals to cargo or engineering. You are our last hope for a clean station, do not screw this up!" diff --git a/sound/machines/recycler.ogg b/sound/machines/recycler.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d4f2c88408741eddd39f7e024456e9656303ab1c GIT binary patch literal 17157 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 Date: Mon, 30 May 2016 19:35:51 +0200 Subject: [PATCH 022/260] Very well! --- code/modules/mob/living/carbon/brain/life.dm | 3 +++ code/modules/mob/living/carbon/life.dm | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 99639b8777b..63eb38e607f 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -78,3 +78,6 @@ see_in_dark = 2 see_invisible = SEE_INVISIBLE_LIVING handle_hud_icons_health() + +/mob/living/carbon/brain/breathe() + return diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 558780a4453..c26508b1374 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -41,8 +41,6 @@ return if(NO_BREATH in mutations) return // No breath mutation means no breathing. - if(istype(src, /mob/living/carbon/brain)) - return var/datum/gas_mixture/environment if(loc) From c7e1c50c70ac239321e028ddff331a0282adf554 Mon Sep 17 00:00:00 2001 From: monster860 Date: Mon, 30 May 2016 14:54:36 -0400 Subject: [PATCH 023/260] Add a shitton more words. --- code/defines/vox_sounds.dm | 28 ++++++++++++++++++++++++++++ sound/vox_fem/between.ogg | Bin 0 -> 8360 bytes sound/vox_fem/blob.ogg | Bin 0 -> 7340 bytes sound/vox_fem/chair.ogg | Bin 0 -> 6969 bytes sound/vox_fem/chapel.ogg | Bin 0 -> 8040 bytes sound/vox_fem/cyberiad.ogg | Bin 0 -> 10455 bytes sound/vox_fem/declared.ogg | Bin 0 -> 8674 bytes sound/vox_fem/gateway.ogg | Bin 0 -> 8366 bytes sound/vox_fem/hail.ogg | Bin 0 -> 7001 bytes sound/vox_fem/holoparasite.ogg | Bin 0 -> 11767 bytes sound/vox_fem/hull.ogg | Bin 0 -> 6812 bytes sound/vox_fem/mime.ogg | Bin 0 -> 6900 bytes sound/vox_fem/mimes.ogg | Bin 0 -> 7449 bytes sound/vox_fem/nuke.ogg | Bin 0 -> 6979 bytes sound/vox_fem/office.ogg | Bin 0 -> 8095 bytes sound/vox_fem/op.ogg | Bin 0 -> 6040 bytes sound/vox_fem/ops.ogg | Bin 0 -> 6753 bytes sound/vox_fem/representative.ogg | Bin 0 -> 10527 bytes sound/vox_fem/spider.ogg | Bin 0 -> 8618 bytes sound/vox_fem/spiders.ogg | Bin 0 -> 9431 bytes sound/vox_fem/still.ogg | Bin 0 -> 7696 bytes sound/vox_fem/swarmer.ogg | Bin 0 -> 8349 bytes sound/vox_fem/swarmers.ogg | Bin 0 -> 9175 bytes sound/vox_fem/unathi.ogg | Bin 0 -> 8515 bytes sound/vox_fem/vacant.ogg | Bin 0 -> 8295 bytes sound/vox_fem/window.ogg | Bin 0 -> 7308 bytes sound/vox_fem/windows.ogg | Bin 0 -> 8016 bytes sound/vox_fem/yet.ogg | Bin 0 -> 6720 bytes 28 files changed, 28 insertions(+) create mode 100644 sound/vox_fem/between.ogg create mode 100644 sound/vox_fem/blob.ogg create mode 100644 sound/vox_fem/chair.ogg create mode 100644 sound/vox_fem/chapel.ogg create mode 100644 sound/vox_fem/cyberiad.ogg create mode 100644 sound/vox_fem/declared.ogg create mode 100644 sound/vox_fem/gateway.ogg create mode 100644 sound/vox_fem/hail.ogg create mode 100644 sound/vox_fem/holoparasite.ogg create mode 100644 sound/vox_fem/hull.ogg create mode 100644 sound/vox_fem/mime.ogg create mode 100644 sound/vox_fem/mimes.ogg create mode 100644 sound/vox_fem/nuke.ogg create mode 100644 sound/vox_fem/office.ogg create mode 100644 sound/vox_fem/op.ogg create mode 100644 sound/vox_fem/ops.ogg create mode 100644 sound/vox_fem/representative.ogg create mode 100644 sound/vox_fem/spider.ogg create mode 100644 sound/vox_fem/spiders.ogg create mode 100644 sound/vox_fem/still.ogg create mode 100644 sound/vox_fem/swarmer.ogg create mode 100644 sound/vox_fem/swarmers.ogg create mode 100644 sound/vox_fem/unathi.ogg create mode 100644 sound/vox_fem/vacant.ogg create mode 100644 sound/vox_fem/window.ogg create mode 100644 sound/vox_fem/windows.ogg create mode 100644 sound/vox_fem/yet.ogg diff --git a/code/defines/vox_sounds.dm b/code/defines/vox_sounds.dm index accbf42333c..229b6380c0d 100644 --- a/code/defines/vox_sounds.dm +++ b/code/defines/vox_sounds.dm @@ -78,6 +78,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "be" = 'sound/vox_fem/be.ogg', "been" = 'sound/vox_fem/been.ogg', "before" = 'sound/vox_fem/before.ogg', +"between" = 'sound/vox_fem/between.ogg', "beyond" = 'sound/vox_fem/beyond.ogg', "biohazard" = 'sound/vox_fem/biohazard.ogg', "biological" = 'sound/vox_fem/biological.ogg', @@ -88,6 +89,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "bizwarn" = 'sound/vox_fem/bizwarn.ogg', "black" = 'sound/vox_fem/black.ogg', "blast" = 'sound/vox_fem/blast.ogg', +"blob" = 'sound/vox_fem/blob.ogg', "blocked" = 'sound/vox_fem/blocked.ogg', "bloop" = 'sound/vox_fem/bloop.ogg', "blue" = 'sound/vox_fem/blue.ogg', @@ -132,11 +134,13 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "center" = 'sound/vox_fem/center.ogg', "centi" = 'sound/vox_fem/centi.ogg', "central" = 'sound/vox_fem/central.ogg', +"chair" = 'sound/vox_fem/chair.ogg', "chamber" = 'sound/vox_fem/chamber.ogg', "changed" = 'sound/vox_fem/changed.ogg', "changeling" = 'sound/vox_fem/changeling.ogg', "changelings" = 'sound/vox_fem/changelings.ogg', "changer" = 'sound/vox_fem/changer.ogg', +"chapel" = 'sound/vox_fem/chapel.ogg', "charlie" = 'sound/vox_fem/charlie.ogg', "check" = 'sound/vox_fem/check.ogg', "checkpoint" = 'sound/vox_fem/checkpoint.ogg', @@ -182,6 +186,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "cryogenic" = 'sound/vox_fem/cryogenic.ogg', "cunt" = 'sound/vox_fem/cunt.ogg', "cunts" = 'sound/vox_fem/cunts.ogg', +"cyberiad" = 'sound/vox_fem/cyberiad.ogg', "cyborg" = 'sound/vox_fem/cyborg.ogg', "cyborgs" = 'sound/vox_fem/cyborgs.ogg', "d" = 'sound/vox_fem/d.ogg', @@ -193,6 +198,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "deactivated" = 'sound/vox_fem/deactivated.ogg', "dead" = 'sound/vox_fem/dead.ogg', "death" = 'sound/vox_fem/death.ogg', +"declared" = 'sound/vox_fem/declared.ogg', "decompression" = 'sound/vox_fem/decompression.ogg', "decontamination" = 'sound/vox_fem/decontamination.ogg', "deeoo" = 'sound/vox_fem/deeoo.ogg', @@ -320,6 +326,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "fuel" = 'sound/vox_fem/fuel.ogg', "g" = 'sound/vox_fem/g.ogg', "gas" = 'sound/vox_fem/gas.ogg', +"gateway" = 'sound/vox_fem/gateway.ogg', "get" = 'sound/vox_fem/get.ogg', "glory" = 'sound/vox_fem/glory.ogg', "go" = 'sound/vox_fem/go.ogg', @@ -342,6 +349,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "hacker" = 'sound/vox_fem/hacker.ogg', "hackers" = 'sound/vox_fem/hackers.ogg', "hacking" = 'sound/vox_fem/hacking.ogg', +"hail" = 'sound/vox_fem/hail.ogg', "hallway" = 'sound/vox_fem/hallway.ogg', "handling" = 'sound/vox_fem/handling.ogg', "hangar" = 'sound/vox_fem/hangar.ogg', @@ -363,6 +371,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "highest" = 'sound/vox_fem/highest.ogg', "hit" = 'sound/vox_fem/hit.ogg', "hole" = 'sound/vox_fem/hole.ogg', +"holoparasite" = 'sound/vox_fem/holoparasite.ogg', "hop" = 'sound/vox_fem/hop.ogg', "hos" = 'sound/vox_fem/hos.ogg', "hostile" = 'sound/vox_fem/hostile.ogg', @@ -370,6 +379,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "hotel" = 'sound/vox_fem/hotel.ogg', "hour" = 'sound/vox_fem/hour.ogg', "hours" = 'sound/vox_fem/hours.ogg', +"hull" = 'sound/vox_fem/hull.ogg', "human" = 'sound/vox_fem/human.ogg', "humans" = 'sound/vox_fem/humans.ogg', "hundred" = 'sound/vox_fem/hundred.ogg', @@ -471,6 +481,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "military" = 'sound/vox_fem/military.ogg', "milli" = 'sound/vox_fem/milli.ogg', "million" = 'sound/vox_fem/million.ogg', +"mime" = 'sound/vox_fem/mime.ogg', +"mimes" = 'sound/vox_fem/mimes.ogg', "minefield" = 'sound/vox_fem/minefield.ogg', "minimum" = 'sound/vox_fem/minimum.ogg', "minus" = 'sound/vox_fem/minus.ogg', @@ -503,20 +515,24 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "not" = 'sound/vox_fem/not.ogg', "november" = 'sound/vox_fem/november.ogg', "now" = 'sound/vox_fem/now.ogg', +"nuke" = 'sound/vox_fem/nuke.ogg', "number" = 'sound/vox_fem/number.ogg', "o" = 'sound/vox_fem/o.ogg', "objective" = 'sound/vox_fem/objective.ogg', "observation" = 'sound/vox_fem/observation.ogg', "obtain" = 'sound/vox_fem/obtain.ogg', "of" = 'sound/vox_fem/of.ogg', +"office" = 'sound/vox_fem/office.ogg', "officer" = 'sound/vox_fem/officer.ogg', "ok" = 'sound/vox_fem/ok.ogg', "on" = 'sound/vox_fem/on.ogg', "one" = 'sound/vox_fem/one.ogg', +"op" = 'sound/vox_fem/op.ogg', "open" = 'sound/vox_fem/open.ogg', "operating" = 'sound/vox_fem/operating.ogg', "operations" = 'sound/vox_fem/operations.ogg', "operative" = 'sound/vox_fem/operative.ogg', +"ops" = 'sound/vox_fem/ops.ogg', "option" = 'sound/vox_fem/option.ogg', "or" = 'sound/vox_fem/or.ogg', "order" = 'sound/vox_fem/order.ogg', @@ -589,6 +605,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "repair" = 'sound/vox_fem/repair.ogg', "report" = 'sound/vox_fem/report.ogg', "reports" = 'sound/vox_fem/reports.ogg', +"representative" = 'sound/vox_fem/representative.ogg', "request" = 'sound/vox_fem/request.ogg', "requested" = 'sound/vox_fem/requested.ogg', "required" = 'sound/vox_fem/required.ogg', @@ -673,6 +690,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "sorry" = 'sound/vox_fem/sorry.ogg', "south" = 'sound/vox_fem/south.ogg', "space" = 'sound/vox_fem/space.ogg', +"spider" = 'sound/vox_fem/spider.ogg', +"spiders" = 'sound/vox_fem/spiders.ogg', "squad" = 'sound/vox_fem/squad.ogg', "square" = 'sound/vox_fem/square.ogg', "ss13" = 'sound/vox_fem/ss13.ogg', @@ -683,6 +702,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "status" = 'sound/vox_fem/status.ogg', "sterile" = 'sound/vox_fem/sterile.ogg', "sterilization" = 'sound/vox_fem/sterilization.ogg', +"still" = 'sound/vox_fem/still.ogg', "storage" = 'sound/vox_fem/storage.ogg', "stuck" = 'sound/vox_fem/stuck.ogg', "sub" = 'sound/vox_fem/sub.ogg', @@ -698,6 +718,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "surrender" = 'sound/vox_fem/surrender.ogg', "surround" = 'sound/vox_fem/surround.ogg', "surrounded" = 'sound/vox_fem/surrounded.ogg', +"swarmer" = 'sound/vox_fem/swarmer.ogg', +"swarmers" = 'sound/vox_fem/swarmers.ogg', "switch" = 'sound/vox_fem/switch.ogg', "sword" = 'sound/vox_fem/sword.ogg', "syndicate" = 'sound/vox_fem/syndicate.ogg', @@ -742,6 +764,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "tide" = 'sound/vox_fem/tide.ogg', "time" = 'sound/vox_fem/time.ogg', "to" = 'sound/vox_fem/to.ogg', +"tool" = 'sound/vox_fem/tool.ogg', "top" = 'sound/vox_fem/top.ogg', "topside" = 'sound/vox_fem/topside.ogg', "touch" = 'sound/vox_fem/touch.ogg', @@ -761,6 +784,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "twenty" = 'sound/vox_fem/twenty.ogg', "two" = 'sound/vox_fem/two.ogg', "u" = 'sound/vox_fem/u.ogg', +"unathi" = 'sound/vox_fem/unathi.ogg', "unauthorized" = 'sound/vox_fem/unauthorized.ogg', "under" = 'sound/vox_fem/under.ogg', "uniform" = 'sound/vox_fem/uniform.ogg', @@ -779,6 +803,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "used" = 'sound/vox_fem/used.ogg', "user" = 'sound/vox_fem/user.ogg', "v" = 'sound/vox_fem/v.ogg', +"vacant" = 'sound/vox_fem/vacant.ogg', "vacate" = 'sound/vox_fem/vacate.ogg', "valid" = 'sound/vox_fem/valid.ogg', "vampire" = 'sound/vox_fem/vampire.ogg', @@ -817,6 +842,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "wiggle" = 'sound/vox_fem/wiggle.ogg', "wilco" = 'sound/vox_fem/wilco.ogg', "will" = 'sound/vox_fem/will.ogg', +"window" = 'sound/vox_fem/window.ogg', +"windows" = 'sound/vox_fem/windows.ogg', "with" = 'sound/vox_fem/with.ogg', "without" = 'sound/vox_fem/without.ogg', "wizard" = 'sound/vox_fem/wizard.ogg', @@ -835,6 +862,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "year" = 'sound/vox_fem/year.ogg', "yellow" = 'sound/vox_fem/yellow.ogg', "yes" = 'sound/vox_fem/yes.ogg', +"yet" = 'sound/vox_fem/yet.ogg', "you" = 'sound/vox_fem/you.ogg', "your" = 'sound/vox_fem/your.ogg', "yourself" = 'sound/vox_fem/yourself.ogg', diff --git a/sound/vox_fem/between.ogg b/sound/vox_fem/between.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f23d4eb838a6a369f04231e11d7665ca608043dc GIT binary patch literal 8360 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/chair.ogg b/sound/vox_fem/chair.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a58b9e2059fd444101907c46b17c897efcd7dd22 GIT binary patch literal 6969 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/chapel.ogg b/sound/vox_fem/chapel.ogg new file mode 100644 index 0000000000000000000000000000000000000000..80ce922fa56c1c53db1570ced38957fc3aced950 GIT binary patch literal 8040 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/cyberiad.ogg b/sound/vox_fem/cyberiad.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b951309061dacf93ee348dce08e51420b14f7880 GIT binary patch literal 10455 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%0D!_kXfZX>+Q`*3g;Godp(6FEvFGC`p`91eQySQ5- zTbmR?jvtX*F5cOU6@Ldz*bBid4vOxDXZTLhvrV1^Kl^jqHUD;KrBDLp7VC+#C$T|j z+3YyqvHULE>{0cnjNV12&RLagG6kj^P(>>V5q3i19@S2Rh|u~5d;_r;O? zJzG9{Uyfx2bep+f^t)CK)?IR?=P)Gx!jUQF_mOj;S6y(l&r}FdP${$D6*9V;h1<+u zn?Jf??PW~kDR9j}^ovhpvqUO#V2+e)6v5P^C|u`YIG?L|`EzW?vS#I)cfW1TO_sWt z5rcYz{5hE5$mX=CB%iSN- z*VfOy;VcY7VerY&l$jcKsS%LZ$!7_Z1NSikhJ=JDROU8mcc zKTp4XN*_$^0CXDL0`=E5smI#`WC@!X+(*tcPK z88hKyt^l3L*Gx+;jTu!$U)#)+S%br|%nat^Kl|z841K`gIeM=^eI(G0YIQhP#HEncrk<7%nupeu%6Rh{TIW!^c z0#EX#(zjv`$399+2Qss!rqKdgaz8>j?0^WtQC7(2rg(J@|9ht-PyYv{exE0;L47pL()$rz+1b@p=pFlUbv;eE6k5-?r{`1hBT-Nz?) z?c^y*0(LBLRJnbvDeSkJ2eN|p`n7n%Zf(frV+>`=(#Fn3)V0;Q2+#9&7zWB^#igt* zGdrE?BrS!5eeCzGJ{WT^PoJi3ef-ol8|e6eM@w_{tunHFI z%&qSz^?(9}=N74xx%1>ebFQG;dOCekDbIFy!gNnn>>U(w)%AgF*~>W*0lPLfo$fTp z4{dmcRFz9}WOVfoRsLOnv>TpnymFu=%a|CQubH|ZAAtYdR9wY6QyKTjn@$ENJgqxg zyv#))%K`SzFj*QYIG|~F0A=rBsK(Nm_K)e|WVe$^Tpq*CZwBb?0Gx)Bnr03K=%-A& z%R%uxKSj&CN-PNIlXWgqXQMxAOwCTTrx^!UsNQphJ z2oanp-)BOd6iy+kJw17Qu7^{!CGZ}Tas*%hRU3pOLn*ZNimRkyF4JkgOi2k!h~wYi zIf)A_h5p%KGQ+!;1xR|8*6q4!NlUxuR&)+U$ar{}GD(KUxj4>RqhaAUtKRs(!x7+9 zh+cc7COCiLJsfZ_{rC8QHhO+04DXyXOBnA zGH?lHc({t+)hv0lzcwCN#x=Q1o=vc?JS}v+)f=w@2oGTTelvv$@L0|z_mZzuCoKHg zr7&$-{+#)>w&8m&m*UR3V3&~DQXU-niwT*?m}`}d;tceM%<_wW`qB0&T--7)u?8I_ z9}nI|{LDT*ktey`w|LIXQ`u(T*WgfD%s{{+MVkb@$awQ(+er2v|Ctc`?VWFSzC5buB8j1)U)nkhNr*jE$+Xiu~{n8puLk>%!7L*V4zI1wto*XV?^>gLUH6U2uWAz ziIa8zN$IB7ryy4UhD3fjAA;VUKsuR1byp z=vp*%kSvyuMJyh%{t|!x;d}m*Zv~yqulIFCM$Q9eMWaStY$x@lDg|k^?EG#zoZ;}j{CbF zdGngpov{d0T9VtMP6eWcyHdM!w`)9Ctu3&E+s)ax`kwecYC!252#q9`>TU0RlnYS} zF3FiNkMY-z#UUBl*=STz+vIq%A=<&d^6s_i554{I`%R{y6D%Y~uT2)+XlvQEThUuDw`{IZG`E^GM;Lx`ydDX z!z7vJ<0BT~@ZBf+KlliO{bmfg%U4A{u)U2DO~Vck2ATUm(wpCA)|LMZ?UbP_5Pjk| z3!Xz3JUxmtgPTiJ65+^_)2b9I0^W!oLgSFF2cd0g_|2-G)et3GtCJVFrmFC@xI+B( zPXlx_*IAui%_%&xRhqlz<-O{%l~>Pv+MM!w?9RLx-DftJxw1>7#y#)0rQf3qE7+@E zNVM|E%6_M(N}TXOTJCv=v@g}F|Hpc-(u_EsZeH29CsUC>&xD+LU0(`tGMswEOZ&W$*ER49VF4vg;tSV)!LA3xyLwa`XmP z3sw7+bxO5|W7>O8@&XusBKOiss)zIae>7Xjzd*xd;&vV1)+Lht5K~u&fqGL@y``4; h_T2TTQ>q}k43$?_=LZV)_YE1z{dK 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 TLgCvcR6=)1Z#SuY0OtPy-CEw0 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/hail.ogg b/sound/vox_fem/hail.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7e76db003da2e1e1c4caf8a61ecb0d4d76fb2a8c GIT binary patch literal 7001 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 OGV;*?_p1~g@V@|8)MU;8 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/hull.ogg b/sound/vox_fem/hull.ogg new file mode 100644 index 0000000000000000000000000000000000000000..65aacf7d2161b16a7029f75613d6e513d22c9d42 GIT binary patch literal 6812 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/evacuation.ogg b/sound/vox_fem/evacuation.ogg new file mode 100644 index 0000000000000000000000000000000000000000..add8dd9adad12d58d837c6a4128752a1198c16ba GIT binary patch literal 10519 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 ov!-YEjOXW9nLK!8tV!)uE9-i$-~L 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/interested.ogg b/sound/vox_fem/interested.ogg new file mode 100644 index 0000000000000000000000000000000000000000..87a5af9e99030b66168897abf6904e083a567ce1 GIT binary patch literal 8953 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/library.ogg b/sound/vox_fem/library.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a760be722c0cea9d45e0c5e14c1af78635b98b0a GIT binary patch literal 8770 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/miners.ogg b/sound/vox_fem/miners.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3390bda010fd7a7e6da595684d5d0cbd8df6d485 GIT binary patch literal 8809 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/mining.ogg b/sound/vox_fem/mining.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3c7a4df1a86d15d548ef3d39d785bcca6a02def7 GIT binary patch literal 7793 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 EZ$j^+B>(^b literal 0 HcmV?d00001 diff --git a/sound/vox_fem/operational.ogg b/sound/vox_fem/operational.ogg new file mode 100644 index 0000000000000000000000000000000000000000..13a903f16bb0b5b9a82beb778807e05a64b07d1e GIT binary patch literal 10305 zcmch5cT^Njv}X@-2*QwaQqmBVAqYc~C^(3~kOx6>l01kK6ePnS8AK$*kdYum6eUQG zl7j?Mau5{(!LW_r``+8PXU{wP*Vd`7zTLO#S2tDN>eh2|G6aZ#|0r}QZ;o@)>Noix z2sgyf)5q2Yd;S6vqI`Y>fRNUI?qv|Y^O65q&PPJPr;@rgO&X;?|6A!M{s%@J&G0HorP8_7QLh<~^=KJfE?j~TUMy-Qd@s)!S$O3x{G zL}Rkg2oj{$d85!iFJ#WStWGpOROcu?=Xg8k$Z;}_lmGPl+xc%3cMkuT@<41bV_%%3 zfRCL2yyKO&X95xdATM7yc2$@L#$HDW^Z@`&#hXzpiBYGPbMPJi1?UBHQqULx6zr!R zS)?6{H;Z?4$q@`F5Y8+Rsi<=qs1qBk+iAJ{cepkH=o>J0dohy#9cK>!P;24XLb>=) zX32Q-9P;qUN+KWx07$@o)LONSx?lK5zbcM?`#e*=e z+my^|oOJ43Y9s1p_^=gtgn-?+VWldRFX*$<@lxRDe_Q|q02@ZR=*PYMP`+?mMj;LF zVqTD1<2M`d-{glbhQZXDvH}O2!4ZE=0qWS!8xB(g`+yC+C>5;@FV3)yh4*q|hY-EI zVbqeFc`3K#`-_rq$q(=s#-s1T35c%)S3!|EeBB0))hW0<8{K?f4>X%D>J@ga9xgq);yQ zqc-S|cmeZdL6>wV|MU|7%+eU{zgb< z<$tb3`Fs@sKmh<;z22N!-kiPO=UV->FfTE{3jpc{oSHsjy~)x#ppFw7qldQ*uHG{= zb^q51V3+gKi&X?`KWGY&NKw2oA+7uWSkDbh1c1Q@OG!lCsx`e1@8Pev5-DO#nG7t= zu)Qh2SEfb=CvT2I@!|6(mL&0sXzIX{47EPi?fkGrL`2QZJa)A0m>YB+9iRd3Ej_$F zFuOj4pg z@)YoU^k@-yw;4KCyvWGTMSNx){Y1Pc%Ob8VGSybRYzl*^Xzn({;$)8dkf`j`X?b`R ze%e*HYHI$5i+Itrt&4ciwCymwCrb)m6_IW$TGl;lJ19fQz=BYWcBAl~oV%6Hy;)%r zRa04*L1cGE;85*G29`D%n+ihRLt}KRrZO=VGAZL2m#Usb4DNh#9Ks2W5i9F9!^9%G zGq5=EnK8@@a1KKpvKJGUTzh1NsW^vkKaAVjqfiDwN* z!J+x#scOP-arM@tf zNZDH>v`badI2w)z1HcX5ZDfHXM4p@atqIx{K>!~SGtme*8#rPE+|khIb0CHAVezQ- zyrN|EU3?Lv)OryZeFMCOXfR~(^oF2RAQZl68WTq-p2Ua?5J0HfRQhu$W*uEHWKbdq zaE`l(^-K&70W#q5o@A6;Rd=R^8}dIUN4eHcrQ6-DU7tihffGPRb5E*a0^ukNj0}R& zIm67t6WlZvz#s!P7wFEw;A+9J6c%XsJ2@*jqJi0tHox8sges!917~Bkh%X~xKt}PT zZ582&)51du&wLkGyADRU%*>LVE|LiVBv!z6Z>`2AENw3Uz`)$a+Qn)IW5;KKOEfGM zJ948x3*7ioU}&gm!?Cy2P~r|Fs@i1)eH5yyn;CVZjKE9<0K#5i>Z(ySwDk`8yP5o5 zz$gS+KH@rjgIBsoxcl7MJy|LGa4?+pCBbmfN3CaJVJHf|R5S|37mfy@zy(WmzJNKT z1(?Y}fi(XS$SzB2gpV>CKZ52jE1WjCD~xB?iOcRW3EXL(U=MU}mQ6)HDVvVJJJ>w6 zGQeO= z2Ge~w47GVK9~|!sGV)W=@*BLMeDG{gTsS@z%*d4IdzBmGT$VL|=~!YKpu!D?IJMfy z4VNmLAtY3MYF46$Gd0x~2d)Y zifT8j-3XGL&kkhph9{mgU}~FL;I;_m^F3#T!{j&eKxLtz66YEF|E7c-m_`2P^8f!0 zC@Sce|K11zeT|)v_CFmxY$nMglv-g_=gtf#1^`M`VZ1Hq3jy$80nbhWJ(U!OMs0!X z6-5DVASmeHhAS1V2D%G$+`oB*$B2zbLE)*1=+caWcr`e@2#unovm3dw%?YL=aCaI& zLh(hZY9f61MpVfKA`;OQd};CWo5HF3Xc2+bailOloDqeBrzNUsm-(img$2^iJEx&h z+5%}X6lHdi5sI>`$OsM1_Dxh15-3UrA5&7nvG`OJO28MbCIZKUE4M5ahSG-PZ-F_l zh*3?LF9K9o0G|x5xilj+3Qz*Ha6X6v>YR)QPx32&cWS77e`y_*L$~PwU}UeO2f&kv zN~-U)OUaFkP=w|)p$qUHUP6&r7tAm@<_n`;98&nYIt}7eDk}>LnjdDXD43=`pl{IJ zIEf_fX0{9ZT+0F;3!p>*NjM3>$}5}!0m#Uqm&l2@AS5*IK*(e0GYV?T{0>z?Kv6|Q zn-qwlh#il(4CM>;rL+Ii9>E}+)AS*n#{Hke77RFm0Ezkl9o@SjW3$`V_Relzz7K*z zKoa zkIoO6`)??8FUq)BVB9gTu1-;rk)e@sPeP(2LW3VaP6!K$340VBmm2qkq{PP}MFktF zs#p-*9M5ocFnKrQ%T1M@O4?Aex#6)dvt!M;SKzxc%trN8qyeR;xTHLQ zoZrJDMcljT^_PuL1MQJcchZJbXf;FM{9y}k{O~e7=t{?oebZob_??N(cV7bpzZNJs)fjYfk7_+1seot~In&FV8#!T{>RrKkP zXp<09#|SJleI@4}ao2UL9LDVslVG~4vZ!m9UIzPV4~qAiAfoNXy~*kg4cNPSE@rLG z>PrSt3sC-QJvi*AYW+M& zMA`@CFiiYTtEKtD&2?t;!P(EphdsF1UTY^dno|$^^_G`}X2g9TQ59YCPTl$y_+U>H z`Xb?4*PMJ}*+sp|j+eK-xzk=%YbM(Ygldbbv18^p8M<|&?;%;f2~Sdq&yim0s_ z)~}plhZwt%h1`xb&0o-BT3qp5$uFEpJaGn3NAKGLC`lm~Xx&LY);(pOc-;L>ryfOy zmx&JZc3kdt0;`lmT21IXhH}|=)4N+<4@vUrkY56guvbQ>H4GJ(%CR zBbL8Hc(0IV{a(@YXK{ajX|ArbBZnM7)IC}C$zFR$Ps_cLhSNK5Jus&av<9dT1ii|trS!b960;_NE7^J?o!RZ@o0Oq=&NJMPzR*yTrl zZ!ViAlj}|tP^5`XV5D_EU$0@xAtuRs?kn%{X6Eb4pw>9C1jf0v=1wD_-odj@(5oBi zIQNV3qDwm22;<7>EVF7Vfki%3RC1F6xpG}DTa-@wXwT#tZ&{L@8v<&oD?}KN_M0tk->J`(?Ca7g zn)x3)3r28_N3)AP&A4o4rw12tBQgJg{QOYcPd?)Gx&xYYNOmzq+({Uv?NCQ8qxX7S zw6rt-J_i>Ym!Q0Ix;j##id;8vl8~y75{>R(0=Fy=%6AKAqf8Wl2Nh4|0^By+(YlrnDkzz3o&%im3W=p-Iz{ zUSLT!jv1NQ2;^*66dB7S8O#>7bzQaS@;DbE{nA_v#B*ihWOqnkecJq{ae6q&B1z)z zOhYs3jihJj+Jegjvq)5JYOB+R;^^1ilRip3KQeI{HJ;*7xAAZqTtBGiqNOwET;|4k zevy%3OV0mt*mmcVg9W`9ZLdNQ<*z0g@8aewEhooCj4S*iR`V5vp0^(4k2&%woXExE z!iXiPLhffFVYtSqrh|aVz&ph1Pki#CDOh@5__ANKtK*wvcMZuEXAo*Z-PIO7Gp00r zN;|_i@sO64rtFajUqd_WWq3t`m${3z`gI$YvG15zF5&Xqcb@z1Z)i4Dgn|vxy)_b-qbBBN76~*cJt+;e=1BJ$e@Tr9 z?)WZ&^`Z%&-yJS>XyjQM8Qz*y9ev>UQ4(9Rx_=}mAiG)rq5Q3t)*j!T!sD+Sx0QwA z$^)Q9!h2PNE=fP2nQedY9?}Jo5IIOnWYVb0zxHs!$A$Iv+i=gO#&>z13*45j{KbTq zGiTOg?4iN&oucnA!JhZL#W9}HoC>e%7N$pkd0-pOyv2ja5f>rBCOA~!90V2pnq~wH zJ>Sl@hzPx|eM`%3X)Rltw)Z^rp4e*s8*g(>al44;Y~f`PJCD*IaK75D8Y7gu0 zwP;>3L67S?sg=h%b0|2C6D!5YL=s-+Yjm-^(neWi&Qz04iymYp3qiPJ2hlz?6Dph6 zM@DHvzS_9RJ_(^UCpBIvo%;Rr#Pp7{vEi5BdM6=Q1;!_4?krZq{kJRa_kMogdu3+mEfM;*YpS_yT~n%bWjNCFA+zJzb1 zZR_hrya^nZ>c8Tiue`tEe#2cn4ejLo$ug!1CXlLfx`j)9x2jy%aDrNma-6S2aa zs*nF1Jeg{8322dHu5StuN(kH53=Ew8{=<9L@EG0H^7)ZHYm0@?krw>MBh=YgmlyT- z?7EWO=mQ^%rcp@uq8lCAp4Q2j$yKg4b1r`yPK1H&toyrxD^r+8dyCU-nJ2+HLu{cYJj5(v?0X0v+qdejaTa!K}(Jpd_%kk+wKTWs9qsEJKP0HrCM`8X)EJnwD^p@}>Jk280(Qlu?wUIjbGRdap4boI=kf|WJ2 zORMrZJ)3=UKXx?ZLUF!9wA9yXqmLD>%`!yK2ArxJenuC>1TM`Nasnjw%M$)LX(}#f zT5DbT^~#!@Ao^BLq`W|G0@;@3{8Y@lQL=LB7qGX(U+QI;*xDFFG9=Q3fex+|jddwg z_TdieXysyEmLDkz*sY(bakYHeu4GZ;5y3T-#^$eXoE>g<->bUd?C5!k&u@D31XVBm zPL9+7sc6VM$G$Z1kyLvnZ=#8ALK)-CP(>xzUUuC};nLV%`is*0@l~5v$d~D76-syI zT&|eL^Bw0Q$izdu^@COUxdM53e42zCj4t3s(h*l5wSG{b|0VJ@@%Db^h(n2tfnU(o z>VOt@&;H1i88@!SwnVxYgmmOt!W83vP&?9++`sz4%2Z)_TuA4YK+i}B&F}3nZsEMg zGz1RBYZ@^xRUo5`P*4CfPTcVL98`ai`z$>w>P?ZS)OLe^65DDl=c!K-p?T=rm``8e z5octIc9%4R(=tk2d^g6Sk5N-csc7DkH(t?!;D1}-x5}!NJYTLv33+`lhn(e=(Evw5 z3`tP|Bs}{XKI)>#nbdgZ=^p~Q)fpATSjgkuMTsBA;wvyfLMbO15#<&3@c*Q1BVQi-PEF<>$)!qPW~GA!1X03F4ks$F!md6{lqE8?jW&z&uVbzlK__g zSeP*D8l_|&P*t<^T#b`5QG=xrh5xu(KG(xYWe@`uT8^PI&n%uQzAA@!HaWMmPyh98 zZ>Pf=hLa!qg-yhb<71j!jy-49jyxc(OeIdsJA4BubHd)hK#^H%qSbL$acjA}rI2(>mi=?Y@1~!v&HY&!rh=R-(-6nLDu;#1(SWR|Utx+- z?UX=t;pGhz2PH_TC!5QBZKxgYa9=r4NcHJpuJRTI*17E^wb$grx46o}*VN%d#z9}J zNC0kmT^=GA8{T{BcBO1&l=^(nsk~ zk6*v`ZF=t05BqJq?S_(Kl+?tkYia3|smt*da%)@mCVm_DEVeJdF#ZPJ_*fQ&*LO2# z@hI%GGQia_>FbPSGfgp^`c7W6f4wS-l1JMe%A^;+=EyPt#x?$h1A3XB)_V#g5dvwZgF%-$5vQ9QEOZM0svX{vZicfxl)i{clB-^UnbGID3vbgz! z@lVSxT|Mt{NmlkNzmwVS3Rx`Y!`6Cj`|LPM7}a}!WmbW?Lw<#??i*>Buzf0OOK?vX z_0}ZSjFFz;sjhPhZIsuAaEhHg8gmsDw<)%PC- zHbmlT>Gy48s$e-=AG9rSV(*t@13hch?0~?lv$)^v15&QvR@xdwuPcW$?e{vSlxvQb z_4w9e9wZUS)<{)w^oNxd-QRNKYZpdhZUIZ>z6{n^*^4~1+aw|NRQgrLx2#C?I}<{D z?jeIsX%pHmUc}pt^{p`k!CX<%*v=2OE)Lzd9FBkf7`_FUYcZXEWvg9#QLOWF;P53E zd`rg*nKiZxk9YlfK1X1brTw2P(=K)|%70GsZ0pK(@rDpwHG_F86NHCHFGkH~N-ob> zd%W~~6?m_RC@+k3DZrk|s{|;Jb$exL%`kRT>6X<&WTwa2AK8Q%ybV)zi@Uk&sKdN*9@QCsgyR#Efr|d^c zh%ZBgi;%jNaBW4ir*%-;qccZG^0$B9IDS&$ama-A#iXsh_;`Pi-_V5J*XACzeaM08{gxH-w zyuGSeS&DqlQ)*1s0ue>PN7D1A0!#$~m4~~QCVGh`S3D#vYz4VrH7r@6<;LV)^}iGt zi{{qHKO}A_V9a(5n6sQ2Y=rYW5~XN}zP|4m%gL6=bn!A-(p|{w?Fnj1WK+l~C_&mTesR4o8L;u&sZO}+P{qFx>iMm(qbu2!pf=w9*mxZ{>v zNB{dxPZQK*^AM80HF!>7|NgONO!K_J+L0iFKF0oe{8c)i(P6`~?d@z~w;#C3wIKc0 z;50+Wo5);8)5hAmnkWV*QtGWO$Y$eSs|&Yf!K)lr?(&yJ8if?&^Y_*D$lGUy##%^? ze8O29EEE1DPtWi?@Tk~+r@bZA`kJ3_&pUX|YwD3Li>^F-UI>X?kHRmBB+ufSXywDr zPT7-i^be09Ov0gw`D~BnYiqUrRp)+qS}07iCv{&)@6wF!oI$X!2SWXo$Ek)CyAsuKjX6}twv7sZVGuBJ9I>) z7z3XwKdg<+Df4@?aJw=IRG~wkEoWB=EC!-%F3LEzPr4GBK@1#O7TgP|+m5xBFe_g) z-hb|#<+62{Rohvio435wlp|XB-mQh`E;oh7O{#cB11lEG@0i8?TP$Ly`Nc5%*Mh6G zLB(D@&ZrJn=Ub9WpVO1kLzaJJUE$kTjf&lVQFvNj`jU%sG)>jj$!R?DsG4%^8nn}7 zEsKOKX%7lyys`iS1JoCbOdqchF~0J-)%W>g&vEzs90jd1vXEkP1hV4dInnO#oKl(&$DS~_G@1v#Tl<+F z{e9Y~lxkj-Yh16P!1Gi0$=59((@tyV&lRN~>mZigYAWB4 ziF#?O!wo`x_d9E57H@E9-~Bo1@*+3E{6$=4_t-r|;EwIW)?g9&?E@uUO|fw!hI~2P z5?}>Qfp7Xf2hI*yiXipg+@|(w+rOvp#0|VIWVdOfjLym>hvo|OwlN!guv}YJ<`OX= z6UL@gX+{J#F_gW&Y~p`K&-@{?pmfF}0x+1oW+P+1p{~kyrLFE$SEv@LO{1rkM-)Hw zLKh_7rZEhheFSMxYp|;APkKM3IrSy>vx-&=w%+Jr6n}^nTHGlHBdF=gim>@!F z$Up2y1dsiLrJUW z$Gz1OO}iGv`6kbJ326;%8DD{goz_Lf5a%vTld+{Wtu!`&El;)=33x@8q( zXDc%iW3iO!0`2Y9#{7H0!U`)^KbP4e`0}2jzwIs>Nn=-5te{+fOsbM)L~(O;@TCj1 zC}~9W`;~wMvPvs^qgXM_rwwBKQO9d~?!?tv^hZP<5=Wn0n0pI&-#Sk%e*GrW}fDjGZpIPf25S^5ZL1lpm-cY~;&#y7(r2 zVdtl~meHFSnjeRI`wQ6hGK?I9h74Q743Kunj|s`LkOFi;bM5JFOrVZV6$vpXq1ycTRk u4Cwdtu6_C9%?6xMT_ccq#+Gd?eWS#T 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/poly.ogg b/sound/vox_fem/poly.ogg new file mode 100644 index 0000000000000000000000000000000000000000..91dfa8f22ce68a2401af6fc079223fd3048d7dcf GIT binary patch literal 7459 zcmch4c|4Tg+y8AJvP?o_A7x@JWqc@u`Y;s6J|sq#EZHlDB$5omAjS|HLNhd&$}*xw zWM8sn7l|yXM4@PV?$P)2eV*^{^?N<9-(SD;I&&}Pf3^FY zOj$PBbVKhOhaAVn^C2F71ojJ#m}Bfe0El_~=byo0&0hKM#$L(6=1ZUG6F&O;f3#Mv zKQQVb*U|5S??LMjA9$djhr3b&ZtoOMvA0O{fBpaK9=g;DO z7$XM`zyJVX7^n&l(=$!CLtG(6vbYe_g>09_^efy^G)mNM({6`(n$&wGV>++(r=JAa z3urQ@Y(mV`7pa6huv0z3OK^~yhx_yd^CLhi4ZTPXNkjeN3Wp%s^R9`RBnOwmK#C>< zQg_)@5b7a0q!$fR3-If>kbBx}F3d+bWEUHyjg9x7jhv$WaOlsxoyj{x3LAchI)_@6 zAlzf4fR8eN-odrJ#DR1GC@fM=o>dlxN>vE}9RL6|2o^KR5Hqio=^juNf(SYBfW`nI z;5^d=nrSlKG3~5h!GX)g%6Y{q)_DN{#9cZ0 zj!xQJM>5^1fG;kgf)j`V0B&%eph=~e<(gvOXZ^k}|7ZWREgS%VSYN$83rJvOb{olJdW{%#;tVn#;W=nmVF*!(`gHW`bmXT$E`S2S88My2Ywd~)vb!E!v11BQ$3}P@6a&ry2PBPxGewr~1+^Y$<+n_+-%NW{}%v z(CcCE*PGsx!`?30-czg~mk}42(XjvQJF3TU12JiDL92t^G>v8|u;ZL`4gde_n~- z|K2%^6v_dB9{^_`erY+EdL)n+pwGf7<|yobgWh7sT0UH#Tr)?npoygK2cr{&zNcU1KlC?+Fv`+*nG-}E|N(f@wa3S zPnh|s(?&e})Z0cpULf13e<7Li*&eEl)-jK6ZB`Begc9@YL$(zJRMfXqi5kpdD!v=t zniJVmxtK!`ArmMdR2U9#&K%CemuqJZ;{BLy>39-*a}vr2hgV~?I^vU2tvLje`e;A? z9=L}c3Ehq-k}Ee|@#So&WF`ouak#xe4_lu-a`_;0!`KF260F_ z7yyCDR(od>D}in576+U^iUmHRMiWs;NpQs?n9*?TJw@3GfgwW|wF9LBq3E;`dxg{7fSQQkwM*wOe4^KjY3?#CR zj16SA<~awV|Ft>Rzj8R+GoW%|2$zavfsFb#iro#?CKZefmOY!{=zJbbntEW6ftn*) zbMT}}Ff5f3wL6=`z!kL;o+3pxjvy3G)Dzqd=A6c0;Xy{pkOz~sDdT+ZC|x3eRJi~~ zxc2C@rzKh(05oR6bMKCkRMzrB08p@Y!J1*7P$@bUJfcJjq1UXF3MPIm7#bK;B*6-U zRrl^SG-a@CuvliR1lEkflGp_R$``=W^}x{1BRFO!nd}^3EQ+@Xbpp8v*J@L4Wjni# znrVXs!`Vg?3>O>h0+j&8@+(kqSgb-E4uk>^EGPQ_OKTw{_&|Y<{}ITO`d6=lKt8<} zr^vW7VjG}LmoiVuZ*z!zU;k1nGN}Ft1)ItkNek$%AD;HJJo-=u6i5#gNbdnuK*)(7 zcncLPH#P$-H6Q~FMlx9LD99+H;B*(^ zpnS-DP+TOP0#;-JcCHE(8>hM}-tAA%0u1E95EsPsn)xx$^q?W?!($q4G8Bpj2|N`z zQvHb@LsMj1p`J351q)owkE7s8XueDwNqcdc2%0jF*n4!?ft^CB9u?p_0(fA;n>c_E zjVCf*@SlkNw-OMx@p>icFhUP{F$I@`0xg(~Y6CARhOIEqUNoPAC&+-urL!4O%n}t$ zix7oSHX{zIyI2S+3jvj2SM2|r5;|ZN*{S9K{|8W1&@cZvC;=T0pK~<+ZfcWsAomKG z5O=Yi8OH?x0*19`> zp^@}VHp95r49N~aB%STxf9Cx|{rhtBzZirQsFRif;G%)lGl+K;7qsej;sLza6^aqk zun;6A9d|dUI1PhD(r{RT-JZQ>%Q9do0<%*W8bYU0Fe(aRy@q^<_;ehX|!D11iIE)IC4xU^F1&TFA(yhRnM-#&+E5w89BIsoB%w^eQ_(2J9%0(aws52P{ z-sER?GBrfE^KKPH+OlpH5R?kG1nlu{DJ~SO@;>meFI}t9w3Q7c`*JUL?JeGx7S)@{GKBPb#LN?gZ^B$ zpuj2zkZuF)-aXKB(($yrmv7*O&`VJfq}u!KO7tl40b+`xHbOu*~I=lVqY*T?_FBkj}Gv6^@uQc3p^K)9ZMv|#6(9E z6XPPUUXHvz}f@YdJB;?%X#XO(RAxV^gOV zeew~zidFCX@kg7Tk$=FanKW#`c{yjBv|Ifem+1YW7KHGrx%)F+1|GLpGPG8CMSuLf z@*qmOLGkTlJs&H@K#^eW3$%gi?%Nz0PImW>Y@qn;#zww;acy;v(9D*1`mFk~?QvDV z1Tneppp@)Rp-@4-M=NeOIz8LW1kvR@A|UO-YQdbCM!CQztE-Q(Eh`BZzOCwo=Nbz zw@`3w%W~|gd5NgKuGgW#S&0WkH3;wFqyZWu-7h5 z91C_FHSL8UpW+hs7>i7$lYD6KZRnk)hZ#9RuPT?vuT5j1#jn=AAM1Adg#YfR`Sv@_~a=GvG_KR|3>R{@A#F ztI6=m2`NFE|HNnaw2kb;d}XffQ$IUXH-6oJ^Re{Jvv$63ab>)4_wJk$_)|LeEaTAP zk&Von>utvbkGd+Y(Odu#iAGuS3mJo&Xu<2Zv_BE9*G8z``1v@x)N?h&Eh*vl)X`wq z7FE<~f?Hx(UFc#qw^7`>IIZ@%2t8Anzfkl%%oka`~&>iUp)89(NbG-;sP(Ak_Eb`IQFr&(F;-ljX()=iG5Y;-98g{HiSB7BLLs{AP=P7v1^jXi%HIA9m8^5v?Oc!1Uvb0B7R4 zF2URWR;9Zlt@rY%@3zcX)RL*T53E%k-JND{G%${d_Br#*c>~ z$F^SMIOgV_Z*c+GpYCtlAGUhw(4OfGrjmHhp+Q@94aYTLiicO`y9!WU9==7t2L zwuR%Dp^L(usP?f4wZgsYU0u;W+3Nad57C|08O7O>v1(+C>4|RF&Q4ufgI$;V?+Qz``e ziw;2@IS)H=#wn=}DA*?1zS(!1`;ByHpr6&!yXp!Fn%F z>{Gn5Nk6ISf7ZpiMo75PDE5`zqoO;Bjm_O6TD8Ib6*+25u7Q#DCV_RYf`97SBE zJ_KkWZxH*-8|srdWCRt3nsR4+km1KJUPUwJXyWDdS<-JhqnmmP*2ZQXw7uc?Wd(@y z9Y6H7nuVo_o)JS;59^k4e8c=nYHp`*p)NjyUJZKTnM1c4_z~cccfCd!81=txPp&@a zhuEGU@vXE7Q2G0dX`SEeb53_pO9hEc>#pNMe63>}g_bV{a(?9f09?{XcnZ3<;Lf~r z`*>sW-J^n~aL!eXh51S*KGobq&i0Jz0GZKQ>;7~%3HmIh-Db%|4xqT}+l3#{bLp_S zE8uk0_;#W=X5-|=3iD!sb07nCD6=mzDE=YmkC2f!Sv`rOA6`t{&-{6#-}`KmNW*fs zlttGZeEma3yn})B3i4>kgP{5!qo1zb=WBMhg@ zNDj4T!?#!FFP{S%Ng?mX9Nsdw_7+T3lL;Nt8XMj>)~*`)CD&t9AQ8t<`+ znKa1c@@{R**sM}M9_sR5wtQ4*y8g22%;-L^mXy7cNx9EkRI}6hvaCdJ!kr&G+>Ya% zF}Q8{BNOS6-s>}<1&P>7>VS7^ttedo>3_~$*=onJ}_>i5!TQ zN_=e}1o_Al2)p~0;&97WKJ%RQ(V;I1K|15U+x)V3dQEJO=oNF5>%4n~ZVw4wDzcoJ z@K>syuu!(TEF7hq9F{q>{O+^ww)8%epyT-vjA9E}c1nKsuPZrP+&qHzI!EhYCLp>y z&Z&9r)mD(Nqip%ARVI=ej_mCtO(Zn z&L`qzsqA>vvA6JIt5f)&RWN~oq{jl{BRw_c+{+r9%Dq#2h6v#j&x5Pm?>dC^+Q4hw zQjb}eH2j*Ib*!A8v%RdmZoyK}+|LO;Ts=^oI>0lRnp(2jrO0}(+ih_5YZ5cy;wq!L zf+%_TSlJy(njweN<1<+@GfQxQHxOd#Xg*o19{Fi$2L1Zyc9gW+;+?5T7n2k-=rfnm zI8#2?dNVoS6{5!TM``wMf<2W-W_PJC28p|D{iH64?ho&Jn7A>w)))5uX;pf}HF250 zgv1S8s>;4Lzy6iDRamO=N_r^l_=9zF9FET)Q==1AuGw&T*A@6-A&c#Vav=?V-#HW| z1wEFMdPL45nvt3>q54$(dS_2_`cu(gommQFzQQN5nT`Qfai=H7!Um#Z1h21b98{+5 z{n=#S0=9b+2eDLqFuwAz0ez6x1tF%mw zuBc5Xt40>0CE-77>f(b_W6G3nI@}=EIsP~p#+Nzx=D}jii}nKtjoK}F}`vf}uly6>~{ym~T; z0XJt6={b7p#&^Od?*pB8eOizTt8~|Dx6oXU~9QH=29E4`Pg;0R^Gy+Wd3#)PNf;&-_MCg)4hUwY14ff zD>e!CK5~>|8G-K?q#w4L=QF#f!vowL+?^mG||GT}hc;P$9SLUIyRBj$qdxH9T52nK+jFP3G!rBTB7M!#n%|Kt$SN_47w9 z?lK3t9{vQ+z4^bteceW(SZ{KT&mCD}Ag?qfe@S$^DrwZSc^+M^4->fyC!gfaK)KPc zJbRgaZ~mnJhZxf3H|M5f%rBt&r)~{&UZ99?B@64X;{QhGd_u;&xKGqcE?`!E%j)~2 zU68nZz#uY`tLaMJxYf}@az~RW=hrng@u%(Q8=Tb+Jb!md!q()$L{1ANHuYF$>E{oE z)QRL5gqszul8ET3$tMA0uNv<9PWSMcR~rsQ{+3VOd_?lQ*OHd)U8KHoHW}Kr@7dhx zW7SjDr%2Zo!WZoby~`7qvt*Nu;YMtp9$DE*bBYJ?rQaQzq>mH?CDvaT-32 zJUgeR+3j)inRbBo_~T`1w`1FHy*C8?k{~)oo03f#4*@wHe2G<=Jn{H95Bc?dH_5Tl zpB8`chuwRnloGK2alrekaS_FmU5|!&B1H9uZstAh3>++;JT!k=D!F}?P>Ub#$eX;z zdzd8THl-XsUeDWg+2Q=DDb=wmvGB(|)RnlGUyR;9!%w`_nk(84#w$GC!{O?vJ0H8; zJmW6kfd<4#y%#OuuVx3_EA)r`J5!6T+7mv;PH)lA*sapCy}mBiIe9ZM5Z~<>N0$1s zQolwg9;rEFl+m|$w$63!1 zdflpvk+(*iZmQ8SXOB_W2W=rizPo&-jpsyVtyKg<23y=%YFe!W+M#>Ch~}Pz0Mj?O t0D15`9g)QCU$UJkrE3#^yV1L`T)b??nJXsqjlFkJ!Y#o9)w0tv{{_lK0~P=P literal 0 HcmV?d00001 diff --git a/sound/vox_fem/pun.ogg b/sound/vox_fem/pun.ogg new file mode 100644 index 0000000000000000000000000000000000000000..19000f98f9fb1e8a865fc4e1488e6badbad69221 GIT binary patch literal 6913 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 F`ZtXM3#b49 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/renault.ogg b/sound/vox_fem/renault.ogg new file mode 100644 index 0000000000000000000000000000000000000000..acea4a7731c90725e09c891654d180a97a091450 GIT binary patch literal 7409 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 B?&$yk literal 0 HcmV?d00001 diff --git a/sound/vox_fem/runtime.ogg b/sound/vox_fem/runtime.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0a43c429355857bc8e96a2a42a3c0461eb66750b GIT binary patch literal 8583 zcmch5c{o&W*zg&Yv4#*D8d*ok*lL6rvW$qa#8@h0Ct)Zek+mU-;b$4L%#dYdn`|kv zW=r;LWmibr<@aesQL>IT#pZ~3OF#jc^ z0Ag)D{X7&e1h~U}Je_U!iNlTI%1THjB-r7ymUxdVL2jHC<(Qa5|D)ai{%bLFy=+_8xsACg+Pb`1EEI@ z=qj=iSx4DJR;TXKsNyJ==k#+KHxX0g7vr!#-=gR1L1JGGpuju_grv~g<6BoRZC!mk z>iTxeb!ybrG2L~Be${cz(Q!QJzxRF7BUpflq(xBcU^hyl7_sjgCm90p01<_!i3>)c zJ(8sCQlvf8-9yrgL$V&-72BTz8V1xF*dhw{%_eD=UgViu%rJIoDY2-ewA3rB$n$^h zO!?wv0Kf(SqFw$lLw{J8KSQd04a1oMH~{Ebz|IB8ccrMBfHDs2zxw82p&n#;@#?=u z0H-io7eN#3FF{p+K&qzku&U|*V`nIq2>_jsCp8&kR&~(;(J5K$BuC*-9SMDu;e1}> zV+r~og0&$IBTmg5o>itMV>v^MGtk{aAM&G;kujCylZ02z+hU;ccmaJdw{*fgdGOsx zX{jhaWS681_V@~!WQLKZQfzR2l;{jh!UKXCMn)7JhU&@)b~17f1eJvH(Pf3_d3lh)5_eo(Ii_h%v{Ol2eCtjZ30Zu*M}FDcHm`0#<_!5yXd; zLv+|;i3$`eyr;tW5cZxzC)qx+IhN$CP%?_cl{IwO5)#z5yHS`N(wGKcT~(RBbuo${3`GG?0{%dROilOhfwEO-0&wCxRk+Y&yY1VP(YYkX&ajVW4$l zI*Nz3MD|+O>X-=qgc6z}Y|zHu+4rC8CPxi6{3r@lG8mnV>Z3z52|OCB#{)NB29vxL zX-f{cHLWp`uznQuHSQClbJjAUc|13}vYAyJ*9(%0A|iie5tKAmoULfBpn%DA!TivZ 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 Ri&kAeHg>hW^Sexf{|j`H7sdbp literal 0 HcmV?d00001 diff --git a/sound/vox_fem/scrubbers.ogg b/sound/vox_fem/scrubbers.ogg new file mode 100644 index 0000000000000000000000000000000000000000..caae84dac4100acf08095548f9f32fa607f9f163 GIT binary patch literal 9133 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 O{+XvJY2754`hNi`Tuy}m literal 0 HcmV?d00001 diff --git a/sound/vox_fem/skree.ogg b/sound/vox_fem/skree.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4480d923be074b872e0615d2883b5b95b0a93d1d GIT binary patch literal 7739 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 J_=8>W-vDzNYJLC! literal 0 HcmV?d00001 diff --git a/sound/vox_fem/skrek.ogg b/sound/vox_fem/skrek.ogg new file mode 100644 index 0000000000000000000000000000000000000000..81fef09383e866ba8b78f956db2f7a55a9d9ba8d GIT binary patch literal 8255 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 JNB}bg_&1Qjh-v@; literal 0 HcmV?d00001 diff --git a/sound/vox_fem/stupid.ogg b/sound/vox_fem/stupid.ogg new file mode 100644 index 0000000000000000000000000000000000000000..80d8399bf3319f100b42effaf14d86c2e3282f01 GIT binary patch literal 8600 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 H?0o+Q$gm)! literal 0 HcmV?d00001 From 4010c7f67683997e56f36eab4706ef07f90733ea Mon Sep 17 00:00:00 2001 From: monster860 Date: Mon, 30 May 2016 16:13:54 -0400 Subject: [PATCH 025/260] words list --- code/defines/vox_sounds.dm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/code/defines/vox_sounds.dm b/code/defines/vox_sounds.dm index 93bf36a3716..98442569e5b 100644 --- a/code/defines/vox_sounds.dm +++ b/code/defines/vox_sounds.dm @@ -16,6 +16,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "across" = 'sound/vox_fem/across.ogg', "activate" = 'sound/vox_fem/activate.ogg', "activated" = 'sound/vox_fem/activated.ogg', +"active" = 'sound/vox_fem/active.ogg', "activity" = 'sound/vox_fem/activity.ogg', "adios" = 'sound/vox_fem/adios.ogg', "administration" = 'sound/vox_fem/administration.ogg', @@ -24,6 +25,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "after" = 'sound/vox_fem/after.ogg', "agent" = 'sound/vox_fem/agent.ogg', "ai" = 'sound/vox_fem/ai.ogg', +"airlock" = 'sound/vox_fem/airlock.ogg', "alarm" = 'sound/vox_fem/alarm.ogg', "alcohol" = 'sound/vox_fem/alcohol.ogg', "alert" = 'sound/vox_fem/alert.ogg', @@ -77,6 +79,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "base" = 'sound/vox_fem/base.ogg', "bay" = 'sound/vox_fem/bay.ogg', "be" = 'sound/vox_fem/be.ogg', +"becoming" = 'sound/vox_fem/becoming.ogg', "been" = 'sound/vox_fem/been.ogg', "before" = 'sound/vox_fem/before.ogg', "between" = 'sound/vox_fem/between.ogg', @@ -109,6 +112,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "breached" = 'sound/vox_fem/breached.ogg', "break" = 'sound/vox_fem/break.ogg', "bridge" = 'sound/vox_fem/bridge.ogg', +"briefing" = 'sound/vox_fem/briefing.ogg', "brig" = 'sound/vox_fem/brig.ogg', "bust" = 'sound/vox_fem/bust.ogg', "but" = 'sound/vox_fem/but.ogg', @@ -120,6 +124,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "cage" = 'sound/vox_fem/cage.ogg', "call" = 'sound/vox_fem/call.ogg', "called" = 'sound/vox_fem/called.ogg', +"camp" = 'sound/vox_fem/camp.ogg', "can" = 'sound/vox_fem/can.ogg', "canal" = 'sound/vox_fem/canal.ogg', "cancer" = 'sound/vox_fem/cancer.ogg', @@ -216,6 +221,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "destroyed" = 'sound/vox_fem/destroyed.ogg', "detain" = 'sound/vox_fem/detain.ogg', "detected" = 'sound/vox_fem/detected.ogg', +"detective" = 'sound/vox_fem/detective.ogg', "detonation" = 'sound/vox_fem/detonation.ogg', "device" = 'sound/vox_fem/device.ogg', "did" = 'sound/vox_fem/did.ogg', @@ -269,9 +275,11 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "enter" = 'sound/vox_fem/enter.ogg', "entry" = 'sound/vox_fem/entry.ogg', "environment" = 'sound/vox_fem/environment.ogg', +"equipment" = 'sound/vox_fem/equipment.ogg', "error" = 'sound/vox_fem/error.ogg', "escape" = 'sound/vox_fem/escape.ogg', "evacuate" = 'sound/vox_fem/evacuate.ogg', +"evacuation" = 'sound/vox_fem/evacuation.ogg', "every" = 'sound/vox_fem/every.ogg', "everywhere" = 'sound/vox_fem/everywhere.ogg', "exchange" = 'sound/vox_fem/exchange.ogg', @@ -280,6 +288,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "expect" = 'sound/vox_fem/expect.ogg', "experiment" = 'sound/vox_fem/experiment.ogg', "experimental" = 'sound/vox_fem/experimental.ogg', +"experimentor" = 'sound/vox_fem/experimentor.ogg', "explode" = 'sound/vox_fem/explode.ogg', "explosion" = 'sound/vox_fem/explosion.ogg', "exposure" = 'sound/vox_fem/exposure.ogg', @@ -406,7 +415,9 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "inspection" = 'sound/vox_fem/inspection.ogg', "inspector" = 'sound/vox_fem/inspector.ogg', "interchange" = 'sound/vox_fem/interchange.ogg', +"interested" = 'sound/vox_fem/interested.ogg', "intruder" = 'sound/vox_fem/intruder.ogg', +"intruders" = 'sound/vox_fem/intruders.ogg', "invalid" = 'sound/vox_fem/invalid.ogg', "invasion" = 'sound/vox_fem/invasion.ogg', "is" = 'sound/vox_fem/is.ogg', @@ -426,6 +437,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "kitchen" = 'sound/vox_fem/kitchen.ogg', "l" = 'sound/vox_fem/l.ogg', "lab" = 'sound/vox_fem/lab.ogg', +"labor" = 'sound/vox_fem/labor.ogg', "lambda" = 'sound/vox_fem/lambda.ogg', "laser" = 'sound/vox_fem/laser.ogg', "last" = 'sound/vox_fem/last.ogg', @@ -439,6 +451,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "legal" = 'sound/vox_fem/legal.ogg', "level" = 'sound/vox_fem/level.ogg', "lever" = 'sound/vox_fem/lever.ogg', +"library" = 'sound/vox_fem/library.ogg', "lie" = 'sound/vox_fem/lie.ogg', "lieutenant" = 'sound/vox_fem/lieutenant.ogg', "life" = 'sound/vox_fem/life.ogg', @@ -488,7 +501,10 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "mime" = 'sound/vox_fem/mime.ogg', "mimes" = 'sound/vox_fem/mimes.ogg', "minefield" = 'sound/vox_fem/minefield.ogg', +"miner" = 'sound/vox_fem/miner.ogg', +"miners" = 'sound/vox_fem/miners.ogg', "minimum" = 'sound/vox_fem/minimum.ogg', +"mining" = 'sound/vox_fem/mining.ogg', "minus" = 'sound/vox_fem/minus.ogg', "minutes" = 'sound/vox_fem/minutes.ogg', "mister" = 'sound/vox_fem/mister.ogg', @@ -534,6 +550,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "op" = 'sound/vox_fem/op.ogg', "open" = 'sound/vox_fem/open.ogg', "operating" = 'sound/vox_fem/operating.ogg', +"operational" = 'sound/vox_fem/operational.ogg', "operations" = 'sound/vox_fem/operations.ogg', "operative" = 'sound/vox_fem/operative.ogg', "ops" = 'sound/vox_fem/ops.ogg', @@ -562,6 +579,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "platform" = 'sound/vox_fem/platform.ogg', "please" = 'sound/vox_fem/please.ogg', "pod" = 'sound/vox_fem/pod.ogg', +"pods" = 'sound/vox_fem/pods.ogg', "point" = 'sound/vox_fem/point.ogg', "poly" = 'sound/vox_fem/poly.ogg', "port" = 'sound/vox_fem/port.ogg', @@ -642,6 +660,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "science" = 'sound/vox_fem/science.ogg', "scream" = 'sound/vox_fem/scream.ogg', "screen" = 'sound/vox_fem/screen.ogg', +"scrubbers" = 'sound/vox_fem/scrubbers.ogg', "search" = 'sound/vox_fem/search.ogg', "second" = 'sound/vox_fem/second.ogg', "secondary" = 'sound/vox_fem/secondary.ogg', @@ -823,6 +842,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "vault" = 'sound/vox_fem/vault.ogg', "vent" = 'sound/vox_fem/vent.ogg', "ventilation" = 'sound/vox_fem/ventilation.ogg', +"vents" = 'sound/vox_fem/vents.ogg', "victor" = 'sound/vox_fem/victor.ogg', "violated" = 'sound/vox_fem/violated.ogg', "violation" = 'sound/vox_fem/violation.ogg', @@ -847,6 +867,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "weapon" = 'sound/vox_fem/weapon.ogg', "weed" = 'sound/vox_fem/weed.ogg', "welcome" = 'sound/vox_fem/welcome.ogg', +"weld" = 'sound/vox_fem/weld.ogg', "west" = 'sound/vox_fem/west.ogg', "whiskey" = 'sound/vox_fem/whiskey.ogg', "white" = 'sound/vox_fem/white.ogg', From d72145486b6a8809c2bd24a238f835df80cdb3dc Mon Sep 17 00:00:00 2001 From: TechDragon610 Date: Mon, 30 May 2016 22:34:49 -0400 Subject: [PATCH 026/260] makes ice regent melt when heated pretty self explanatory. it really bothered me that water froze but ice didn't melt. compiled fine. --- .../chemical_reaction/chemical_reaction_food.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm index 65b19133fa3..c3ca3e41145 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm @@ -109,7 +109,15 @@ max_temp = 273 mix_message = "Ice forms as the water freezes." mix_sound = null - +/datum/chemical_reaction/water + name = "Water" + id = "water" + result = "water" + required_reagents = list("ice" = 1) + result_amount = 1 + max_temp = 274 + mix_message "Water pools as the ice melts." + mix_sound = null /datum/chemical_reaction/dough name = "Dough" id = "dough" From 03cc9cf551f4e07c519bdfa04204e73142a6c194 Mon Sep 17 00:00:00 2001 From: TechDragon610 Date: Mon, 30 May 2016 22:40:58 -0400 Subject: [PATCH 027/260] Update chemical_reaction_food.dm --- .../oldchem/chemical_reaction/chemical_reaction_food.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm index c3ca3e41145..089ad40cdde 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm @@ -115,7 +115,7 @@ result = "water" required_reagents = list("ice" = 1) result_amount = 1 - max_temp = 274 + min_temp = 274 mix_message "Water pools as the ice melts." mix_sound = null /datum/chemical_reaction/dough From c51040066c1d85a5f461ee836e45e6debd9231cf Mon Sep 17 00:00:00 2001 From: TechDragon610 Date: Mon, 30 May 2016 22:43:52 -0400 Subject: [PATCH 028/260] Update chemical_reaction_food.dm --- .../oldchem/chemical_reaction/chemical_reaction_food.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm index 089ad40cdde..a0c1d095168 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm @@ -116,7 +116,7 @@ required_reagents = list("ice" = 1) result_amount = 1 min_temp = 274 - mix_message "Water pools as the ice melts." + mix_message = "Water pools as the ice melts." mix_sound = null /datum/chemical_reaction/dough name = "Dough" From 60a0f97334369be590d69a9304fbc927d7daa5fd Mon Sep 17 00:00:00 2001 From: TechDragon610 Date: Tue, 31 May 2016 00:00:12 -0400 Subject: [PATCH 029/260] Update chemical_reaction_food.dm --- .../reagents/oldchem/chemical_reaction/chemical_reaction_food.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm index a0c1d095168..a466af1752d 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm @@ -118,6 +118,7 @@ min_temp = 274 mix_message = "Water pools as the ice melts." mix_sound = null + /datum/chemical_reaction/dough name = "Dough" id = "dough" From 49d7390614b3b5ea05baf274332c419178c4c749 Mon Sep 17 00:00:00 2001 From: Matt Milosevic Date: Tue, 31 May 2016 12:52:56 +0200 Subject: [PATCH 030/260] Tweaks some things regarding the change notification --- code/modules/client/client procs.dm | 3 ++- code/modules/client/preferences_mysql.dm | 2 ++ code/modules/mob/new_player/login.dm | 4 ---- interface/interface.dm | 4 +--- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 768de2a270b..7e180419dc0 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -316,8 +316,9 @@ send_resources() if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. -CP + if(!setup_database_connection()) + return // if we have db problems, don't show anything winset(src, "rpane.changelog", "background-color=#f4aa94;font-style=bold") - prefs.SetChangelog(src,changelog_hash) to_chat(src, "Changelog has changed since your last visit.") if(!void) diff --git a/code/modules/client/preferences_mysql.dm b/code/modules/client/preferences_mysql.dm index 07db4bf7128..15abdab0360 100644 --- a/code/modules/client/preferences_mysql.dm +++ b/code/modules/client/preferences_mysql.dm @@ -456,10 +456,12 @@ /datum/preferences/proc/SetChangelog(client/C,hash) lastchangelog=hash + winset(C, "rpane.changelog", "background-color=none;font-style=") var/DBQuery/query = dbcon.NewQuery("UPDATE [format_table_name("player")] SET lastchangelog='[lastchangelog]' WHERE ckey='[C.ckey]'") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during lastchangelog updating. Error : \[[err]\]\n") message_admins("SQL ERROR during lastchangelog updating. Error : \[[err]\]\n") + to_chat(C, "Couldn't update your last seen changelog, please try again later.") return return 1 diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index bbb0211ce67..f7cff248519 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -34,10 +34,6 @@ verbs += /client/proc/readmin spawn(40) if(client) - if(client.prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. -CP - winset(client, "rpane.changelog", "background-color=#f4aa94;font-style=bold") - client.prefs.SetChangelog(client,changelog_hash) - to_chat(src, "Changelog has changed since your last visit.") client.playtitlemusic() if(config.player_overflow_cap && config.overflow_server_url) //Overflow rerouting, if set, forces players to be moved to a different server once a player cap is reached. Less rough than a pure kick. diff --git a/interface/interface.dm b/interface/interface.dm index 589a5e0dc86..81fe75b269b 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -40,9 +40,7 @@ src << browse('html/changelog.html', "window=changes;size=675x650") if(prefs.lastchangelog != changelog_hash) //if it's already opened, no need to tell them they have unread changes - prefs.lastchangelog = changelog_hash - prefs.save_preferences() - winset(src, "rpane.changelog", "background-color=none;font-style=") + prefs.SetChangelog(src,changelog_hash) /client/verb/forum() set name = "forum" From 3a2be3d63f63746aa16cf1a82ecb074342871ff5 Mon Sep 17 00:00:00 2001 From: Matt Milosevic Date: Tue, 31 May 2016 23:15:20 +0200 Subject: [PATCH 031/260] Adds a check for twohanded items to cuffing --- code/modules/mob/living/carbon/carbon.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5a641a81689..25234143cc4 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -863,6 +863,12 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, //called when we get cuffed/uncuffed /mob/living/carbon/proc/update_handcuffed() if(handcuffed) + //we don't want problems with nodrop shit if there ever is more than one nodrop twohanded + var/obj/item/I = get_active_hand() + if(istype(I, /obj/item/weapon/twohanded)) + var/obj/item/weapon/twohanded/TH = I //FML + if(TH.wielded) + TH.unwield() drop_r_hand() drop_l_hand() stop_pulling() From 82f037d946aec4db8723e49b43eab9505d3893ab Mon Sep 17 00:00:00 2001 From: SamCroswell Date: Tue, 31 May 2016 17:42:14 -0400 Subject: [PATCH 032/260] SecBelts --- .../objects/items/weapons/storage/belt.dm | 10 ++++++++++ icons/obj/clothing/belts.dmi | Bin 9898 -> 10169 bytes 2 files changed, 10 insertions(+) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index daefa0db457..d14fc5958f0 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -6,8 +6,17 @@ item_state = "utility" slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") + var/use_item_overlays = 0 // Do we have overlays for items held inside the belt? +/obj/item/weapon/storage/belt/update_icon() + if(use_item_overlays) + overlays.Cut() + for(var/obj/item/I in contents) + overlays += "[I.name]" + + ..() + /obj/item/weapon/storage/belt/proc/can_use() return is_equipped() @@ -148,6 +157,7 @@ item_state = "security"//Could likely use a better one. storage_slots = 5 max_w_class = 3 + use_item_overlays = 1 can_hold = list( "/obj/item/weapon/grenade/flashbang", "/obj/item/weapon/grenade/chem_grenade/teargas", diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 7427f32fd3eb9b224fe15e4765fb76b065d9fa36..71d51209dbc98ded747874f0f00403abf87f6b14 100644 GIT binary patch literal 10169 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 TY3yR&paI$%`s!7x_Obr~gQ&zz From bc7cee537fe8365687325dc24f18106286989e5b Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 31 May 2016 22:15:41 -0400 Subject: [PATCH 033/260] Ports 3 New Chaplain Weapons --- .../objects/items/weapons/holy_weapons.dm | 56 ++++++++++++++++++ icons/mob/back.dmi | Bin 90019 -> 90954 bytes icons/mob/inhands/items_lefthand.dmi | Bin 168196 -> 169503 bytes icons/mob/inhands/items_righthand.dmi | Bin 165849 -> 167011 bytes icons/obj/weapons.dmi | Bin 55328 -> 61347 bytes 5 files changed, 56 insertions(+) diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index 879e82f9ee0..4b0b1e9ba8d 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -134,6 +134,13 @@ item_state = "katana" slot_flags = SLOT_BELT | SLOT_BACK +/obj/item/weapon/nullrod/claymore/multiverse + name = "extradimensional blade" + desc = "Once the harbringer of a interdimensional war, now a dormant souvenir. Still sharp though." + icon_state = "multiverse" + item_state = "multiverse" + slot_flags = SLOT_BELT + /obj/item/weapon/nullrod/claymore/saber name = "light energy sword" hitsound = 'sound/weapons/blade1.ogg' @@ -148,6 +155,12 @@ item_state = "swordred" desc = "Woefully ineffective when used on steep terrain." +/obj/item/weapon/nullrod/claymore/saber/pirate + name = "nautical energy sword" + icon_state = "cutlass1" + item_state = "cutlass1" + desc = "Convincing HR that your religion involved piracy was no mean feat." + /obj/item/weapon/nullrod/sord name = "\improper UNREAL SORD" desc = "This thing is so unspeakably HOLY you are having a hard time even holding it." @@ -179,6 +192,49 @@ desc = "Bad references are the DNA of the soul." attack_verb = list("chopped", "sliced", "cut", "zandatsu'd") +/obj/item/weapon/nullrod/scythe/talking + icon_state = "talking_sword" + item_state = "talking_sword" + name = "possessed blade" + desc = "When the station falls into chaos, it's nice to have a friend by your side." + attack_verb = list("chopped", "sliced", "cut") + hitsound = 'sound/weapons/bladeslice.ogg' + var/possessed = FALSE + +/obj/item/weapon/nullrod/scythe/talking/attack_self(mob/living/user) + if(possessed) + return + + to_chat(user, "You attempt to wake the spirit of the blade...") + + possessed = TRUE + + var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, 0, 100) + var/mob/dead/observer/theghost = null + + if(candidates.len) + theghost = pick(candidates) + var/mob/living/simple_animal/shade/S = new(src) + S.real_name = name + S.name = name + S.ckey = theghost.ckey + var/input = stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN) + + if(src && input) + name = input + S.real_name = input + S.name = input + else + to_chat(user, "The blade is dormant. Maybe you can try again later.") + possessed = FALSE + +/obj/item/weapon/nullrod/scythe/talking/Destroy() + for(var/mob/living/simple_animal/shade/S in contents) + to_chat(S, "You were destroyed!") + S.ghostize() + qdel(S) + return ..() + /obj/item/weapon/nullrod/hammmer icon_state = "hammeron" item_state = "hammeron" diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index ce634c701d968aee8e0f67c90ca3828c6233875e..a4cd1d997a858c83a04164db7e0324613e835f1a 100644 GIT binary patch delta 5401 zcmYjVc|26__rJC%3Q4xC`6LudD#A>nv>tBD-f-sr67|3XxUKxpeAv{b%OYChMx24$+T)1V)7Oi?!$AbndE zo_!{CULde{r(F1INrYjb5$j+S#=0Qf>bIs#Xil9(xsP%PZUW zgPpp0m2T!*$6M&7y);(gh_>ius5yT%6?%c?Jd;o6QLgNrJB~{4e}0Ko2O+wJHy!Jj z$MCq&!@kYm?p(mT@Jpbro#}%CV(u6sev7YDZl_6b{zzM$iK_DAM5);I>mx)-QZ%IF zF#FWo4g^tGPw$i(L&6-gvQlee`!*IXZa}-#CCNq$D38%(`W)_!k-eUL8e~5D)AHaC z^e1&kx+>;oU4U7mooU~<{_BnJOc(dKI^HR21t%5S0D$@gMROslV$Czd%24A z8ydz$Dtx9Bl93)`-Q)u7&m^sMSeau?`$`U?<~Qysa@F-`Faj>!P2<{z0>JEtNkieE zw!<)3N`t-~+&Tjm^nTfDH~xHMjn&sdENEvMVw>uF>M2$rYWac$Q2!l|pxDH~^+^E- zXPQ$o#}?6`E=4*sc@sWfV{Ky-nUf>*sL=*cef;=We@{fjnG?HjLPO1e*Si8h{zl}+ z#w#korax1~+q;hBtD>R;-P`lrPESo0P4{9|u=#mucw}T%oB00y``t*;be}$k0$U-I zj`d@8^^1X%hCMw!GV>l<>?SI?=JZf5QYMJ-eBOFZKyYqz4=f2Vs)ZGt3wny>PB4DP zl-$sJeN^6$2Y{yY(BZL8u6GZm(msAviJ+AdRu&6Wqh-74bSMY&NFt#gG zwr;fp{cYyD&fDg*>q(J)1mt7@(cw%|_}PAyRkU+}{ku*>vdv-#8cYurfp5Y!?7$!w zC4rddlly$c{@sw_MKrAFhQ z-E%tVMHs}OBU9F4Zyx4`I@p%yi+z3+YbKzjrS;>};}5=Y6i5y@F~tG%*ZiL?MY_ei z^N9EFg{aR41%mF9nTv3Hx1yZJePmJ5AlP0qnZfx+c!XC@1f{`8=6BP2J8I7t`>5Vn zVv*|X%ITn@Iz}eWoFJ48|9}lfl!Uv_f);-NOR09Cb?%wCIX35=c+S5 zefq@j5wKvvzaukJbNkjUU}b_?eVpTc$)i(j2E|2=H1ecuUt-3yu$zf^;$D7Zqp`H* zAr*ZyD1v&%@@wx~D`NO{1r3>iZsLJKAR}cPA-)1OK}&~@4d3vI^*z6-hXVh$A*g}s zl-ss999fnh7V^_KxgJd7g3{>>hr8a@zJX2<){ALGe?|}Dqr0K$X{p82irx~pON^Y> zw~?YRgz}=!w*It1ZSMIRX{YVD0%prqX#5xO?{Kg2UrHSrDa~dMQg1(YbVLk2pGq6t zh3DR6@nieO?X=}drRyloLRtnXb~=5fVFZF?D-2vl-T75KC+??|<%ckuEpE!s=I$q( z4(Y!wEGSUrx#N`n7avSPC0u5?-_igMM~*do{hAO<1N5w|AO7~z)QtDSZ5SAVN@iYO zwRin+uPA0I8oO}mbm#{9uZt4HRSNwqD8M{DJ>xjYJAPbDIweHgm&U5f5)u~pCcrl) ze*12rA>I29)T66>pvY5ob&L$#Kb(05xV8ipvm%Jx8GsYA?F-mH$kHys_0j{cVC2Gp zilLbj3^nwWi0qNWBf?v-yVmixL2=1+Z&`uKAfMj_pqx;6QDMV_IP&?`;mx~hT5Zyb3tPs#{9kHIKf0Ar__mkBA6ka?i-RCi4ynWyba#NSH=}K3SWqnUPCvtFWSp zX}SbFiIN%3r_C0-?@{dsJcSwizaX@T1a4Yro4Oo)&~7W)pgut3mpASA&LvNqKz%f3 z3dV1O>2m035x$>Pv+IN3wtTa9LNzET=#bZXmWcY-H>tZZFc5EXP6z8UK22ABK2nzHn%devFUL_J7sT5GX1tYO!rYP46^P4&QhY#WioVXKesikT9-i z*=i9v>N|6_eH6QWN&Q5fx?;}3M<{QCV zStmuo&kKQ^s*x=7k~9Qsidz0fBV!Z^lgv~57&bos;zxV?q{+|n)C11&uCa%}R_Q6Z z^ZCKl(3jOueP&&g_e|wgBJH$m9g8^~aCts8@psuT077M(T6`Y%XM8VeaDnVbVVV_I zPwJfMETltctBHJ@otT)|tr7ggNuN1!Ns`F3lq?vr7_&bx zvc3Poq=|Ik@VnxVx2?TBI0$1*70sgYBu8;edeQ2Q2#m8*N8?G9Tou(TYt%-Oojb7n zX@f^ROyUiJ6txnIM+~=S4(ljcD!=U#!{?!%v8gw6#B=Tc#T%O^E=$+;N-YwRYG1sX z5fzn;cc0_?ZKZ1HyJJ{v8}XZz1m%>rW&({RI7oyQ&6n^i3EpI2R_C(ILxyzLBb3^| z=LKf^YRKU5Z1yjBsiXRR9PI4}H$5x={2@n5Hm%^v6BYbrxB#SH@e_HHB8A}oZY?Im z{@D1i@9!tV1QZqduuFZ?p4%K%qMJasI(ot3@~$6Mp9NEp9^HM*eB^61XkMN1eCKN0 z{nKH7b|odhIH^m|1h+e(F-1Z{9nuoF*qHExTn@W1;YTu-4Ao)`2MF@b1>&Z;d;3(4 z0|$`x=~ci$I{6=~Cb+P}oyZ%shU~P_(@jz0#nWA)+1BHTg1MTBD$Sb?NrmE3MU<{A z^u)Ta#i7c^63iitspy%2M5pPmy1)PeyF|8H8gCDMRECq*+jtu!L88|_j!FT-7SVxz zLLd-?Zr{GxH`1S5@e4myO8M9yi@7re^OL`OkclDa<^0J+2=jBfxGLy}3}joV%`-m< z(|+v!Wckfs-e`^Orq-)7-kf){aoNl5qS|gjsX@mxO6@I>Igd;ym4ZQ#gV{;ihPpeY zN~`PssRZN3%;oLGRl)L&&&d_oiOocBGBN+zLGbVhN6|>~yKGlQYPauO?$6St18$Au=UH72grR|mxcV6ep zMQ5Ng@UjSi1&#fak{ z8@fVr4S3_szV6rMJj}N!B~B<&Pn-ef4U%6;?ijUDjB=Fwn12!^lOv0^W{@XIEfl!7fXN?&%w*0Lr89U-9A;pMZTZvrmqk zyd)D&nY3BppM+QX$t#!tDc>=5l+J%#TU(n`Q=?0sS#$%<563I=PNk2I>QTZ~V370S zwtey>BJO+tqTAl2zTOt+4l-B zb{^^mFwc4?Pd-PF2UEgp^qYkbHGm|o_1aYFk!yX$>>T_LUAN5@7}9uM7E;`(UI&OLB6Q8eHb6Da|H}{(cor%q8uZ&pWaq)|4JR zwk|VY!TCT_U!TK;VYUt2n%`zNp^TK2-f<2Tr|ouZ#LxKMuNZjh?@x?FBbWAk6EB+k z{|*_M>lbTBw-~Xyl<+y<4K5soay7W<(OxR<;E6FSl6kJ@-%df8L3Ua$hlhi<+9+gL5vegeot}r2xDb zdGR{8mYFUeet6`};Y1GZIG>G<#855}G=2q$Q z#WF;5|>S!=fUwhNqmjL`J&jofSkz3{6eTWMpK_%ZKiV$P%d@ zz|zBbp+d)t+w~ONMz8{rE|?em@0*t*E&|yXNPyRgAK~Fjr|tzRpDe*(syK>k;o(=6 zrGWDkgRHEf;Vun~0yzVVUJZXGf{sO>%4t+jv@Zy8{`Ul08UfZ+>yDz|zr4nv$3g{8 zz)qQQ2{_+d^K=uo_Nu1g6nN~<+IK+pvY`}xoLPy2prD`<$$NYL%O5n~H&$H-_s|TP zW0RW99rVqq%e7m7;;GN~Qhl;7MdJQ+WWfA3_Pe-&H!8*=ML69$8t6g9NKRf2BO>XJ zfSpm0wR7mPVPRQCfG@IZ=$zvdPohdW4l^Otk=ZC(pWw)j1XHmATit8}~ zwqHu#m4~m>4q!7gvR0=a-oUos-R`)9zCUc6ZB_O{{1%XwH^@hCBDcpbp zU+jC9YP0#wtTRDxZ-0)kyy4T@1VwNVoCX?g?kO~ht&2!IM>V|i0xAwN8zIIU;iI?C zatHQ;><%iFV~@7`yrr=1^*yo3?t^!UHB1Xr?tSCm8kh{k5iHX=jOKIZ<9prb{(jB~ zz3w&k@C3|T$T5fRFsprWNlE?D!Z<;f@9hdPs{xlL6U3tS_CciY;V>#{@r%$kc_x#L z3>TF**`HJ$mp8L}b^kz~z^aKaURo_jfMqdG^)0QxrYE9JkaAVIsWm&Nw=q9?%BB8F zx|o~}MEm2TQ(UIs1gtNH%pPZG$!B?hyCFcV6~WdgU#GIKp(%5@)o4e6C-sXU+8yZC4p^H`>k4G~rENWKPHXed%6Kb!0 z(7dnFMxV)1-P>WU`!o3uFL=~T$AppRD?NVuZI*KK2Arj&5-V%`gEt>*=HmHC0Q%@1 z;DSeify|1s5kD)LwA*i}2U)SuT6Acfb2zB2Xh1e6l8Tv?DW_*(qH^b)QSPe8M?GnO zHmR3&?3qldNr6FyA=rrPK3BR}d8I6x59{gO;SI9g3#i;#9sZ@M`T8*90X1OX?X>oc ztn0U5#j`m|n#=cIhg`-7{T3;5VECaR9@9Uw*BxVNX?Z0QyUhK7gndH!HVeXeYE)<0 zS$}E&phsM4GpXyC>(@YA8A2^N%Ik_fr}zkMUsLaa$w>J?P#&kMu49x^%mv)4e}2$? z`)}zt{%}}XS97afVV=kQf?wQbArhfE?Q^MUE~@|B2@Exyz}xSfB)K#VJ0K*DedC-w z3BRDQJK!cfBRw{1=`^Oug{fycDc?~yqNPB35pwGe_V>jw$cG6oQWF8gLj_D{Os`

DUA1iT%p0FD%-g&K-M1&{eOK+B}z@u)b0g*t`_GPi~X z$J=3;PN3&8BrVWNXMnmWCKcpdfxCqekbrq}}|FdQVCq4^N*Mm_&ol9Yu*+gOTX-_m4d@UU`9fQf2> zWw(oKTk9}RphKFJveYO8t_3h&h(C=Vl0~A6c%V&!Fl9kr1s;CUNGSCb?2?d(aQOps zRmjB5%1!_}FO)HKW+zPPbeve==k_xa2BkM&rHMxVxop9qPdreb3nV7?q<6oU@4>*( zi0HUuDXD-rcfg<&2vXT$W@V*EmXel{m6P9wP*B{CRN{X1Yz#9qvyFcwSk25fK9Bfy z^fq2W+|MKK1ygsQ7hBORF+4gxDDYrl?)lVHi6_$&<4(n#PCkA5C^;_vm@xnKF%^kC zlv%oxy6B$C<=gj&%Dn74=-|XziNWp4oyU;+2&~<9PI~XpzxQc*n|b;_75_WnK;!Dr z$*pLi!$=+?IysXclGZf4W#}R?_quT0mie}8o>frKc(r2?*Q)sYz3lPuy*Gq9EK^?% z-C=z_YaHTa_1w}IyJlBm+jE8If{#{b<(}ZV4-Kp%lgFGz3e`yK7f|Lr#796zzX7yJhp5*{ZPuXa$^dHm70R|O!imqFV!Le9e#b02vI?&tkP{q#fX zl#__wHAIxv`-gfwwEn1*`jPAY6Lj$g_-NtrL~W@BcN#|rv&&b@dG3px>8KZNaeC(a z$``+JQ+Ibk-xCuBajrd%D~BhFy5C6fX=whA5cHP?I<|W^47Kz;jNq9W)^??Ew$ekE z4NiF(i$oE_jLZA)3{52DeaO;FKO30J9^0oVH?ddm!mDtyq`zeGqT&(9(dOS`ueA;1 zy@$JB1bzQCHF@8b?62}*dk_&}-ajhytM;)(_@_F*%SRT4_LzFe{+M5{ka}5eDx8ov zNPA1uDcqj&UEg$c(sYS`Sx@AlYNh*Wk@_K)X1m_}_4_bUY}6<z7#^ zsJ)n7b+BrmN(g=f#e8C4tMYVe-Lq6%ZZ#ZjFMHp#U%NVF`mj-k&ySo- zyuNJ7SA%oP0zwV9+y6QpYpJ)s9-TLHg|8wD5pFj>`e?a1NOTOj5D*!`+snybd{;d9 z^jb&kyOHyv>PNKILHC^xlaEiJ$Z$}+A)8ZBz` zD0mHip5aTaIuQ5UU~9)pa^pEI58D-{CCcBP$F1Zq-Aui=)U*>?Pp!Ah1_fujHa*s* z*PqyWdQVcOZhc`*$XA-G$4g7muiMju1_9ew6my8ow<0Qf6pwlkyLl2eB0r&o9?D zOFyXk8Hm)&WM_YQzU4%p#LSU_Ew!2a-kqyrCZ6h6g=;kDi6;Suf}tv}JU>MqSdf3~ z+$tgL_aS#ngahA6RCt(F(AwRny{ku;#-*$JJR+W!3i>-Rkj;b;KGD}U^_m8$LzB@^ zahOU8W&4@6k)LZJb2Cv`y=5l<`Eif+pK8h&Q=KgfFOW6D4{zwPe~;Hb)E1r9VeV8u zb1c}&64&roZES?!n{T9d_yN+U#=Z}VL)WaU7*g(gdV`9kyMxzPviT3^8r*D&3RS8; zV(BRy>$jd>5CgmQWTkDX)Q91oWGh;B+~AIvFmyJdS0W4Ng`T)SEUVq-uIRG;Wqot# z;NJAON1Q$BwFmBLh!tW}#cYbJjOcAOt2IU+nB>fEb{xa>po^YTyuz6I{O5H~-0Hcf zuSl^t&4!X>tlCF9tBd!j>B&y}3X?tli#3gZIjC~#bkbVi%wGGf;J^8sFHasadRPCw ziJh|Jw$DGrw8$n%{oFDo@}t$w_QLW)fog^Wa?DTp6juGGVTbweP0?x1uKur36J6iu zVAOX%9_runcGz}Hseb3MEyw8S+bEah@ggV0^LuZvOhN2`#I10FrJ+P86LC9v?KcEf zR>Z*bCa)8Ft-mo#V)7sJO&NU?hvZ*wnh=9ryzFJ^kA|EA7WGk8+1P<~= z+9x5%qO-3Wa}rjg|Gsbhs4cWWHmCT@zXLp$gyCzb9hp5=*|8ED!coJ z%H#~Rx@d27sW;KS^$7ZI`f{oUEi@~iv zUslBo!dGy3(@@*j*k|%l*J-C(@?pL{-4BS1f^CrmqK|RE+Fm|I4SwOl@6hKhwokGI z23;L>=ETkGqhBisXP=~J?(06hGvCbQ&h(V4?Y^xf0mJg!4f7%Ew+-S;Wlkn(`IbgF z?}}Kz$Zz=bPQ=gJ36^f`>d^K#J{N|3TfN_u@DD1|2olqqZ3ooH5eAKq@d>_ao(9Wx zJzLcVN|L99RS@S0GA~tU*9-W~Y@Z&?du#Xe*IbuCjE>2YBc?|}<3>~3CYb}DvO3EP zng_m)?3^o6+H_{9t5p}9VjTL2l_2iYE^?&pdA+h=_6dKhJ?^Sww%Ww4GYx6oT??Ta2(XVds2?9mUk859sRG!^ndFpJ_kefUZU(~g@q~BCn z`XO_*L43?^X3ASv+w8tW2P>^h%E!3$PTjrYQk@6BKl;Riz59G`wU4c{id)@#{7Mj4 z_kMdFlX-TzapL%=Ev9=t{71eqLl|WD?CT46JRXVPw7GKHww969?HKTC__RLHuV>*v zfR#pre$HuPqa=yfI*z{jn{K%+s-PM^^rFm2g}UXu3u|5N^V6q)$J4H%o;EmTjOs*` zaP-g@!gzYSZ?~k#Jd30>+f1?c3_jf_+t5E0XvbX4&Rq*0e>v3DDITuFwrMDD?upp8 zK<`n5rfzKm2Yz@MrtnwlW~5AHu+O2@8!6vzRX=a>+(9{G=dk-zo7mXB#P9mZjE{CavVk!k!;fMJ-5IMOQ1Q-mtcwDOxg{z(g52}sW}c9*f({=Errhwep1 zcGOBWQCzMnIInu9=Nx%$I~10g^?AR6)uHaf=!|H`AaNw3${KzaJDBZz!q9SGXZsdnpv8hkviPsW zg;ZYX;Fyc@c>#@t4pASklU2W8PL01g|MgxUB2Z;{;HSldMRs60%I?^-@a8pVs~5gk z5=L|`F5PVQjy{4%oqMx(D;?cWpg0KfC7;+9W!Jgw_b@87=V^>bdqLocsIpB=Z@hf# zZR&25zwgnmyX3|t|dob%{m{pq#1Ll-UfKFN4b^!&BKJuuf@uvF)r%* zx=x11t{&Uado~rvU;K(`?H5%hP3}!HqM*)+h5S?r_gS32Ql;R$b8B+2Os~&(Z&HIR z&iLd?_%LCtbFxVC`ty-dbG-!~#c_P21hntwnsjNIwUCeEgXnmp7gNcTF-p18{ncrE z(3IE;CwL=bXH|gtjbJ~^S^}1!nrn;&VcIeq{ z;yCYl^zo{-I_tWv(Cj3rRnRt+5UY#Ps zv+3iA5$o2SW-A{|9Z|ygPE$tYDic$0<+Wd;s!viAmL(qM zhJ4KshrT~b96RPpDBX_di`7$+R!3`=YB&yB8LoLrwmhr0C5k+cQ>Zi(uXFx%=*IMf z@ZH_Ea{`z9H5B~~lVbNmpBgAzB`-z#T;fwPDVe(WOXtw*xTA`JHwr#pNyh)_$=XD%w qQBzUx>St~0nq&IW7pf|2Kg)LsRK9-YGery$nHo#HydC5+1pOP&l+|AV literal 0 HcmV?d00001 diff --git a/sound/vox_fem/mimes.ogg b/sound/vox_fem/mimes.ogg new file mode 100644 index 0000000000000000000000000000000000000000..36487a145ee2f5441b41ccda2eef1c3cc6badffb GIT binary patch literal 7449 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 mJ!H`1;EyfTUqGl{b*2z){ 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/office.ogg b/sound/vox_fem/office.ogg new file mode 100644 index 0000000000000000000000000000000000000000..72c04fb1946c928e7aeed58b04d65c704555fb6e GIT binary patch literal 8095 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 B9eDr% literal 0 HcmV?d00001 diff --git a/sound/vox_fem/op.ogg b/sound/vox_fem/op.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7b3c393bdd31cce6be5cf7893bad053bf1342d8b GIT binary patch literal 6040 zcmcgvcUV)|wm%dhASEDTK*U4|Wlg3wOvlNUK4t<|Qi)F}PC}eym|AU~6U%&l}6t>G({;SDXDu5?9 zr9bAh9KZgz)}{0f#sYAIV-Lh^*q#)PjgO@TE`nn{vDQ{ZD`wvD( zMFNL0fEDvu=NCgl;oakY|Q`MgX$ z_ngEU44?!?fI2Uy5{NC_q#+WZX0a!bq@Qi&Tuii9(o#8!RF3yVj?A`gx&Ce5;^f7F zEr(yE_7i3LjGyHw;L+&YJM6~D z+*nB1y^t_H9yPrXH8ma;Rupwdk`Oi#7Ix#{zxPGeGnAo>yobQ*pnK#AJk%GR!%=|H zP)3zq&I1qNk34(`*EF^$I<=@K_3Zgm#*0&cV}R8_%Q&~_Hj|K|>e%ucxwC6)bE-wP zwfoLi$NuN8Sc$s;L23}RsyorhJ<+H;QLfdZg|SKy7J^)M7;Q^h-_70V1#}#99e%TG z$EJh+K?#350Zfs%ZiWNsy}%TJC~)u`+vxLu>~g~@LLm6i1ssZReUKY0HE9Yr7w8pS zPd{Hw^R|B`BCEivZ6_!=Va3>8Yas{GNUtd-_h24ZGC9QTx*N9`!|m^kf%9}ASCCtz zSSgy`Lo~%Rb&1_3k;obupXW<46$%2W1A?q#3M-%COEJS2Ak?LzC@v)qUkzNUXas)i zvw$qh&<+SXN%VjPdI*JBQ|v;4yLogEc!rKjIunQT8y&8N_ z7cqysf{`2xK>$70;>IYFYa!)_vfGdIXcnSzD)mBJS1^NR`>uyXDdSDp!(!pYJ|FS; zEzejB!2~VVLOMYkgr$5NSe#u%TPNzeN$a=md9Oe>*h19#N&KwKdGxY zeV|@e%+TgCcmV1kLiG}lpQT=~Ef}T7ilrPXOTIaa7>!WZi@JiTImE7F2Fv2c2=!;M zhd+zdO=WWH7s9C*(Lc730=xwM=y)N%7R z6D^+M?|bUlbu;}r2{Xl*7f;*^9o*K#XO6VJuTHme8^6UIkf2H!X#2S}$@9G_ynP$Q zGrOoy948Eq43bdSsLx^PU4K^ljq=jEc2yj;A3!m4i0{ubtn6j90C5LUkR#ErOt+-S zu)JD{YDt`*^$h^kHCMs1grJBk3J~^6mbG6@PY#6jg)*FbNJ2~&1x8h7@yG;tC)=~9 zn8_uY33&(=g_i)YmCzCEZb6nV)g0fXONkZnMyUj$q=?FfCHgL~C>x=!6E+o5Yl)IT z`qg6I00{;wD6qH?p?MBv0}j}0t-O^#KT~5cwV?Ga)mNGFu_wB5^{2p3STPL|-4a3IQP_ z)b$5a0Vtthg36XuU#D8&B><|Prz?lj_woTDLop|UJ>rP7XQ?bAV8F1HONkeEoehmA z{d055zWVVZdR+bNbtD&-07jdX=YLwVzz2~b36L{_L%#<}a|;MEpgF#)n98aLVM)L@ zFK&(jE1LD`+LcYg07{@s2fJZH^F$IVU{qhHi6sk0q5B<$`f;rKSrFm2H}2AXNXsF} z>K-`v5o80x#z;Jb2DJ;*iJ_wng?w;CnLNgjXD=TlehLT;vIorYB~vV-hMYY_5 z+@(+P6iM`#LJ;8qC|z~V{{#fVi-b2P(33&sg!E0TRk${HB%Eh{vO`z^Oo3ZEge39<`AXelH%Njp%0N%adg1IW^v>UG(jp3%EN5h)?PV1}Srkx0Ua|i- zCG0>IS*+#%{{s*e_~qXRGpMKK4}~jVJER7I+#z*$=2E#cvy>o6-I*Yy0bk(3#R4uX z0G`TcB9uqqyi(La0->N5hgCd;4BQ1A_xE7`H`Paig#~hk>yRfb4?tKbcktiy{-*wQ zx%m$UQG{Ao8bMgyc>W&zql*VNwl2m4xY$+bG4d!Vn8!iR7oW=`!>|CMsO!*&JRci@ zQUtP79|g3myx2V6Bixq2QAdvNSOT3= z%NfnyfWrNltP}b2O7^nN<*oO#v=Y8uw$RYL0>trybabu_>&4@z zLeG^_ZM3Uev~HPb4l9=Jef`d*dv5$OGgqf(zANMxE`s0G@hn%pR-YGtm z^(CvrZ+<+f2CbiOC})%(Apb=_rX0A$H+<8dQ_D~7AlsaH8dO=-l}kPmvuiHvQe&u4 zbItXJ;gS0RJZW8`lU;v(mMH~) zIs94)Y%+_2v>w;K{j*_7lwYidJ}r5_0`(mKj%nu8$WM=cIQ{j@`?SrCi6|Z7__06j z1f_S*o4;SPIc@*dk@&+G?a>Bfhu<8y^ur29^jG7%d8m%JiIH}ptF3oFJY|tG5%@Ym zd(&@<&9bz>qsp4lQuRYnEtif%Y`I@`=?Stw?K87G>pTkI)cve=CQ~cSUy$x~c#A#N z{6%=>tLCFS)p1X(=O=3VX4Y!lAE1iV8s0ZeJ>PL`>9y^qTbD$gu(^A&X?E`++sW;G z<&N`$b#&*TM;WckpG+Gms?ADb?9z(cbq8fH$y0BTKuRHm&=(x*iiK)+RSb|GsBamuly$;Gc(RxqV;K zvNnW7)?}|;8qat4&TP0AJAPm>CvqO? zICQ_N?kmj@4?KEUGQ3KusCmP8=MQ6KyO%n+87*r?0Dz-R|%@ zeMEip-_8v*uHyef z3dmy{%PO72Y40NTnO;(Vqo2G$M5nFLgalqEtTa1XNABMl8~L4if3$gz_vH_V4d=EL z8auowp2&Qyy{n@$-5JA#+Pon(!_Vq84&#Peg9&8_h*ss z<=gKh4atrhXwSO*RC+^dJ>q0qld9$BZ;ZS@C8M_vDzxrxDteK*R#pz_uqUG&1+Q!`&=iozdtj3;)UpC-!SsywU&s? z%BI8ZJ5$4VHMV%N+nysqHbFkbOxxG-H`0C6(ob1!i?6v%4`L-=w!#tE{r&46fcr;K zd0zoPao!>$x)V}NSf_Go%k7}jsi~o3AJ;jQ1#L2$ytiJJYYSV@Pjw^tK{$Gn^qB=M z+zl=L5c)}~xMfdu5yGdSDQ!>eSMx42l8cK(iHL|cwE>&_l|!@eH+ z>FvteC*!yp6Mw%kjX_xNJL+|e5!LI;UkeH`u5sJ;+nk=Ch%S{KHgd2nx|4f9u=U#B z>$36RCwR&UM87#Z@Aq}*PbhXix5J-sk@)U;2Nk?pJJZ%qfI_UFdp*9^l;SCTp%J!b ziGFs&+xkmyWA!}>UiXzirRe1c|2(@wkD4`=a{0H*Zq?C+Rhy05SZ8f|b)Dv=nokcY zd{?J*k9hMHIr<*sL-j7#&%NoZ`(vlwmRUI=Drcg?i-QL8>W)#7=un@ zNe0pWis}yvniYC0c9~;zb+$(Yl_lM~^Uk-!AMK^J&9>+J?g4mv!L|fbKSQ(I)4m6{ zA7dYiN|+aI?xW{S-a%hcI9kG34#jXnBl*aXF!)S-zOitoeZGJVJx^gA%_@{@SpY2r2?msB= z`S3k0>Ei0)`2O@d%NgQN#m_9Jb^SeGhS65s?Y&i^o!iUelxhYW$8_3`WI^X%SU@pE ztEtqE(#aI(rymZCY?B*)DBtdhTkYzYw;jg zJKuQQ#%f6sri-&q;1*vfsrdP9%4NLM(hi~PZO;r_?+}}P4k0=2?|siScHU<6FPk1d zsa8@e40%! zS}YS%*Oc{JE9i?S( z>;loHuD0bHWz)N>@{CQU_9@TbeyaO~Q`4?=2wryy@iFht?kVx!dKL5QvJk_kIx1V0 z*emNG<5onHZF;Umq}%@HuF4>9@>Poemk-l-ylSGIv83M~b{Ebq3mfus)2k9`43jiS zCXS6;PEI~vF}of0L-)Y-{rPbV{1?`S&BwK8*g;E%CqgW*X*OwGO5hQTfBAHLqt>or zrGXE4^=px5<3v$!b}TU8(RDJ-j~hYZC(Top(XOpGrThOdW1oc=JJ@eeLwF~)AS zOsPTVPFi(KedPJ2qbau}zr4xWNzGj!x*Gp$I@{Oa(eF*L0daL9Wp2Xa6EfH}R`-JTG$u)S8{gRXwJAA)|K1v@ z9sBqsOJ;MSfQrD0=-2=fng2o{#e)9_K`D2B{j&vJ`78g`_$vj#6LQdFw}ko6|J1lb zzhHC#*Nb#KOxHCw6d6GZIJ5zdbU+&DWArhgBQ@Ov!~Ekzf}`R?Lxbbcd~AVDzZUPr zSsxOBEFnl92iMwEADCm(wOut^p`r}egYHzu4X9SCS)ViE8Fk7B+O-BzaNTDIay=pb z0w&_HTdaf55`$bRf4DDZ840LGWN2TEC<;(H*dqV?C?*0> zHGC=((?W~w#{%j(GK&y<&4|yH50!`&=cDlWc&mKmY@?QuU-LF5Zw%Rd_zfxwvm{Ht z#zz5@%766qZ*`2&q&(u|l)BLaX)$spp1v?~T>lx*N;wA;|5Z4EMN<$i})L2!b8eq*U(9 zdFDl9d6$Z$XVwWqDG($K=54WSlyQEe_UNtIqj&$k|JoJ_K~Sn@ki5`8E`X^jDp;2g zq>hNm;t-P7%D8@OHY;r&oq-A*a<8+3sh)am{&6np^)DB|A;@25-?_7$YB1IG02vLN zm?|Wo7S+6Z5|-6qvuSYLEk;srD_F5%3ZP>LG98WsbHIRR(h2tHs=@#Yx)VX}!*n9k zwiqmz<++%2Gifd+J!+LXgkxxqjJs3gqHJJ2XN*B^utEoBV|eoaG3?qf15g;gSs^GF z2$(Lj0U8VN5Wmy{O#UH293ZIK#j4rS)VgWf4tZw1P5kaWV&lBsbJR0({6pk#A0i)* z20#7~JUtrhTM#_UiS!-w^&OA@uYE)H6k#YO=NYg%==M2Gd$A4Y}1^ za~OLxQ-*-YR2N#~(Vg@_d-NhB)&<*H7zfu{l8=+XGwHE8*lGq@%0MKaEP+!m0d9aq zz)!qdhX@yRcnqKHyP5O=9rh@ZSli0=B2$e%c46@)^f423J!>r7xqfuYfuzG6 z3n1z6#sVIqd5k^i`iz2r-E8heK(7&}kPM(?0w1AyrN`=8I~i&E^`i`8FP2-F)YrIF zNZv*x(*aaGf#_I2T1>1p${Qk*>Up_DDt~h-CX_(bW^=uW6b!eJOw}15AYKD|xKpv6 z#57vt2R~vhABs{Bp!D~4mYU*Q3&s+4>)-p4b#Y@e)G(c;k??I=yi#)iy@{DLc>N+H ze9fFYk@N~HKTTe*ADj1ic%X}sHqiR1DoNjVbSkZn11loKO_q1Yt#|)U57(_~3LT@(oE0;O1WVOjF&cr>g$osQE)duBUy6{gWJ z8Z0`22t#pz*NOrO2A#}wDWVqYrWBsUrVkM{S)2l5Hku=Ajb>*Mh`U)g3y4=SoI`;R z3h8}VG+2R0*XI+6wTL_#Mw6YEi$|lm1OgTK*X}0XGz$bk1e)vN zL*-=hP5s~yAsoX2kC^du7_>+2fxibx(xv!NvX0ImWbj%Tu*WgX^I{?u0~lyDkA{z^=N9`! zVE=t{e0bw%LEy2*=Ocs*Xbxbs^62h=a6T|VWNlHIc)V&l0YHHRE66{MaUA1Bo0+P)P1q z$dKpP@-2jHerczGau0OlGeD^U3=oVoQ0~*=_+`F)XjU9xl+y_&OGqFex&(-eX3;@K z7USot2$@O7QMHp37&zamx&l7GbJ!d`3FlWT^}& z3j<2B?N?&ieUJoUep~oytNSz;9^%ML(aj&(DYnFO<_e24vl6K z@M4mI{SGS#P>Miy>cPTTOgc_WHNM|U1eK9X5LM03FpJG9?fzAHIFHS(^Sm>>Y`XQaOUzoaH2p0f@V2D0XowN;3hx6k*Q%O-8DC0O3t^| zAsNLRQV_U_SkmLhNYxHIVVDC&8e7pkB!{VeAMQ>&|3)S-8>?w+ErEGPmzTrC%F_bO z)bp)-+zz(3j9@o$Wdl#WZj=Mp0+=8qoGuK>BQ*;Jpv@w%T_S?Y0>ToJP|8_Yk?0n& z@_Sb5keQ{8{U+$VC}k)^7p9sTCmHmnBSYG_^wyJfiO64p3c%(!7<3AP)OK3h*cg(x%gV_sC@LY8Rdyg%`CmO7&C=3x;~xn|OUsSV zBjH<^jaLx=^N4@J%$dFzjWCT13XTj33!)~SN;#WJp`4>;r6p66<71;E_6pbDXmvXS z6{}M2aYbI4)*8WUWZhoJ1O*}fC>?P!5} z*Up7RrRoid*8Z8orF|CgoA|OW3TfM~Vq4T11LjZl>tzWNN}o?u5|q2v)(($kKD8~k zUMH5goxDM@N+;HaE~nR1h9(Xo;Qa=ya;3iydua8o_l>Uq-7S7;mW@LpzrRpFr&x;i z8!ZYG&%i?uz!_YdEc3D`C_AKF4ME+P)t8PZhr;$<)<_!}lk@5{P6xjtHV!HZV7)=Z^DZ-3)LgV%Vw^}FTKI-FL}O=ri*S{u#zKc&j$J9Th{IJu`^ju9FSeuNFsQMJa{cGKqkhRR&*Wa=wmgj7fM0crmOD;B*YBc6;=EaXN|8K_nJL>ue!O~(PuU=S$@*M z_HwQ5p1u0UrFuX5sWa-Y;*B#38t04`RN7|!ixu?TTg*6q?y7HYGg@5*S?-t4k0#wIY6*8v% z*}|0Wk;rxFxMP$%Vdb;UK|^%&PxaS#%!A`dNl6nsPT7}NjTSG~b>no3i;BGJ`Wn~) zGx+x-8R_b;NO|Ry_JU8OVpNs+@I`AR=aEKLlzC}nVP&MR_L=Kj{okH`d9{t%v;1JD zZdqeV?~iR5pH{g?n8}Kroo06~Kyxeaju54#UT^oJ9$RL?gyP3mwwEQu8kAV zvQ~pb=W9u)_j)U2ra6_paH%sAH_OsR+_$~5>9MHMapkSfQWg26YPQM%Q$D=fSuLwv z_h7ZOwC@o^dxNMGgk9@nr=Q=8q zg~|r1!c9;aE60qSP9>}kU!YP;4v+g=d+r%8qyi)Nk|A?1E{1%@& zk+)yJJoL_|qlV-Bg;2fU_nISOYbX|fhJ5_$v?(XJ5AmviJaUI!b2H(iegNbY zqa(Vz#&pP1Lsrw5^>&9zxvVPAMHsff8+DgIScsx zwB>v2M>}thxVbNT=?(^X6z+K)? zNS9Vl$VvFAEdS&;2Ug~#{x-8!h5#qhT0#gxP!>w4p^|f@@?a^+B4^Hz(1(Lh41Dta zDj+j8vNp8c?Yfv{U|##DhV{7DPu|4~4?E{yCe`0#JsbQz;zP zQ)9l`EoSf|mL)|97W6Zb6(%=y#eJ?xMJ3|m+C!K{y~C5p^OjocZZIzn#4QR%g}IQE@ghzJ>F2r)$!IvmFjHUNbk1i(gM2?i@aIDSh{TT@_X9 zw>z6#$52wAZ3BN7h|UZxjBfZbEMHlAQ~9*$vrnItGa!%q(#7I8J&a#IhT12cYoslg zmY3UWHoXi#f84L&)2sL6V^h;f4j#srPX3U4Ema_{7I35ag+s864qv{WcW#{7Qt{=ztCLiV*-f=JLB9lN)`9sie+>_w9u&DMI?YW@;Rvk1 z487ldmt>Yq6zvshQJSj$p5ARRF>C19ETp)4=fGw88WTwB`xi$=$7`XBE^oa)w=xKK z1U`xMIME$_Z@+)?c9y%iNv`J1>wdWk8?W`nCux*S>)E2Iia}4aW!LDYQ14eqIIlv+ zrX9>9>ZaOb$zMX_N1#%44zd96C)>^K#wJg1sEE!kI@*A;i znQML--kdNQ@mFPgRAHl5)x2P8_Hy!)BU!nlbv<71WOU8wb=rKeZ`5bM>cph_Dx)}@E_EYW?X0K5n-N=-78!2=9{AI$^_=TJZF?F zWqwIcWd3Cq|78Q(H@G_1{@MzvoyaUGOJovAuPgd-W5?G|ETM zrM8aDDI#ls!A+mNV4!g)rD`?ty;E<0=sVNAna;sT^DKF+pTFK*59Ka%q%B9nqR?<= z>(P+GdtYa1&_0nG{ZKh*3|cQ-Xm^*&Y$-NZPfxcp8NAt?+7tL@-sk&TIBBZ-VCJOu zO~&6Rl5QKz`ih7qe2TQ!+%+`My1o>5lJRHi3k$tb>I3&wST*MEkH@;YXHJJ)9*7+Y zZ2Kd}a{6IG*1NS%ix%x0&$iLB2a4jWs0)UpPZUyxEDE=bxbGa?V`ulecSntS-9fdO zj-feLvaRR%MAo9lW$N#ehkTt_4vmdWH63z>sQPa`F~e{z&E2U<@!v#ASKyiAQ8U@5 z4zv?GEj88q6t|zg#6yMt{r7phq_S-i&j$gV*%En0`VjrY6Ujk?Q0n_+1?y$A zWtEWA6|f?r?DodShcX55>!Q_%3?3$`7jz%^;;R&O-^cNqJJBpGtMlWLL+JQ7i&R13 zx=WX;q$0YGlz3OG?)NXvHxiam@e3o`_qo))r7sB95Y1UzDxPJ0TP#bWcJKDad&R%^ z?QcxGc5;+`JlL;FN^Zq;;eG<~^AVz$r&#bK9t`XE%C25ynllg&uQP79^S zrsTby3pHPFh$U2C?>&P)@zT2@YV>}<8N&W&7H)m7HCm{PL7z?bD}8+-sjKNEIOOCg z5JFR`O<}rDIF>K&X%8-xecF+r!*k_ePy^;lAp`h33mMTt`n^;kKl?9JFi5seCJh@R z?sjmWPPyIg&sOhky2)H))B6<9iKnx11#-qB4Mo3EKt^A^A~Dk_G3T+eJ@T)WR8rfc zskeL81by6Z?b;*KR#5UJajlJp3Cqhux8$iWTRaP3y&UGg2-48x( z_D!FMT(5A#+g<(KQs?qR-kBD8Op;+8Ew&9B%u~CU6rMr6#Z!kDNFEKXaOmFv0RNnJ literal 0 HcmV?d00001 diff --git a/sound/vox_fem/representative.ogg b/sound/vox_fem/representative.ogg new file mode 100644 index 0000000000000000000000000000000000000000..09baf77940aafcdcf02247ba1fe85b66da87ad6f GIT binary patch literal 10527 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 I?;-ks0RxN81^@s6 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/spider.ogg b/sound/vox_fem/spider.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6bad7eaa24d9fe62fa3f10156b7453a28cd47491 GIT binary patch literal 8618 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 APXGV_ literal 0 HcmV?d00001 diff --git a/sound/vox_fem/still.ogg b/sound/vox_fem/still.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0ee8f6bc513d2e9a880ee3d00c1d5e05fc9dc6ee GIT binary patch literal 7696 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 K`*e9>&i?~hf=c=T literal 0 HcmV?d00001 diff --git a/sound/vox_fem/swarmer.ogg b/sound/vox_fem/swarmer.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fe750eb89619fe0439ca56c29f8002dc72473746 GIT binary patch literal 8349 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/swarmers.ogg b/sound/vox_fem/swarmers.ogg new file mode 100644 index 0000000000000000000000000000000000000000..54415b44861bfa0bd8a2bca2d442d4d8a7b462e2 GIT binary patch literal 9175 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 S$Y36=!jTytx&DV5VE7M@ELWT~8 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/yet.ogg b/sound/vox_fem/yet.ogg new file mode 100644 index 0000000000000000000000000000000000000000..330daa6d859de9fc2c4c1cb0675cd954d8c31591 GIT binary patch literal 6720 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 SG88%~xQ@J}xxQ4;9r`y9!FVkI literal 0 HcmV?d00001 From badec759b9213e73080044e8b53b2042b60dac6d Mon Sep 17 00:00:00 2001 From: monster860 Date: Mon, 30 May 2016 16:03:05 -0400 Subject: [PATCH 024/260] Yet another batch of words --- code/defines/vox_sounds.dm | 11 +++++++++++ sound/vox_fem/active.ogg | Bin 0 -> 8446 bytes sound/vox_fem/airlock.ogg | Bin 0 -> 8104 bytes sound/vox_fem/alcohol.ogg | Bin 0 -> 9352 bytes sound/vox_fem/becoming.ogg | Bin 0 -> 8638 bytes sound/vox_fem/briefing.ogg | Bin 0 -> 8316 bytes sound/vox_fem/camp.ogg | Bin 0 -> 7412 bytes sound/vox_fem/detective.ogg | Bin 0 -> 9573 bytes sound/vox_fem/drunk.ogg | Bin 0 -> 8179 bytes sound/vox_fem/equipment.ogg | Bin 0 -> 9404 bytes sound/vox_fem/evacuation.ogg | Bin 0 -> 10519 bytes sound/vox_fem/experimentor.ogg | Bin 0 -> 10604 bytes sound/vox_fem/honk.ogg | Bin 0 -> 7538 bytes sound/vox_fem/ian.ogg | Bin 0 -> 7263 bytes sound/vox_fem/interested.ogg | Bin 0 -> 8953 bytes sound/vox_fem/intruders.ogg | Bin 0 -> 9351 bytes sound/vox_fem/labor.ogg | Bin 0 -> 7563 bytes sound/vox_fem/library.ogg | Bin 0 -> 8770 bytes sound/vox_fem/miner.ogg | Bin 0 -> 7559 bytes sound/vox_fem/miners.ogg | Bin 0 -> 8809 bytes sound/vox_fem/mining.ogg | Bin 0 -> 7793 bytes sound/vox_fem/operational.ogg | Bin 0 -> 10305 bytes sound/vox_fem/pods.ogg | Bin 0 -> 7472 bytes sound/vox_fem/poly.ogg | Bin 0 -> 7459 bytes sound/vox_fem/pun.ogg | Bin 0 -> 6913 bytes sound/vox_fem/renault.ogg | Bin 0 -> 7409 bytes sound/vox_fem/runtime.ogg | Bin 0 -> 8583 bytes sound/vox_fem/scrubbers.ogg | Bin 0 -> 9133 bytes sound/vox_fem/skree.ogg | Bin 0 -> 7739 bytes sound/vox_fem/skrek.ogg | Bin 0 -> 8255 bytes sound/vox_fem/stupid.ogg | Bin 0 -> 8600 bytes sound/vox_fem/vents.ogg | Bin 0 -> 8504 bytes sound/vox_fem/weld.ogg | Bin 0 -> 7524 bytes 33 files changed, 11 insertions(+) create mode 100644 sound/vox_fem/active.ogg create mode 100644 sound/vox_fem/airlock.ogg create mode 100644 sound/vox_fem/alcohol.ogg create mode 100644 sound/vox_fem/becoming.ogg create mode 100644 sound/vox_fem/briefing.ogg create mode 100644 sound/vox_fem/camp.ogg create mode 100644 sound/vox_fem/detective.ogg create mode 100644 sound/vox_fem/drunk.ogg create mode 100644 sound/vox_fem/equipment.ogg create mode 100644 sound/vox_fem/evacuation.ogg create mode 100644 sound/vox_fem/experimentor.ogg create mode 100644 sound/vox_fem/honk.ogg create mode 100644 sound/vox_fem/ian.ogg create mode 100644 sound/vox_fem/interested.ogg create mode 100644 sound/vox_fem/intruders.ogg create mode 100644 sound/vox_fem/labor.ogg create mode 100644 sound/vox_fem/library.ogg create mode 100644 sound/vox_fem/miner.ogg create mode 100644 sound/vox_fem/miners.ogg create mode 100644 sound/vox_fem/mining.ogg create mode 100644 sound/vox_fem/operational.ogg create mode 100644 sound/vox_fem/pods.ogg create mode 100644 sound/vox_fem/poly.ogg create mode 100644 sound/vox_fem/pun.ogg create mode 100644 sound/vox_fem/renault.ogg create mode 100644 sound/vox_fem/runtime.ogg create mode 100644 sound/vox_fem/scrubbers.ogg create mode 100644 sound/vox_fem/skree.ogg create mode 100644 sound/vox_fem/skrek.ogg create mode 100644 sound/vox_fem/stupid.ogg create mode 100644 sound/vox_fem/vents.ogg create mode 100644 sound/vox_fem/weld.ogg diff --git a/code/defines/vox_sounds.dm b/code/defines/vox_sounds.dm index 229b6380c0d..93bf36a3716 100644 --- a/code/defines/vox_sounds.dm +++ b/code/defines/vox_sounds.dm @@ -25,6 +25,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "agent" = 'sound/vox_fem/agent.ogg', "ai" = 'sound/vox_fem/ai.ogg', "alarm" = 'sound/vox_fem/alarm.ogg', +"alcohol" = 'sound/vox_fem/alcohol.ogg', "alert" = 'sound/vox_fem/alert.ogg', "alien" = 'sound/vox_fem/alien.ogg', "aligned" = 'sound/vox_fem/aligned.ogg', @@ -239,6 +240,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "dorms" = 'sound/vox_fem/dorms.ogg', "down" = 'sound/vox_fem/down.ogg', "drask" = 'sound/vox_fem/drask.ogg', +"drunk" = 'sound/vox_fem/drunk.ogg', "dual" = 'sound/vox_fem/dual.ogg', "duct" = 'sound/vox_fem/duct.ogg', "e" = 'sound/vox_fem/e.ogg', @@ -372,6 +374,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "hit" = 'sound/vox_fem/hit.ogg', "hole" = 'sound/vox_fem/hole.ogg', "holoparasite" = 'sound/vox_fem/holoparasite.ogg', +"honk" = 'sound/vox_fem/honk.ogg', "hop" = 'sound/vox_fem/hop.ogg', "hos" = 'sound/vox_fem/hos.ogg', "hostile" = 'sound/vox_fem/hostile.ogg', @@ -388,6 +391,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "hydroponics" = 'sound/vox_fem/hydroponics.ogg', "i" = 'sound/vox_fem/i.ogg', "iaa" = 'sound/vox_fem/iaa.ogg', +"ian" = 'sound/vox_fem/ian.ogg', "idiot" = 'sound/vox_fem/idiot.ogg', "illegal" = 'sound/vox_fem/illegal.ogg', "immediate" = 'sound/vox_fem/immediate.ogg', @@ -559,6 +563,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "please" = 'sound/vox_fem/please.ogg', "pod" = 'sound/vox_fem/pod.ogg', "point" = 'sound/vox_fem/point.ogg', +"poly" = 'sound/vox_fem/poly.ogg', "port" = 'sound/vox_fem/port.ogg', "portal" = 'sound/vox_fem/portal.ogg', "power" = 'sound/vox_fem/power.ogg', @@ -572,6 +577,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "propulsion" = 'sound/vox_fem/propulsion.ogg', "prosecute" = 'sound/vox_fem/prosecute.ogg', "protective" = 'sound/vox_fem/protective.ogg', +"pun" = 'sound/vox_fem/pun.ogg', "push" = 'sound/vox_fem/push.ogg', "q" = 'sound/vox_fem/q.ogg', "qm" = 'sound/vox_fem/qm.ogg', @@ -601,6 +607,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "released" = 'sound/vox_fem/released.ogg', "remaining" = 'sound/vox_fem/remaining.ogg', "removal" = 'sound/vox_fem/removal.ogg', +"renault" = 'sound/vox_fem/renault.ogg', "renegade" = 'sound/vox_fem/renegade.ogg', "repair" = 'sound/vox_fem/repair.ogg', "report" = 'sound/vox_fem/report.ogg', @@ -624,6 +631,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "room" = 'sound/vox_fem/room.ogg', "round" = 'sound/vox_fem/round.ogg', "run" = 'sound/vox_fem/run.ogg', +"runtime" = 'sound/vox_fem/runtime.ogg', "s" = 'sound/vox_fem/s.ogg', "safe" = 'sound/vox_fem/safe.ogg', "safety" = 'sound/vox_fem/safety.ogg', @@ -676,6 +684,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "sixteen" = 'sound/vox_fem/sixteen.ogg', "sixty" = 'sound/vox_fem/sixty.ogg', "skipjack" = 'sound/vox_fem/skipjack.ogg', +"skree" = 'sound/vox_fem/skree.ogg', +"skrek" = 'sound/vox_fem/skrek.ogg', "skrell" = 'sound/vox_fem/skrell.ogg', "slime" = 'sound/vox_fem/slime.ogg', "slow" = 'sound/vox_fem/slow.ogg', @@ -705,6 +715,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "still" = 'sound/vox_fem/still.ogg', "storage" = 'sound/vox_fem/storage.ogg', "stuck" = 'sound/vox_fem/stuck.ogg', +"stupid" = 'sound/vox_fem/stupid.ogg', "sub" = 'sound/vox_fem/sub.ogg', "subsurface" = 'sound/vox_fem/subsurface.ogg', "sudden" = 'sound/vox_fem/sudden.ogg', diff --git a/sound/vox_fem/active.ogg b/sound/vox_fem/active.ogg new file mode 100644 index 0000000000000000000000000000000000000000..731020160c2c9e5362ef273b80901de4adabbf98 GIT binary patch literal 8446 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/airlock.ogg b/sound/vox_fem/airlock.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5eb6920f016b444255d3f3ef83f9423c9d4bac5a GIT binary patch literal 8104 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 OWiifl3jXu}!@mI)XjCZx literal 0 HcmV?d00001 diff --git a/sound/vox_fem/alcohol.ogg b/sound/vox_fem/alcohol.ogg new file mode 100644 index 0000000000000000000000000000000000000000..313bb0f979914bc091497f9aa9076685f0061f03 GIT binary patch literal 9352 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 axRe+~mL)%lxWwEA@O5me}o=^=4(h(Gt zB3-(GfJ#>orHLTk3EuC%ci(#JuJ`Mmb>_^T+2`!D`#v+~&d!zqHSnLUZGA_d0@5eX zB~pn{1$g;7x?m|Us6sDNZU7M4{P$i;WlmZ7UyZVo3VceE6CGyN`18ND4w}DYcgor{QR6>C~ z5cSEv11cc21dT@dRwz=ie9o-COcW}e6nbAMl;aiaNB_<{o_svSQ^+4fo`_{0Yz2i1 z_$c)E9aP~KH;@PbdHJx|PcT+?foeve8vxifeYgygxQwfWdf!Q~Kv-<(KxF_BaGqfl z(J+>DE#bCH&guIFu*?GK@@ki!YT4fEFHQ2t%MAg*;xbou_?yPwY|yvACSV7En_S8S3W7h`ffCHR}M;XG4(j8;rT|(GCL>DxI z`P@ogika$LVzQZPk3?Yt$_-x2Woc5i$b%u*juWtzT5wD}qLc4`4dTaY00m}0!G9|e zWDv)7Ow<>oC-he=5J?FFAw86YfvKfeR!utje|6iD`hmOB;CK@9?jz#Tk#R{_Go+Mc3JT3s>XeLhlPm&FN-YFlvN(_z zTHrDO#2^geL@pE(QJk)Wgm>XFhVVs#ubE0$x*xmrGM^tSl8EQ{*7rD-H$9{Mx;XIrindT@{+A-~f7dj%jYS#f>P9YUb21%X0(3PWxY)l)!FHhcaz{+cn&&1u4TOM^~lkUvH z4zx|qM6i<=39er?IwpfQRQRT`o8<9%+kU-nLc~zx&!V8S`eRcOeYKDbEW7H8nBV5x zK)kCwdC?C2MPpnbxL*bG4!r^IoVAQ=naIg{)NI1L$g^C01d~T)0j~yvp`o;?7 zLM9HQ;3Uui+~FNowsEyl6ji^mM!6zt!AHbI3$8j7-qiWDg#0lAb%Oh&np zh+OBFh@kiNKnqcz%aAxNL9RejB;q(azP4x-EhkwElB&XUQb_R_n}RNbltzGixFMD@ z(Qyb60f%=cBi+dznYQjK|G7ERwQ4L4<5smaih2yM1rd#%c*`fXy9CfPYON@UYqnls z(o_ST43u25BOM)A1-d0nvhH|uK5#`H4~8wj<{C(f$cX`WD2C5&;a+2t0Pc=q&+E z{7BF>v<=}{Gi{`t(}0#?X{`kkN$%i58kN@aFaZF}8!TPVv@9KcLXVTlaR4I`C-M>c z@MWk%C#-{F>`p?81srr|i*um6SRj`OSau|XC?17GisDcpDKKEEDFG~~Ajv}yGNkvH zAq?UCfGA@&X#gcrS~z~$4Mq|$j?eD24*JqKA`s-!sDwv8E*(#B>unsHburbb7Xlel z0~u0##?HuM!vHLRi5%o09Xr4u$w#T>%&2%uX^#cVJt!Lm0hSsN0XkzcSnhG`$Q25I zaFQR0$j75pm!Tkk@NAG>I0+9{WJXG^a_4$axFJz8l$Z)=ihwT8tUX}lLcZCj0+Ab= zJliRR$2-P>QGtqU)bGnt!Qi!g?wi>-JUUK=J_Qx0xI7yHsxmWTKx53Bl0pfN zPr-LsFktSsQ2}3H=_mCw=!gH85D<#;2KY&Q*glozcvL(B)L<;46Fj77b?{*ZROm%9 zAOea@q#)R}R|sHQgoyf45IA<#fLNq$TmgDlig`3yFlMCTbg&`r%P9$yCbZR20%sGL;?4m`$`oGL{mp zP>^iDL~SWaVlw!cf(O@<@JOVjA4*#qP68vh6wi({gpZen6dMqwC){m;tb?{(>*-<4~2H*Vc=_x1}64h3mb8UzRi00}WoU0nq% zHxDl#zkr~Su*fN>DCMi?xM^x?9^awhsHyq)^C(p9_!U6;Jfa*h!(??G#WlU%U7UkV zoLyb+cs{}3aZ7s=85tH6i3@uW6!9Q5#?#$w(AS&8^FPA6YU9QeUKP-d z1_|-2tE;vQ(W72-(EMWOJGZy>I+^ZW>O>80E6!4@-u_&xyrz)_4Fh`R*AfKa;R>yx zu{ilp1BXT#SM=*F?q=e{kC}RNxiyh{B43a6ap` zlQ>z5=RwTnn(5H>UX64T>o(6vD!Mz0LLHM^iW^7ScXjpp8$We>*FET-O3qB5&+t;5 z^CkN4eN}7iYU+Im0D(5&k_ah9?*q3R_>pN@pQzd_GO@2zRz7xfaQL)ph;={tnvpK! z{s3!dhpgfDK@r{`SpPuT@Bnuo?&^S&0a;1l*=Vgw)e5eh#6<&ROS?7Uz z>tPP(r&3&U%lA6ELM=Suvgcx~_MfOS65_GZ$zi{+WF_&QZ~Z+pO$Vz{K?c7uzfTJv z7QHag`BZO71>{|jeDbpE&xGHJW=m&xsii0U2Mz=MmTqpjdOTazZ2G56XWn754?4Gy zPAzvEi3>Bj&*H)}#P`?R{fEyhZ@+&&8TTM6$IFqZot>_0ciqs;H=|?gy>ptgb={;G zS2;{Z9SC%!%A{L)$v55o@{F9-Btv-i=W5oHCD*Qu72`x4cf9*}}HROZQ2td48E6&F*jggpr8FQ_nW6T>)~lqL`a-}!?W&( z`$|8XbqyN&TOW7H2N{R((A{=@Zbbc$)7!0Rg_~I)sHJyba|Bg3W1k#Kf3vsF^LLfx&58{1H$(wkqkZ_{)1|2-;KHMaU#SEx)MwRS7ul_QnX*KLw49N=^-XhTQKM1OQK{8= z&(&;nKXNsMm;AM1zXh+f>d)ynDk8mbwOd?K)1nfpV6!5-Holeg+)FY@Q_McDVJEop zjo>@$b!``f{O9u?Zgi@>Zgf_kX%k;)8PwG)z5--C?wu`X@!z?<= zGhsEH#J~_GA>eV9R#%&anP*&iD-rws#&z{H#{1tJc;Xx-u6ug$&0S^kV!)a#87rya z$HHINHFNK5`!hudcU*XqyJI=(P^Y3EWtNoP9;K*oy1VORv|s0PO_Px={?bBtnZw1= zXP&_BnoJO0UVzbL+;gam|52?wRp>6T9_VbXMQV7yc{q1!k0xh1+e`O_Q}Sl_+1XkD z7Mu5Z3;M;=y;}hVYEow|F&$19U5C?U6DJa%%5{J22M;~Z3xAZ9pRi@6iLOxHuWqSX z6tmyBxN_!+vtTL4hy?$Jk%EU&J>~;zVl&9{%6`AO!+;sdBU}eqV+^|FOSaF3y*fnWd-j&tS_d;#l75-Umc=-&%Cy2`tvc;b5_@ zM4?~%plU`yNZld*&`&Ycy)=A2weHKzBuRW|J}O8&A4^rVL+FU z@1Cm$LmU$T-C8(f{9Q8k=XueBqw>k{@LMRJp$$%_b*bv z+sn*krW-1-)10?y##7Hz{iLhaEu}uuE4Z{B^3BV3@8HsP4@F)DQozgpxl84$?8+Cs z)?e3uUh;mPz8b+WI#6jB_cfrR@%p#QC4%`#6F=)G;e)!}C(-(MR7>l&lEzJi(_Ly+ z*AkM<3*Op`Rk4BFnV)Y^Z$r{Y-FP>kFc>z}DQflOVWwYEV!u@cN#%1DnHr z9OQH?4Q;L`FR;mY!&Jg9?Cv$e(6X%h=zm`F?H_ti+GSy3LiZcD70=emKB!1jT7$0s zY&D4#E$N(k*V_B;P%n3|RF+s|`5YMX7Z2vvC)JId*|z)Y?5lZVUz zWDPBdNS&dE-4x!m8lIZ-;_p?;@VsM|oiu%femN|Sefq+l)ZW?qu0YNA`;U)eVzFIS zAFrI7_~18l3643RVfo?Ca_#F+%nD8ajE^=$0?R(VIiCalRp`E<-@;y|5f?_^Lay5U zks1x$ywrc7=H!+y@Qfq$2)GzmWA)t-35*4bFPWN4hKYVvh8Bx*(koN-G!K`5Ins3% zD;NoS|FI$9lK)(dZcNxwiE>G=mV)iB=9I72waYQ22lT*= zc+y6e(N_%Peg<0|IE@<=IWWCN0j_qtv*A+u1#hhy8<#Yti>Dr2K$n2m)a@>N{ z4D9BlMAN_fRqQ)>2*{r@V}?7s!-|V?xNs~1>eE2Z0me!+`NX`wNpuspCesc2&@sB_ z9)Uah6HLF1k#d1##wWR^DSltf3!LksxOFGi3V*$teRFW~q-fx?PY)hmtvmfE_^KJN zEW3JNIw13O<>+ktf`Ns`xidJ(p1u78?h3!onYAtg54l^KI6+;d7{#Jr^i;wr*~|5k zyB_OP`Ms;77jh27ZvcR|xTo1?ApkZBe06=BPBV5C|B~VGd9beneRN0V=*rv7$+b$K ze8sA&f1r2jy2C2@*>cD)W}v)Iux$^|KYnAYAEKaVZ{c*>4<7~D)Spb)uz%FgVrkP7 zCw4VuyHFZ;RS@=+<4qm8j%#NuKXP=KVJ*IdLtyk9Y#(S9^iv! zKvwOC^H6izDG~GX`VEG{7xf|x)&qjJ^q1Ks-@P$;&^q)cyYV5?;?&LIBs!6&xGzNq zH=Q`lof^v{gN!Z^&W{Ry4S4C09fV&jeM?jG=Q6Fhq&!L8Ryu%*#wBvw721@CY^&dn zR(`ST1GF9(7rkO;G@N@Hu>FIYCK748bZv5>bOb%e5pwGGnQ?U?v|N2ooz1?d*qGsz z?)6-URfFC-5A$r)xLPK)=r=K?5qhT)vx*aUxfB)~d?TSV)y7@wx4tdj8Y`g*H{S5M zDV;GW>c0E+{g^DxnTvKl3i)-qi79j^XMxr)Oeb&5e#+apG~!91$<%9JxKL;ob%FOo zqjTlrVuaSq+N1F1>uk7U&n$YxW^`ZDMnzDjA}=>CofRwp>QwB{r0iEQ%e8xPOU|A- z)V$Q2AE@=D7n??M*UW+^-|y&GL3>;}(6e8p%tjbno4x7BmMfm!cr@Iz;=XYX7N7Iw zf+SDQ^m)Zsw%iu=o_7Z6Lusv~$8RKPd4FHXMFr>Wb5%DVDZf2gdB#+6tbe-dp##%EO|{S0Ujw-nA+B`^Y}`L;e!EupUz)ROIUVv3a}{jm>9wDY z2ez3ZTZd0XKMC*4u6OP%yiZ6boq2WNArElq#Xh*<$r-=<_`wGZGmgpPDZh4`xBqp2 zj-#=Q*T?eK)FuP7jdP-8R4fF#dt_*e%-!zGvegb6HCTs*b1Zt`se%$3E?xX_v7xwa zEx@;y{v%b|I~&2nuUOXoz$-5@12uETWER7c4QkSq zb!awroA(qVdabC@p51>{lJdDP>AC*Fb{=fupxxoxpZAL8K0aygn6b`BS=ry>re>Qh zgv4H_{Kk89vZn|uw{9`@+;a#>wqT^`H@V%@UcHz0dHX$WN|tPKU1@q{8~YRPAdzw= zN4@@^idfqX|Md&eEVUP$w>Oa}af|B5lMxdbquQ9gYeQ`#5ZHYZ$;$cFW020uLFSqf}k zE68~T3!HA45M-TH;H^x%?G7{M_2SjLa+J6=cmsvo7-C`)>pmM7R&G?8w#Yrb;q(cR zHu4CV?Pa=i@!6Db^TLKT-9vt6`BK7;Aie9B+{OEX;O~I1I%g8dfJgaFHQNQc<-wza zMN&HvQhkt@S@HYVPHY)k|DTqCHcj1p4n;|6Us46H&}H8zmY9(H;73@4p+T_ImeZ!^ ziwn)2GY9T<8Qcky%q~MW_JZXouP@-si3g($0Up7De!d>ge6u!g;Je+AegSVU-1+Qd(wCH-k{UtkZ<^KO zH?|zUN9z7v26fYk*j{QED5#$9#gB0WWe&G>D|S4-#&9{a(p=S^LuI~8M366F^Ne(G zOZ@A0&-9>BceIhSeT)_c`$$jP;Q=UMMk#QI|kapwLk>k2T z=>3Q{i_oKCpO*pEEzc6{>hHE|c#mbuM%yFz2wS3%KhKO$}s2~zgy&Mr29Raf5hV7W0iDb=4WhuR9hi#LV!?T z6WgBxu+F{0s5!?8d5T<`5tebgRAwAMH{Q0FFIbrRR*`u!cxo#qAcf&w2YR{P$4|zcN#5LuOV_Vx_tk;kI+(PtRWedRw;ePdvq?2_lukSoP4l zEw+*1C9GqE=Z;|$>uj;Fl?*`j$k|JrYA93AR)mB1`@wF=-h9;Ft`IeD*}PFaRf#Tb72 zWbKtl?se?bTFu>O>ixLug-MSsGVG0IFO=^L?sAbiyBoUj!eZ6dP_@;q%6DV_z^OFD zckuSz3sp)i3>)HKpZ{e3qQY7(o60HIKI|Ie^r{<1LNFL*eHbcH?|Xt>$0keMlM2*w zKH*?^e;AVI>#Zd?rHXK7D#`sb@O3GKH>&w|nPt*i_{7h9Xj_efGeup^BNFX)!p6Wg zF7B`oY8ts~DXq`4uGvN-2}+IGKJiZX6z`YIwjc4@@i|GvyTnR(O4&kQ=rddtiPf1K z6nhdQyr*g80J*=w5$eccdcnT^?Y#2)3Ju=zuvHB!G3mrlzZIE`d)q~ynujx9tvm+{ z5o2dPnaZuRSG5}}iP4BxkptFelBPH12Gd{U&dwIPJjVWNsA|2JQ#n2Koo>ezJreU> kDhGC!Z6ks7(zp21|yR!V~wN? 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/drunk.ogg b/sound/vox_fem/drunk.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b6f6c42c8e045409419a3c296125613deda69027 GIT binary patch literal 8179 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

M4r+mc=ifQLf32@>A55s;%* zX<`80VG9${+ER_0ZTj4^m1R>=i-(rJs2rb>$V$`+h5Sn*C03I{QkU6VVJqCc0ntgB zIOy_<=2$((pn|O*Be&e6t`tvo!d+)y{-A?OOA+IRH{pjUB&fcE2yv=*ARnw7hn;Yt zoBXL}DvI2rCRC%T;9icS?-d?PP(C|S@Pq}^?K`Ok=C^74+8mX4FR-#I{4?vzMWU8Y zhhtvST=&-kcMFmdlNKx(gpZjmpIZyqeJwAfs5nz%cqw#FQpyb#JtwHQ!kVq(=d&V>H;89V9$`iQmQBrXNVK}q zGxKf4k>OvC-Y2<{HC)GtMt`pzmuC11ec0}$=Cw6@9X-7;WdVyV#!Gl!7B121Dd(mx z%*|t!a9^&$3j@zjgU1x2tbAGjR~C(#kB@9C|1rt3YO>5*3Y_SLD;?AK$-8hf;3OEK jGpzq6m9p~x^aLX0RM7|J*1Cu&fU+K|s4JH#nFap`8gbQS delta 4459 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 delta 18768 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 diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 1462d26e344b5b2752620de69a84b6806259a9f8..8fd47551efa53b56996e31c69bed9b8cbc78af5a 100644 GIT binary patch delta 18557 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 T`GZ!_00000NkvXXu0mjfBL4;# delta 17396 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�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 diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index a10524fb9b94f045c2f1e2e079cd20a15a7f3dde..416b1c8b93224de915caa3643a15e118fabb7464 100644 GIT binary patch delta 19448 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 S=FlJn9(!xYLr-z%V*Ur+m-CPS delta 13382 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 Date: Tue, 31 May 2016 22:41:07 -0400 Subject: [PATCH 034/260] fix --- code/game/objects/items/weapons/holy_weapons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index 4b0b1e9ba8d..f501ef8e002 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -90,7 +90,7 @@ item_state = "claymore" name = "holy claymore" desc = "A weapon fit for a crusade!" - w_class = 5 + w_class = 4 slot_flags = SLOT_BACK|SLOT_BELT sharp = 1 edge = 1 From 95d7a68a7501518b80d70f86babfc41404b3e7e6 Mon Sep 17 00:00:00 2001 From: TheDZD Date: Fri, 27 May 2016 19:14:04 -0400 Subject: [PATCH 035/260] Here we go again... --- code/__DEFINES/combat.dm | 9 + code/__DEFINES/misc.dm | 2 +- .../game/objects/items/weapons/power_cells.dm | 13 +- code/game/sound.dm | 44 +- code/modules/projectiles/ammunition.dm | 159 ++--- .../projectiles/ammunition/ammo_casings.dm | 211 ++++--- code/modules/projectiles/ammunition/boxes.dm | 23 +- code/modules/projectiles/ammunition/energy.dm | 224 +++++++ .../projectiles/ammunition/magazines.dm | 268 ++++---- .../modules/projectiles/ammunition/special.dm | 49 ++ code/modules/projectiles/firing.dm | 95 +++ code/modules/projectiles/gun.dm | 572 ++++++++--------- code/modules/projectiles/guns/alien.dm | 2 +- code/modules/projectiles/guns/energy.dm | 171 +++-- .../projectiles/guns/energy/advtaser.dm | 40 -- .../projectiles/guns/energy/blueshield.dm | 37 -- code/modules/projectiles/guns/energy/hos.dm | 45 -- code/modules/projectiles/guns/energy/laser.dm | 116 ++-- .../projectiles/guns/energy/nuclear.dm | 240 +++---- code/modules/projectiles/guns/energy/pulse.dm | 84 +-- .../projectiles/guns/energy/special.dm | 592 ++++++++++++------ code/modules/projectiles/guns/energy/stun.dm | 89 ++- .../projectiles/guns/energy/telegun.dm | 6 +- .../projectiles/guns/energy/temperature.dm | 182 ------ .../projectiles/guns/grenade_launcher.dm | 54 ++ code/modules/projectiles/guns/magic.dm | 50 +- code/modules/projectiles/guns/magic/staff.dm | 32 +- code/modules/projectiles/guns/magic/wand.dm | 131 ++-- .../modules/projectiles/{ => guns}/medbeam.dm | 8 +- code/modules/projectiles/guns/mounted.dm | 24 +- code/modules/projectiles/guns/projectile.dm | 98 +-- .../projectiles/guns/projectile/automatic.dm | 127 ++-- .../projectiles/guns/projectile/crossbow.dm | 323 ---------- .../guns/projectile/grenade launcher.dm | 91 --- .../projectiles/guns/projectile/launchers.dm | 91 +-- .../projectiles/guns/projectile/pistol.dm | 24 +- .../projectiles/guns/projectile/revolver.dm | 319 ++++++---- .../projectiles/guns/projectile/rocket.dm | 20 +- .../projectiles/guns/projectile/saw.dm | 179 ++++++ .../projectiles/guns/projectile/shotgun.dm | 225 ++++--- .../projectiles/guns/projectile/sniper.dm | 26 +- .../projectiles/guns/projectile/toy.dm | 71 ++- code/modules/projectiles/guns/syringe_gun.dm | 41 +- code/modules/projectiles/projectile.dm | 495 ++++++--------- code/modules/projectiles/projectile/beams.dm | 127 ++-- .../modules/projectiles/projectile/bullets.dm | 190 +++--- code/modules/projectiles/projectile/energy.dm | 58 +- code/modules/projectiles/projectile/force.dm | 23 +- code/modules/projectiles/projectile/magic.dm | 119 ++-- .../projectiles/projectile/reusable.dm | 65 +- .../modules/projectiles/projectile/special.dm | 287 ++++----- code/modules/reagents/grenade_launcher.dm | 111 ---- .../reagents/reagent_containers/syringes.dm | 3 +- paradise.dme | 14 +- 54 files changed, 3403 insertions(+), 3296 deletions(-) create mode 100644 code/modules/projectiles/ammunition/energy.dm create mode 100644 code/modules/projectiles/ammunition/special.dm create mode 100644 code/modules/projectiles/firing.dm delete mode 100644 code/modules/projectiles/guns/energy/advtaser.dm delete mode 100644 code/modules/projectiles/guns/energy/blueshield.dm delete mode 100644 code/modules/projectiles/guns/energy/hos.dm delete mode 100644 code/modules/projectiles/guns/energy/temperature.dm create mode 100644 code/modules/projectiles/guns/grenade_launcher.dm rename code/modules/projectiles/{ => guns}/medbeam.dm (93%) delete mode 100644 code/modules/projectiles/guns/projectile/crossbow.dm delete mode 100644 code/modules/projectiles/guns/projectile/grenade launcher.dm create mode 100644 code/modules/projectiles/guns/projectile/saw.dm delete mode 100644 code/modules/reagents/grenade_launcher.dm diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index bf620aad6e3..c137c320390 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -53,3 +53,12 @@ #define AI_ON 1 #define AI_IDLE 2 #define AI_OFF 3 + +//Gun Stuff + #define SAWN_INTACT 0 + #define SAWN_OFF 1 + #define SAWN_SAWING -1 + + #define WEAPON_LIGHT 0 + #define WEAPON_MEDIUM 1 + #define WEAPON_HEAVY 2 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index d375f63dd39..99918eccbc8 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -250,4 +250,4 @@ #define MATRIX_GREYSCALE list(0.3, 0.3, 0.3, 0,\ 0.3, 0.3, 0.3, 0,\ 0.3, 0.3, 0.3, 0,\ - 0, 0, 0, 1) + 0, 0, 0, 1)//Gun trigger guards #define TRIGGER_GUARD_ALLOW_ALL -1 #define TRIGGER_GUARD_NONE 0 #define TRIGGER_GUARD_NORMAL 1 \ No newline at end of file diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 62f60a91bc4..a34a8328457 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -128,7 +128,6 @@ materials = list() minor_fault = 1 - /obj/item/weapon/stock_parts/cell/high/slime name = "charged slime core" desc = "A yellow slime core infused with plasma, it crackles with power." @@ -138,6 +137,12 @@ materials = list() self_recharge = 1 // Infused slime cores self-recharge, over time +/obj/item/weapon/stock_parts/cell/pulse //200 pulse shots + name = "pulse rifle power cell" + maxcharge = 40000 + rating = 3 + chargerate = 1500 + /obj/item/weapon/stock_parts/cell/pulse/carbine name = "pulse carbine power cell" maxcharge = 4000 @@ -168,9 +173,3 @@ /obj/item/weapon/stock_parts/cell/emproof/corrupt() return - -/obj/item/weapon/stock_parts/cell/temperaturegun - name = "temperature gun cell" - desc = "A specially designed power cell for heating and cooling projectiles" - icon_state = "icell" - maxcharge = 900 \ No newline at end of file diff --git a/code/game/sound.dm b/code/game/sound.dm index cecf12c657d..1890a0966e7 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -9,8 +9,9 @@ var/list/jackboot_sound = list('sound/effects/jackboot1.ogg','sound/effects/jack var/list/swing_hit_sound = list('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg') var/list/hiss_sound = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') var/list/page_sound = list('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg') -//var/list/gun_sound = list('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg') +var/list/gun_sound = list('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg') var/list/computer_ambience = list('sound/goonstation/machines/ambicomp1.ogg', 'sound/goonstation/machines/ambicomp2.ogg', 'sound/goonstation/machines/ambicomp3.ogg') +var/list/ricochet = list('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg','sound/weapons/effects/ric3.ogg','sound/weapons/effects/ric4.ogg','sound/weapons/effects/ric5.ogg') /proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num, falloff, var/is_global, var/pitch) @@ -107,17 +108,32 @@ var/const/FALLOFF_SOUNDS = 0.5 /proc/get_sfx(soundin) if(istext(soundin)) switch(soundin) - if ("shatter") soundin = pick(shatter_sound) - if ("explosion") soundin = pick(explosion_sound) - if ("sparks") soundin = pick(spark_sound) - if ("rustle") soundin = pick(rustle_sound) - if ("bodyfall") soundin = pick(bodyfall_sound) - if ("punch") soundin = pick(punch_sound) - if ("clownstep") soundin = pick(clown_sound) - if ("jackboot") soundin = pick(jackboot_sound) - if ("swing_hit") soundin = pick(swing_hit_sound) - if ("hiss") soundin = pick(hiss_sound) - if ("pageturn") soundin = pick(page_sound) - //if ("gunshot") soundin = pick(gun_sound) - if("computer_ambience") soundin = pick(computer_ambience) + if ("shatter") + soundin = pick(shatter_sound) + if ("explosion") + soundin = pick(explosion_sound) + if ("sparks") + soundin = pick(spark_sound) + if ("rustle") + soundin = pick(rustle_sound) + if ("bodyfall") + soundin = pick(bodyfall_sound) + if ("punch") + soundin = pick(punch_sound) + if ("clownstep") + soundin = pick(clown_sound) + if ("jackboot") + soundin = pick(jackboot_sound) + if ("swing_hit") + soundin = pick(swing_hit_sound) + if ("hiss") + soundin = pick(hiss_sound) + if ("pageturn") + soundin = pick(page_sound) + if ("gunshot") + soundin = pick(gun_sound) + if("computer_ambience") + soundin = pick(computer_ambience) + if("ricochet") + soundin = pick(ricochet) return soundin diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 45670ec70b0..169e968afaf 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -6,13 +6,16 @@ flags = CONDUCT slot_flags = SLOT_BELT throwforce = 1 - w_class = 1.0 - var/caliber = "" //Which kind of guns it can be loaded into - var/projectile_type = ""//The bullet type to create when New() is called + w_class = 1 + var/fire_sound = null //What sound should play when this ammo is fired + var/caliber = null //Which kind of guns it can be loaded into + var/projectile_type = null //The bullet type to create when New() is called var/obj/item/projectile/BB = null //The loaded bullet - var/pellets = 1 - var/deviation = 0 - var/spread = 0 + var/pellets = 1 //Pellets for spreadshot + var/variance = 0 //Variance for inaccuracy fundamental to the casing + var/delay = 0 //Delay for energy weapons + var/randomspread = 0 //Randomspread for automatics + var/click_cooldown_override = 0 //Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown. /obj/item/ammo_casing/New() @@ -29,54 +32,45 @@ icon_state = "[initial(icon_state)][BB ? "-live" : ""]" desc = "[initial(desc)][BB ? "" : " This one is spent"]" - - -/obj/item/ammo_casing/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/weapon/screwdriver)) - if(BB) - if(initial(BB.name) == "bullet") - var/tmp_label = "" - var/label_text = sanitize(input(user, "Inscribe some text into \the [initial(BB.name)]","Inscription",tmp_label)) - if(length(label_text) > 20) - to_chat(user, "The inscription can be at most 20 characters long.") +/obj/item/ammo_casing/attackby(obj/item/I as obj, mob/user as mob, params) + if(istype(I, /obj/item/ammo_box)) + var/obj/item/ammo_box/box = I + if(isturf(loc)) + var/boolets = 0 + for(var/obj/item/ammo_casing/bullet in loc) + if (box.stored_ammo.len >= box.max_ammo) + break + if (bullet.BB) + if (box.give_round(bullet, 0)) + boolets++ else - if(label_text == "") - to_chat(user, "You scratch the inscription off of [initial(BB)].") - BB.name = initial(BB.name) + continue + if (boolets > 0) + box.update_icon() + to_chat(user, "You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s.") + else + to_chat(user, "You fail to collect anything!") + else + if(istype(I, /obj/item/weapon/screwdriver)) + if(BB) + if(initial(BB.name) == "bullet") + var/tmp_label = "" + var/label_text = sanitize(input(user, "Inscribe some text into \the [initial(BB.name)]","Inscription",tmp_label)) + if(length(label_text) > 20) + to_chat(user, "The inscription can be at most 20 characters long.") else - to_chat(user, "You inscribe \"[label_text]\" into \the [initial(BB.name)].") - BB.name = "[initial(BB.name)] \"[label_text]\"" + if(label_text == "") + to_chat(user, "You scratch the inscription off of [initial(BB)].") + BB.name = initial(BB.name) + else + to_chat(user, "You inscribe \"[label_text]\" into \the [initial(BB.name)].") + BB.name = "[initial(BB.name)] \"[label_text]\"" + else + to_chat(user, "You can only inscribe a metal bullet.")//because inscribing beanbags is silly + else - to_chat(user, "You can only inscribe a metal bullet.")//because inscribing beanbags is silly - - else - to_chat(user, "There is no bullet in the casing to inscribe anything into.") - -/obj/item/ammo_casing/attackby(obj/item/ammo_box/box as obj, mob/user as mob, params) - if(!istype(box, /obj/item/ammo_box)) - return - if(isturf(loc)) - var/boolets = 0 - for(var/obj/item/ammo_casing/pew in loc) - if(box.stored_ammo.len >= box.max_ammo) - break - if(pew.BB) - if(box.give_round(pew)) - boolets++ - else - continue - if(boolets > 0) - box.update_icon() - to_chat(user, "You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s.") - else - to_chat(user, "You fail to collect anything.") - -/obj/item/ammo_casing/proc/newshot() //For energy weapons, shotgun shells and wands (!). - if(!BB) - BB = new projectile_type(src) - return - - + to_chat(user, "There is no bullet in the casing to inscribe anything into.") + ..() //Boxes of ammo /obj/item/ammo_box @@ -89,53 +83,78 @@ item_state = "syringe_kit" materials = list(MAT_METAL=30000) throwforce = 2 - w_class = 1.0 + w_class = 1 throw_speed = 4 throw_range = 10 var/list/stored_ammo = list() - var/obj/item/ammo_casing/ammo_type + var/ammo_type = /obj/item/ammo_casing var/max_ammo = 7 var/multiple_sprites = 0 - var/caliber = "" + var/caliber var/multiload = 1 + /obj/item/ammo_box/New() - for(var/i = 1, i <= max_ammo, i++) + for(var/i in 1 to max_ammo) stored_ammo += new ammo_type(src) update_icon() -/obj/item/ammo_box/proc/get_round(var/keep = 0) - if(!stored_ammo.len) +/obj/item/ammo_box/Destroy() + for(atom/A in stored_ammo) + qdel(A) + stored_ammo = null + return ..() + +/obj/item/ammo_box/proc/get_round(keep = 0) + if (!stored_ammo.len) return null else var/b = stored_ammo[stored_ammo.len] stored_ammo -= b - if(keep) + if (keep) stored_ammo.Insert(1,b) return b -/obj/item/ammo_box/proc/give_round(var/obj/item/ammo_casing/r) - var/obj/item/ammo_casing/rb = r - if(rb) - if(stored_ammo.len < max_ammo && rb.caliber == caliber) - stored_ammo += rb - rb.loc = src - return 1 +/obj/item/ammo_box/proc/give_round(obj/item/ammo_casing/R, replace_spent = 0) + // Boxes don't have a caliber type, magazines do. Not sure if it's intended or not, but if we fail to find a caliber, then we fall back to ammo_type. + if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type)) + return 0 + + if (stored_ammo.len < max_ammo) + stored_ammo += R + R.loc = src + return 1 + //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 + stored_ammo -= AC + AC.loc = get_turf(src.loc) + + stored_ammo += R + R.loc = src + return 1 + return 0 -/obj/item/ammo_box/attackby(var/obj/item/A as obj, mob/user as mob, var/silent = 0, params) +/obj/item/ammo_box/proc/can_load(mob/user) + return 1 + +/obj/item/ammo_box/attackby(obj/item/A, mob/user, params, silent = 0, replace_spent = 0) var/num_loaded = 0 + if(!can_load(user)) + return if(istype(A, /obj/item/ammo_box)) var/obj/item/ammo_box/AM = A for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - var/didload = give_round(AC) - if(didload) + var/did_load = give_round(AC, replace_spent) + if(did_load) AM.stored_ammo -= AC num_loaded++ - if(!multiload || !didload) + if(!multiload || !did_load) break if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/AC = A - if(give_round(AC)) + if(give_round(AC, replace_spent)) user.drop_item() AC.loc = src num_loaded++ diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 44189411515..010ce185acb 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -1,128 +1,137 @@ /obj/item/ammo_casing/a357 desc = "A .357 bullet casing." caliber = "357" - projectile_type = "/obj/item/projectile/bullet" + projectile_type = /obj/item/projectile/bullet + +/obj/item/ammo_casing/a762 + desc = "A 7.62mm bullet casing." + icon_state = "762-casing" + caliber = "a762" + projectile_type = /obj/item/projectile/bullet + +/obj/item/ammo_casing/a762/enchanted + projectile_type = /obj/item/projectile/bullet/weakbullet3 /obj/item/ammo_casing/a50 desc = "A .50AE bullet casing." caliber = ".50" - projectile_type = "/obj/item/projectile/bullet" + projectile_type = /obj/item/projectile/bullet /obj/item/ammo_casing/c38 desc = "A .38 bullet casing." caliber = "38" - projectile_type = "/obj/item/projectile/bullet/weakbullet2/rubber" - -/obj/item/ammo_casing/cap - desc = "A cap for children toys." - caliber = "caps" - projectile_type = "/obj/item/projectile/bullet/cap" - + projectile_type = /obj/item/projectile/bullet/weakbullet2/rubber /obj/item/ammo_casing/c10mm desc = "A 10mm bullet casing." caliber = "10mm" - projectile_type = "/obj/item/projectile/bullet/midbullet3" - + projectile_type = /obj/item/projectile/bullet/midbullet3 /obj/item/ammo_casing/c9mm desc = "A 9mm bullet casing." caliber = "9mm" - projectile_type = "/obj/item/projectile/bullet/weakbullet3" + projectile_type = /obj/item/projectile/bullet/weakbullet3 /obj/item/ammo_casing/c9mmap desc = "A 9mm bullet casing." caliber = "9mm" - projectile_type = "/obj/item/projectile/bullet/armourpiercing" + projectile_type = /obj/item/projectile/bullet/armourpiercing /obj/item/ammo_casing/c9mmtox desc = "A 9mm bullet casing." caliber = "9mm" - projectile_type = "/obj/item/projectile/bullet/toxinbullet" + projectile_type = /obj/item/projectile/bullet/toxinbullet /obj/item/ammo_casing/c9mminc desc = "A 9mm bullet casing." caliber = "9mm" - projectile_type = "/obj/item/projectile/bullet/incendiary/firebullet" + projectile_type = /obj/item/projectile/bullet/incendiary/firebullet /obj/item/ammo_casing/c46x30mm desc = "A 4.6x30mm bullet casing." caliber = "4.6x30mm" - projectile_type = "/obj/item/projectile/bullet/weakbullet3" + projectile_type = /obj/item/projectile/bullet/weakbullet3 /obj/item/ammo_casing/c46x30mmap desc = "A 4.6x30mm bullet casing." caliber = "4.6x30mm" - projectile_type = "/obj/item/projectile/bullet/armourpiercing" + projectile_type = /obj/item/projectile/bullet/armourpiercing /obj/item/ammo_casing/c46x30mmtox desc = "A 4.6x30mm bullet casing." caliber = "4.6x30mm" - projectile_type = "/obj/item/projectile/bullet/toxinbullet" + projectile_type = /obj/item/projectile/bullet/toxinbullet /obj/item/ammo_casing/c46x30mminc desc = "A 4.6x30mm bullet casing." caliber = "4.6x30mm" - projectile_type = "/obj/item/projectile/bullet/incendiary/firebullet" + projectile_type = /obj/item/projectile/bullet/incendiary/firebullet /obj/item/ammo_casing/c45 desc = "A .45 bullet casing." caliber = ".45" - projectile_type = "/obj/item/projectile/bullet/midbullet" + projectile_type = /obj/item/projectile/bullet/midbullet +/obj/item/ammo_casing/c45nostamina + desc = "A .45 bullet casing." + caliber = ".45" + projectile_type = /obj/item/projectile/bullet/midbullet3 + +/obj/item/ammo_casing/n762 + desc = "A 7.62x38mmR bullet casing." + caliber = "n762" + projectile_type = /obj/item/projectile/bullet /obj/item/ammo_casing/shotgun name = "shotgun slug" desc = "A 12 gauge lead slug." icon_state = "blshell" caliber = "shotgun" - projectile_type = "/obj/item/projectile/bullet" + projectile_type = /obj/item/projectile/bullet materials = list(MAT_METAL=4000) - /obj/item/ammo_casing/shotgun/buckshot name = "buckshot shell" desc = "A 12 gauge buckshot shell." icon_state = "gshell" - projectile_type = "/obj/item/projectile/bullet/pellet" + projectile_type = /obj/item/projectile/bullet/pellet pellets = 6 - deviation = 30 + deviation = 25 /obj/item/ammo_casing/shotgun/rubbershot name = "rubber shot" desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." icon_state = "bshell" - projectile_type = "/obj/item/projectile/bullet/rpellet" + projectile_type = /obj/item/projectile/bullet/rpellet pellets = 6 - deviation = 30 + deviation = 25 materials = list(MAT_METAL=4000) /obj/item/ammo_casing/shotgun/beanbag name = "beanbag slug" desc = "A weak beanbag slug for riot control." icon_state = "bshell" - projectile_type = "/obj/item/projectile/bullet/weakbullet/rubber" + projectile_type = /obj/item/projectile/bullet/weakbullet/rubber materials = list(MAT_METAL=250) - /obj/item/ammo_casing/shotgun/improvised name = "improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "gshell" - projectile_type = "/obj/item/projectile/bullet/pellet/weak" + projectile_type = /obj/item/projectile/bullet/pellet/weak materials = list(MAT_METAL=250) pellets = 5 - deviation = 30 + deviation = 25 /obj/item/ammo_casing/shotgun/improvised/overload name = "overloaded improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \ propellant. It's like playing russian roulette, with a shotgun." icon_state = "improvshell" - projectile_type = "/obj/item/projectile/bullet/pellet/random" + projectile_type = /obj/item/projectile/bullet/pellet/random materials = list(MAT_METAL=250) pellets = 5 - deviation = 30 + deviation = 40 /obj/item/ammo_casing/shotgun/improvised/overload/New() ..() @@ -132,15 +141,20 @@ name = "taser slug" desc = "A stunning taser slug." icon_state = "stunshell" - projectile_type = "/obj/item/projectile/bullet/stunshot" + projectile_type = /obj/item/projectile/bullet/stunshot materials = list(MAT_METAL=250) - /obj/item/ammo_casing/shotgun/meteorshot name = "meteorshot shell" desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired." icon_state = "mshell" - projectile_type = "/obj/item/projectile/bullet/meteorshot" + projectile_type = /obj/item/projectile/bullet/meteorshot + +/obj/item/ammo_casing/shotgun/breaching + name = "breaching shell" + desc = "An economic version of the meteorshot, utilizing similar technologies. Great for busting down doors." + icon_state = "mshell" + projectile_type = /obj/item/projectile/bullet/meteorshot/weak /obj/item/ammo_casing/shotgun/pulseslug name = "pulse slug" @@ -148,42 +162,42 @@ energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \ would have difficulty with." icon_state = "pshell" - projectile_type = "/obj/item/projectile/beam/pulse/shot" + projectile_type = /obj/item/projectile/beam/pulse/shot /obj/item/ammo_casing/shotgun/incendiary name = "incendiary slug" desc = "An incendiary-coated shotgun slug." icon_state = "ishell" - projectile_type = "/obj/item/projectile/bullet/incendiary/shell" + projectile_type = /obj/item/projectile/bullet/incendiary/shell /obj/item/ammo_casing/shotgun/frag12 name = "FRAG-12 slug" desc = "A high explosive breaching round for a 12 gauge shotgun." icon_state = "heshell" - projectile_type = "/obj/item/projectile/bullet/frag12" + projectile_type = /obj/item/projectile/bullet/frag12 /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath name = "dragonsbreath shell" desc = "A shotgun shell which fires a spread of incendiary pellets." icon_state = "ishell2" - projectile_type = "/obj/item/projectile/bullet/incendiary/shell/dragonsbreath" + projectile_type = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath pellets = 4 - deviation = 30 + variance = 35 /obj/item/ammo_casing/shotgun/ion name = "ion shell" desc = "An advanced shotgun shell which uses a subspace ansible crystal to produce an effect similar to a standard ion rifle. \ The unique properties of the crystal splot the pulse into a spread of individually weaker bolts." icon_state = "ionshell" - projectile_type = "/obj/item/projectile/ion/weak" + projectile_type = /obj/item/projectile/ion/weak pellets = 4 - deviation = 30 + deviation = 35 /obj/item/ammo_casing/shotgun/laserslug name = "laser slug" desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a laser weapon in a ballistic package." icon_state = "lshell" - projectile_type = "/obj/item/projectile/beam" + projectile_type = /obj/item/projectile/beam /obj/item/ammo_casing/shotgun/techshell name = "unloaded technological shell" @@ -195,7 +209,7 @@ name = "shotgun dart" desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical." icon_state = "cshell" - projectile_type = "/obj/item/projectile/bullet/dart" + projectile_type = /obj/item/projectile/bullet/dart /obj/item/ammo_casing/shotgun/dart/New() ..() @@ -206,93 +220,125 @@ /obj/item/ammo_casing/shotgun/dart/attackby() return +/obj/item/ammo_casing/shotgun/dart/bioterror + desc = "A shotgun dart filled with deadly toxins." + +/obj/item/ammo_casing/shotgun/dart/bioterror/New() + ..() + reagents.add_reagent("neurotoxin", 6) + reagents.add_reagent("spores", 6) + reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT + reagents.add_reagent("coniine", 6) + reagents.add_reagent("sodium_thiopental", 6) + /obj/item/ammo_casing/shotgun/tranquilizer name = "tranquilizer darts" desc = "A tranquilizer round used to subdue individuals utilizing stimulants." icon_state = "cshell" - projectile_type = "/obj/item/projectile/bullet/dart/syringe/tranquilizer" + projectile_type = /obj/item/projectile/bullet/dart/syringe/tranquilizer materials = list(MAT_METAL=250) -/obj/item/ammo_casing/syringegun - name = "syringe gun spring" - desc = "A high-power spring that throws syringes." - projectile_type = null +/obj/item/ammo_casing/a556 + desc = "A 5.56mm bullet casing." + caliber = "a556" + projectile_type = /obj/item/projectile/bullet/heavybullet /obj/item/ammo_casing/shotgun/fakebeanbag name = "beanbag shell" desc = "A weak beanbag shell." icon_state = "bshell" - projectile_type = "/obj/item/projectile/bullet/weakbullet/booze" - -/obj/item/ammo_casing/a762 - desc = "A 7.62mm bullet casing." - icon_state = "762-casing" - caliber = "a762" - projectile_type = "/obj/item/projectile/bullet" - -/obj/item/ammo_casing/a556 - desc = "A 5.56mm bullet casing." - caliber = "a556" - projectile_type = "/obj/item/projectile/bullet/heavybullet" + projectile_type = /obj/item/projectile/bullet/weakbullet/booze /obj/item/ammo_casing/rocket name = "rocket shell" desc = "A high explosive designed to be fired from a launcher." icon_state = "rocketshell" - projectile_type = "/obj/item/missile" + projectile_type = /obj/item/missile caliber = "rocket" /obj/item/ammo_casing/caseless desc = "A caseless bullet casing." +/obj/item/ammo_casing/caseless/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, distro, quiet) + if (..()) + loc = null + return 1 + else + return 0 + /obj/item/ammo_casing/caseless/a75 desc = "A .75 bullet casing." caliber = "75" - projectile_type = "/obj/item/projectile/bullet/gyro" + projectile_type = /obj/item/projectile/bullet/gyro /obj/item/ammo_casing/a40mm name = "40mm HE shell" desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher." caliber = "40mm" icon_state = "40mmHE" - projectile_type = "/obj/item/projectile/bullet/a40mm" + projectile_type = /obj/item/projectile/bullet/a40mm + +/obj/item/ammo_casing/caseless/magspear + name = "magnetic spear" + desc = "A reusable spear that is typically loaded into kinetic spearguns." + projectile_type = /obj/item/projectile/bullet/reusable/magspear + caliber = "speargun" + icon_state = "magspear" + throwforce = 15 //still deadly when thrown + throw_speed = 3 -//FOAM DARTS /obj/item/ammo_casing/caseless/foam_dart name = "foam dart" desc = "It's nerf or nothing! Ages 8 and up." - projectile_type = "/obj/item/projectile/bullet/reusable/foam_dart" + projectile_type = /obj/item/projectile/bullet/reusable/foam_dart caliber = "foam_force" icon = 'icons/obj/toyguns.dmi' icon_state = "foamdart" var/modified = 0 /obj/item/ammo_casing/caseless/foam_dart/update_icon() - if(modified) - icon_state = "foamdart_empty" - -/obj/item/ammo_casing/caseless/foam_dart/attackby(var/obj/item/weapon/A as obj, mob/user as mob, params) ..() - if(istype(A, /obj/item/weapon/screwdriver) && !modified) - modified = 1 - BB.damage_type = BRUTE + if (modified) icon_state = "foamdart_empty" - desc = "It's nerf or nothing! ...Although, this one doesn't look too safe." - to_chat(user, "You pop the safety cap off of [src].") - else if((istype(A, /obj/item/weapon/pen)) && modified && !BB.contents.len) + desc = "Its nerf or nothing! ... Although, this one doesn't look too safe." + if(BB) + BB.icon_state = "foamdart_empty" + else + icon_state = "foamdart" + desc = "Its nerf or nothing! Ages 8 and up." + if(BB) + BB.icon_state = "foamdart_empty" + +/obj/item/ammo_casing/caseless/foam_dart/attackby(obj/item/A, mob/user, params) + ..() + var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB + if (istype(A, /obj/item/weapon/screwdriver) && !modified) + modified = 1 + FD.damage_type = BRUTE + update_icon() + else if ((istype(A, /obj/item/weapon/pen)) && modified && !FD.pen) if(!user.unEquip(A)) return - A.forceMove(BB) - BB.damage = 5 - BB.nodamage = 0 + A.loc = FD + FD.pen = A + FD.damage = 5 + FD.nodamage = 0 to_chat(user, "You insert [A] into [src].") return +/obj/item/ammo_casing/caseless/foam_dart/attack_self(mob/living/user) + var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB + if(FD.pen) + FD.damage = initial(FD.damage) + FD.nodamage = initial(FD.nodamage) + user.put_in_hands(FD.pen) + to_chat(user, "You remove [FD.pen] from [src].") + FD.pen = null /obj/item/ammo_casing/caseless/foam_dart/riot name = "riot foam dart" desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up." - projectile_type = "/obj/item/projectile/bullet/reusable/foam_dart/riot" + projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot icon_state = "foamdart_riot" /obj/item/ammo_casing/shotgun/dart/assassination @@ -301,3 +347,8 @@ /obj/item/ammo_casing/shotgun/dart/assassination/New() ..() reagents.add_reagent("neurotoxin", 6) + +/obj/item/ammo_casing/cap + desc = "A cap for children toys." + caliber = "caps" + projectile_type = /obj/item/projectile/bullet/cap diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index eb998823b6a..3a82a0b625e 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -1,5 +1,6 @@ /obj/item/ammo_box/a357 name = "speed loader (.357)" + desc = "Designed to quickly reload revolvers." icon_state = "357" ammo_type = /obj/item/ammo_casing/a357 max_ammo = 7 @@ -7,18 +8,12 @@ /obj/item/ammo_box/c38 name = "speed loader (.38)" + desc = "Designed to quickly reload revolvers." icon_state = "38" ammo_type = /obj/item/ammo_casing/c38 max_ammo = 6 multiple_sprites = 1 -/obj/item/ammo_box/caps - name = "speed loader (caps)" - icon_state = "357" - ammo_type = /obj/item/ammo_casing/cap - max_ammo = 7 - multiple_sprites = 1 - /obj/item/ammo_box/c9mm name = "ammo box (9mm)" icon_state = "9mmbox" @@ -55,6 +50,13 @@ max_ammo = 5 multiple_sprites = 1 +/obj/item/ammo_box/n762 + name = "ammo box (7.62x38mmR)" + icon_state = "10mmbox" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/n762 + max_ammo = 14 + /obj/item/ammo_box/shotgun name = "Ammunition Box (slug)" icon_state = "9mmbox" @@ -99,3 +101,10 @@ /obj/item/ammo_box/foambox/riot icon_state = "foambox_riot" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot + +/obj/item/ammo_box/caps + name = "speed loader (caps)" + icon_state = "357" + ammo_type = /obj/item/ammo_casing/cap + max_ammo = 7 + multiple_sprites = 1 diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm new file mode 100644 index 00000000000..b4e979e3b20 --- /dev/null +++ b/code/modules/projectiles/ammunition/energy.dm @@ -0,0 +1,224 @@ +/obj/item/ammo_casing/energy + name = "energy weapon lens" + desc = "The part of the gun that makes the laser go pew" + caliber = "energy" + projectile_type = /obj/item/projectile/energy + var/e_cost = 1000 //The amount of energy a cell needs to expend to create this shot. + var/select_name = "energy" + fire_sound = 'sound/weapons/Laser.ogg' + +/obj/item/ammo_casing/energy/laser + projectile_type = /obj/item/projectile/beam/laser + select_name = "kill" + +/obj/item/ammo_casing/energy/lasergun + projectile_type = /obj/item/projectile/beam/laser + e_cost = 830 + select_name = "kill" + +/obj/item/ammo_casing/energy/laser/hos //allows balancing of HoS and blueshit guns seperately from other energy weapons + +/obj/item/ammo_casing/energy/laser/practice + projectile_type = /obj/item/projectile/beam/practice + select_name = "practice" + +/obj/item/ammo_casing/energy/laser/scatter + projectile_type = /obj/item/projectile/beam/scatter + pellets = 5 + variance = 0.8 + select_name = "scatter" + +/obj/item/ammo_casing/energy/laser/heavy + projectile_type = /obj/item/projectile/beam/laser/heavylaser + select_name = "anti-vehicle" + fire_sound = 'sound/weapons/lasercannonfire.ogg' + +/obj/item/ammo_casing/energy/laser/pulse + projectile_type = /obj/item/projectile/beam/pulse + e_cost = 200 + select_name = "DESTROY" + fire_sound = 'sound/weapons/pulse.ogg' + +/obj/item/ammo_casing/energy/laser/scatter/pulse + projectile_type = /obj/item/projectile/beam/pulse + e_cost = 2000 + select_name = "ANNIHILATE" + fire_sound = 'sound/weapons/pulse.ogg' + +/obj/item/ammo_casing/energy/laser/bluetag + projectile_type = /obj/item/projectile/beam/lasertag/bluetag + select_name = "bluetag" + +/obj/item/ammo_casing/energy/laser/redtag + projectile_type = /obj/item/projectile/beam/lasertag/redtag + select_name = "redtag" + +/obj/item/ammo_casing/energy/xray + projectile_type = /obj/item/projectile/beam/xray + e_cost = 500 + fire_sound = 'sound/weapons/laser3.ogg' + +/obj/item/ammo_casing/energy/immolator + projectile_type = /obj/item/projectile/beam/immolator + fire_sound = 'sound/weapons/laser3.ogg' + e_cost = 1250 + +/obj/item/ammo_casing/energy/electrode + projectile_type = /obj/item/projectile/energy/electrode + select_name = "stun" + fire_sound = 'sound/weapons/taser.ogg' + e_cost = 2000 + delay = 15 + +/obj/item/ammo_casing/energy/electrode/gun + fire_sound = 'sound/weapons/gunshot.ogg' + e_cost = 1000 + +/obj/item/ammo_casing/energy/electrode/hos //allows balancing of HoS and blueshit guns seperately from other energy weapons + +/obj/item/ammo_casing/energy/ion + projectile_type = /obj/item/projectile/ion + select_name = "ion" + fire_sound = 'sound/weapons/IonRifle.ogg' + +/obj/item/ammo_casing/energy/declone + projectile_type = /obj/item/projectile/energy/declone + select_name = "declone" + fire_sound = 'sound/weapons/pulse3.ogg' + +/obj/item/ammo_casing/energy/mindflayer + projectile_type = /obj/item/projectile/beam/mindflayer + select_name = "MINDFUCK" + fire_sound = 'sound/weapons/Laser.ogg' + +/obj/item/ammo_casing/energy/flora + fire_sound = 'sound/effects/stealthoff.ogg' + +/obj/item/ammo_casing/energy/flora/yield + projectile_type = /obj/item/projectile/energy/florayield + select_name = "yield" + +/obj/item/ammo_casing/energy/flora/mut + projectile_type = /obj/item/projectile/energy/floramut + select_name = "mutation" + +/obj/item/ammo_casing/energy/temp + projectile_type = /obj/item/projectile/temp + var/temperature = 300 + e_cost = 100 + fire_sound = 'sound/weapons/pulse3.ogg' + +/obj/item/ammo_casing/energy/temp/newshot() + ..() + BB.temperature = temperature + +/obj/item/ammo_casing/energy/meteor + projectile_type = /obj/item/projectile/meteor + select_name = "goddamn meteor" + +/obj/item/ammo_casing/energy/kinetic + projectile_type = /obj/item/projectile/kinetic + select_name = "kinetic" + e_cost = 5000 + fire_sound = 'sound/weapons/Kenetic_accel.ogg' // fine spelling there chap + +/obj/item/ammo_casing/energy/kinetic/super + projectile_type = /obj/item/projectile/kinetic/super + +/obj/item/ammo_casing/energy/kinetic/hyper + projectile_type = /obj/item/projectile/kinetic/hyper + +/obj/item/ammo_casing/energy/disabler + projectile_type = /obj/item/projectile/beam/disabler + select_name = "disable" + e_cost = 500 + fire_sound = "sound/weapons/taser2.ogg" + +/obj/item/ammo_casing/energy/plasma + projectile_type = /obj/item/projectile/plasma + select_name = "plasma burst" + fire_sound = 'sound/weapons/plasma_cutter.ogg' + delay = 15 + e_cost = 250 + +/obj/item/ammo_casing/energy/plasma/adv + projectile_type = /obj/item/projectile/plasma/adv + delay = 10 + e_cost = 100 + +/obj/item/ammo_casing/energy/wormhole + projectile_type = /obj/item/projectile/beam/wormhole + e_cost = 0 + fire_sound = "sound/weapons/pulse3.ogg" + var/obj/item/weapon/gun/energy/wormhole_projector/gun = null + select_name = "blue" + +/obj/item/ammo_casing/energy/wormhole/New(var/obj/item/weapon/gun/energy/wormhole_projector/wh) + gun = wh + +/obj/item/ammo_casing/energy/wormhole/orange + projectile_type = /obj/item/projectile/beam/wormhole/orange + select_name = "orange" + +/obj/item/ammo_casing/energy/bolt + projectile_type = /obj/item/projectile/energy/bolt + select_name = "bolt" + e_cost = 5000 + fire_sound = 'sound/weapons/Genhit.ogg' + +/obj/item/ammo_casing/energy/bolt/large + projectile_type = /obj/item/projectile/energy/bolt/large + select_name = "heavy bolt" + +/obj/item/ammo_casing/energy/dart + projectile_type = /obj/item/projectile/energy/dart + fire_sound = 'sound/weapons/Genhit.ogg' + e_cost = 5000 + select_name = "toxic dart" + +/obj/item/ammo_casing/energy/instakill + projectile_type = /obj/item/projectile/beam/instakill + e_cost = 0 + select_name = "DESTROY" + +/obj/item/ammo_casing/energy/instakill/blue + projectile_type = /obj/item/projectile/beam/instakill/blue + +/obj/item/ammo_casing/energy/instakill/red + projectile_type = /obj/item/projectile/beam/instakill/red + +/obj/item/ammo_casing/energy/plasma + projectile_type = /obj/item/projectile/plasma + select_name = "plasma burst" + fire_sound = 'sound/weapons/pulse.ogg' + +/obj/item/ammo_casing/energy/plasma/adv + projectile_type = /obj/item/projectile/plasma/adv + +/obj/item/ammo_casing/energy/shock_revolver + fire_sound = 'sound/magic/lightningbolt.ogg' + e_cost = 2000 + select_name = "lightning beam" + projectile_type = /obj/item/projectile/energy/shock_revolver + +/obj/item/ammo_casing/energy/toxplasma + projectile_type = /obj/item/projectile/toxplasma + fire_sound = "sound/weapons/taser2.ogg" + select_name = "plasma dart" + +/obj/item/ammo_casing/energy/clown + projectile_type = /obj/item/projectile/clown + fire_sound = 'sound/weapons/Gunshot_smg.ogg' + select_name = "clown" + +/obj/item/ammo_casing/energy/sniper + projectile_type = /obj/item/projectile/beam/sniper + fire_sound = 'sound/weapons/marauder.ogg' + fire_delay = 50 + select_name = "sniper beam" + +/obj/item/ammo_casing/energy/teleport + projectile_type = /obj/item/projectile/energy/teleport + fire_sound = 'sound/weapons/wave.ogg' + e_cost = 1250 + select_name = "teleport beam" diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 32c3eeaa37c..e26e536e62a 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -1,113 +1,160 @@ ////////////////INTERNAL MAGAZINES////////////////////// +/obj/item/ammo_box/magazine/internal + desc = "Oh god, this shouldn't be here" + +//internals magazines are accessible, so replace spent ammo if full when trying to put a live one in +/obj/item/ammo_box/magazine/internal/give_round(obj/item/ammo_casing/R) + return ..(R,1) + +// Revolver internal mags /obj/item/ammo_box/magazine/internal/cylinder name = "revolver cylinder" - desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/a357" + ammo_type = /obj/item/ammo_casing/a357 caliber = "357" max_ammo = 7 -/obj/item/ammo_box/magazine/internal/cylinder/ammo_count(var/countempties = 1) - if (!countempties) - var/boolets = 0 - for (var/i = 1, i <= stored_ammo.len, i++) - var/obj/item/ammo_casing/bullet = stored_ammo[i] - if (bullet.BB) - boolets++ - return boolets - else - return stored_ammo.len +/obj/item/ammo_box/magazine/internal/cylinder/ammo_count(countempties = 1) + var/boolets = 0 + for(var/obj/item/ammo_casing/bullet in stored_ammo) + if(bullet && (bullet.BB || countempties)) + boolets++ + return boolets -/obj/item/ammo_box/magazine/internal/cylinder/rus357 - name = "russian revolver cylinder" - desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/a357" - caliber = "357" - max_ammo = 6 - multiload = 0 +/obj/item/ammo_box/magazine/internal/cylinder/get_round(keep = 0) + rotate() -/obj/item/ammo_box/magazine/internal/cylinder/rus357/New() - stored_ammo += new ammo_type(src) + var/b = stored_ammo[1] + if(!keep) + stored_ammo[1] = null + + return b + +/obj/item/ammo_box/magazine/internal/cylinder/proc/rotate() + var/b = stored_ammo[1] + stored_ammo.Cut(1,2) + stored_ammo.Insert(0, b) + +/obj/item/ammo_box/magazine/internal/cylinder/proc/spin() + for(var/i in 1 to rand(0, max_ammo*2)) + rotate() + +/obj/item/ammo_box/magazine/internal/cylinder/give_round(obj/item/ammo_casing/R, replace_spent = 0) + if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type)) + return 0 + + 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 + stored_ammo[i] = R + R.loc = src + + if(bullet) + bullet.loc = get_turf(src.loc) + return 1 + + return 0 /obj/item/ammo_box/magazine/internal/cylinder/rev38 - name = "d-tiv revolver cylinder" - desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/c38" + name = "detective revolver cylinder" + ammo_type = /obj/item/ammo_casing/c38 caliber = "38" max_ammo = 6 +/obj/item/ammo_box/magazine/internal/cylinder/rev762 + name = "nagant revolver cylinder" + ammo_type = /obj/item/ammo_casing/n762 + caliber = "n762" + max_ammo = 7 + /obj/item/ammo_box/magazine/internal/cylinder/cap name = "cap gun revolver cylinder" desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/cap" + ammo_type = /obj/item/ammo_casing/cap caliber = "cap" max_ammo = 7 +// Shotgun internal mags /obj/item/ammo_box/magazine/internal/shot name = "shotgun internal magazine" - desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" + ammo_type = /obj/item/ammo_casing/shotgun/beanbag caliber = "shotgun" max_ammo = 4 multiload = 0 -/obj/item/ammo_box/magazine/internal/shotcom +/obj/item/ammo_box/magazine/internal/shot/lethal + ammo_type = /obj/item/ammo_casing/shotgun/buckshot + +/obj/item/ammo_box/magazine/internal/shot/ammo_count(countempties = 1) + if (!countempties) + var/boolets = 0 + for(var/obj/item/ammo_casing/bullet in stored_ammo) + if(bullet.BB) + boolets++ + return boolets + else + return ..() + +/obj/item/ammo_box/magazine/internal/shot/com name = "combat shotgun internal magazine" - desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/shotgun/buckshot" - caliber = "shotgun" + ammo_type = /obj/item/ammo_casing/shotgun/buckshot max_ammo = 6 - multiload = 0 -/obj/item/ammo_box/magazine/internal/cylinder/dualshot +/obj/item/ammo_box/magazine/internal/shot/dual name = "double-barrel shotgun internal magazine" - desc = "This doesn't even exist" - ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" - caliber = "shotgun" max_ammo = 2 - multiload = 0 -/obj/item/ammo_box/magazine/internal/cylinder/improvised +/obj/item/ammo_box/magazine/internal/shot/improvised name = "improvised shotgun internal magazine" - desc = "This doesn't even exist" - ammo_type = "/obj/item/ammo_casing/shotgun/improvised" - caliber = "shotgun" + ammo_type = /obj/item/ammo_casing/shotgun/improvised max_ammo = 1 - multiload = 0 -/obj/item/ammo_box/magazine/internal/shotriot +/obj/item/ammo_box/magazine/internal/shot/riot name = "riot shotgun internal magazine" - desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/shotgun/rubbershot" - caliber = "shotgun" + ammo_type = /obj/item/ammo_casing/shotgun/rubbershot max_ammo = 6 - multiload = 0 -/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher +/obj/item/ammo_box/magazine/internal/grenadelauncher name = "grenade launcher internal magazine" - ammo_type = "/obj/item/ammo_casing/a40mm" + ammo_type = /obj/item/ammo_casing/a40mm caliber = "40mm" max_ammo = 1 /obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher/multi - ammo_type = "/obj/item/ammo_casing/a40mm" + ammo_type = /obj/item/ammo_casing/a40mm max_ammo = 6 +/obj/item/ammo_box/magazine/internal/speargun + name = "speargun internal magazine" + ammo_type = /obj/item/ammo_casing/caseless/magspear + caliber = "speargun" + max_ammo = 1 + +/obj/item/ammo_box/magazine/internal/rus357 + name = "russian revolver cylinder" + ammo_type = /obj/item/ammo_casing/a357 + caliber = "357" + max_ammo = 6 + multiload = 0 + +/obj/item/ammo_box/magazine/internal/rus357/New() + stored_ammo += new ammo_type(src) + /obj/item/ammo_box/magazine/internal/boltaction name = "bolt action rifle internal magazine" desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/a762" + ammo_type = /obj/item/ammo_casing/a762 caliber = "a762" max_ammo = 5 multiload = 1 /obj/item/ammo_box/magazine/internal/shot/toy - ammo_type = "/obj/item/ammo_casing/caseless/foam_dart" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart caliber = "foam_force" max_ammo = 4 /obj/item/ammo_box/magazine/internal/shot/toy/crossbow - max_ammo = 5 + max_ammo = 5 /obj/item/ammo_box/magazine/internal/shot/toy/tommygun max_ammo = 10 @@ -116,17 +163,18 @@ /obj/item/ammo_box/magazine/m10mm name = "pistol magazine (10mm)" + desc = "A gun magazine." icon_state = "9x19p" origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/c10mm" + ammo_type = /obj/item/ammo_casing/c10mm caliber = "10mm" max_ammo = 8 multiple_sprites = 2 /obj/item/ammo_box/magazine/m45 name = "handgun magazine (.45)" - icon_state = "45" - ammo_type = "/obj/item/ammo_casing/c45" + icon_state = "45-8" + ammo_type = /obj/item/ammo_casing/c45 caliber = ".45" max_ammo = 8 @@ -137,7 +185,7 @@ /obj/item/ammo_box/magazine/wt550m9 name = "wt550 magazine (4.6x30mm)" icon_state = "46x30mmt-20" - ammo_type = "/obj/item/ammo_casing/c46x30mm" + ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" max_ammo = 20 @@ -147,20 +195,20 @@ /obj/item/ammo_box/magazine/wt550m9/wtap name = "wt550 magazine (Armour Piercing 4.6x30mm)" - ammo_type = "/obj/item/ammo_casing/c46x30mmap" + ammo_type = /obj/item/ammo_casing/c46x30mmap /obj/item/ammo_box/magazine/wt550m9/wttx name = "wt550 magazine (Toxin Tipped 4.6x30mm)" - ammo_type = "/obj/item/ammo_casing/c46x30mmtox" + ammo_type = /obj/item/ammo_casing/c46x30mmtox /obj/item/ammo_box/magazine/wt550m9/wtic name = "wt550 magazine (Incindiary 4.6x30mm)" - ammo_type = "/obj/item/ammo_casing/c46x30mminc" + ammo_type = /obj/item/ammo_casing/c46x30mminc /obj/item/ammo_box/magazine/uzim9mm name = "uzi magazine (9mm)" icon_state = "uzi9mm-32" - ammo_type = "/obj/item/ammo_casing/c9mm" + ammo_type = /obj/item/ammo_casing/c9mm caliber = "9mm" max_ammo = 32 @@ -171,35 +219,46 @@ /obj/item/ammo_box/magazine/smgm9mm name = "SMG magazine (9mm)" icon_state = "smg9mm" - ammo_type = "/obj/item/ammo_casing/c9mm" + ammo_type = /obj/item/ammo_casing/c9mm caliber = "9mm" max_ammo = 30 materials = list(MAT_METAL = 2000) /obj/item/ammo_box/magazine/smgm9mm/ap name = "SMG magazine (Armour Piercing 9mm)" - ammo_type = "/obj/item/ammo_casing/c9mmap" + ammo_type = /obj/item/ammo_casing/c9mmap materials = list(MAT_METAL = 3000) /obj/item/ammo_box/magazine/smgm9mm/toxin name = "SMG magazine (Toxin Tipped 9mm)" - ammo_type = "/obj/item/ammo_casing/c9mmtox" + ammo_type = /obj/item/ammo_casing/c9mmtox materials = list(MAT_METAL = 3000) /obj/item/ammo_box/magazine/smgm9mm/fire name = "SMG Magazine (Incendiary 9mm)" - ammo_type = "/obj/item/ammo_casing/c9mminc" + ammo_type = /obj/item/ammo_casing/c9mminc materials = list(MAT_METAL = 3000) /obj/item/ammo_box/magazine/smgm9mm/update_icon() ..() icon_state = "[initial(icon_state)]-[round(ammo_count(),6)]" +/obj/item/ammo_box/magazine/pistolm9mm + name = "pistol magazine (9mm)" + icon_state = "9x19p-8" + ammo_type = /obj/item/ammo_casing/c9mm + caliber = "9mm" + max_ammo = 15 + +/obj/item/ammo_box/magazine/pistolm9mm/update_icon() + ..() + icon_state = "9x19p-[ammo_count() ? "8" : "0"]" + /obj/item/ammo_box/magazine/smgm45 name = "SMG magazine (.45)" icon_state = "c20r45" origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/c45" + ammo_type = /obj/item/ammo_casing/c45 caliber = ".45" max_ammo = 20 @@ -210,7 +269,7 @@ /obj/item/ammo_box/magazine/tommygunm45 name = "drum magazine (.45)" icon_state = "drum45" - ammo_type = "/obj/item/ammo_casing/c45" + ammo_type = /obj/item/ammo_casing/c45 caliber = ".45" max_ammo = 50 @@ -218,7 +277,7 @@ name = "handgun magazine (.50ae)" icon_state = "50ae" origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/a50" + ammo_type = /obj/item/ammo_casing/a50 caliber = ".50" max_ammo = 7 multiple_sprites = 1 @@ -226,7 +285,7 @@ /obj/item/ammo_box/magazine/m75 name = "specialized magazine (.75)" icon_state = "75" - ammo_type = "/obj/item/ammo_casing/caseless/a75" + ammo_type = /obj/item/ammo_casing/caseless/a75 caliber = "75" multiple_sprites = 2 max_ammo = 8 @@ -235,50 +294,16 @@ name = "toploader magazine (5.56mm)" icon_state = "5.56m" origin_tech = "combat=5;syndicate=1" - ammo_type = "/obj/item/ammo_casing/a556" + ammo_type = /obj/item/ammo_casing/a556 caliber = "a556" max_ammo = 30 multiple_sprites = 2 -/obj/item/ammo_box/magazine/m762 - name = "box magazine (7.62mm)" - icon_state = "a762" - origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/a762" - caliber = "a762" - max_ammo = 50 - -/obj/item/ammo_box/magazine/m762/update_icon() - ..() - icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]" - -/obj/item/ammo_box/magazine/m762/buckshot - name = "box magazine (buckshot)" - icon_state = "b762" - caliber = "shotgun" - ammo_type ="/obj/item/ammo_casing/shotgun/buckshot" - max_ammo = 300 // Bluespace! - -/obj/item/ammo_box/magazine/m762/buckshot/update_icon() - ..() - icon_state = "[initial(icon_state)]-[round(ammo_count(),60)]" - -/obj/item/ammo_box/magazine/m762/he // I am not a good person. - name = "box magazine (40mm high explosive)" - icon_state = "g762" - caliber = "40mm" - ammo_type ="/obj/item/ammo_casing/a40mm" - max_ammo = 25 - -/obj/item/ammo_box/magazine/m762/he/update_icon() - ..() - icon_state = "[initial(icon_state)]-[round(ammo_count(),5)]" - - /obj/item/ammo_box/magazine/m12g name = "shotgun magazine (12g slugs)" + desc = "A drum magazine." icon_state = "m12gb" - ammo_type = "/obj/item/ammo_casing/shotgun" + ammo_type = /obj/item/ammo_casing/shotgun origin_tech = "combat=3;syndicate=1" caliber = "shotgun" max_ammo = 8 @@ -290,36 +315,45 @@ /obj/item/ammo_box/magazine/m12g/buckshot name = "shotgun magazine (12g buckshot slugs)" icon_state = "m12gb" - ammo_type = "/obj/item/ammo_casing/shotgun/buckshot" + ammo_type = /obj/item/ammo_casing/shotgun/buckshot /obj/item/ammo_box/magazine/m12g/stun name = "shotgun magazine (12g taser slugs)" icon_state = "m12gs" - ammo_type = "/obj/item/ammo_casing/shotgun/stunslug" + ammo_type = /obj/item/ammo_casing/shotgun/stunslug /obj/item/ammo_box/magazine/m12g/dragon name = "shotgun magazine (12g dragon's breath)" icon_state = "m12gf" - ammo_type = "/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath" + ammo_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath + +/obj/item/ammo_box/magazine/m12g/bioterror + name = "shotgun magazine (12g bioterror)" + icon_state = "m12gt" + ammo_type = /obj/item/ammo_casing/shotgun/dart/bioterror + +/obj/item/ammo_box/magazine/m12g/breach + name = "shotgun magazine (12g breacher slugs)" + icon_state = "m12gbc" + ammo_type = /obj/item/ammo_casing/shotgun/breaching -//FOAM DARTS /obj/item/ammo_box/magazine/toy name = "foam force META magazine" - ammo_type = "/obj/item/ammo_casing/caseless/foam_dart" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart caliber = "foam_force" /obj/item/ammo_box/magazine/toy/smg name = "foam force SMG magazine" icon_state = "smg9mm-30" - max_ammo = 30 + max_ammo = 20 /obj/item/ammo_box/magazine/toy/smg/update_icon() ..() - icon_state = "smg9mm-[round(ammo_count(),6)]" + icon_state = "smg9mm-[round(ammo_count(),5)]" /obj/item/ammo_box/magazine/toy/smg/riot - ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot /obj/item/ammo_box/magazine/toy/pistol name = "foam force pistol magazine" @@ -328,11 +362,11 @@ multiple_sprites = 2 /obj/item/ammo_box/magazine/toy/pistol/riot - ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot /obj/item/ammo_box/magazine/toy/smgm45 name = "donksoft SMG magazine" - ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot max_ammo = 20 /obj/item/ammo_box/magazine/toy/smgm45/update_icon() @@ -341,7 +375,7 @@ /obj/item/ammo_box/magazine/toy/m762 name = "donksoft box magazine" - ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot max_ammo = 50 /obj/item/ammo_box/magazine/toy/m762/update_icon() diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm new file mode 100644 index 00000000000..d17d65e9fc8 --- /dev/null +++ b/code/modules/projectiles/ammunition/special.dm @@ -0,0 +1,49 @@ +/obj/item/ammo_casing/magic + name = "magic casing" + desc = "I didn't even know magic needed ammo..." + projectile_type = /obj/item/projectile/magic + +/obj/item/ammo_casing/magic/change + projectile_type = /obj/item/projectile/magic/change + +/obj/item/ammo_casing/magic/animate + projectile_type = /obj/item/projectile/magic/animate + +/obj/item/ammo_casing/magic/heal + projectile_type = /obj/item/projectile/magic/resurrection + +/obj/item/ammo_casing/magic/death + projectile_type = /obj/item/projectile/magic/death + +/obj/item/ammo_casing/magic/teleport + projectile_type = /obj/item/projectile/magic/teleport + +/obj/item/ammo_casing/magic/door + projectile_type = /obj/item/projectile/magic/door + +/obj/item/ammo_casing/magic/fireball + projectile_type = /obj/item/projectile/magic/fireball + +/obj/item/ammo_casing/magic/chaos + projectile_type = /obj/item/projectile/magic + +/obj/item/ammo_casing/magic/chaos/newshot() + projectile_type = pick(typesof(/obj/item/projectile/magic)) + ..() + +/obj/item/ammo_casing/magic/honk + projectile_type = /obj/item/projectile/bullet/honker + +/obj/item/ammo_casing/forcebolt + projectile_type = /obj/item/projectile/forcebolt + +/obj/item/ammo_casing/syringegun + name = "syringe gun spring" + desc = "A high-power spring that throws syringes." + projectile_type = null + +/obj/item/ammo_casing/energy/c3dbullet + projectile_type = /obj/item/projectile/bullet/midbullet3 + select_name = "spraydown" + fire_sound = 'sound/weapons/gunshot_smg.ogg' + e_cost = 200 diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm new file mode 100644 index 00000000000..9642923c452 --- /dev/null +++ b/code/modules/projectiles/firing.dm @@ -0,0 +1,95 @@ +/obj/item/ammo_casing/proc/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, distro, quiet, zone_override = "",spread) + distro += variance + for (var/i = max(1, pellets), i > 0, i--) + var/targloc = get_turf(target) + ready_proj(target, user, quiet, zone_override) + if(distro) //We have to spread a pixel-precision bullet. throw_proj was called before so angles should exist by now... + if(randomspread) + spread = round((rand() - 0.5) * distro) + else //Smart spread + spread = round((i / pellets - 0.5) * distro) + if(!throw_proj(target, targloc, user, params, spread)) + return 0 + if(i > 1) + newshot() + if(click_cooldown_override) + user.changeNext_move(click_cooldown_override) + else + user.changeNext_move(CLICK_CD_RANGE) + user.newtonian_move(get_dir(target, user)) + update_icon() + return 1 + +/obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") + if (!BB) + return + BB.original = target + BB.firer = user + if (zone_override) + BB.def_zone = zone_override + else + BB.def_zone = user.zone_selected + BB.suppressed = quiet + + if(reagents && BB.reagents) + reagents.trans_to(BB, reagents.total_volume) //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) + return 0 + BB.ammo_casing = src + if(targloc == curloc) + if(target) //if the target is right on our location we go straight to bullet_act() + target.bullet_act(BB, BB.def_zone) + qdel(BB) + BB = null + return 1 + + BB.preparePixelProjectile(target, targloc, user, params, spread) + if(BB) + BB.fire() + BB = null + return 1 + +/obj/item/ammo_casing/proc/spread(turf/target, turf/current, distro) + var/dx = abs(target.x - current.x) + var/dy = abs(target.y - current.y) + return locate(target.x + round(gaussian(0, distro) * (dy+2)/8, 1), target.y + round(gaussian(0, distro) * (dx+2)/8, 1), target.z) + +/obj/item/projectile/proc/preparePixelProjectile(atom/target, var/turf/targloc, mob/living/user, params, spread) + var/turf/curloc = get_turf(user) + src.loc = get_turf(user) + src.starting = get_turf(user) + src.current = curloc + src.yo = targloc.y - curloc.y + src.xo = targloc.x - curloc.x + + if(params) + var/list/mouse_control = params2list(params) + if(mouse_control["icon-x"]) + src.p_x = text2num(mouse_control["icon-x"]) + if(mouse_control["icon-y"]) + src.p_y = text2num(mouse_control["icon-y"]) + if(mouse_control["screen-loc"]) + //Split screen-loc up into X+Pixel_X and Y+Pixel_Y + var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",") + + //Split X+Pixel_X up into list(X, Pixel_X) + var/list/screen_loc_X = splittext(screen_loc_params[1],":") + + //Split Y+Pixel_Y up into list(Y, Pixel_Y) + var/list/screen_loc_Y = splittext(screen_loc_params[2],":") + var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32 + var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32 + + //Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average. + var/screenview = (user.client.view * 2 + 1) * world.icon_size //Refer to http://www.byond.com/docs/ref/info.html#/client/var/view for mad maths + + var/ox = round(screenview/2) //"origin" x + var/oy = round(screenview/2) //"origin" y + var/angle = Atan2(y - oy, x - ox) + src.Angle = angle + if(spread) + src.Angle += spread diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index cb4f21d2497..7d72082b297 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1,54 +1,59 @@ - #define SAWN_INTACT 0 - #define SAWN_OFF 1 - #define SAWN_SAWING -1 - /obj/item/weapon/gun name = "gun" - desc = "Its a gun. It's pretty terrible, though." + desc = "It's a gun. It's pretty terrible, though." icon = 'icons/obj/gun.dmi' icon_state = "detective" item_state = "gun" - lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/guns_righthand.dmi' flags = CONDUCT slot_flags = SLOT_BELT materials = list(MAT_METAL=2000) - w_class = 3.0 + w_class = 3 throwforce = 5 - throw_speed = 4 + throw_speed = 3 throw_range = 5 - force = 5.0 + force = 5 origin_tech = "combat=1" needs_permit = 1 attack_verb = list("struck", "hit", "bashed") - var/fire_sound = 'sound/weapons/Gunshot.ogg' - var/obj/item/projectile/in_chamber = null - var/silenced = 0 - var/ghettomodded = 0 - var/recoil = 0 + var/fire_sound = "gunshot" + var/fire_sound_text = "gunshot" //the fire sound that shows in chat messages: laser blast, gunshot, etc. + var/suppressed = 0 //whether or not a message is displayed when fired var/can_suppress = 0 var/can_unsuppress = 1 + var/recoil = 0 //boom boom shake the room var/clumsy_check = 1 - var/sawn_desc = null + var/obj/item/ammo_casing/chambered = null + var/trigger_guard = TRIGGER_GUARD_NORMAL //trigger guard on the weapon, hulks can't fire them with their big meaty fingers + var/sawn_desc = null //description change if weapon is sawn-off var/sawn_state = SAWN_INTACT - var/obj/item/ammo_casing/chambered = null // The round (not bullet) that is in the chamber. THIS MISPLACED ITEM BROUGHT TO YOU BY HACKY BUCKSHOT. - var/tmp/list/mob/living/target //List of who yer targeting. - var/tmp/lock_time = -100 - var/tmp/mouthshoot = 0 ///To stop people from suiciding twice... >.> - var/automatic = 0 //Used to determine if you can target multiple people. - var/tmp/mob/living/last_moved_mob //Used to fire faster at more than one person. - var/tmp/told_cant_shoot = 0 //So that it doesn't spam them with the fact they cannot hit them. - var/firerate = 1 // 0 for one bullet after tarrget moves and aim is lowered, - //1 for keep shooting until aim is lowered - var/fire_delay = 0 - var/last_fired = 0 + var/burst_size = 1 //how large a burst is + var/fire_delay = 0 //rate of fire for burst firing and semi auto + var/firing_burst = 0 //Prevent the weapon from firing again while already firing + var/semicd = 0 //cooldown handler + var/weapon_weight = WEAPON_LIGHT + + var/spread = 0 + var/randomspread = 1 + + var/unique_rename = 0 //allows renaming with a pen + var/unique_reskin = 0 //allows one-time reskinning + var/reskinned = 0 //whether or not the gun has been reskinned + var/current_skin = null + var/list/options = list() + + lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' + righthand_file = 'icons/mob/inhands/guns_righthand.dmi' + var/obj/item/device/flashlight/F = null var/can_flashlight = 0 - var/heavy_weapon = 0 - var/randomspread = 0 - var/burst_size = 1 + var/list/upgrades = list() + + var/ammo_x_offset = 0 //used for positioning ammo count overlay on sprite + var/ammo_y_offset = 0 + var/flight_x_offset = 0 + var/flight_y_offset = 0 //Zooming var/zoomable = FALSE //whether the gun generates a Zoom action on creation @@ -56,312 +61,196 @@ var/zoom_amt = 3 //Distance in TURFs to move the user's screen forward (the "zoom" effect) var/datum/action/toggle_scope_zoom/azoom - proc/ready_to_fire() - if(world.time >= last_fired + fire_delay) - last_fired = world.time - return 1 - else - return 0 - - proc/process_chambered() - return 0 - - - proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver. - if(!M.IsAdvancedToolUser()) - return 0 - return 1 - - - proc/shoot_with_empty_chamber(mob/living/user as mob|obj) - to_chat(user, "*click*") - playsound(user, 'sound/weapons/emptyclick.ogg', 40, 1) - return - - emp_act(severity) - for(var/obj/O in contents) - O.emp_act(severity) - - proc/prepare_shot(var/obj/item/projectile/proj) //Transfer properties from the gun to the bullet - proj.shot_from = src - proj.silenced = silenced - return - /obj/item/weapon/gun/New() + ..() + if(F) + verbs += /obj/item/weapon/gun/proc/toggle_gunlight + new /datum/action/item_action/toggle_gunlight(src) build_zooming() + +/obj/item/weapon/gun/examine(mob/user) ..() + if(unique_reskin && !reskinned) + to_chat(user, "Alt-click it to reskin it.") + if(unique_rename) + to_chat(user, "Use a pen on it to rename it.") -/obj/item/weapon/gun/pickup(mob/user) +/obj/item/weapon/gun/proc/process_chamber() + return 0 - if(azoom) - azoom.Grant(user) - ..() - -/obj/item/weapon/gun/dropped(mob/user) - - zoom(user,FALSE) - if(azoom) - azoom.Remove(user) - ..() - -/obj/item/weapon/gun/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) - if(flag) return //we're placing gun on a table or in backpack - if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this? - Fire(A,user,params) //Otherwise, fire normally. - -/obj/item/weapon/gun/proc/isHandgun() +//check if there's enough ammo/energy/whatever to shoot one time +//i.e if clicking would make it shoot +/obj/item/weapon/gun/proc/can_shoot() return 1 -/obj/item/weapon/gun/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)//TODO: go over this +/obj/item/weapon/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj) + to_chat(user, "*click*") + playsound(user, 'sound/weapons/empty.ogg', 100, 1) + +/obj/item/weapon/gun/proc/shoot_live_shot(mob/living/user as mob|obj, pointblank = 0, mob/pbtarget = null, message = 1) + if(recoil) + shake_camera(user, recoil + 1, recoil) + + if(suppressed) + playsound(user, fire_sound, 10, 1) + else + playsound(user, fire_sound, 50, 1) + if(!message) + return + if(pointblank) + user.visible_message("[user] fires [src] point blank at [pbtarget]!", "You fire [src] point blank at [pbtarget]!", "You hear \a [fire_sound_text]!") + else + user.visible_message("[user] fires [src]!", "You fire [src]!", "You hear \a [fire_sound_text]!") + + if(weapon_weight >= WEAPON_MEDIUM) + if(user.get_inactive_hand()) + if(prob(15)) + if(user.drop_item()) + user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!") + +/obj/item/weapon/gun/emp_act(severity) + for(var/obj/O in contents) + O.emp_act(severity) + +/obj/item/weapon/gun/afterattack(atom/target, mob/living/user, flag, params) + if(firing_burst) + return + if(flag) //It's adjacent, is the user, or is on the user's person + if(target in user.contents) //can't shoot stuff inside us. + return + if(!ismob(target) || user.a_intent == "harm") //melee attack + return + if(target == user && user.zone_selected != "mouth") //so we can't shoot ourselves (unless mouth selected) + return + + if(istype(user))//Check if the user can use the gun, if the user isn't alive(turrets) assume it can. + var/mob/living/L = user + if(!can_trigger_gun(L)) + return + + if(!can_shoot()) //Just because you can pull the trigger doesn't mean it can't shoot. + shoot_with_empty_chamber(user) + return + + if(flag) + if(user.zone_selected == "mouth") + handle_suicide(user, target, params) + return + + //Exclude lasertag guns from the CLUMSY check. if(clumsy_check) - if(istype(user, /mob/living)) - var/mob/living/M = user - if ((CLUMSY in M.mutations) && prob(50)) - to_chat(M, "[src] blows up in your face.") - M.take_organ_damage(0,20) - M.drop_item() - qdel(src) + if(istype(user)) + if (user.disabilities & CLUMSY && prob(40)) + to_chat(user, "You shoot yourself in the foot with \the [src]!") + var/shot_leg = pick("l_foot", "r_foot") + process_fire(user, user, 0, params, zone_override = shot_leg) + user.drop_item() return - if (!user.IsAdvancedToolUser() || istype(user, /mob/living/simple_animal/diona)) - to_chat(user, "You don't have the dexterity to do this!") + if(weapon_weight == WEAPON_HEAVY && user.get_inactive_hand()) + to_chat(user, "You need both hands free to fire \the [src]!") return - if(istype(user, /mob/living)) - var/mob/living/M = user - if (HULK in M.mutations) - to_chat(M, "Your meaty finger is much too large for the trigger guard!") - return - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.species.flags & NOGUNS) - to_chat(user, "Your fingers don't fit in the trigger guard!") - return - if(H.martial_art && H.martial_art.name == "The Sleeping Carp") //great dishonor to famiry - to_chat(user, "Use of ranged weaponry would bring dishonor to the clan.") - return + process_fire(target,user,1,params) + +/obj/item/weapon/gun/proc/can_trigger_gun(var/mob/living/user) + if(!user.can_use_guns(src)) + return 0 + return 1 + +obj/item/weapon/gun/proc/newshot() + return + +/obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override) add_fingerprint(user) - if(!special_check(user)) + if(semicd) return - if (!ready_to_fire()) - if (world.time % 3) //to prevent spam - to_chat(user, "[src] is not ready to fire again!") - return - - if(heavy_weapon) + if(weapon_weight) if(user.get_inactive_hand()) recoil = 4 //one-handed kick else recoil = initial(recoil) - if (istype(in_chamber, /obj/item/projectile/bullet/blank)) // A hacky way of making blank shotgun shells work again. Honk. - in_chamber.delete() - in_chamber = null - return - - user.changeNext_move(CLICK_CD_RANGE) - - var/spread = 0 - var/turf/targloc = get_turf(target) - for(var/f = 1 to burst_size) - if(!process_chambered()) //CHECK - return click_empty(user) - - if(chambered) - for (var/i = max(1, chambered.pellets), i > 0, i--) //Previous way of doing it fucked up math for spreading. This way, even the first projectile is part of the spread code. - if(i != max(1, chambered.pellets)) //Have we fired the initial chambered bullet yet? - in_chamber = new chambered.projectile_type() - ready_projectile(target, user) - prepare_shot(in_chamber) - if(chambered.deviation) - if(randomspread) //Random spread - spread = (rand() - 0.5) * chambered.deviation - else //Smart spread - spread = (i / chambered.pellets - 0.5) * chambered.deviation - if(!process_projectile(targloc, user, params, spread)) - return 0 - else - ready_projectile(target, user) - prepare_shot(in_chamber) - if(!process_projectile(targloc, user, params, spread)) - return 0 - - if(recoil) - spawn() - shake_camera(user, recoil + 1, recoil) - - if(silenced) - playsound(user, fire_sound, 10, 1) - else - playsound(user, fire_sound, 50, 1) - if(f == 1) // Only print this once - user.visible_message("[user] fires [src][reflex ? " by reflex":""]!", \ - "You fire [src][reflex ? "by reflex":""]!", \ - "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") - - if(heavy_weapon) - if(user.get_inactive_hand()) - if(prob(15)) - user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!") - user.drop_item() + if(burst_size > 1) + firing_burst = 1 + for(var/i = 1 to burst_size) + if(!user) + break + if(!issilicon(user)) + if( i>1 && !(src in get_both_hands(user))) //for burst firing break - - user.newtonian_move(get_dir(target, user)) + if(chambered) + if(!chambered.fire(target, user, params, , suppressed, zone_override)) + shoot_with_empty_chamber(user) + break + else + if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot + shoot_live_shot(user, 1, target, message) + else + shoot_live_shot(user, 0, target, message) + else + shoot_with_empty_chamber(user) + break + process_chamber() + update_icon() + sleep(fire_delay) + firing_burst = 0 + else + if(chambered) + if(!chambered.fire(target, user, params, , suppressed, zone_override, spread)) + shoot_with_empty_chamber(user) + return + else + if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot + shoot_live_shot(user, 1, target, message) + else + shoot_live_shot(user, 0, target, message) + else + shoot_with_empty_chamber(user) + return + process_chamber() update_icon() + semicd = 1 + spawn(fire_delay) + semicd = 0 + + if(user) if(user.hand) user.update_inv_l_hand() else user.update_inv_r_hand() - sleep(fire_delay) + feedback_add_details("gun_fired","[src.type]") -/obj/item/weapon/gun/proc/ready_projectile(atom/target as mob|obj|turf, mob/living/user) - in_chamber.firer = user - in_chamber.def_zone = user.zone_sel.selecting - in_chamber.original = target - return - -/obj/item/weapon/gun/proc/process_projectile(var/turf/targloc, mob/living/user as mob|obj, params, spread) - var/turf/curloc = user.loc - if (!istype(targloc) || !istype(curloc) || !in_chamber) - return 0 - if(targloc == curloc) //Fire the projectile - user.bullet_act(in_chamber) - del(in_chamber) - update_icon() - return 1 - - in_chamber.loc = get_turf(user) - in_chamber.starting = get_turf(user) - in_chamber.current = curloc - in_chamber.OnFired() - in_chamber.yo = targloc.y - curloc.y - in_chamber.xo = targloc.x - curloc.x - if(params) - var/list/mouse_control = params2list(params) - if(mouse_control["icon-x"]) - in_chamber.p_x = text2num(mouse_control["icon-x"]) - if(mouse_control["icon-y"]) - in_chamber.p_y = text2num(mouse_control["icon-y"]) - if(mouse_control["screen-loc"]) - //Split screen-loc up into X+Pixel_X and Y+Pixel_Y - var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",") - - //Split X+Pixel_X up into list(X, Pixel_X) - var/list/screen_loc_X = splittext(screen_loc_params[1],":") - - //Split Y+Pixel_Y up into list(Y, Pixel_Y) - var/list/screen_loc_Y = splittext(screen_loc_params[2],":") - - var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32 - var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32 - var/ox = round(480/2) //"origin" x - Basically center of the screen. This is a bad way of doing it because if you are able to view MORE than 17 tiles at a time your aim will get fucked. - var/oy = round(480/2) //"origin" y - Basically center of the screen. - - var/angle = Atan2(y - oy, x - ox) - - in_chamber.Angle = angle - - if(istype(user, /mob/living/carbon)) //Increase spread based on shock - var/mob/living/carbon/mob = user - if(mob.shock_stage > 120) - spread += rand(-5,5) - else if(mob.shock_stage > 70) - spread += rand(-2,2) - - if(spread) - in_chamber.Angle += spread - if(in_chamber) - in_chamber.process() - in_chamber = null - return 1 - -/obj/item/weapon/gun/proc/can_fire() - return process_chambered() - -/obj/item/weapon/gun/proc/can_hit(var/mob/living/target as mob, var/mob/living/user as mob) - return in_chamber.check_fire(target,user) - -/obj/item/weapon/gun/proc/click_empty(mob/user = null) - if (user) - user.visible_message("*click click*", "\red *click*") - playsound(user, 'sound/weapons/empty.ogg', 100, 1) +/obj/item/weapon/gun/attack(mob/M as mob, mob/user) + if(user.a_intent == "harm") //Flogging + ..() else - src.visible_message("*click click*") - playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1) + return -/obj/item/weapon/gun/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - //Suicide handling. - if (M == user && user.zone_sel.selecting == "mouth" && !mouthshoot) - mouthshoot = 1 - M.visible_message(" [user] sticks their gun in their mouth, ready to pull the trigger...") - if(!do_after(user, 40, target = M)) - M.visible_message(" [user] decided life was worth living") - mouthshoot = 0 - return - if (process_chambered()) - user.visible_message("[user] pulls the trigger.") - if(silenced) - playsound(user, fire_sound, 10, 1) - else - playsound(user, fire_sound, 50, 1) - if(istype(in_chamber, /obj/item/projectile/lasertag) || istype(in_chamber, /obj/item/projectile/bullet/reusable/foam_dart)) - user.show_message("You feel rather silly, trying to commit suicide with a toy.") - mouthshoot = 0 - return - in_chamber.on_hit(M) - if (in_chamber.damage_type != STAMINA) - user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1) - user.death() - else - to_chat(user, "Ow...") - user.apply_effect(110,STAMINA,0) - del(in_chamber) - mouthshoot = 0 - return - else - click_empty(user) - mouthshoot = 0 - return - - if (src.process_chambered()) - //Point blank shooting if on harm intent or target we were targeting. - if(user.a_intent == I_HARM) - user.visible_message("\red \The [user] fires \the [src] point blank at [M]!") - if(istype(in_chamber)) in_chamber.damage *= 1.3 - Fire(M,user,0,0,1) - return - else if(target && M in target) - Fire(M,user,0,0,1) ///Otherwise, shoot! - return - else - return ..() //Pistolwhippin' - - -/obj/item/weapon/gun/attackby(var/obj/item/A as obj, mob/user as mob, params) - if(istype(A, /obj/item/device/flashlight/seclite)) - var/obj/item/device/flashlight/seclite/S = A +/obj/item/weapon/gun/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/device/flashlight/seclite)) + var/obj/item/device/flashlight/seclite/S = I if(can_flashlight) if(!F) - if(user.l_hand != src && user.r_hand != src) - to_chat(user, "You'll need [src] in your hands to do that.") + if(!user.unEquip(I)) return - user.drop_item() to_chat(user, "You click [S] into place on [src].") if(S.on) - set_light(0) + SetLuminosity(0) F = S - A.loc = src + I.loc = src update_icon() update_gunlight(user) verbs += /obj/item/weapon/gun/proc/toggle_gunlight - if(istype(A, /obj/item/weapon/screwdriver)) - if(F) - if(user.l_hand != src && user.r_hand != src) - to_chat(user, "You'll need [src] in your hands to do that.") - return + var/datum/action/A = new /datum/action/item_action/toggle_gunlight(src) + if(loc == user) + A.Grant(user) + + if(istype(I, /obj/item/weapon/screwdriver)) + if(F && can_flashlight) for(var/obj/item/device/flashlight/seclite/S in src) to_chat(user, "You unscrew the seclite from [src].") F = null @@ -370,8 +259,13 @@ S.update_brightness(user) update_icon() verbs -= /obj/item/weapon/gun/proc/toggle_gunlight + for(var/datum/action/item_action/toggle_gunlight/TGL in actions) + qdel(TGL) + + if(unique_rename) + if(istype(I, /obj/item/weapon/pen)) + rename_gun(user) ..() - return /obj/item/weapon/gun/proc/toggle_gunlight() set name = "Toggle Gunlight" @@ -383,15 +277,14 @@ var/mob/living/carbon/human/user = usr if(!isturf(user.loc)) - to_chat(user, "You cannot turn the light on while in this [user.loc].") + to_chat(user, "You cannot turn the light on while in this [user.loc]!") F.on = !F.on to_chat(user, "You toggle the gunlight [F.on ? "on":"off"].") playsound(user, 'sound/weapons/empty.ogg', 100, 1) update_gunlight(user) - return -/obj/item/weapon/gun/proc/update_gunlight(var/mob/user = null) +/obj/item/weapon/gun/proc/update_gunlight(mob/user = null) if(F) if(F.on) set_light(F.brightness_on) @@ -400,7 +293,84 @@ update_icon() else set_light(0) + +/obj/item/weapon/gun/pickup(mob/user) + ..() + if(azoom) + azoom.Grant(user) + +/obj/item/weapon/gun/dropped(mob/user) + ..() + zoom(user,FALSE) + if(azoom) + azoom.Remove(user) + +/obj/item/weapon/gun/AltClick(mob/user) + ..() + if(user.incapacitated()) + to_chat(user, "You can't do that right now!") return + if(unique_reskin && !reskinned && loc == user) + reskin_gun(user) + +/obj/item/weapon/gun/proc/reskin_gun(mob/M) + var/choice = input(M,"Warning, you can only reskin your weapon once!","Reskin Gun") in options + + if(src && choice && !M.stat && in_range(M,src) && !M.restrained() && M.canmove) + if(options[choice] == null) + return + if(sawn_state == SAWN_OFF) + icon_state = options[choice] + "-sawn" + else + icon_state = options[choice] + current_skin = icon_state + to_chat(M, "Your gun is now skinned as [choice]. Say hello to your new friend.") + reskinned = 1 + +/obj/item/weapon/gun/proc/rename_gun(mob/M) + var/input = stripped_input(M,"What do you want to name the gun?", ,"", MAX_NAME_LEN) + + if(src && input && !M.stat && in_range(M,src) && !M.restrained() && M.canmove) + name = input + to_chat(M, "You name the gun [input]. Say hello to your new friend.") + return + +/obj/item/weapon/gun/proc/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params) + if(!ishuman(user) || !ishuman(target)) + return + + if(semicd) + return + + if(user == target) + target.visible_message("[user] sticks [src] in their mouth, ready to pull the trigger...", \ + "You stick [src] in your mouth, ready to pull the trigger...") + else + target.visible_message("[user] points [src] at [target]'s head, ready to pull the trigger...", \ + "[user] points [src] at your head, ready to pull the trigger...") + + semicd = 1 + + if(!do_mob(user, target, 120) || user.zone_selected != "mouth") + if(user) + if(user == target) + user.visible_message("[user] decided life was worth living.") + else if(target && target.Adjacent(user)) + target.visible_message("[user] has decided to spare [target]'s life.", "[user] has decided to spare your life!") + semicd = 0 + return + + semicd = 0 + + target.visible_message("[user] pulls the trigger!", "[user] pulls the trigger!") + + if(chambered && chambered.BB) + chambered.BB.damage *= 5 + + process_fire(target, user, 1, params) + +/obj/item/weapon/gun/proc/isHandgun() + return 1 ///////////// // ZOOMING // @@ -424,8 +394,6 @@ gun.zoom(L, FALSE) ..() - - /obj/item/weapon/gun/proc/zoom(mob/living/user, forced_zoom) if(!user || !user.client) return diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index eeb775be84a..56852f4e1ae 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -115,4 +115,4 @@ /obj/item/projectile/energy/sonic/proc/split() //TODO: create two more projectiles to either side of this one, fire at targets to the side of target turf. - return \ No newline at end of file + return diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 8add6a5caf9..df023424265 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -5,22 +5,22 @@ fire_sound = 'sound/weapons/Taser.ogg' var/obj/item/weapon/stock_parts/cell/power_supply //What type of power cell this uses - var/charge_cost = 1000 //How much energy is needed to fire. - var/cell_type = "/obj/item/weapon/stock_parts/cell" - var/projectile_type = "/obj/item/projectile/beam" - var/modifystate + var/cell_type = /obj/item/weapon/stock_parts/cell + var/modifystate = 0 + var/list/ammo_type = list(/obj/item/ammo_casing/energy) + var/select = 1 //The state of the select fire switch. Determines from the ammo_type list what kind of shot is fired next. var/can_charge = 1 - - //self-recharging - var/self_recharge = 0 //if set, the weapon will recharge itself + var/charge_sections = 4 + ammo_x_offset = 2 + var/shaded_charge = 0 //if this gun uses a stateful charge bar for more detail + var/selfcharge = 0 var/use_external_power = 0 //if set, the weapon will look for an external power source to draw from, otherwise it recharges magically - var/recharge_time = 4 var/charge_tick = 0 + var/charge_delay = 4 /obj/item/weapon/gun/energy/emp_act(severity) - if(power_supply) - power_supply.use(round(power_supply.charge / severity)) - update_icon() + power_supply.use(round(power_supply.charge / severity)) + update_icon() /obj/item/weapon/gun/energy/New() ..() @@ -29,7 +29,15 @@ else power_supply = new(src) power_supply.give(power_supply.maxcharge) - if(self_recharge) + var/obj/item/ammo_casing/energy/shot + for (var/i = 1, i <= ammo_type.len, i++) + var/shottype = ammo_type[i] + shot = new shottype(src) + ammo_type[i] = shot + shot = ammo_type[select] + fire_sound = shot.fire_sound + fire_delay = shot.delay + if(selfcharge) processing_objects.Add(src) update_icon() @@ -39,27 +47,122 @@ return ..() /obj/item/weapon/gun/energy/process() - if(self_recharge) //Every [recharge_time] ticks, recharge a shot for the cyborg + if(selfcharge) //Every [recharge_time] ticks, recharge a shot for the cyborg charge_tick++ - if(charge_tick < recharge_time) return 0 + if(charge_tick < recharge_time) + return 0 charge_tick = 0 - - if(!power_supply || power_supply.charge >= power_supply.maxcharge) + if(!power_supply) return 0 // check if we actually need to recharge - if(use_external_power) var/obj/item/weapon/stock_parts/cell/external = get_external_power_supply() if(!external || !external.use(charge_cost/10)) //Take power from the borg... return 0 //Note, uses /10 because of shitty mods to the cell system - power_supply.give(charge_cost) //... to recharge the shot update_icon() - return 1 -/obj/item/weapon/gun/energy/proc/get_external_power_supply() +/obj/item/weapon/gun/energy/attack_self(mob/living/user as mob) + if(ammo_type.len > 1) + select_fire(user) + update_icon() + +/obj/item/weapon/gun/energy/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, params) + newshot() //prepare a new shot + ..() + +/obj/item/weapon/gun/energy/can_shoot() + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + return power_supply.charge >= shot.e_cost + +/obj/item/weapon/gun/energy/newshot() + if (!ammo_type || !power_supply) + return + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + if(power_supply.charge >= shot.e_cost) //if there's enough power in the power_supply cell... + chambered = shot //...prepare a new shot based on the current ammo type selected + chambered.newshot() + return + +/obj/item/weapon/gun/energy/process_chamber() + if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... + var/obj/item/ammo_casing/energy/shot = chambered + power_supply.use(shot.e_cost)//... drain the power_supply cell + chambered = null //either way, released the prepared shot + return + +/obj/item/weapon/gun/energy/proc/select_fire(mob/living/user) + select++ + if (select > ammo_type.len) + select = 1 + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + fire_sound = shot.fire_sound + fire_delay = shot.delay + if (shot.select_name) + to_chat(user, "[src] is now set to [shot.select_name].") + update_icon() + return + +/obj/item/weapon/gun/energy/update_icon() + overlays.Cut() + var/ratio = Ceiling((power_supply.charge / power_supply.maxcharge) * charge_sections) + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + var/iconState = "[icon_state]_charge" + var/itemState = null + if(!initial(item_state)) + itemState = icon_state + if (modifystate) + overlays += "[icon_state]_[shot.select_name]" + iconState += "_[shot.select_name]" + if(itemState) + itemState += "[shot.select_name]" + if(power_supply.charge < shot.e_cost) + overlays += "[icon_state]_empty" + else + if(!shaded_charge) + for(var/i = ratio, i >= 1, i--) + overlays += image(icon = icon, icon_state = iconState, pixel_x = ammo_x_offset * (i -1)) + else + overlays += image(icon = icon, icon_state = "[icon_state]_charge[ratio]") + if(F && can_flashlight) + var/iconF = "flight" + if(F.on) + iconF = "flight_on" + overlays += image(icon = icon, icon_state = iconF, pixel_x = flight_x_offset, pixel_y = flight_y_offset) + if(itemState) + itemState += "[ratio]" + item_state = itemState + +/obj/item/weapon/gun/energy/ui_action_click() + toggle_gunlight() + +/obj/item/weapon/gun/energy/suicide_act(mob/user) + if (src.can_shoot()) + user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.") + sleep(25) + if(user.l_hand == src || user.r_hand == src) + user.visible_message("[user] melts \his face off with the [src.name]!") + playsound(loc, fire_sound, 50, 1, -1) + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + power_supply.use(shot.e_cost) + update_icon() + return(FIRELOSS) + else + user.visible_message("[user] panics and starts choking to death!") + return(OXYLOSS) + else + user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!") + playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) + return (OXYLOSS) + +/obj/item/weapon/gun/energy/proc/robocharge() if(isrobot(src.loc)) var/mob/living/silicon/robot/R = src.loc - return R.cell + if(R && R.cell) + var/obj/item/ammo_casing/energy/shot = ammo_type[select] //Necessary to find cost of shot + if(R.cell.use(shot.e_cost/10)) //Take power from the borg... //Divided by 10 because cells and charge costs are fucked. + power_supply.give(shot.e_cost) //... to recharge the shot + +/obj/item/weapon/gun/energy/proc/get_external_power_supply() if(istype(src.loc, /obj/item/rig_module)) var/obj/item/rig_module/module = src.loc if(module.holder && module.holder.wearer) @@ -69,29 +172,3 @@ if(istype(suit)) return suit.cell return null - -/obj/item/weapon/gun/energy/process_chambered() - if(in_chamber) return 1 - if(!power_supply) return 0 - if(!power_supply.use(charge_cost)) return 0 - if(!projectile_type) return 0 - in_chamber = new projectile_type(src) - return 1 - -/obj/item/weapon/gun/energy/update_icon() - if(cell_type) - var/ratio = power_supply.charge / power_supply.maxcharge - ratio = round(ratio, 0.25) * 100 - if(modifystate) - icon_state = "[modifystate][ratio]" - else - icon_state = "[initial(icon_state)][ratio]" - else - icon_state = "energy0" - overlays.Cut() - if(F) - if(F.on) - overlays += "flight-on" - else - overlays += "flight" - return diff --git a/code/modules/projectiles/guns/energy/advtaser.dm b/code/modules/projectiles/guns/energy/advtaser.dm deleted file mode 100644 index 8601a388f15..00000000000 --- a/code/modules/projectiles/guns/energy/advtaser.dm +++ /dev/null @@ -1,40 +0,0 @@ -/obj/item/weapon/gun/energy/advtaser - name = "hybrid taser" - desc = "A hybrid taser designed to fire both short-range high-power electrodes and long-range disabler beams." - icon_state = "advtaser" - item_state = null //so the human update icon uses the icon_state instead. - cell_type = "/obj/item/weapon/stock_parts/cell" - origin_tech = null - fire_sound = 'sound/weapons/Taser.ogg' - projectile_type = "/obj/item/projectile/energy/electrode" - charge_cost = 2000 - modifystate = "advtaserstun" - can_flashlight = 1 - fire_delay = 15 - - var/mode = 0 //0 = stun, 1 = disable - - - attack_self(mob/living/user as mob) - switch(mode) - if(0) - mode = 1 - charge_cost = 500 - fire_sound = 'sound/weapons/taser2.ogg' - to_chat(user, "\red [src.name] is now set to Disable.") - projectile_type = "/obj/item/projectile/beam/disabler" - modifystate = "advtaserdisable" - fire_delay = 0 - if(1) - mode = 0 - charge_cost = 2000 - fire_sound = 'sound/weapons/Taser.ogg' - to_chat(user, "\red [src.name] is now set to stun.") - projectile_type = "/obj/item/projectile/energy/electrode" - modifystate = "advtaserstun" - fire_delay = 15 - update_icon() - if(user.l_hand == src) - user.update_inv_l_hand() - else - user.update_inv_r_hand() diff --git a/code/modules/projectiles/guns/energy/blueshield.dm b/code/modules/projectiles/guns/energy/blueshield.dm deleted file mode 100644 index 914b92e19a6..00000000000 --- a/code/modules/projectiles/guns/energy/blueshield.dm +++ /dev/null @@ -1,37 +0,0 @@ -/obj/item/weapon/gun/energy/blueshield - name = "advanced stun revolver" - desc = "An advanced stun revolver with the capacity to shoot both electrodes and lasers." - icon_state = "bsgun_stun" - item_state = "gun" - modifystate = "bsgun_stun" - force = 7 - fire_sound = 'sound/weapons/gunshot.ogg' - charge_cost = 2000 - projectile_type = "/obj/item/projectile/energy/electrode" - fire_delay = 15 - var/fire_mode = 0 // 0 for taser, 1 for lethals. - -/obj/item/weapon/gun/energy/blueshield/attack_self(mob/living/user as mob) - if(!fire_mode) - fire_mode = 1 - charge_cost = 1000 - fire_delay = 0 - - fire_sound = 'sound/weapons/Laser.ogg' - projectile_type = "/obj/item/projectile/beam" - modifystate = "bsgun_kill" - - to_chat(user, "You adjust [src.name] to the kill setting.") - - else - fire_mode = 0 - charge_cost = 2000 - fire_delay = 15 - - projectile_type = "/obj/item/projectile/energy/electrode" - fire_sound = 'sound/weapons/gunshot.ogg' - modifystate = "bsgun_stun" - - to_chat(user, "You adjust [src.name] to the stun setting.") - - update_icon() \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/hos.dm b/code/modules/projectiles/guns/energy/hos.dm deleted file mode 100644 index 6bcb9992c4d..00000000000 --- a/code/modules/projectiles/guns/energy/hos.dm +++ /dev/null @@ -1,45 +0,0 @@ -/obj/item/weapon/gun/energy/hos - name = "head of security's energy gun" - desc = "This is a modern recreation of the captain's antique laser gun. This gun has several unique fire modes, but lacks the ability to recharge over time." - icon_state = "hoslaser" - item_state = null //so the human update icon uses the icon_state instead. - force = 10 - fire_sound = 'sound/weapons/Taser.ogg' - origin_tech = "combat=3;magnets=2" - charge_cost = 2000 - modifystate = "hoslaserstun" - projectile_type = "/obj/item/projectile/energy/electrode" - fire_delay = 15 - var/mode = 2 - - attack_self(mob/living/user as mob) - switch(mode) - if(2) - mode = 0 - charge_cost = 1000 - fire_sound = 'sound/weapons/Laser.ogg' - to_chat(user, "\red [src.name] is now set to kill.") - projectile_type = "/obj/item/projectile/beam" - modifystate = "hoslaserkill" - fire_delay = 0 - if(0) - mode = 1 - charge_cost = 500 - fire_sound = 'sound/weapons/taser2.ogg' - to_chat(user, "\red [src.name] is now set to disable.") - projectile_type = "/obj/item/projectile/beam/disabler" - modifystate = "hoslaserdisable" - fire_delay = 0 - if(1) - mode = 2 - charge_cost = 2000 - fire_sound = 'sound/weapons/taser.ogg' - to_chat(user, "\red [src.name] is now set to stun.") - projectile_type = "/obj/item/projectile/energy/electrode" - modifystate = "hoslaserstun" - fire_delay = 15 - update_icon() - if(user.l_hand == src) - user.update_inv_l_hand() - else - user.update_inv_r_hand() \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 330d9136f17..46add8b8b47 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -1,59 +1,63 @@ /obj/item/weapon/gun/energy/laser name = "laser gun" - desc = "a basic weapon designed kill with concentrated energy bolts" + desc = "A basic energy-based laser gun that fires concentrated beams of light which pass through glass and thin metal." icon_state = "laser" item_state = "laser" - fire_sound = 'sound/weapons/Laser.ogg' - charge_cost = 760 - w_class = 3.0 + w_class = 3 materials = list(MAT_METAL=2000) origin_tech = "combat=3;magnets=2" - projectile_type = "/obj/item/projectile/beam" + ammo_type = list(/obj/item/ammo_casing/energy/lasergun) + ammo_x_offset = 1 + shaded_charge = 1 /obj/item/weapon/gun/energy/laser/practice name = "practice laser gun" desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." - projectile_type = "/obj/item/projectile/practice" + ammo_type = list(/obj/item/ammo_casing/energy/laser/practice) clumsy_check = 0 needs_permit = 0 -obj/item/weapon/gun/energy/laser/retro +/obj/item/weapon/gun/energy/laser/retro name ="retro laser gun" icon_state = "retro" - desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws." - + desc = "An older model of the basic lasergun, no longer used by Nanotrasen's private security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws." + ammo_x_offset = 3 /obj/item/weapon/gun/energy/laser/captain - name = "captain's antique laser gun" + name = "antique laser gun" icon_state = "caplaser" item_state = "caplaser" desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding." force = 10 origin_tech = null + ammo_x_offset = 3 + selfcharge = 1 - self_recharge = 1 - +/obj/item/weapon/gun/energy/laser/captain/scattershot + name = "scatter shot laser rifle" + icon_state = "lasercannon" + item_state = "laser" + desc = "An industrial-grade heavy-duty laser rifle with a modified laser lense to scatter its shot into multiple smaller lasers. The inner-core can self-charge for theorically infinite use." + origin_tech = "combat=5;materials=4;powerstorage=4" + ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser) /obj/item/weapon/gun/energy/laser/cyborg + can_charge = 0 desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?" -/obj/item/weapon/gun/energy/laser/cyborg/process() - return 1 - -/obj/item/weapon/gun/energy/laser/cyborg/process_chambered() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell && R.cell.charge >= 83) - R.cell.use(83) - in_chamber = new/obj/item/projectile/beam(src) - return 1 - return 0 +/obj/item/weapon/gun/energy/laser/cyborg/newshot() + ..() + robocharge() /obj/item/weapon/gun/energy/laser/cyborg/emp_act() return +/obj/item/weapon/gun/energy/laser/scatter + name = "scatter laser gun" + desc = "A laser gun equipped with a refraction kit that spreads bolts." + ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser) + +///Laser Cannon /obj/item/weapon/gun/energy/lasercannon name = "accelerator laser cannon" @@ -64,13 +68,18 @@ obj/item/weapon/gun/energy/laser/retro force = 10 flags = CONDUCT slot_flags = SLOT_BACK - fire_sound = 'sound/weapons/lasercannonfire.ogg' origin_tech = "combat=4;materials=3;powerstorage=3" - projectile_type = "/obj/item/projectile/beam/laser/accelerator" + ammo_type = list(/obj/item/ammo_casing/energy/laser/accelerator) + ammo_x_offset = 3 /obj/item/weapon/gun/energy/lasercannon/isHandgun() return 0 +/obj/item/ammo_casing/energy/laser/accelerator + projectile_type = /obj/item/projectile/beam/laser/accelerator + select_name = "accelerator" + fire_sound = 'sound/weapons/lasercannonfire.ogg' + /obj/item/projectile/beam/laser/accelerator name = "accelerator laser" icon_state = "heavylaser" @@ -87,36 +96,29 @@ obj/item/weapon/gun/energy/laser/retro use_external_power = 1 recharge_time = 10 +/obj/item/weapon/gun/energy/lasercannon/cyborg -/obj/item/weapon/gun/energy/lasercannon/cyborg/process_chambered() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(250) - in_chamber = new/obj/item/projectile/beam(src) - return 1 - return 0 +/obj/item/weapon/gun/energy/lasercannon/cyborg/newshot() + ..() + robocharge() + +/obj/item/weapon/gun/energy/lasercannon/cyborg/emp_act() + return /obj/item/weapon/gun/energy/xray name = "xray laser gun" desc = "A high-power laser gun capable of expelling concentrated xray blasts." icon_state = "xray" - fire_sound = 'sound/weapons/laser3.ogg' origin_tech = "combat=5;materials=3;magnets=2;syndicate=2" - projectile_type = "/obj/item/projectile/beam/xray" - charge_cost = 500 + ammo_type = list(/obj/item/ammo_casing/energy/xray) /obj/item/weapon/gun/energy/immolator name = "Immolator laser gun" desc = "A modified laser gun, shooting highly concetrated beams with higher intensity that ignites the target, for the cost of draining more power per shot" icon_state = "immolator" item_state = "laser" - fire_sound = 'sound/weapons/laser3.ogg' - projectile_type = "/obj/item/projectile/beam/immolator" + ammo_type = list(/obj/item/ammo_casing/energy/immolator) origin_tech = "combat=4;materials=4;magnets=3;plasmatech=2" - charge_cost = 1250 ////////Laser Tag//////////////////// @@ -124,34 +126,22 @@ obj/item/weapon/gun/energy/laser/retro name = "laser tag gun" icon_state = "bluetag" desc = "Standard issue weapon of the Imperial Guard" - projectile_type = "/obj/item/projectile/lasertag/blue" + ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag) origin_tech = "combat=1;magnets=2" clumsy_check = 0 needs_permit = 0 - - self_recharge = 1 - -/obj/item/weapon/gun/energy/laser/bluetag/special_check(var/mob/living/carbon/human/M) - if(ishuman(M)) - if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag)) - return 1 - to_chat(M, "\red You need to be wearing your laser tag vest!") - return 0 + pin = /obj/item/device/firing_pin/tag/blue + ammo_x_offset = 2 + selfcharge = 1 /obj/item/weapon/gun/energy/laser/redtag name = "laser tag gun" icon_state = "redtag" desc = "Standard issue weapon of the Imperial Guard" - projectile_type = "/obj/item/projectile/lasertag/red" + ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag) origin_tech = "combat=1;magnets=2" clumsy_check = 0 needs_permit = 0 - - self_recharge = 1 - -/obj/item/weapon/gun/energy/laser/redtag/special_check(var/mob/living/carbon/human/M) - if(ishuman(M)) - if(istype(M.wear_suit, /obj/item/clothing/suit/redtag)) - return 1 - to_chat(M, "\red You need to be wearing your laser tag vest!") - return 0 \ No newline at end of file + pin = /obj/item/device/firing_pin/tag/red + ammo_x_offset = 2 + selfcharge = 1 diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 5bc164c5d76..b53563c81a7 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -3,169 +3,133 @@ desc = "A basic energy-based gun with two settings: kill and disable." icon_state = "energystun100" item_state = null //so the human update icon uses the icon_state instead. - fire_sound = 'sound/weapons/Taser2.ogg' - charge_cost = 500 - projectile_type = "/obj/item/projectile/beam/disabler" + ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) origin_tech = "combat=3;magnets=2" - modifystate = "energystun" + modifystate = 2 can_flashlight = 1 - - var/mode = 0 //0 = disable, 1 = kill - - - attack_self(mob/living/user as mob) - switch(mode) - if(0) - mode = 1 - charge_cost = 1000 - fire_sound = 'sound/weapons/Laser.ogg' - to_chat(user, "\red [src.name] is now set to kill.") - projectile_type = "/obj/item/projectile/beam" - modifystate = "energykill" - if(1) - mode = 0 - charge_cost = 500 - fire_sound = 'sound/weapons/Taser2.ogg' - to_chat(user, "\red [src.name] is now set to disable.") - projectile_type = "/obj/item/projectile/beam/disabler" - modifystate = "energystun" - update_icon() - if(user.l_hand == src) - user.update_inv_l_hand() - else - user.update_inv_r_hand() + ammo_x_offset = 3 + flight_x_offset = 15 + flight_y_offset = 10 /obj/item/weapon/gun/energy/gun/cyborg desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?" -/obj/item/weapon/gun/energy/gun/cyborg/process() - return 1 - -/obj/item/weapon/gun/energy/gun/cyborg/process_chambered() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell && R.cell.charge >= 83) - R.cell.use(83) - in_chamber = new projectile_type(src) - return 1 - return 0 +/obj/item/weapon/gun/energy/gun/cyborg/newshot() + ..() + robocharge() +/obj/item/weapon/gun/energy/gun/cyborg/emp_act() + return /obj/item/weapon/gun/energy/gun/mounted name = "mounted energy gun" self_recharge = 1 use_external_power = 1 -/obj/item/weapon/gun/energy/gun/nuclear - name = "Advanced Energy Gun" - desc = "An energy gun with an experimental miniaturized reactor." - icon_state = "nucgun" - origin_tech = "combat=3;materials=5;powerstorage=3" - var/lightfail = 0 - can_flashlight = 0 - can_charge = 0 +/obj/item/weapon/gun/energy/gun/mini + name = "miniature energy gun" + desc = "A small, pistol-sized energy gun with a built-in flashlight. It has two settings: stun and kill." + icon_state = "mini" + item_state = "gun" + w_class = 2 + ammo_x_offset = 2 + charge_sections = 3 + can_flashlight = 0 // Can't attach or detach the flashlight, and override it's icon update - New() - ..() - processing_objects.Add(src) +/obj/item/weapon/gun/energy/gun/mini/New() + cell.maxcharge = 6000 + cell.charge = 6000 + F = new /obj/item/device/flashlight/seclite(src) + ..() +/obj/item/weapon/gun/energy/gun/mini/update_icon() + ..() + if(F && F.on) + overlays += "mini-light" - Destroy() - processing_objects.Remove(src) - return ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - if((power_supply.charge / power_supply.maxcharge) != 1) - if(!failcheck()) return 0 - power_supply.give(1000) - update_icon() - return 1 - - - proc - failcheck() - lightfail = 0 - if (prob(src.reliability)) return 1 //No failure - if (prob(src.reliability)) - for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it - if (src in M.contents) - to_chat(M, "\red Your gun feels pleasantly warm for a moment.") - else - to_chat(M, "\red You feel a warm sensation.") - M.apply_effect(rand(3,120), IRRADIATE) - lightfail = 1 - else - for (var/mob/living/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES - if (src in M.contents) - to_chat(M, "\red Your gun's reactor overloads!") - to_chat(M, "\red You feel a wave of heat wash over you.") - M.apply_effect(300, IRRADIATE) - crit_fail = 1 //break the gun so it stops recharging - processing_objects.Remove(src) - update_icon() - return 0 - - - update_charge() - if (crit_fail) - overlays += "nucgun-whee" - return - var/ratio = power_supply.charge / power_supply.maxcharge - ratio = round(ratio, 0.25) * 100 - overlays += "nucgun-[ratio]" - - - update_reactor() - if(crit_fail) - overlays += "nucgun-crit" - return - if(lightfail) - overlays += "nucgun-medium" - else if ((power_supply.charge/power_supply.maxcharge) <= 0.5) - overlays += "nucgun-light" - else - overlays += "nucgun-clean" - - - update_mode() - if (mode == 0) - overlays += "nucgun-stun" - else if (mode == 1) - overlays += "nucgun-kill" - - emp_act(severity) - ..() - reliability = max(reliability - round(15/severity), 0) //Do not allow it to go negative! - - - update_icon() - overlays.Cut() - update_charge() - update_reactor() - update_mode() +/obj/item/weapon/gun/energy/gun/hos + name = "\improper X-01 MultiPhase Energy Gun" + desc = "This is a expensive, modern recreation of a antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time." + icon_state = "hoslaser" + force = 10 + ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/laser/hos, /obj/item/ammo_casing/energy/disabler) + ammo_x_offset = 4 +/obj/item/weapon/gun/energy/blueshield + name = "advanced stun revolver" + desc = "An advanced stun revolver with the capacity to shoot both electrodes and lasers." + icon_state = "bsgun_stun" + force = 7 + ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/laser/hos) + ammo_x_offset = 4 /obj/item/weapon/gun/energy/gun/turret name = "hybrid turret gun" desc = "A heavy hybrid energy cannon with two settings: Stun and kill." icon_state = "turretlaser" + item_state = "turretlaser" slot_flags = null w_class = 5 - heavy_weapon = 1 + ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) + weapon_weight = WEAPON_MEDIUM can_flashlight = 0 - projectile_type = /obj/item/projectile/energy/electrode - charge_cost = 1000 - fire_delay = 15 + trigger_guard = TRIGGER_GUARD_NONE + ammo_x_offset = 2 -/obj/item/weapon/gun/energy/gun/turret/update_icon() - icon_state = initial(icon_state) +/obj/item/weapon/gun/energy/gun/nuclear + name = "advanced energy gun" + desc = "An energy gun with an experimental miniaturized nuclear reactor that automatically charges the internal power cell." + icon_state = "nucgun" + item_state = "nucgun" + origin_tech = "combat=3;materials=5;powerstorage=3" + var/fail_tick = 0 + charge_delay = 5 + pin = null + can_charge = 0 + ammo_x_offset = 1 + ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/disabler) + selfcharge = 1 + +/obj/item/weapon/gun/energy/gun/nuclear/process() + if(fail_tick > 0) + fail_tick-- + ..() + +/obj/item/weapon/gun/energy/gun/nuclear/shoot_live_shot() + failcheck() + update_icon() + ..() + +/obj/item/weapon/gun/energy/gun/nuclear/proc/failcheck() + if(!prob(reliability) && istype(loc, /mob/living)) + var/mob/living/M = loc + switch(fail_tick) + if(0 to 200) + fail_tick += (2*(100-reliability)) + M.rad_act(40) + to_chat(M, "Your [name] feels warmer.") + if(201 to INFINITY) + SSobj.processing.Remove(src) + M.rad_act(80) + crit_fail = 1 + to_chat(M, "Your [name]'s reactor overloads!") + +/obj/item/weapon/gun/energy/gun/nuclear/emp_act(severity) + ..() + reliability = max(reliability - round(15/severity), 0) //Do not allow it to go negative! + +/obj/item/weapon/gun/energy/gun/nuclear/update_icon() + ..() + if(crit_fail) + overlays += "[icon_state]_fail_3" + else + switch(fail_tick) + if(0) + overlays += "[icon_state]_fail_0" + if(1 to 150) + overlays += "[icon_state]_fail_1" + if(151 to INFINITY) + overlays += "[icon_state]_fail_2" /obj/item/weapon/gun/energy/gun/turret/attack_self(mob/living/user as mob) switch(mode) @@ -189,4 +153,4 @@ if(user.l_hand == src) user.update_inv_l_hand() else - user.update_inv_r_hand() \ No newline at end of file + user.update_inv_r_hand() diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index bc7704d709a..b8ddc12a691 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -1,64 +1,26 @@ -/obj/item/weapon/gun/energy/pulse_rifle +/obj/item/weapon/gun/energy/pulse name = "pulse rifle" - desc = "A heavy-duty, pulse-based energy weapon, preferred by front-line combat personnel." + desc = "A heavy-duty, multifaceted energy rifle with three modes. Preferred by front-line combat personnel." icon_state = "pulse" - item_state = null //so the human update icon uses the icon_state instead. + item_state = null + w_class = 4 force = 10 - fire_sound = 'sound/weapons/pulse.ogg' - charge_cost = 200 - projectile_type = "/obj/item/projectile/beam/pulse" - cell_type = "/obj/item/weapon/stock_parts/cell/super" - var/mode = 2 + flags = CONDUCT slot_flags = SLOT_BACK - w_class = 4.0 + ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) + cell_type = "/obj/item/weapon/stock_parts/cell/pulse" - emp_act() - return +/obj/item/weapon/gun/energy/pulse/emp_act(severity) + return - attack_self(mob/living/user as mob) - switch(mode) - if(2) - mode = 0 - charge_cost = 50 - fire_sound = 'sound/weapons/Taser.ogg' - to_chat(user, "\red [src.name] is now set to stun.") - projectile_type = "/obj/item/projectile/energy/electrode" - if(0) - mode = 1 - charge_cost = 100 - fire_sound = 'sound/weapons/Laser.ogg' - to_chat(user, "\red [src.name] is now set to kill.") - projectile_type = "/obj/item/projectile/beam" - if(1) - mode = 2 - charge_cost = 200 - fire_sound = 'sound/weapons/pulse.ogg' - to_chat(user, "\red [src.name] is now set to DESTROY.") - projectile_type = "/obj/item/projectile/beam/pulse" - return - - isHandgun() - return 0 - -/obj/item/weapon/gun/energy/pulse_rifle/cyborg/process_chambered() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(charge_cost) - in_chamber = new projectile_type(src) - return 1 +/obj/item/weapon/gun/energy/pulse/isHandgun() return 0 +/obj/item/weapon/gun/energy/pulse_rifle/cyborg -/obj/item/weapon/gun/energy/pulse_rifle/destroyer - name = "pulse destroyer" - desc = "A heavy-duty, pulse-based energy weapon." - cell_type = "/obj/item/weapon/stock_parts/cell/infinite" - - attack_self(mob/living/user as mob) - to_chat(user, "\red [src.name] has three settings, and they are all DESTROY.") +/obj/item/weapon/gun/energy/pulse_rifle/cyborg/newshot() + ..() + robocharge() /obj/item/weapon/gun/energy/pulse_rifle/carbine name = "pulse carbine" @@ -69,7 +31,8 @@ item_state = "pulse" cell_type = "/obj/item/weapon/stock_parts/cell/pulse/carbine" can_flashlight = 1 - + flight_x_offset = 18 + flight_y_offset = 12 /obj/item/weapon/gun/energy/pulse_rifle/pistol name = "pulse pistol" @@ -79,15 +42,26 @@ icon_state = "pulse_pistol" item_state = "gun" cell_type = "/obj/item/weapon/stock_parts/cell/pulse/pistol" + can_charge = 0 /obj/item/weapon/gun/energy/pulse_rifle/pistol/isHandgun() return 1 +/obj/item/weapon/gun/energy/pulse_rifle/destroyer + name = "pulse destroyer" + desc = "A heavy-duty, pulse-based energy weapon." + cell_type = "/obj/item/weapon/stock_parts/cell/infinite" + ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse) + +/obj/item/weapon/gun/energy/pulse/destroyer/attack_self(mob/living/user) + to_chat(user, "[src.name] has three settings, and they are all DESTROY.") + /obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911 name = "\improper M1911-P" desc = "A compact pulse core in a classic handgun frame for Nanotrasen officers. It's not the size of the gun, it's the size of the hole it puts through people." icon_state = "m1911-p" item_state = "gun" cell_type = "/obj/item/weapon/stock_parts/cell/infinite" - isHandgun() - return 1 \ No newline at end of file + +/obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911/isHandgun() + return 1 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index d6c0ad7beb3..e0328ac6058 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -8,7 +8,10 @@ w_class = 5.0 flags = CONDUCT slot_flags = SLOT_BACK - projectile_type = "/obj/item/projectile/ion" + ammo_type = list(/obj/item/ammo_casing/energy/ion) + ammo_x_offset = 3 + flight_x_offset = 17 + flight_y_offset = 9 /obj/item/weapon/gun/energy/ionrifle/emp_act(severity) return @@ -17,10 +20,12 @@ name = "ion carbine" desc = "The MK.II Prototype Ion Projector is a lightweight carbine version of the larger ion rifle, built to be ergonomic and efficient." icon_state = "ioncarbine" - item_state = "ioncarbine" origin_tech = "combat=4;magnets=4;materials=4" w_class = 3 slot_flags = SLOT_BELT + ammo_x_offset = 2 + flight_x_offset = 18 + flight_y_offset = 11 /obj/item/weapon/gun/energy/decloner name = "biological demolecularisor" @@ -28,8 +33,14 @@ icon_state = "decloner" fire_sound = 'sound/weapons/pulse3.ogg' origin_tech = "combat=5;materials=4;powerstorage=3" - projectile_type = "/obj/item/projectile/energy/declone" + ammo_type = list(/obj/item/ammo_casing/energy/declone) + ammo_x_offset = 1 +/obj/item/weapon/gun/energy/decloner/update_icon() + ..() + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + if(power_supply.charge > shot.e_cost) + overlays += "decloner_spin" /obj/item/weapon/gun/energy/floragun name = "floral somatoray" @@ -37,42 +48,11 @@ icon_state = "floramut100" item_state = "gun" fire_sound = 'sound/effects/stealthoff.ogg' - projectile_type = "/obj/item/projectile/energy/floramut" + ammo_type = list(/obj/item/ammo_casing/energy/flora/yield, /obj/item/ammo_casing/energy/flora/mut) origin_tech = "materials=2;biotech=3;powerstorage=3" - modifystate = "floramut" - var/mode = 0 //0 = mutate, 1 = yield boost - needs_permit = 0 - - self_recharge = 1 - -/obj/item/weapon/gun/energy/floragun/attack_self(mob/living/user as mob) - switch(mode) - if(0) - mode = 1 - charge_cost = 1000 - to_chat(user, "\red The [src.name] is now set to increase yield.") - projectile_type = "/obj/item/projectile/energy/florayield" - modifystate = "florayield" - if(1) - mode = 0 - charge_cost = 1000 - to_chat(user, "\red The [src.name] is now set to induce mutations.") - projectile_type = "/obj/item/projectile/energy/floramut" - modifystate = "floramut" - update_icon() - return - - -/obj/item/weapon/gun/energy/floragun/afterattack(obj/target, mob/user, flag) - - if(flag && istype(target,/obj/machinery/portable_atmospherics/hydroponics)) - var/obj/machinery/portable_atmospherics/hydroponics/tray = target - if(process_chambered()) - user.visible_message("\red \The [user] fires \the [src] into \the [tray]!") - Fire(target,user) - return - - ..() + modifystate = 1 + ammo_x_offset = 1 + selfcharge = 1 /obj/item/weapon/gun/energy/meteorgun name = "meteor gun" @@ -80,13 +60,10 @@ icon_state = "riotgun" item_state = "c20r" w_class = 4 - projectile_type = "/obj/item/projectile/meteor" + ammo_type = list(/obj/item/ammo_casing/energy/meteor) cell_type = "/obj/item/weapon/stock_parts/cell/potato" clumsy_check = 0 //Admin spawn only, might as well let clowns use it. - - self_recharge = 1 - recharge_time = 5 //Time it takes for shots to recharge (in ticks) - + selfcharge = 1 /obj/item/weapon/gun/energy/meteorgun/pen name = "meteor pen" @@ -98,119 +75,115 @@ righthand_file = 'icons/mob/inhands/items_righthand.dmi' w_class = 1 - /obj/item/weapon/gun/energy/mindflayer name = "\improper Mind Flayer" desc = "A prototype weapon recovered from the ruins of Research-Station Epsilon." icon_state = "xray" - projectile_type = "/obj/item/projectile/beam/mindflayer" - fire_sound = 'sound/weapons/Laser.ogg' - -obj/item/weapon/gun/energy/staff/focus - name = "mental focus" - desc = "An artefact that channels the will of the user into destructive bolts of force. If you aren't careful with it, you might poke someone's brain out." - icon = 'icons/obj/wizard.dmi' - icon_state = "focus" - item_state = "focus" - projectile_type = "/obj/item/projectile/forcebolt" - /* - attack_self(mob/living/user as mob) - if(projectile_type == "/obj/item/projectile/forcebolt") - charge_cost = 200 - to_chat(user, "\red The [src.name] will now strike a small area.") - projectile_type = "/obj/item/projectile/forcebolt/strong" - else - charge_cost = 100 - to_chat(user, "\red The [src.name] will now strike only a single person.") - projectile_type = "/obj/item/projectile/forcebolt" - */ - -/obj/item/weapon/gun/energy/clown - name = "HONK Rifle" - desc = "Clown Planet's finest." - icon_state = "energy" - projectile_type = "/obj/item/projectile/clown" - fire_sound = 'sound/weapons/Gunshot_smg.ogg' - clumsy_check = 0 - - - -/obj/item/weapon/gun/energy/toxgun - name = "plasma pistol" - desc = "A specialized firearm designed to fire lethal bolts of toxins." - icon_state = "toxgun" - fire_sound = 'sound/effects/stealthoff.ogg' - w_class = 3.0 - origin_tech = "combat=4;plasmatech=3" - projectile_type = "/obj/item/projectile/energy/plasma" - -/obj/item/weapon/gun/energy/sniperrifle - name = "L.W.A.P. Sniper Rifle" - desc = "A rifle constructed of lightweight materials, fitted with a SMART aiming-system scope." - icon = 'icons/obj/gun.dmi' - icon_state = "esniper" - fire_sound = 'sound/weapons/marauder.ogg' - origin_tech = "combat=6;materials=5;powerstorage=4" - projectile_type = "/obj/item/projectile/beam/sniper" - slot_flags = SLOT_BACK - charge_cost = 2500 - fire_delay = 50 - w_class = 4.0 - zoomable = TRUE - zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you. - + item_state = null + ammo_type = list(/obj/item/ammo_casing/energy/mindflayer) + ammo_x_offset = 2 /obj/item/weapon/gun/energy/kinetic_accelerator name = "proto-kinetic accelerator" desc = "According to Nanotrasen accounting, this is mining equipment. It's been modified for extreme power output to crush rocks, but often serves as a miner's first defense against hostile alien life; it's not very powerful unless used in a low pressure environment." icon_state = "kineticgun" item_state = "kineticgun" - projectile_type = "/obj/item/projectile/kinetic" - fire_sound = 'sound/weapons/Kenetic_accel.ogg' - charge_cost = 5000 - cell_type = "/obj/item/weapon/stock_parts/cell/emproof" - needs_permit = 0 // Aparently these are safe to carry? I'm sure Golliaths would disagree. - fire_delay = 16 //Because guncode is bad and you can bug the reload for rapid fire otherwise. - var/recently_fired = 0 + ammo_type = list(/obj/item/ammo_casing/energy/kinetic) + cell_type = /obj/item/weapon/stock_parts/cell/emproof + // Apparently these are safe to carry? I'm sure goliaths would disagree. + var/overheat_time = 16 + unique_rename = 1 + weapon_weight = WEAPON_LIGHT + origin_tech = "combat=2;powerstorage=1" + var/holds_charge = FALSE + var/unique_frequency = FALSE // modified by KA modkits + + var/overheat = FALSE /obj/item/weapon/gun/energy/kinetic_accelerator/super name = "super-kinetic accelerator" desc = "An upgraded, superior version of the proto-kinetic accelerator." icon_state = "kineticgun_u" - projectile_type = "/obj/item/projectile/kinetic/super" - fire_delay = 15 + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/super) + overheat_time = 15 origin_tech = "combat=3;powerstorage=2" /obj/item/weapon/gun/energy/kinetic_accelerator/hyper name = "hyper-kinetic accelerator" desc = "An upgraded, even more superior version of the proto-kinetic accelerator." icon_state = "kineticgun_h" - projectile_type = "/obj/item/projectile/kinetic/hyper" - fire_delay = 13 + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/hyper) + overheat_time = 14 origin_tech = "combat=4;powerstorage=3" /obj/item/weapon/gun/energy/kinetic_accelerator/cyborg - flags = NODROP + holds_charge = TRUE + unique_frequency = TRUE -/obj/item/weapon/gun/energy/kinetic_accelerator/Fire() - if(!recently_fired) - recently_fired = 1 - spawn(fire_delay) - reload(usr) - ..() +/obj/item/weapon/gun/energy/kinetic_accelerator/New() + . = ..() + if(!holds_charge) + empty() + +/obj/item/weapon/gun/energy/kinetic_accelerator/shoot_live_shot() + . = ..() + attempt_reload() + +/obj/item/weapon/gun/energy/kinetic_accelerator/equipped(mob/user) + . = ..() + if(!can_shoot()) + attempt_reload() + +/obj/item/weapon/gun/energy/kinetic_accelerator/dropped() + . = ..() + if(!holds_charge) + // Put it on a delay because moving item from slot to hand + // calls dropped(). + spawn(1) + if(!ismob(loc)) + empty() + +/obj/item/weapon/gun/energy/kinetic_accelerator/proc/empty() + power_supply.use(5000) + update_icon() + +/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload() + if(overheat) + return + overheat = TRUE + + var/carried = 0 + if(!unique_frequency) + for(var/obj/item/weapon/gun/energy/kinetic_accelerator/K in \ + loc.GetAllContents()) + + carried++ + + carried = max(carried, 1) + else + carried = 1 + + spawn(overheat_time * carried) + reload() + overheat = FALSE /obj/item/weapon/gun/energy/kinetic_accelerator/emp_act(severity) return -/obj/item/weapon/gun/energy/kinetic_accelerator/proc/reload(mob/living/user) +/obj/item/weapon/gun/energy/kinetic_accelerator/proc/reload() power_supply.give(5000) - if(!silenced) + if(!suppressed) playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) - else if(user) - to_chat(usr, "You silently charge [src].") - recently_fired = 0 + else + to_chat(loc, "[src] silently charges up.") update_icon() +/obj/item/weapon/gun/energy/kinetic_accelerator/update_icon() + if(!can_shoot()) + icon_state = "[initial(icon_state)]_empty" + else + icon_state = initial(icon_state) + /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow name = "mini energy crossbow" desc = "A weapon favored by syndicate stealth specialists." @@ -219,10 +192,13 @@ obj/item/weapon/gun/energy/staff/focus w_class = 2 materials = list(MAT_METAL=2000) origin_tech = "combat=2;magnets=2;syndicate=5" - silenced = 1 - projectile_type = "/obj/item/projectile/energy/bolt" - fire_sound = 'sound/weapons/Genhit.ogg' - fire_delay = 20 + suppressed = 1 + ammo_type = list(/obj/item/ammo_casing/energy/bolt) + weapon_weight = WEAPON_LIGHT + unique_rename = 0 + overheat_time = 20 + holds_charge = TRUE + unique_frequency = TRUE /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large name = "energy crossbow" @@ -231,8 +207,8 @@ obj/item/weapon/gun/energy/staff/focus w_class = 3 materials = list(MAT_METAL=4000) origin_tech = "combat=2;magnets=2;syndicate=3" //can be further researched for more syndie tech - silenced = 0 - projectile_type = "/obj/item/projectile/energy/bolt/large" + suppressed = 0 + ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large/cyborg desc = "One and done!" @@ -240,27 +216,35 @@ obj/item/weapon/gun/energy/staff/focus origin_tech = null materials = list() +/obj/item/weapon/gun/energy/kinetic_accelerator/suicide_act(mob/user) + if(!suppressed) + playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) + user.visible_message("[user] cocks the [src.name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!") + shoot_live_shot() + return (OXYLOSS) + /obj/item/weapon/gun/energy/plasmacutter name = "plasma cutter" desc = "A mining tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off of xenos! Or, you know, mine stuff." icon_state = "plasmacutter" item_state = "plasmacutter" - modifystate = "plasmacutter" + modifystate = -1 origin_tech = "combat=1;materials=3;magnets=2;plasmatech=2;engineering=1" - projectile_type = /obj/item/projectile/plasma + ammo_type = list(/obj/item/ammo_casing/energy/plasma) fire_sound = 'sound/weapons/laser.ogg' flags = CONDUCT | OPENCONTAINER attack_verb = list("attacked", "slashed", "cut", "sliced") - charge_cost = 250 - fire_delay = 15 + force = 12 + sharpness = IS_SHARP can_charge = 0 + heat = 3800 /obj/item/weapon/gun/energy/plasmacutter/examine(mob/user) - ..(user) + ..() if(power_supply) to_chat(user, "[src] is [round(power_supply.percent())]% charged.") -/obj/item/weapon/gun/energy/plasmacutter/attackby(var/obj/item/A, var/mob/user) +/obj/item/weapon/gun/energy/plasmacutter/attackby(obj/item/A, mob/user) if(istype(A, /obj/item/stack/sheet/mineral/plasma)) var/obj/item/stack/sheet/S = A S.use(1) @@ -273,92 +257,34 @@ obj/item/weapon/gun/energy/staff/focus else ..() +/obj/item/weapon/gun/energy/plasmacutter/update_icon() + return + /obj/item/weapon/gun/energy/plasmacutter/adv name = "advanced plasma cutter" icon_state = "adv_plasmacutter" modifystate = "adv_plasmacutter" origin_tech = "combat=3;materials=4;magnets=3;plasmatech=3;engineering=2" - projectile_type = /obj/item/projectile/plasma/adv - fire_delay = 10 - charge_cost = 100 - -/obj/item/weapon/gun/energy/disabler - name = "disabler" - desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse." - icon_state = "disabler" - item_state = null - projectile_type = /obj/item/projectile/beam/disabler - fire_sound = 'sound/weapons/taser2.ogg' - cell_type = "/obj/item/weapon/stock_parts/cell" - charge_cost = 500 - -/obj/item/weapon/gun/energy/disabler/cyborg - name = "cyborg disabler" - desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating." - - self_recharge = 1 - use_external_power = 1 - recharge_time = 2.5 - - -/* 3d printer 'pseudo guns' for borgs */ - -/obj/item/weapon/gun/energy/printer - name = "cyborg lmg" - desc = "A machinegun that fires 3d-printed flachettes slowly regenerated using a cyborg's internal power source." - icon_state = "l6closed0" - icon = 'icons/obj/gun.dmi' - fire_sound = 'sound/weapons/Gunshot_smg.ogg' - cell_type = "/obj/item/weapon/stock_parts/cell/secborg" - projectile_type = "/obj/item/projectile/bullet/midbullet3" - charge_cost = 200 //Yeah, let's NOT give them a 300 round clip that recharges, 20 is more reasonable and will actually hurt the borg's battery for overuse. - - self_recharge = 1 - use_external_power = 1 - recharge_time = 5 - -/obj/item/weapon/gun/energy/printer/update_icon() - return + ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv) /obj/item/weapon/gun/energy/wormhole_projector name = "bluespace wormhole projector" desc = "A projector that emits high density quantum-coupled bluespace beams." - projectile_type = "/obj/item/projectile/beam/wormhole" - charge_cost = 0 - fire_sound = "sound/weapons/pulse3.ogg" + ammo_type = list(/obj/item/ammo_casing/energy/wormhole, /obj/item/ammo_casing/energy/wormhole/orange) item_state = null icon_state = "wormhole_projector100" - modifystate = "wormhole_projector" var/obj/effect/portal/blue var/obj/effect/portal/orange - var/mode = 0 //0 = blue 1 = orange +/obj/item/weapon/gun/energy/wormhole_projector/update_icon() + icon_state = "[initial(icon_state)][select]" + item_state = icon_state + return -/obj/item/weapon/gun/energy/wormhole_projector/attack_self(mob/living/user as mob) - switch_modes() - -/obj/item/weapon/gun/energy/wormhole_projector/proc/switch_modes(mob/living/user as mob) - switch(mode) - if(0) - mode = 1 - to_chat(user, "[name] is now set to orange.") - projectile_type = "/obj/item/projectile/beam/wormhole/orange" - modifystate = "wormhole_projector_orange" - if(1) - mode = 0 - to_chat(user, "[name] is now set to blue.") - projectile_type = "/obj/item/projectile/beam/wormhole" - modifystate = "wormhole_projector" - update_icon() - if(user.hand) - user.update_inv_l_hand() - else - user.update_inv_r_hand() - -/obj/item/weapon/gun/energy/wormhole_projector/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) +/obj/item/weapon/gun/energy/wormhole_projector/process_chamber() ..() - switch_modes(user) + select_fire() /obj/item/weapon/gun/energy/wormhole_projector/proc/portal_destroyed(obj/effect/portal/P) if(P.icon_state == "portal") @@ -373,7 +299,6 @@ obj/item/weapon/gun/energy/staff/focus /obj/item/weapon/gun/energy/wormhole_projector/proc/create_portal(obj/item/projectile/beam/wormhole/W) var/obj/effect/portal/P = new /obj/effect/portal(get_turf(W), null, src) P.precision = 0 - P.failchance = 0 if(W.name == "bluespace beam") qdel(blue) blue = P @@ -383,4 +308,259 @@ obj/item/weapon/gun/energy/staff/focus orange = P if(orange && blue) blue.target = get_turf(orange) - orange.target = get_turf(blue) \ No newline at end of file + orange.target = get_turf(blue) + +/* 3d printer 'pseudo guns' for borgs */ + +/obj/item/weapon/gun/energy/printer + name = "cyborg lmg" + desc = "A machinegun that fires 3d-printed flachettes slowly regenerated using a cyborg's internal power source." + icon_state = "l6closed0" + icon = 'icons/obj/gun.dmi' + cell_type = "/obj/item/weapon/stock_parts/cell/secborg" + ammo_type = list(/obj/item/ammo_casing/energy/c3dbullet) + can_charge = 0 + +/obj/item/weapon/gun/energy/printer/update_icon() + return + +/obj/item/weapon/gun/energy/printer/emp_act() + return + +/obj/item/weapon/gun/energy/printer/newshot() + ..() + robocharge() + +/obj/item/weapon/gun/energy/laser/instakill + name = "instakill rifle" + icon_state = "instagib" + item_state = "instagib" + desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit." + ammo_type = list(/obj/item/ammo_casing/energy/instakill) + force = 60 + origin_tech = null + +/obj/item/weapon/gun/energy/laser/instakill/emp_act() //implying you could stop the instagib + return + +/obj/item/weapon/gun/energy/laser/instakill/red + desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit. This one has a red design." + icon_state = "instagibred" + item_state = "instagibred" + ammo_type = list(/obj/item/ammo_casing/energy/instakill/red) + +/obj/item/weapon/gun/energy/laser/instakill/blue + desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit. This one has a blue design." + icon_state = "instagibblue" + item_state = "instagibblue" + ammo_type = list(/obj/item/ammo_casing/energy/instakill/blue) + +obj/item/weapon/gun/energy/staff/focus + name = "mental focus" + desc = "An artefact that channels the will of the user into destructive bolts of force. If you aren't careful with it, you might poke someone's brain out." + icon = 'icons/obj/wizard.dmi' + icon_state = "focus" + item_state = "focus" + ammo_type = list(/obj/item/ammo_casing/forcebolt) + +/obj/item/weapon/gun/energy/clown + name = "HONK Rifle" + desc = "Clown Planet's finest." + icon_state = "energy" + ammo_type = list(/obj/item/ammo_casing/energy/clown) + clumsy_check = 0 + +/obj/item/weapon/gun/energy/toxgun + name = "plasma pistol" + desc = "A specialized firearm designed to fire lethal bolts of toxins." + icon_state = "toxgun" + fire_sound = 'sound/effects/stealthoff.ogg' + w_class = 3 + origin_tech = "combat=4;plasmatech=3" + ammo_type = list(/obj/item/ammo_casing/energy/toxplasma) + +/obj/item/weapon/gun/energy/sniperrifle + name = "L.W.A.P. Sniper Rifle" + desc = "A rifle constructed of lightweight materials, fitted with a SMART aiming-system scope." + icon = 'icons/obj/gun.dmi' + icon_state = "esniper" + fire_sound = 'sound/weapons/marauder.ogg' + origin_tech = "combat=6;materials=5;powerstorage=4" + ammo_type = list(/obj/item/ammo_casing/energy/sniper) + slot_flags = SLOT_BACK + w_class = 4 + zoomable = TRUE + zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you. + +/obj/item/weapon/gun/energy/temperature + name = "temperature gun" + icon = 'icons/obj/gun_temperature.dmi' + icon_state = "tempgun_4" + item_state = "tempgun_4" + slot_flags = SLOT_BACK + w_class = 4 + fire_sound = 'sound/weapons/pulse3.ogg' + desc = "A gun that changes the body temperature of its targets." + var/temperature = 300 + var/target_temperature = 300 + var/e_cost = 1000 + origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2" + + ammo_type = /obj/item/ammo_casing/energy/temp + cell_type = "/obj/item/weapon/stock_parts/cell" + + var/powercost = "" + var/powercostcolor = "" + + var/emagged = 0 //ups the temperature cap from 500 to 1000, targets hit by beams over 500 Kelvin will burst into flames + var/dat = "" + +/obj/item/weapon/gun/energy/temperature/New() + ..() + update_icon() + processing_objects.Add(src) + + +/obj/item/weapon/gun/energy/temperature/Destroy() + processing_objects.Remove(src) + return ..() + +/obj/item/weapon/gun/energy/temperature/newshot() + ..() + chambered.temperature = temperature + chambered.e_cost = e_cost + +/obj/item/weapon/gun/energy/temperature/attack_self(mob/living/user as mob) + user.set_machine(src) + update_dat() + user << browse("Temperature Gun Configuration


[dat]", "window=tempgun;size=510x120") + onclose(user, "tempgun") + +/obj/item/weapon/gun/energy/temperature/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/card/emag) && !emagged) + emagged = 1 + to_chat(user, "You double the gun's temperature cap! Targets hit by searing beams will burst into flames!") + desc = "A gun that changes the body temperature of its targets. Its temperature cap has been hacked." + +/obj/item/weapon/gun/energy/temperature/Topic(href, href_list) + if (..()) + return + usr.set_machine(src) + add_fingerprint(usr) + + if(href_list["temp"]) + var/amount = text2num(href_list["temp"]) + if(amount > 0) + target_temperature = min((500 + 500*emagged), target_temperature+amount) + else + target_temperature = max(0, target_temperature+amount) + if (istype(loc, /mob)) + attack_self(loc) + add_fingerprint(usr) + return + + +/obj/item/weapon/gun/energy/temperature/process() + switch(temperature) + if(0 to 100) + charge_cost = 3000 + powercost = "High" + if(100 to 250) + charge_cost = 2000 + powercost = "Medium" + if(251 to 300) + charge_cost = 1000 + powercost = "Low" + if(301 to 400) + charge_cost = 2000 + powercost = "Medium" + if(401 to 1000) + charge_cost = 3000 + powercost = "High" + switch(powercost) + if("High") powercostcolor = "orange" + if("Medium") powercostcolor = "green" + else powercostcolor = "blue" + if(target_temperature != temperature) + var/difference = abs(target_temperature - temperature) + if(difference >= (10 + 40*emagged)) //so emagged temp guns adjust their temperature much more quickly + if(target_temperature < temperature) + temperature -= (10 + 40*emagged) + else + temperature += (10 + 40*emagged) + else + temperature = target_temperature + update_icon() + + if (istype(loc, /mob/living/carbon)) + var /mob/living/carbon/M = loc + if (src == M.machine) + update_dat() + M << browse("Temperature Gun Configuration
[dat]", "window=tempgun;size=510x102") + return + +/obj/item/weapon/gun/energy/temperature/proc/update_dat() + dat = "" + dat += "Current output temperature: " + if(temperature > 500) + dat += "[temperature] ([round(temperature-T0C)]°C)" + dat += " SEARING!" + else if(temperature > (T0C + 50)) + dat += "[temperature] ([round(temperature-T0C)]°C)" + else if(temperature > (T0C - 50)) + dat += "[temperature] ([round(temperature-T0C)]°C)" + else + dat += "[temperature] ([round(temperature-T0C)]°C)" + dat += "
" + dat += "Target output temperature: " //might be string idiocy, but at least it's easy to read + dat += "
- " + dat += "- " + dat += "- " + dat += "[target_temperature] " + dat += "+ " + dat += "+ " + dat += "+" + dat += "
" + dat += "Power cost: " + dat += "[powercost]" + +/obj/item/weapon/gun/energy/temperature/proc/update_temperature() + switch(temperature) + if(501 to INFINITY) + item_state = "tempgun_8" + if(400 to 500) + item_state = "tempgun_7" + if(360 to 400) + item_state = "tempgun_6" + if(335 to 360) + item_state = "tempgun_5" + if(295 to 335) + item_state = "tempgun_4" + if(260 to 295) + item_state = "tempgun_3" + if(200 to 260) + item_state = "tempgun_2" + if(120 to 260) + item_state = "tempgun_1" + if(-INFINITY to 120) + item_state = "tempgun_0" + icon_state = item_state + +/obj/item/weapon/gun/energy/temperature/update_icon() + overlays = 0 + update_temperature() + update_charge() + +/obj/item/weapon/gun/energy/temperature/proc/update_charge() + var/charge = power_supply.charge + switch(charge) + if(9000 to INFINITY) overlays += "900" + if(8000 to 9000) overlays += "800" + if(7000 to 8000) overlays += "700" + if(6000 to 7000) overlays += "600" + if(5000 to 6000) overlays += "500" + if(4000 to 5000) overlays += "400" + if(3000 to 4000) overlays += "300" + if(2000 to 3000) overlays += "200" + if(1000 to 2002) overlays += "100" + if(-INFINITY to 1000) overlays += "0" diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 37d22ba5ff7..5e3f5128d6f 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -1,13 +1,11 @@ - /obj/item/weapon/gun/energy/taser name = "taser gun" desc = "A small, low capacity gun used for non-lethal takedowns." icon_state = "taser" item_state = null //so the human update icon uses the icon_state instead. - fire_sound = 'sound/weapons/Taser.ogg' - projectile_type = "/obj/item/projectile/energy/electrode" + ammo_type = list(/obj/item/ammo_casing/energy/electrode) + ammo_x_offset = 3 cell_type = "/obj/item/weapon/stock_parts/cell/crap" - fire_delay = 15 /obj/item/weapon/gun/energy/taser/mounted name = "mounted taser gun" @@ -18,67 +16,52 @@ name = "taser gun" desc = "A small, low capacity gun used for non-lethal takedowns." icon_state = "taser" - fire_sound = 'sound/weapons/Taser.ogg' - projectile_type = "/obj/item/projectile/energy/electrode" cell_type = "/obj/item/weapon/stock_parts/cell/secborg" - self_recharge = 1 - recharge_time = 10 //Time it takes for shots to recharge (in ticks) +/obj/item/weapon/gun/energy/disabler/cyborg/newshot() + ..() + robocharge() /obj/item/weapon/gun/energy/shock_revolver name = "tesla revolver" desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers." icon_state = "stunrevolver" item_state = "gun" - fire_sound = 'sound/weapons/gunshot.ogg' - projectile_type = "/obj/item/projectile/energy/shock_revolver" - charge_cost = 2000 + ammo_type = list(/obj/item/ammo_casing/energy/shock_revolver) can_flashlight = 0 + shaded_charge = 1 -/obj/item/projectile/energy/shock_revolver - name = "shock bolt" - icon_state = "purple_laser" - var/chain +/obj/item/weapon/gun/energy/gun/advtaser + name = "hybrid taser" + desc = "A dual-mode taser designed to fire both short-range high-power electrodes and long-range disabler beams." + icon_state = "advtaser" + ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler) + origin_tech = null + ammo_x_offset = 2 -/obj/item/projectile/energy/shock_revolver/OnFired() - spawn(1) - chain = Beam(firer, icon_state="purple_lightning", icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30) +/obj/item/weapon/gun/energy/gun/advtaser/cyborg + name = "cyborg taser" + desc = "An integrated hybrid taser that draws directly from a cyborg's power cell. The weapon contains a limiter to prevent the cyborg's power cell from overheating." + can_flashlight = 0 + can_charge = 0 -/obj/item/projectile/energy/shock_revolver/on_hit(atom/target) - . = ..() - if(isliving(target)) - tesla_zap(src, 3, 10000) - qdel(chain) +/obj/item/weapon/gun/energy/gun/advtaser/cyborg/newshot() + ..() + robocharge() -/obj/item/weapon/gun/energy/crossbow - name = "mini energy-crossbow" - desc = "A weapon favored by many of the syndicates stealth specialists." - icon_state = "crossbow" - w_class = 2.0 - item_state = "crossbow" - materials = list(MAT_METAL=2000) - origin_tech = "combat=2;magnets=2;syndicate=5" - silenced = 1 - fire_sound = 'sound/weapons/Genhit.ogg' - projectile_type = "/obj/item/projectile/energy/bolt" - cell_type = "/obj/item/weapon/stock_parts/cell/crap" - - self_recharge = 1 - -/obj/item/weapon/gun/energy/crossbow/ninja - name = "energy dart thrower" - projectile_type = /obj/item/projectile/energy/dart - -/obj/item/weapon/gun/energy/crossbow/update_icon() - return -/obj/item/weapon/gun/energy/crossbow/largecrossbow - name = "Energy Crossbow" - desc = "A weapon favored by syndicate carp hunters." - icon_state = "crossbowlarge" - silenced = 0 - w_class = 3.0 - force = 10 - materials = list(MAT_METAL=4000) - projectile_type = "/obj/item/projectile/energy/bolt/large" +/obj/item/weapon/gun/energy/disabler + name = "disabler" + desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse." + icon_state = "disabler" + item_state = null + ammo_type = list(/obj/item/ammo_casing/energy/disabler) + ammo_x_offset = 3 +/obj/item/weapon/gun/energy/disabler/cyborg + name = "cyborg disabler" + desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating." + can_charge = 0 +/obj/item/weapon/gun/energy/disabler/cyborg/newshot() + ..() + robocharge() diff --git a/code/modules/projectiles/guns/energy/telegun.dm b/code/modules/projectiles/guns/energy/telegun.dm index 3819401e031..e145e2ccbcf 100644 --- a/code/modules/projectiles/guns/energy/telegun.dm +++ b/code/modules/projectiles/guns/energy/telegun.dm @@ -5,11 +5,9 @@ desc = "An extremely high-tech bluespace energy gun capable of teleporting targets to far off locations." icon_state = "telegun" item_state = "ionrifle" - fire_sound = 'sound/weapons/wave.ogg' origin_tech = "combat=6;materials=7;powerstorage=5;bluespace=5;syndicate=4" cell_type = "/obj/item/weapon/stock_parts/cell/crap" - projectile_type = "/obj/item/projectile/energy/teleport" - charge_cost = 1250 + ammo_type = list(/obj/item/ammo_casing/energy/teleport) var/teleport_target = null /obj/item/weapon/gun/energy/telegun/Destroy() @@ -36,4 +34,4 @@ L[tmpname] = R var/desc = input("Please select a location to lock in.", "Telegun Target Interface") in L - teleport_target = L[desc] \ No newline at end of file + teleport_target = L[desc] diff --git a/code/modules/projectiles/guns/energy/temperature.dm b/code/modules/projectiles/guns/energy/temperature.dm deleted file mode 100644 index 1e0eb5d08c2..00000000000 --- a/code/modules/projectiles/guns/energy/temperature.dm +++ /dev/null @@ -1,182 +0,0 @@ -/obj/item/weapon/gun/energy/temperature - name = "temperature gun" - icon = 'icons/obj/gun_temperature.dmi' - icon_state = "tempgun_4" - item_state = "tempgun_4" - slot_flags = SLOT_BACK - w_class = 4.0 - fire_sound = 'sound/weapons/pulse3.ogg' - desc = "A gun that changes the body temperature of its targets." - var/temperature = 300 - var/target_temperature = 300 - charge_cost = 90 - origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2" - - projectile_type = /obj/item/projectile/temp - cell_type = /obj/item/weapon/stock_parts/cell/temperaturegun - - var/powercost = "" - var/powercostcolor = "" - - var/emagged = 0 //ups the temperature cap from 500 to 1000, targets hit by beams over 500 Kelvin will burst into flames - var/dat = "" - -/obj/item/weapon/gun/energy/temperature/New() - ..() - update_icon() - processing_objects.Add(src) - - -/obj/item/weapon/gun/energy/temperature/Destroy() - processing_objects.Remove(src) - return ..() - - -/obj/item/weapon/gun/energy/temperature/attack_self(mob/living/user as mob) - user.set_machine(src) - update_dat() - - user << browse("Temperature Gun Configuration
[dat]", "window=tempgun;size=510x120") - onclose(user, "tempgun") - -/obj/item/weapon/gun/energy/temperature/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/card/emag) && !emagged) - emagged = 1 - to_chat(user, "You double the gun's temperature cap! Targets hit by searing beams will burst into flames!") - desc = "A gun that changes the body temperature of its targets. Its temperature cap has been hacked." - -/obj/item/weapon/gun/energy/temperature/Topic(href, href_list) - if (..()) - return - usr.set_machine(src) - add_fingerprint(usr) - - if(href_list["temp"]) - var/amount = text2num(href_list["temp"]) - if(amount > 0) - target_temperature = min((500 + 500*emagged), target_temperature+amount) - else - target_temperature = max(0, target_temperature+amount) - if (istype(loc, /mob)) - attack_self(loc) - add_fingerprint(usr) - return - - -/obj/item/weapon/gun/energy/temperature/process() - switch(temperature) - if(0 to 100) - charge_cost = 300 - powercost = "High" - if(100 to 250) - charge_cost = 180 - powercost = "Medium" - if(251 to 300) - charge_cost = 90 - powercost = "Low" - if(301 to 400) - charge_cost = 180 - powercost = "Medium" - if(401 to 1000) - charge_cost = 300 - powercost = "High" - switch(powercost) - if("High") powercostcolor = "orange" - if("Medium") powercostcolor = "green" - else powercostcolor = "blue" - if(target_temperature != temperature) - var/difference = abs(target_temperature - temperature) - if(difference >= (10 + 40*emagged)) //so emagged temp guns adjust their temperature much more quickly - if(target_temperature < temperature) - temperature -= (10 + 40*emagged) - else - temperature += (10 + 40*emagged) - else - temperature = target_temperature - update_icon() - - if (istype(loc, /mob/living/carbon)) - var /mob/living/carbon/M = loc - if (src == M.machine) - update_dat() - M << browse("Temperature Gun Configuration
[dat]", "window=tempgun;size=510x102") - - - if(power_supply) - power_supply.give(50) - update_icon() - return - -/obj/item/weapon/gun/energy/temperature/proc/update_dat() - dat = "" - dat += "Current output temperature: " - if(temperature > 500) - dat += "[temperature] ([round(temperature-T0C)]°C)" - dat += " SEARING!" - else if(temperature > (T0C + 50)) - dat += "[temperature] ([round(temperature-T0C)]°C)" - else if(temperature > (T0C - 50)) - dat += "[temperature] ([round(temperature-T0C)]°C)" - else - dat += "[temperature] ([round(temperature-T0C)]°C)" - dat += "
" - dat += "Target output temperature: " //might be string idiocy, but at least it's easy to read - dat += "- " - dat += "- " - dat += "- " - dat += "[target_temperature] " - dat += "+ " - dat += "+ " - dat += "+" - dat += "
" - dat += "Power cost: " - dat += "[powercost]" - -/obj/item/weapon/gun/energy/temperature/proc/update_temperature() - switch(temperature) - if(501 to INFINITY) - item_state = "tempgun_8" - if(400 to 500) - item_state = "tempgun_7" - if(360 to 400) - item_state = "tempgun_6" - if(335 to 360) - item_state = "tempgun_5" - if(295 to 335) - item_state = "tempgun_4" - if(260 to 295) - item_state = "tempgun_3" - if(200 to 260) - item_state = "tempgun_2" - if(120 to 260) - item_state = "tempgun_1" - if(-INFINITY to 120) - item_state = "tempgun_0" - icon_state = item_state - -/obj/item/weapon/gun/energy/temperature/proc/update_charge() - var/charge = power_supply.charge - switch(charge) - if(900 to INFINITY) overlays += "900" - if(800 to 900) overlays += "800" - if(700 to 800) overlays += "700" - if(600 to 700) overlays += "600" - if(500 to 600) overlays += "500" - if(400 to 500) overlays += "400" - if(300 to 400) overlays += "300" - if(200 to 300) overlays += "200" - if(100 to 200) overlays += "100" - if(-INFINITY to 100) overlays += "0" - -/obj/item/weapon/gun/energy/temperature/proc/update_user() - if (istype(loc,/mob/living/carbon)) - var/mob/living/carbon/M = loc - M.update_inv_back() - M.update_inv_l_hand() - M.update_inv_r_hand() - -/obj/item/weapon/gun/energy/temperature/update_icon() - overlays = 0 - update_temperature() - update_user() - update_charge() \ No newline at end of file diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm new file mode 100644 index 00000000000..5d883ac7de7 --- /dev/null +++ b/code/modules/projectiles/guns/grenade_launcher.dm @@ -0,0 +1,54 @@ +/obj/item/weapon/gun/grenadelauncher + name = "grenade launcher" + desc = "a terrible, terrible thing. it's really awful!" + icon = 'icons/obj/gun.dmi' + icon_state = "riotgun" + item_state = "riotgun" + w_class = 4 + throw_speed = 2 + throw_range = 10 + force = 5 + var/list/grenades = new/list() + var/max_grenades = 3 + + materials = list(MAT_METAL=2000) + +/obj/item/weapon/gun/grenadelauncher/examine(mob/user) + if(..(user, 2)) + to_chat(user, "[grenades.len] / [max_grenades] [ammo_name]s.") + +/obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params) + if((istype(I, /obj/item/weapon/grenade))) + if(grenades.len < max_grenades) + if(!user.unEquip(I)) + return + I.loc = src + grenades += I + to_chat(user, "You put the [ammo_name] in the [name].") + to_chat(user, "[grenades.len] / [max_grenades] [ammo_name]s.") + else + to_chat(user, "The grenade launcher cannot hold more [ammo_name]s.") + +/obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag) + if(target == user) + return + + if(grenades.len) + fire_grenade(target,user) + else + to_chat(user, "The grenade launcher is empty.") + +/obj/item/weapon/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user) + user.visible_message("[user] fired a grenade!", \ + "You fire the grenade launcher!") + var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta! + grenades -= F + F.loc = user.loc + F.throw_at(target, 30, 2, user) + message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") + log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") + F.active = 1 + F.icon_state = initial(icon_state) + "_active" + playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) + spawn(15) + F.prime() diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 13f92bcef86..b64fb37e1c6 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -4,32 +4,25 @@ icon = 'icons/obj/gun.dmi' icon_state = "staffofnothing" item_state = "staff" - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands - righthand_file = 'icons/mob/inhands/items_righthand.dmi' fire_sound = 'sound/weapons/emitter.ogg' flags = CONDUCT w_class = 5 - var/projectile_type = /obj/item/projectile/magic var/max_charges = 6 var/charges = 0 var/recharge_rate = 4 var/charge_tick = 0 var/can_charge = 1 + var/ammo_type var/no_den_usage origin_tech = null clumsy_check = 0 + trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses magic instead -/obj/item/weapon/gun/magic/emp_act(severity) - return + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands + righthand_file = 'icons/mob/inhands/items_righthand.dmi' -/obj/item/weapon/gun/magic/process_chambered() - if(in_chamber) return 1 - if(!charges) return 0 - if(!projectile_type) return 0 - in_chamber = new projectile_type(src) - return 1 - -/obj/item/weapon/gun/magic/afterattack(atom/target as mob, mob/living/user as mob, flag) +/obj/item/weapon/gun/magic/afterattack(atom/target, mob/living/user, flag) + newshot() if(no_den_usage) var/area/A = get_area(user) if(istype(A, /area/wizard_station)) @@ -38,22 +31,38 @@ else no_den_usage = 0 ..() - if(charges && !in_chamber && !flag) charges-- + +/obj/item/weapon/gun/magic/can_shoot() + return charges + +/obj/item/weapon/gun/magic/newshot() + if (charges && chambered) + chambered.newshot() + return + +/obj/item/weapon/gun/magic/process_chamber() + if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... + charges--//... drain a charge + return /obj/item/weapon/gun/magic/New() ..() charges = max_charges - if(can_charge) processing_objects.Add(src) + chambered = new ammo_type(src) + if(can_charge) + processing_objects.Add(src) /obj/item/weapon/gun/magic/Destroy() - if(can_charge) processing_objects.Remove(src) + if(can_charge) + processing_objects.Remove(src) return ..() /obj/item/weapon/gun/magic/process() charge_tick++ - if(charge_tick < recharge_rate || charges >= max_charges) return 0 + if(charge_tick < recharge_rate || charges >= max_charges) + return 0 charge_tick = 0 charges++ return 1 @@ -63,4 +72,9 @@ /obj/item/weapon/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj) to_chat(user, "The [name] whizzles quietly.") - return \ No newline at end of file + return + +/obj/item/weapon/gun/magic/suicide_act(mob/user) + user.visible_message("[user] is twisting the [src.name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.") + playsound(loc, fire_sound, 50, 1, -1) + return FIRELOSS diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index 16fc552397d..0a52f5ba416 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -4,49 +4,53 @@ obj/item/weapon/gun/magic/staff/ obj/item/weapon/gun/magic/staff/change name = "staff of change" desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" - projectile_type = "/obj/item/projectile/magic/change" + ammo_type = /obj/item/ammo_casing/magic/change icon_state = "staffofchange" item_state = "staffofchange" obj/item/weapon/gun/magic/staff/animate name = "staff of animation" desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." - projectile_type = "/obj/item/projectile/magic/animate" + ammo_type = /obj/item/ammo_casing/magic/animate icon_state = "staffofanimation" item_state = "staffofanimation" obj/item/weapon/gun/magic/staff/healing name = "staff of healing" desc = "An artefact that spits bolts of restoring magic which can remove ailments of all kinds and even raise the dead." - projectile_type = "/obj/item/projectile/magic/resurrection" + ammo_type = /obj/item/ammo_casing/magic/heal icon_state = "staffofhealing" item_state = "staffofhealing" +/obj/item/weapon/gun/magic/staff/healing/handle_suicide() //Stops people trying to commit suicide to heal themselves + return + obj/item/weapon/gun/magic/staff/chaos name = "staff of chaos" desc = "An artefact that spits bolts of chaotic magic that can potentially do anything." - projectile_type = "/obj/item/projectile/magic" + ammo_type = /obj/item/ammo_casing/magic/chaos icon_state = "staffofchaos" item_state = "staffofchaos" max_charges = 10 recharge_rate = 2 - no_den_usage = 1 -/obj/item/weapon/gun/magic/staff/chaos/process_chambered() //Snowflake proc, because this uses projectile_type instead of ammo_casing for whatever reason. - projectile_type = pick(typesof(/obj/item/projectile/magic)) - if(in_chamber) return 1 - if(!charges) return 0 - in_chamber = new projectile_type(src) - return 1 - obj/item/weapon/gun/magic/staff/door name = "staff of door creation" desc = "An artefact that spits bolts of transformative magic that can create doors in walls." - projectile_type = "/obj/item/projectile/magic/door" + ammo_type = /obj/item/ammo_casing/magic/door icon_state = "staffofdoor" item_state = "staffofdoor" max_charges = 10 recharge_rate = 2 + no_den_usage = 1 - no_den_usage = 1 \ No newline at end of file +/obj/item/weapon/gun/magic/staff/honk + name = "staff of the honkmother" + desc = "Honk" + fire_sound = "sound/items/airhorn.ogg" + ammo_type = /obj/item/ammo_casing/magic/honk + icon_state = "honker" + item_state = "honker" + max_charges = 4 + recharge_rate = 8 diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 6be4e0936bf..c6d5bc4bf00 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -1,21 +1,13 @@ /obj/item/weapon/gun/magic/wand/ name = "wand of nothing" desc = "It's not just a stick, it's a MAGIC stick!" - projectile_type = "/obj/item/projectile/magic" + ammo_type = /obj/item/ammo_casing/magic icon_state = "nothingwand" item_state = "wand" w_class = 2 can_charge = 0 max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) var/variable_charges = 1 - var/drained = 0 - -/obj/item/projectile/magic/fireball/Range() - var/mob/living/L = locate(/mob/living) in (range(src, 1) - firer) - if(L && L.stat != DEAD) - Bump(L) //Magic Bullet #teachthecontroversy - return - ..() /obj/item/weapon/gun/magic/wand/New() if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges @@ -26,26 +18,21 @@ ..() /obj/item/weapon/gun/magic/wand/examine(mob/user) - ..(user) + ..() to_chat(user, "Has [charges] charge\s remaining.") -/obj/item/weapon/gun/magic/wand/attack_self(mob/living/user as mob) - if(charges) - zap_self(user) - else - to_chat(user, "The [name] whizzles quietly.") - ..() +/obj/item/weapon/gun/magic/wand/update_icon() + icon_state = "[initial(icon_state)][charges ? "" : "-drained"]" -/obj/item/weapon/gun/magic/wand/attack(atom/target as mob, mob/living/user as mob) + +/obj/item/weapon/gun/magic/wand/attack(atom/target, mob/living/user) if(target == user) return ..() -/obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob) - if(!charges && !drained) - to_chat(user, "The [name] whizzles quietly.") - icon_state = "[icon_state]-drained" - drained = 1 +/obj/item/weapon/gun/magic/wand/afterattack(atom/target, mob/living/user) + if(!charges) + shoot_with_empty_chamber(user) return if(target == user) if(no_den_usage) @@ -53,74 +40,83 @@ if(istype(A, /area/wizard_station)) to_chat(user, "You know better than to violate the security of The Den, best wait until you leave to use [src].") return - else - no_den_usage = 0 + else + no_den_usage = 0 zap_self(user) else ..() + update_icon() -/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) - user.visible_message("[user] zaps \himself with [src]!") +/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user) + user.visible_message("[user] zaps \himself with [src].") + playsound(user, fire_sound, 50, 1) + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped \himself with a [src]" + +///////////////////////////////////// +//WAND OF DEATH +///////////////////////////////////// /obj/item/weapon/gun/magic/wand/death name = "wand of death" desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." - projectile_type = "/obj/item/projectile/magic/death" + ammo_type = /obj/item/ammo_casing/magic/death icon_state = "deathwand" max_charges = 3 //3, 2, 2, 1 -/obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) - if(alert(user, "You really want to zap yourself with the wand of death?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - var/message ="You irradiate yourself with pure energy! " - message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") - to_chat(user, message) - user.adjustOxyLoss(500) - charges-- - ..() +/obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user) + var/message ="You irradiate yourself with pure energy! " + message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") + to_chat(user, message) + user.adjustBurnLoss(500) + charges-- + ..() + +///////////////////////////////////// +//WAND OF HEALING +///////////////////////////////////// /obj/item/weapon/gun/magic/wand/resurrection name = "wand of resurrection" desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." - projectile_type = "/obj/item/projectile/magic/resurrection" + ammo_type = /obj/item/ammo_casing/magic/heal icon_state = "revivewand" max_charges = 3 //3, 2, 2, 1 -/obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) - user.setToxLoss(0) - user.setOxyLoss(0) - user.setCloneLoss(0) - user.SetParalysis(0) - user.SetStunned(0) - user.SetWeakened(0) - user.radiation = 0 - user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss()) - user.reagents.clear_reagents() +/obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user) + user.revive() to_chat(user, "You feel great!") charges-- ..() +///////////////////////////////////// +//WAND OF POLYMORPH +///////////////////////////////////// + /obj/item/weapon/gun/magic/wand/polymorph name = "wand of polymorph" desc = "This wand is attuned to chaos and will radically alter the victim's form." - projectile_type = "/obj/item/projectile/magic/change" + ammo_type = /obj/item/ammo_casing/magic/change icon_state = "polywand" max_charges = 10 //10, 5, 5, 4 -/obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) - if(alert(user, "Your new form might not have arms to zap with... Continue?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - ..() //because the user mob ceases to exists by the time wabbajack fully resolves - wabbajack(user) - charges-- +/obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user) + ..() //because the user mob ceases to exists by the time wabbajack fully resolves + wabbajack(user) + charges-- + +///////////////////////////////////// +//WAND OF TELEPORTATION +///////////////////////////////////// /obj/item/weapon/gun/magic/wand/teleport name = "wand of teleportation" desc = "This wand will wrench targets through space and time to move them somewhere else." - projectile_type = "/obj/item/projectile/magic/teleport" + ammo_type = /obj/item/ammo_casing/magic/teleport icon_state = "telewand" max_charges = 10 //10, 5, 5, 4 no_den_usage = 1 -/obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) +/obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user) do_teleport(user, user, 10) var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() smoke.set_up(10, 0, user.loc) @@ -128,25 +124,34 @@ charges-- ..() +///////////////////////////////////// +//WAND OF DOOR CREATION +///////////////////////////////////// + /obj/item/weapon/gun/magic/wand/door name = "wand of door creation" desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." - projectile_type = "/obj/item/projectile/magic/door" + ammo_type = /obj/item/ammo_casing/magic/door icon_state = "doorwand" max_charges = 20 //20, 10, 10, 7 -/obj/item/weapon/gun/magic/wand/door/zap_self() - return +/obj/item/weapon/gun/magic/wand/door/zap_self(mob/living/user) + to_chat(user, "You feel vaguely more open with your feelings.") + charges-- + ..() + +///////////////////////////////////// +//WAND OF FIREBALL +///////////////////////////////////// /obj/item/weapon/gun/magic/wand/fireball name = "wand of fireball" desc = "This wand shoots scorching balls of fire that explode into destructive flames." - projectile_type = "/obj/item/projectile/magic/fireball" + ammo_type = /obj/item/ammo_casing/magic/fireball icon_state = "firewand" max_charges = 8 //8, 4, 4, 3 -/obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) - if(alert(user, "Zapping yourself with a wand of fireball is probably a bad idea, do it anyway?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) - charges-- - ..() \ No newline at end of file +/obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user) + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + charges-- + ..() diff --git a/code/modules/projectiles/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm similarity index 93% rename from code/modules/projectiles/medbeam.dm rename to code/modules/projectiles/guns/medbeam.dm index 04f8f4b6862..bd5f6b23e79 100644 --- a/code/modules/projectiles/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/chronos.dmi' icon_state = "chronogun" item_state = "chronogun" - w_class = 3.0 + w_class = 3 var/mob/living/current_target var/last_check = 0 @@ -13,7 +13,7 @@ var/active = 0 var/datum/beam/current_beam = null - heavy_weapon = 1 + weapon_weight = WEAPON_MEDIUM /obj/item/weapon/gun/medbeam/New() ..() @@ -34,7 +34,7 @@ on_beam_release(current_target) current_target = null -/obj/item/weapon/gun/medbeam/Fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params) +/obj/item/weapon/gun/medbeam/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override) add_fingerprint(user) if(current_target) @@ -113,4 +113,4 @@ return /obj/effect/ebeam/medical - name = "medical beam" \ No newline at end of file + name = "medical beam" diff --git a/code/modules/projectiles/guns/mounted.dm b/code/modules/projectiles/guns/mounted.dm index d0e023d0d6d..b200dd1d6a7 100644 --- a/code/modules/projectiles/guns/mounted.dm +++ b/code/modules/projectiles/guns/mounted.dm @@ -1,31 +1,31 @@ /obj/item/weapon/gun/energy/advtaser/mounted name = "mounted taser" desc = "An arm mounted dual-mode weapon that fires electrodes and disabler shots." - icon_state = "armcannonstun" - item_state = "armcannonstun" - modifystate = "armcannonstun" + icon_state = "taser" + item_state = "armcannonstun4" force = 5 - self_recharge = 1 flags = NODROP - slot_flags = null - w_class = 5.0 + w_class = 5 can_flashlight = 0 + selfcharge = 1 + trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses neural signals instead /obj/item/weapon/gun/energy/advtaser/mounted/dropped()//if somebody manages to drop this somehow... + ..() src.loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases. /obj/item/weapon/gun/energy/laser/mounted name = "mounted laser" desc = "An arm mounted cannon that fires lethal lasers. Doesn't come with a charge beam." - icon_state = "armcannonlase" + icon_state = "laser" item_state = "armcannonlase" - modifystate = "armcannonlase" force = 5 - self_recharge = 1 flags = NODROP - slot_flags = null - w_class = 5.0 + w_class = 5 materials = null + selfcharge = 1 + trigger_guard = TRIGGER_GUARD_ALLOW_ALL /obj/item/weapon/gun/energy/laser/mounted/dropped() - src.loc = null \ No newline at end of file + ..() + src.loc = null diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index ffe2cd269b5..fddc09349ab 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -1,22 +1,13 @@ -#define SPEEDLOADER 0 -#define FROM_BOX 1 -#define MAGAZINE 2 - /obj/item/weapon/gun/projectile desc = "Now comes in flavors like GUN. Uses 10mm ammo, for some reason" name = "projectile gun" icon_state = "pistol" origin_tech = "combat=2;materials=2" - w_class = 3.0 + w_class = 3 materials = list(MAT_METAL=1000) -// recoil = 1 - var/mag_type = "/obj/item/ammo_box/magazine/m10mm" //Removes the need for max_ammo and caliber info + + var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info var/obj/item/ammo_box/magazine/magazine -// var/obj/item/ammo_casing/chambered = null // The round (not bullet) that is in the chamber. - - - - /obj/item/weapon/gun/projectile/New() ..() @@ -26,31 +17,26 @@ update_icon() return +/obj/item/weapon/gun/projectile/update_icon() + ..() + if(reskinned && current_skin) + icon_state = "[current_skin][suppressed ? "-suppressed" : ""]" + else + icon_state = "[initial(icon_state)][suppressed ? "-suppressed" : ""]" -/obj/item/weapon/gun/projectile/process_chambered(var/eject_casing = 1, var/empty_chamber = 1 ) -// if(in_chamber) -// return 1 - +/obj/item/weapon/gun/projectile/process_chamber(eject_casing = 1, empty_chamber = 1) var/obj/item/ammo_casing/AC = chambered //Find chambered round if(isnull(AC) || !istype(AC)) - return 0 + chamber_round() + return if(eject_casing) AC.loc = get_turf(src) //Eject casing onto ground. AC.SpinAnimation(10, 1) //next gen special effects + if(empty_chamber) chambered = null chamber_round() - if(AC.BB) - if(AC.reagents && AC.BB.reagents) - var/datum/reagents/casting_reagents = AC.reagents - casting_reagents.trans_to(AC.BB, casting_reagents.total_volume) //For chemical darts/bullets - qdel(casting_reagents) - in_chamber = AC.BB //Load projectile into chamber. - AC.BB.loc = src //Set projectile loc to gun. - AC.update_icon() - return 1 - return 0 - + return /obj/item/weapon/gun/projectile/proc/chamber_round() if(chambered || !magazine) @@ -60,12 +46,16 @@ chambered.loc = src return +/obj/item/weapon/gun/projectile/can_shoot() + if(!magazine || !magazine.ammo_count(0)) + return 0 + return 1 /obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob, params) ..() if(istype(A, /obj/item/ammo_box/magazine)) var/obj/item/ammo_box/magazine/AM = A - if(!magazine && istype(AM, text2path(mag_type))) + if(!magazine && istype(AM, mag_type)) user.remove_from_mob(AM) magazine = AM magazine.loc = src @@ -79,13 +69,11 @@ if(istype(A, /obj/item/weapon/suppressor)) var/obj/item/weapon/suppressor/S = A if(can_suppress) - if(!silenced) - if(user.l_hand != src && user.r_hand != src) - to_chat(user, "You'll need [src] in your hands to do that.") + if(!suppressed) + if(!user.unEquip(A)) return - user.drop_item() to_chat(user, "You screw [S] onto [src].") - silenced = A + suppressed = A S.oldsound = fire_sound S.initial_w_class = w_class fire_sound = 'sound/weapons/Gunshot_silenced.ogg' @@ -101,39 +89,45 @@ return return 0 -/obj/item/weapon/gun/projectile/attack_hand(mob/user as mob) +/obj/item/weapon/gun/projectile/attack_hand(mob/user) if(loc == user) - if(silenced && can_unsuppress) - var/obj/item/weapon/suppressor/S = silenced + if(suppressed && can_unsuppress) + var/obj/item/weapon/suppressor/S = suppressed if(user.l_hand != src && user.r_hand != src) ..() return to_chat(user, "You unscrew [silenced] from [src].") - user.put_in_hands(silenced) + user.put_in_hands(suppressed) fire_sound = S.oldsound w_class = S.initial_w_class - silenced = 0 + suppressed = 0 update_icon() return ..() /obj/item/weapon/gun/projectile/attack_self(mob/living/user as mob) + var/obj/item/ammo_casing/AC = chambered //Find chambered round if(magazine) magazine.loc = get_turf(src.loc) user.put_in_hands(magazine) magazine.update_icon() magazine = null to_chat(user, "You pull the magazine out of \the [src]!") + else if(chambered) + AC.loc = get_turf(src) + AC.SpinAnimation(10, 1) + chambered = null + to_chat(user, "You unload the round from \the [src]'s chamber.") else to_chat(user, "There's no magazine in \the [src].") update_icon() return /obj/item/weapon/gun/projectile/examine(mob/user) - ..(user) + ..() to_chat(user, "Has [get_ammo()] round\s remaining.") -/obj/item/weapon/gun/projectile/proc/get_ammo(var/countchambered = 1) +/obj/item/weapon/gun/projectile/proc/get_ammo(countchambered = 1) var/boolets = 0 //mature var names for mature people if(chambered && countchambered) boolets++ @@ -141,6 +135,22 @@ boolets += magazine.ammo_count() return boolets +/obj/item/weapon/gun/projectile/suicide_act(mob/user) + if (src.chambered && src.chambered.BB && !src.chambered.BB.nodamage) + user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.") + sleep(25) + if(user.l_hand == src || user.r_hand == src) + process_fire(user, user, 0, zone_override = "head") + user.visible_message("[user] blows \his brains out with the [src.name]!") + return(BRUTELOSS) + else + user.visible_message("[user] panics and starts choking to death!") + return(OXYLOSS) + else + user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!") + playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) + return (OXYLOSS) + /obj/item/weapon/suppressor name = "suppressor" desc = "A universal syndicate small-arms suppressor for maximum espionage." @@ -150,3 +160,9 @@ w_class = 2 var/oldsound = null var/initial_w_class = null + +/obj/item/weapon/suppressor/specialoffer + name = "cheap suppressor" + desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits all weapons." + icon = 'icons/obj/gun.dmi' + icon_state = "suppressor" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index b56344ce039..8e700c92cc0 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -15,7 +15,7 @@ name = "\improper Nanotrasen Saber SMG" desc = "A prototype three-round burst 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors." icon_state = "saber" - mag_type = "/obj/item/ammo_box/magazine/smgm9mm" + mag_type = /obj/item/ammo_box/magazine/smgm9mm origin_tech = "combat=4;materials=2" /obj/item/weapon/gun/projectile/automatic/update_icon() @@ -25,7 +25,7 @@ overlays += "[initial(icon_state)]semi" if(select == 1) overlays += "[initial(icon_state)]burst" - icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]" + icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" return /obj/item/weapon/gun/projectile/automatic/attackby(var/obj/item/A as obj, mob/user as mob, params) @@ -34,7 +34,7 @@ return if(istype(A, /obj/item/ammo_box/magazine)) var/obj/item/ammo_box/magazine/AM = A - if(istype(AM, text2path(mag_type))) + if(istype(AM, mag_type)) if(magazine) to_chat(user, "You perform a tactical reload on \the [src], replacing the magazine.") magazine.forceMove(get_turf(src.loc)) @@ -69,6 +69,9 @@ update_icon() return +/obj/item/weapon/gun/projectile/automatic/can_shoot() + return get_ammo() + /obj/item/weapon/gun/projectile/automatic/proc/empty_alarm() if(!chambered && !get_ammo() && !alarmed) playsound(src.loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) @@ -82,7 +85,7 @@ icon_state = "c20r" item_state = "c20r" origin_tech = "combat=5;materials=2;syndicate=8" - mag_type = "/obj/item/ammo_box/magazine/smgm45" + mag_type = /obj/item/ammo_box/magazine/smgm45 fire_sound = 'sound/weapons/Gunshot_smg.ogg' fire_delay = 2 burst_size = 2 @@ -99,7 +102,7 @@ /obj/item/weapon/gun/projectile/automatic/c20r/update_icon() ..() - icon_state = "c20r[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]" + icon_state = "c20r[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" return /obj/item/weapon/gun/projectile/automatic/wt550 @@ -107,7 +110,7 @@ desc = "An outdated personal defense weapon utilized by law enforcement. The WT-550 Automatic Rifle fires 4.6x30mm rounds." icon_state = "wt550" item_state = "arg" - mag_type = "/obj/item/ammo_box/magazine/wt550m9" + mag_type = /obj/item/ammo_box/magazine/wt550m9 fire_delay = 2 can_suppress = 0 burst_size = 1 @@ -123,80 +126,16 @@ desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds." icon_state = "mini-uzi" origin_tech = "combat=5;materials=2;syndicate=8" - mag_type = "/obj/item/ammo_box/magazine/uzim9mm" + mag_type = /obj/item/ammo_box/magazine/uzim9mm burst_size = 2 -/obj/item/weapon/gun/projectile/automatic/l6_saw - name = "\improper L6 SAW" - desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the reciever below the designation." - icon_state = "l6closed100" - item_state = "l6closedmag" - w_class = 5 - slot_flags = 0 - origin_tech = "combat=5;materials=1;syndicate=2" - mag_type = "/obj/item/ammo_box/magazine/m762" - fire_sound = 'sound/weapons/Gunshot3.ogg' - - var/cover_open = 0 - can_suppress = 0 - burst_size = 5 - fire_delay = 3 - -/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_self(mob/user as mob) - cover_open = !cover_open - to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.") - update_icon() - -/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() - if(magazine && magazine.caliber != "a762") - icon_state = "l6[cover_open ? "open" : "closed"]0" - icon_state = "l6[cover_open ? "open" : "closed"][magazine ? round(magazine.ammo_count() * 2, 25) : "-empty"]" - -/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays - if(cover_open) - to_chat(user, "[src]'s cover is open! Close it before firing!") - else - ..() - update_icon() - -/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user as mob) - if(loc != user) - ..() - return //let them pick it up - if(!cover_open || (cover_open && !magazine)) - ..() - else if(cover_open && magazine) - //drop the mag - magazine.update_icon() - magazine.loc = get_turf(src.loc) - user.put_in_hands(magazine) - magazine = null - update_icon() - to_chat(user, "You remove the magazine from [src].") - - -/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(var/obj/item/A as obj, mob/user as mob, params) - if(!cover_open && istype(A, mag_type)) - to_chat(user, "[src]'s cover is closed! You can't insert a new mag!") - return - ..() - -/obj/item/weapon/gun/projectile/automatic/l6_saw/devastator - name = "\improper 'Devastator' LMG" - desc = "A heavily modified L6 SAW designed to chamber wide rounds. Commonly used by elite Syndicate boarding teams " - mag_type = "/obj/item/ammo_box/magazine/m762/buckshot" - -/obj/item/weapon/gun/projectile/automatic/l6_saw/devastator/New() - ..() - mag_type = "/obj/item/ammo_box/magazine/m762" // Workaround so it spawns with a shotgun mag loaded, but can still load regular LMG mags. - /obj/item/weapon/gun/projectile/automatic/m90 name = "\improper M-90gl Carbine" desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off." icon_state = "m90" item_state = "m90" origin_tech = "combat=5;materials=2;syndicate=8" - mag_type = "/obj/item/ammo_box/magazine/m556" + mag_type = /obj/item/ammo_box/magazine/m556 fire_sound = 'sound/weapons/Gunshot_smg.ogg' action_button_name = "Toggle Grenade Launcher" can_suppress = 0 @@ -215,12 +154,11 @@ underbarrel.afterattack(target, user, flag, params) else ..() - empty_alarm() return /obj/item/weapon/gun/projectile/automatic/m90/attackby(var/obj/item/A, mob/user, params) if(istype(A, /obj/item/ammo_casing)) - if(istype(A, text2path(underbarrel.magazine.ammo_type))) + if(istype(A, underbarrel.magazine.ammo_type)) underbarrel.attack_self() underbarrel.attackby(A, user, params) else @@ -267,11 +205,11 @@ w_class = 5 slot_flags = 0 origin_tech = "combat=5;materials=1;syndicate=2" - mag_type = "/obj/item/ammo_box/magazine/tommygunm45" + mag_type = /obj/item/ammo_box/magazine/tommygunm45 fire_sound = 'sound/weapons/Gunshot_smg.ogg' can_suppress = 0 - fire_delay = 1 burst_size = 4 + fire_delay = 1 /obj/item/weapon/gun/projectile/automatic/ar name = "ARG" @@ -285,3 +223,40 @@ can_suppress = 0 burst_size = 3 fire_delay = 1 + +// Bulldog shotgun // +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog + name = "\improper 'Bulldog' Shotgun" + desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines." + icon_state = "bulldog" + item_state = "bulldog" + w_class = 3.0 + origin_tech = "combat=5;materials=4;syndicate=6" + mag_type = /obj/item/ammo_box/magazine/m12g + fire_sound = 'sound/weapons/Gunshot4.ogg' + can_suppress = 0 + burst_size = 1 + fire_delay = 0 + action_button_name = null + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/New() + ..() + update_icon() + return + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/proc/update_magazine() + if(magazine) + overlays.Cut() + overlays += "[magazine.icon_state]" + return + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/update_icon() + overlays.Cut() + update_magazine() + icon_state = "bulldog[chambered ? "" : "-e"]" + return + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) + ..() + empty_alarm() + return diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm deleted file mode 100644 index 3645899ab21..00000000000 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ /dev/null @@ -1,323 +0,0 @@ -//AMMUNITION - -/obj/item/weapon/arrow - - name = "bolt" - desc = "It's got a tip for you - get the point?" - icon = 'icons/obj/weapons.dmi' - icon_state = "bolt" - item_state = "bolt" - throwforce = 8 - w_class = 3.0 - sharp = 1 - edge = 0 - -/obj/item/weapon/arrow/proc/removed() //Helper for metal rods falling apart. - return - -/obj/item/weapon/spike - name = "alloy spike" - desc = "It's about a foot of weird silver metal with a wicked point." - sharp = 1 - edge = 0 - throwforce = 5 - w_class = 2 - icon = 'icons/obj/weapons.dmi' - icon_state = "metal-rod" - item_state = "bolt" - -/obj/item/weapon/arrow/quill - - name = "vox quill" - desc = "A wickedly barbed quill from some bizarre animal." - icon_state = "quill" - item_state = "quill" - throwforce = 5 - -/obj/item/weapon/arrow/rod - - name = "metal rod" - desc = "Don't cry for me, Orithena." - icon_state = "metal-rod" - -/obj/item/weapon/arrow/rod/removed(mob/user) - if(throwforce == 15) // The rod has been superheated - we don't want it to be useable when removed from the bow. - to_chat(user, "[src] shatters into a scattering of overstressed metal shards as it leaves the crossbow.") - var/obj/item/weapon/shard/shrapnel/S = new() - S.loc = get_turf(src) - qdel(src) - -/obj/item/weapon/arrow/baguette - name = "baguette" - desc = "Still warm from the oven!" - icon = 'icons/obj/weapons.dmi' - icon_state = "baguette" - item_state = "baguette" - throwforce = 3 - sharp = 0 - -/obj/item/weapon/gun/launcher/crossbow - - name = "powered crossbow" - desc = "A 2557AD twist on an old classic. Pick up that can." - icon_state = "crossbow" - item_state = "crossbow-solid" - fire_sound = 'sound/weapons/punchmiss.ogg' // TODO: Decent THWOK noise. -// ejectshell = 0 // No spent shells. - mouthshoot = 1 // No suiciding with this weapon, causes runtimes. - fire_sound_text = "a solid thunk" - fire_delay = 25 - - var/tension = 0 // Current draw on the bow. - var/max_tension = 5 // Highest possible tension. - var/release_speed = 5 // Speed per unit of tension. - var/obj/item/weapon/stock_parts/cell/cell = null // Used for firing superheated rods. - var/current_user // Used to check if the crossbow has changed hands since being drawn. - -/obj/item/weapon/gun/launcher/crossbow/emp_act(severity) - if(cell && severity) - cell.use(100*severity) - -/obj/item/weapon/gun/launcher/crossbow/special_check(user) - if(tension <= 0) - to_chat(user, "\red \The [src] is not drawn back!") - return 0 - return 1 - -/obj/item/weapon/gun/launcher/crossbow/update_release_force() - release_force = tension*release_speed - -/obj/item/weapon/gun/launcher/crossbow/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - - if(!..()) return //Only do this on a successful shot. - icon_state = "crossbow" - tension = 0 - -/obj/item/weapon/gun/launcher/crossbow/attack_self(mob/living/user as mob) - if(tension) - if(in_chamber && in_chamber.loc == src) //Just in case they click it the tick after firing. - user.visible_message("[user] relaxes the tension on [src]'s string and removes [in_chamber].","You relax the tension on [src]'s string and remove [in_chamber].") - in_chamber.loc = get_turf(src) - var/obj/item/weapon/arrow/A = in_chamber - in_chamber = null - A.removed(user) - else - user.visible_message("[user] relaxes the tension on [src]'s string.","You relax the tension on [src]'s string.") - tension = 0 - icon_state = "crossbow" - else - draw(user) - -/obj/item/weapon/gun/launcher/crossbow/proc/draw(var/mob/user as mob) - - if(!in_chamber) - to_chat(user, "You don't have anything nocked to [src].") - return - - if(user.restrained()) - return - - current_user = user - user.visible_message("[user] begins to draw back the string of [src].","You begin to draw back the string of [src].") - tension = 1 - spawn(25) increase_tension(user) //TODO: This needs to be changed to something less shit. - -/obj/item/weapon/gun/launcher/crossbow/proc/increase_tension(var/mob/user as mob) - - if(!in_chamber || !tension || current_user != user) //Arrow has been fired, bow has been relaxed or user has changed. - return - - tension++ - icon_state = "crossbow-drawn" - - if(tension>=max_tension) - tension = max_tension - to_chat(usr, "[src] clunks as you draw the string to its maximum tension!") - else - user.visible_message("[usr] draws back the string of [src]!","You continue drawing back the string of [src]!") - spawn(25) increase_tension(user) - -/obj/item/weapon/gun/launcher/crossbow/attackby(obj/item/W as obj, mob/user as mob, params) - if(!in_chamber) - if (istype(W,/obj/item/weapon/arrow)) - user.drop_item() - in_chamber = W - in_chamber.loc = src - user.visible_message("[user] slides [in_chamber] into [src].","You slide [in_chamber] into [src].") - icon_state = "crossbow-nocked" - return - else if(istype(W,/obj/item/stack/rods)) - var/obj/item/stack/rods/R = W - R.use(1) - in_chamber = new /obj/item/weapon/arrow/rod(src) - in_chamber.fingerprintslast = src.fingerprintslast - in_chamber.loc = src - icon_state = "crossbow-nocked" - user.visible_message("[user] jams [in_chamber] into [src].","You jam [in_chamber] into [src].") - superheat_rod(user) - return - - if(istype(W, /obj/item/weapon/stock_parts/cell)) - if(!cell) - user.drop_item() - W.loc = src - cell = W - to_chat(user, "You jam [cell] into [src] and wire it to the firing coil.") - superheat_rod(user) - else - to_chat(user, "[src] already has a cell installed.") - - else if(istype(W, /obj/item/weapon/screwdriver)) - if(cell) - var/obj/item/C = cell - C.loc = get_turf(user) - to_chat(user, "You jimmy [cell] out of [src] with [W].") - cell = null - else - to_chat(user, "[src] doesn't have a cell installed.") - - else - ..() - -/obj/item/weapon/gun/launcher/crossbow/proc/superheat_rod(var/mob/user) - - if(!user || !cell || !in_chamber) return - if(cell.charge < 500) return - if(in_chamber.throwforce >= 15) return - if(!istype(in_chamber,/obj/item/weapon/arrow/rod)) return - - to_chat(user, "[in_chamber] plinks and crackles as it begins to glow red-hot.") - in_chamber.throwforce = 15 - in_chamber.icon_state = "metal-rod-superheated" - cell.use(500) - - -/obj/item/weapon/gun/launcher/crossbow/french - name = "french powered crossbow" - -/obj/item/weapon/gun/launcher/crossbow/french/attackby(obj/item/W as obj, mob/user as mob, params) - if(!in_chamber) - if (istype(W,/obj/item/weapon/reagent_containers/food/snacks/baguette)) - user.drop_item() - in_chamber = W - in_chamber.loc = src - user.visible_message("[user] slides [in_chamber] into [src].","You slide [in_chamber] into [src].") - icon_state = "crossbow-nocked" - return - - else if (istype(W,/obj/item/weapon/arrow)) - user.visible_message("\The [src] only takes baguettes.") - return - else if(istype(W,/obj/item/stack/rods)) - user.visible_message("\The [src] only takes baguettes.") - return - - if(istype(W, /obj/item/weapon/stock_parts/cell)) - user.visible_message("The [src] is too simple be adapted with a cell.") - return - - else - ..() - -/obj/item/weapon/gun/launcher/crossbow/french/increase_tension(var/mob/user as mob) - - if(!in_chamber || !tension || current_user != user) //Arrow has been fired, bow has been relaxed or user has changed. - return - - tension++ - icon_state = "fcrossbow-drawn" - - if(tension>=max_tension) - tension = max_tension - to_chat(usr, "[src] clunks as you draw the string to its maximum tension!") - else - user.visible_message("[usr] draws back the string of [src]!","You continue drawing back the string of [src]!") - spawn(25) increase_tension(user) - -// Crossbow construction. -/obj/item/weapon/crossbowframe - name = "crossbow frame" - desc = "A half-finished crossbow." - icon_state = "crossbowframe0" - item_state = "crossbow-solid" - - var/buildstate = 0 - -/obj/item/weapon/crossbowframe/update_icon() - icon_state = "crossbowframe[buildstate]" - -/obj/item/weapon/crossbowframe/examine(mob/user) - ..(user) - switch(buildstate) - if(1) - to_chat(user, "It has a loose rod frame in place.") - if(2) - to_chat(user, "It has a steel backbone welded in place.") - if(3) - to_chat(user, "It has a steel backbone and a cell mount installed.") - if(4) - to_chat(user, "It has a steel backbone, plastic lath and a cell mount installed.") - if(5) - to_chat(user, "It has a steel cable loosely strung across the lath.") - -/obj/item/weapon/crossbowframe/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/stack/rods)) - if(buildstate == 0) - var/obj/item/stack/rods/R = W - if(R.amount >= 3) - R.use(3) - to_chat(user, "\blue You assemble a backbone of rods around the wooden stock.") - buildstate++ - update_icon() - else - to_chat(user, "\blue You need at least three rods to complete this task.") - return - else if(istype(W,/obj/item/weapon/weldingtool)) - if(buildstate == 1) - var/obj/item/weapon/weldingtool/T = W - if(T.remove_fuel(0,user)) - if(!src || !T.isOn()) return - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - to_chat(user, "\blue You weld the rods into place.") - buildstate++ - update_icon() - return - else if(istype(W,/obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = W - if(buildstate == 2) - if(C.amount >= 5) - C.use(5) - to_chat(user, "\blue You wire a crude cell mount into the top of the crossbow.") - buildstate++ - update_icon() - else - to_chat(user, "\blue You need at least five segments of cable coil to complete this task.") - return - else if(buildstate == 4) - if(C.amount >= 5) - C.use(5) - to_chat(user, "\blue You string a steel cable across the crossbow's lath.") - buildstate++ - update_icon() - else - to_chat(user, "\blue You need at least five segments of cable coil to complete this task.") - return - else if(istype(W,/obj/item/stack/sheet/mineral/plastic)) - if(buildstate == 3) - var/obj/item/stack/sheet/mineral/plastic/P = W - if(P.amount >= 3) - P.use(3) - to_chat(user, "\blue You assemble and install a heavy plastic lath onto the crossbow.") - buildstate++ - update_icon() - else - to_chat(user, "\blue You need at least three plastic sheets to complete this task.") - return - else if(istype(W,/obj/item/weapon/screwdriver)) - if(buildstate == 5) - to_chat(user, "\blue You secure the crossbow's various parts.") - new /obj/item/weapon/gun/launcher/crossbow(get_turf(src)) - qdel(src) - return - else - ..() diff --git a/code/modules/projectiles/guns/projectile/grenade launcher.dm b/code/modules/projectiles/guns/projectile/grenade launcher.dm deleted file mode 100644 index 28dc0c3a4b9..00000000000 --- a/code/modules/projectiles/guns/projectile/grenade launcher.dm +++ /dev/null @@ -1,91 +0,0 @@ -/obj/item/weapon/gun/launcher - - name = "launcher" - desc = "A device that launches things." - icon = 'icons/obj/weapons.dmi' - w_class = 5.0 - flags = CONDUCT - slot_flags = SLOT_BACK - - var/release_force = 0 - var/fire_sound_text = "a launcher firing" - -//Check if we're drawing and if the bow is loaded. -/obj/item/weapon/gun/launcher/proc/chamber_round() - return (!isnull(in_chamber)) - -//This should not fit in a combat belt or holster. -/obj/item/weapon/gun/launcher/isHandgun() - return 0 - -//Launchers are mechanical, no other impact. -/obj/item/weapon/gun/launcher/emp_act(severity) - return - -//This normally uses a proc on projectiles and our ammo is not strictly speaking a projectile. -/obj/item/weapon/gun/launcher/can_hit(var/mob/living/target as mob, var/mob/living/user as mob) - return - -//Override this to avoid a runtime with suicide handling. -/obj/item/weapon/gun/launcher/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - if (M == user && user.zone_sel.selecting == "mouth") - to_chat(user, "\red Shooting yourself with \a [src] is pretty tricky. You can't seem to manage it.") - return - ..() - -/obj/item/weapon/gun/launcher/proc/update_release_force() - return 0 - -/obj/item/weapon/gun/launcher/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - - if (!user.IsAdvancedToolUser()) - to_chat(user, "\red You don't have the dexterity to do this!") - return 0 - - add_fingerprint(user) - - //Make sure target turfs both exist. - var/turf/curloc = get_turf(user) - var/turf/targloc = get_turf(target) - if (!istype(targloc) || !istype(curloc)) - return 0 - - if(!special_check(user)) - return 0 - - if (!ready_to_fire()) - if (world.time % 3) //to prevent spam - to_chat(user, "[src] is not ready to fire again!") - return 0 - - if(!chamber_round()) //CHECK - return click_empty(user) - - if(!in_chamber) - return 0 - - update_release_force() - - playsound(user, fire_sound, 50, 1) - user.visible_message("[user] fires [src][reflex ? " by reflex":""]!", \ - "You fire [src][reflex ? "by reflex":""]!", \ - "You hear [fire_sound_text]!") - - in_chamber.loc = get_turf(user) - in_chamber.throw_at(target,10,release_force) - - sleep(1) - - in_chamber = null - - update_icon() - - if(user.hand) - user.update_inv_l_hand() - else - user.update_inv_r_hand() - - return 1 - -/obj/item/weapon/gun/launcher/attack_self(mob/living/user as mob) - return \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm index 6bcca0cdf68..635ab22cc8c 100644 --- a/code/modules/projectiles/guns/projectile/launchers.dm +++ b/code/modules/projectiles/guns/projectile/launchers.dm @@ -1,44 +1,12 @@ //KEEP IN MIND: These are different from gun/grenadelauncher. These are designed to shoot premade rocket and grenade projectiles, not flashbangs or chemistry casings etc. //Put handheld rocket launchers here if someone ever decides to make something so hilarious ~Paprika - -/obj/item/weapon/gun/projectile/automatic/gyropistol - name = "gyrojet pistol" - desc = "A prototype pistol designed to fire self propelled rockets." - icon_state = "gyropistol" - fire_sound = 'sound/effects/Explosion1.ogg' - origin_tech = "combat=3" - mag_type = "/obj/item/ammo_box/magazine/m75" - burst_size = 1 - fire_delay = 0 - -/obj/item/weapon/gun/projectile/automatic/gyropistol/isHandgun() - return 1 - -/obj/item/weapon/gun/projectile/automatic/gyropistol/New() - ..() - update_icon() - return - -/obj/item/weapon/gun/projectile/automatic/gyropistol/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - if(!chambered && !get_ammo() && !alarmed) - playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) - update_icon() - alarmed = 1 - return - -/obj/item/weapon/gun/projectile/automatic/gyropistol/update_icon() - ..() - icon_state = "[initial(icon_state)][magazine ? "loaded" : ""]" - return - /obj/item/weapon/gun/projectile/revolver/grenadelauncher//this is only used for underbarrel grenade launchers at the moment, but admins can still spawn it if they feel like being assholes desc = "A break-operated grenade launcher." name = "grenade launcher" icon_state = "dshotgun-sawn" item_state = "gun" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher fire_sound = 'sound/weapons/grenadelaunch.ogg' w_class = 3 @@ -52,7 +20,7 @@ name = "multi grenade launcher" icon_state = "bulldog" item_state = "bulldog" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher/multi" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher/multi /obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi/cyborg desc = "A 6-shot grenade launcher." @@ -60,4 +28,57 @@ icon_state = "mecha_grenadelnchr" /obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi/cyborg/attack_self() - return \ No newline at end of file + return + +/obj/item/weapon/gun/projectile/automatic/gyropistol + name = "gyrojet pistol" + desc = "A prototype pistol designed to fire self propelled rockets." + icon_state = "gyropistol" + fire_sound = 'sound/effects/Explosion1.ogg' + origin_tech = "combat=3" + mag_type = /obj/item/ammo_box/magazine/m75 + burst_size = 1 + fire_delay = 0 + action_button_name = null + +/obj/item/weapon/gun/projectile/automatic/gyropistol/isHandgun() + return 1 + +/obj/item/weapon/gun/projectile/automatic/gyropistol/process_chamber(eject_casing = 0, empty_chamber = 1) + ..() + +/obj/item/weapon/gun/projectile/automatic/gyropistol/update_icon() + ..() + icon_state = "[initial(icon_state)][magazine ? "loaded" : ""]" + return + +/obj/item/weapon/gun/projectile/automatic/speargun + name = "kinetic speargun" + desc = "A weapon favored by carp hunters. Fires specialized spears using kinetic energy." + icon_state = "speargun" + item_state = "speargun" + w_class = 4 + force = 10 + can_suppress = 0 + mag_type = /obj/item/ammo_box/magazine/internal/speargun + fire_sound = 'sound/weapons/grenadelaunch.ogg' + burst_size = 1 + fire_delay = 0 + select = 0 + action_button_name = null + +/obj/item/weapon/gun/projectile/automatic/speargun/update_icon() + return + +/obj/item/weapon/gun/projectile/automatic/speargun/attack_self() + return + +/obj/item/weapon/gun/projectile/automatic/speargun/process_chamber(eject_casing = 0, empty_chamber = 1) + ..() + +/obj/item/weapon/gun/projectile/automatic/speargun/attackby(obj/item/A, mob/user, params) + var/num_loaded = magazine.attackby(A, user, params, 1) + if(num_loaded) + to_chat(user, "You load [num_loaded] spear\s into \the [src].") + update_icon() + chamber_round() diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 99aded2663b..1a37a97ad7a 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -4,18 +4,18 @@ icon_state = "pistol" w_class = 2 origin_tech = "combat=2;materials=2;syndicate=2" - mag_type = "/obj/item/ammo_box/magazine/m10mm" + mag_type = /obj/item/ammo_box/magazine/m10mm can_suppress = 1 burst_size = 1 fire_delay = 0 action_button_name = null - + /obj/item/weapon/gun/projectile/automatic/pistol/isHandgun() return 1 /obj/item/weapon/gun/projectile/automatic/pistol/update_icon() ..() - icon_state = "[initial(icon_state)][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]" + icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" return /obj/item/weapon/gun/projectile/automatic/pistol/m2411 @@ -24,7 +24,7 @@ icon_state = "m2411" w_class = 3.0 origin_tech = "combat=3;materials=2" - mag_type = "/obj/item/ammo_box/magazine/m45" + mag_type = /obj/item/ammo_box/magazine/m45 can_suppress = 0 /obj/item/weapon/gun/projectile/automatic/pistol/deagle @@ -32,7 +32,7 @@ desc = "A robust .50 AE handgun." icon_state = "deagle" force = 14.0 - mag_type = "/obj/item/ammo_box/magazine/m50" + mag_type = /obj/item/ammo_box/magazine/m50 can_suppress = 0 /obj/item/weapon/gun/projectile/automatic/pistol/deagle/update_icon() @@ -47,4 +47,16 @@ /obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo." icon_state = "deaglecamo" - item_state = "deagleg" \ No newline at end of file + item_state = "deagleg" + +/obj/item/weapon/gun/projectile/automatic/pistol/APS + name = "stechkin APS pistol" + desc = "The original russian version of a widely used Syndicate sidearm. Uses 9mm ammo." + icon_state = "aps" + w_class = 3 + origin_tech = "combat=3;materials=2;syndicate=3" + mag_type = /obj/item/ammo_box/magazine/pistolm9mm + can_suppress = 0 + burst_size = 3 + fire_delay = 2 + action_button_name = "Toggle Firemode" diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 2cb3c849e4b..66e404a7de8 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -2,57 +2,80 @@ name = "\improper .357 revolver" desc = "A suspicious revolver. Uses .357 ammo." icon_state = "revolver" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder -/obj/item/weapon/gun/projectile/revolver/chamber_round() - if (chambered || !magazine) - return - else if (magazine.ammo_count()) +/obj/item/weapon/gun/projectile/revolver/New() + ..() + if(!istype(magazine, /obj/item/ammo_box/magazine/internal/cylinder)) + verbs -= /obj/item/weapon/gun/projectile/revolver/verb/spin + +/obj/item/weapon/gun/projectile/revolver/chamber_round(var/spin = 1) + if(spin) chambered = magazine.get_round(1) + else + chambered = magazine.stored_ammo[1] return -/obj/item/weapon/gun/projectile/revolver/process_chambered() +/obj/item/weapon/gun/projectile/revolver/shoot_with_empty_chamber(mob/living/user as mob|obj) + ..() + chamber_round(1) + +/obj/item/weapon/gun/projectile/revolver/process_chamber() return ..(0, 1) -/obj/item/weapon/gun/projectile/revolver/attackby(var/obj/item/A as obj, mob/user as mob, params) - var/num_loaded = 0 - if(istype(A, /obj/item/ammo_box)) - var/obj/item/ammo_box/AM = A - for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - var/didload = magazine.give_round(AC) - if(didload) - AM.stored_ammo -= AC - num_loaded++ - if(!didload || !magazine.multiload) - break - if(istype(A, /obj/item/ammo_casing)) - var/obj/item/ammo_casing/AC = A - if(magazine.give_round(AC)) - user.drop_item() - AC.loc = src - num_loaded++ +/obj/item/weapon/gun/projectile/revolver/attackby(obj/item/A, mob/user, params) + . = ..() + if(.) + return + var/num_loaded = magazine.attackby(A, user, params, 1) if(num_loaded) - to_chat(user, "You load [num_loaded] shell\s into \the [src]!") + to_chat(user, "You load [num_loaded] shell\s into \the [src].") A.update_icon() update_icon() - chamber_round() + chamber_round(0) -/obj/item/weapon/gun/projectile/revolver/attack_self(mob/living/user as mob) + if(unique_rename) + if(istype(A, /obj/item/weapon/pen)) + rename_gun(user) + +/obj/item/weapon/gun/projectile/revolver/attack_self(mob/living/user) var/num_unloaded = 0 + chambered = null while (get_ammo() > 0) var/obj/item/ammo_casing/CB CB = magazine.get_round(0) - chambered = null - CB.loc = get_turf(src.loc) - CB.SpinAnimation(10, 1) - CB.update_icon() - num_unloaded++ + if(CB) + CB.loc = get_turf(src.loc) + CB.SpinAnimation(10, 1) + CB.update_icon() + num_unloaded++ if (num_unloaded) - to_chat(user, "You unload [num_unloaded] shell\s from [src]!") + to_chat(user, "You unload [num_unloaded] shell\s from [src].") else - to_chat(user, "[src] is empty.") + to_chat(user, "[src] is empty!") -/obj/item/weapon/gun/projectile/revolver/get_ammo(var/countchambered = 0, var/countempties = 1) +/obj/item/weapon/gun/projectile/revolver/verb/spin() + set name = "Spin Chamber" + set category = "Object" + set desc = "Click to spin your revolver's chamber." + + var/mob/M = usr + + if(M.stat || !in_range(M,src)) + return + + if(istype(magazine, /obj/item/ammo_box/magazine/internal/cylinder)) + var/obj/item/ammo_box/magazine/internal/cylinder/C = magazine + C.spin() + chamber_round(0) + usr.visible_message("[usr] spins [src]'s chamber.", "You spin [src]'s chamber.") + else + verbs -= /obj/item/weapon/gun/projectile/revolver/verb/spin + +/obj/item/weapon/gun/projectile/revolver/can_shoot() + return get_ammo(0,0) + +/obj/item/weapon/gun/projectile/revolver/get_ammo(countchambered = 0, countempties = 1) var/boolets = 0 //mature var names for mature people if (chambered && countchambered) boolets++ @@ -61,119 +84,66 @@ return boolets /obj/item/weapon/gun/projectile/revolver/examine(mob/user) - ..(user) + ..() to_chat(user, "[get_ammo(0,0)] of those are live rounds.") -/obj/item/weapon/gun/projectile/revolver/verb/spin_revolver() - set name = "Spin cylinder" - set desc = "Fun when you're bored out of your skull." - set category = "Object" - - usr.visible_message("[usr] spins the chamber of the revolver.", "You spin the revolver's chamber.") - playsound(src.loc, 'sound/weapons/revolver_spin.ogg', 100, 1) - Spin() - -/obj/item/weapon/gun/projectile/revolver/proc/Spin() - chambered = null - var/random = rand(1, magazine.max_ammo) - if(random <= get_ammo(0,0)) - chamber_round() - update_icon() - -/obj/item/weapon/gun/projectile/revolver/capgun - name = "cap gun" - desc = "Looks almost like the real thing! Ages 8 and up." - origin_tech = "combat=1;materials=1" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/cap" - /obj/item/weapon/gun/projectile/revolver/detective desc = "A cheap Martian knock-off of a classic law enforcement firearm. Uses .38-special rounds." name = "\improper .38 Mars Special" icon_state = "detective" origin_tech = "combat=2;materials=2" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/rev38" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38 + unique_rename = 1 + unique_reskin = 1 - -/obj/item/weapon/gun/projectile/revolver/detective/special_check(var/mob/living/carbon/human/M) - if(!ghettomodded) - return 1 - if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60 - to_chat(M, "[src] blows up in your face!") - M.take_organ_damage(0,20) - M.drop_item() - qdel(src) - return 0 - return 1 - -/obj/item/weapon/gun/projectile/revolver/detective/verb/rename_gun() - set name = "Name Gun" - set category = "Object" - set desc = "Click to rename your gun." - - var/mob/M = usr - var/input = stripped_input(M,"What do you want to name the gun?", ,"", MAX_NAME_LEN) - - if(src && input && !M.stat && in_range(M,src)) - name = input - to_chat(M, "You name the gun [input]. Say hello to your new friend.") - return 1 - -/obj/item/weapon/gun/projectile/revolver/detective/verb/reskin_gun() - set name = "Reskin gun" - set category = "Object" - set desc = "Click to reskin your gun." - - var/mob/M = usr - var/list/options = list() +/obj/item/weapon/gun/projectile/revolver/detective/New() + ..() options["The Original"] = "detective" options["Leopard Spots"] = "detective_leopard" options["Black Panther"] = "detective_panther" options["Gold Trim"] = "detective_gold" options["The Peacemaker"] = "detective_peacemaker" - var/choice = input(M,"What do you want to skin the gun to?","Reskin Gun") in options + options["Cancel"] = null - if(src && choice && !M.stat && in_range(M,src)) - icon_state = options[choice] - to_chat(M, "Your gun is now skinned as [choice]. Say hello to your new friend.") - return 1 - -/obj/item/weapon/gun/projectile/revolver/detective/attackby(var/obj/item/A as obj, mob/user as mob, params) +/obj/item/weapon/gun/projectile/revolver/detective/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override = "") + if(magazine.caliber != initial(magazine.caliber)) + if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60 + playsound(user, fire_sound, 50, 1) + to_chat(user, "[src] blows up in your face!") + user.take_organ_damage(0,20) + user.unEquip(src) + return 0 ..() - if(istype(A, /obj/item/weapon/screwdriver) || istype(A, /obj/item/weapon/conversion_kit)) + +/obj/item/weapon/gun/projectile/revolver/detective/attackby(obj/item/A, mob/user, params) + ..() + if(istype(A, /obj/item/weapon/screwdriver)) if(magazine.caliber == "38") - to_chat(user, "You begin to reinforce the barrel of [src].") + to_chat(user, "You begin to reinforce the barrel of [src]...") if(magazine.ammo_count()) afterattack(user, user) //you know the drill - user.visible_message("[src] goes off!", "[src] goes off in your face!") + user.visible_message("[src] goes off!", "[src] goes off in your face!") return - if(do_after(user, 30, target = src)) + if(do_after(user, 30/A.toolspeed, target = src)) if(magazine.ammo_count()) - to_chat(user, "You can't modify it!") + to_chat(user, "You can't modify it!") return - if (istype(A, /obj/item/weapon/conversion_kit)) - ghettomodded = 0 - else - ghettomodded = 1 magazine.caliber = "357" - desc = "[initial(desc)] The barrel and chamber assembly seems to have been modified." - to_chat(user, "You reinforce the barrel of [src]! Now it will fire .357 rounds.") + desc = "The barrel and chamber assembly seems to have been modified." + to_chat(user, "You reinforce the barrel of [src]. Now it will fire .357 rounds.") else - to_chat(user, "You begin to revert the modifications to [src].") + to_chat(user, "You begin to revert the modifications to [src]...") if(magazine.ammo_count()) afterattack(user, user) //and again - user.visible_message("[src] goes off!", "[src] goes off in your face!") + user.visible_message("[src] goes off!", "[src] goes off in your face!") return if(do_after(user, 30, target = src)) if(magazine.ammo_count()) - to_chat(user, "You can't modify it!") + to_chat(user, "You can't modify it!") return - ghettomodded = 0 magazine.caliber = "38" desc = initial(desc) - to_chat(user, "You remove the modifications on [src]! Now it will fire .38 rounds.") - - - + to_chat(user, "You remove the modifications on [src]. Now it will fire .38 rounds.") /obj/item/weapon/gun/projectile/revolver/mateba name = "\improper Unica 6 auto-revolver" @@ -181,6 +151,21 @@ icon_state = "mateba" origin_tech = "combat=2;materials=2" +/obj/item/weapon/gun/projectile/revolver/golden + name = "\improper Golden revolver" + desc = "This ain't no game, ain't never been no show, And I'll gladly gun down the oldest lady you know. Uses .357 ammo." + icon_state = "goldrevolver" + fire_sound = 'sound/weapons/resonator_blast.ogg' + recoil = 8 + +/obj/item/weapon/gun/projectile/revolver/nagant + name = "nagant revolver" + desc = "An old model of revolver that originated in Russia. Able to be suppressed. Uses 7.62x38mmR ammo." + icon_state = "nagant" + origin_tech = "combat=3" + can_suppress = 1 + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev762 + // A gun to play Russian Roulette! // You can spin the chamber to randomize the position of the bullet. @@ -188,35 +173,95 @@ name = "\improper Russian Revolver" desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism that spins the chamber before each trigger pull." origin_tech = "combat=2;materials=2" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/rus357" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357 + var/spun = 0 /obj/item/weapon/gun/projectile/revolver/russian/New() ..() Spin() + update_icon() -/obj/item/weapon/gun/projectile/revolver/russian/attack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj) +/obj/item/weapon/gun/projectile/revolver/russian/proc/Spin() + chambered = null + var/random = rand(1, magazine.max_ammo) + if(random <= get_ammo(0,0)) + chamber_round() + spun = 1 - if(!chambered && target == user) - user.visible_message("\red *click*", "\red *click*") - return +/obj/item/weapon/gun/projectile/revolver/russian/attackby(obj/item/A, mob/user, params) + var/num_loaded = ..() + if(num_loaded) + user.visible_message("[user] loads a single bullet into the revolver and spins the chamber.", "You load a single bullet into the chamber and spin it.") + else + user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.") + if(get_ammo() > 0) + Spin() + update_icon() + A.update_icon() + return - if(isliving(target) && isliving(user)) - if(target == user) - var/obj/item/organ/external/affecting = user.zone_sel.selecting - if(affecting == "head") - var/obj/item/ammo_casing/AC = chambered - if(!process_chambered()) - user.visible_message("\red *click*", "\red *click*") - return - if(!in_chamber) - return - var/obj/item/projectile/P = new AC.projectile_type - playsound(user, fire_sound, 50, 1) - user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") - if(!P.nodamage) - user.apply_damage(300, BRUTE, affecting, sharp=1) // You are dead, dead, dead. +/obj/item/weapon/gun/projectile/revolver/russian/attack_self(mob/user) + if(!spun && can_shoot()) + user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.") + Spin() + else + var/num_unloaded = 0 + while (get_ammo() > 0) + var/obj/item/ammo_casing/CB + CB = magazine.get_round() + chambered = null + CB.loc = get_turf(src.loc) + CB.update_icon() + num_unloaded++ + if (num_unloaded) + to_chat(user, "You unload [num_unloaded] shell\s from [src].") + else + to_chat(user, "[src] is empty.") + +/obj/item/weapon/gun/projectile/revolver/russian/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) + if(flag) + if(!(target in user.contents) && ismob(target)) + if(user.a_intent == "harm") // Flogging action return - ..() + if(isliving(user)) + if(!can_trigger_gun(user)) + return + if(target != user) + if(ismob(target)) + to_chat(user, "A mechanism prevents you from shooting anyone but yourself!") + return + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(!spun) + to_chat(user, "You need to spin the revolver's chamber first!") + return + + spun = 0 + + if(chambered) + var/obj/item/ammo_casing/AC = chambered + if(AC.fire(user, user)) + playsound(user, fire_sound, 50, 1) + var/zone = check_zone(user.zone_selected) + var/obj/item/bodypart/affecting = H.get_bodypart(zone) + if(zone == "head" || zone == "eyes" || zone == "mouth") + shoot_self(user, affecting) + else + user.visible_message("[user.name] cowardly fires [src] at \his [affecting.name]!", "You cowardly fire [src] at your [affecting.name]!", "You hear a gunshot!") + return + + user.visible_message("*click*") + playsound(user, 'sound/weapons/empty.ogg', 100, 1) + +/obj/item/weapon/gun/projectile/revolver/russian/proc/shoot_self(mob/living/carbon/human/user, affecting = "head") + user.apply_damage(300, BRUTE, affecting) + user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a gunshot!") + +/obj/item/weapon/gun/projectile/revolver/capgun + name = "cap gun" + desc = "Looks almost like the real thing! Ages 8 and up." + origin_tech = "combat=1;materials=1" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/cap diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index e667d9323ce..a82caddeba1 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -10,7 +10,6 @@ force = 5.0 flags = CONDUCT origin_tech = "combat=8;materials=5" - projectile = /obj/item/missile var/missile_speed = 2 var/missile_range = 30 var/max_rockets = 1 @@ -18,7 +17,12 @@ /obj/item/weapon/gun/rocketlauncher/examine(mob/user) if(..(user, 2)) - to_chat(user, "\blue [rockets.len] / [max_rockets] rockets.") + to_chat(user, "[rockets.len] / [max_rockets] rockets.") + +/obj/item/weapon/gun/rocketlauncher/Destroy() + for(var/datum/D in rockets) + qdel(D) + rockets = null /obj/item/weapon/gun/rocketlauncher/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/ammo_casing/rocket)) @@ -26,15 +30,15 @@ user.drop_item() I.loc = src rockets += I - to_chat(user, "\blue You put the rocket in [src].") - to_chat(user, "\blue [rockets.len] / [max_rockets] rockets.") + to_chat(user, "You put the rocket in [src].") + to_chat(user, "[rockets.len] / [max_rockets] rockets.") else - to_chat(usr, "\red [src] cannot hold more rockets.") + to_chat(usr, "[src] cannot hold more rockets.") -/obj/item/weapon/gun/rocketlauncher/can_fire() +/obj/item/weapon/gun/rocketlauncher/can_shoot() return rockets.len -/obj/item/weapon/gun/rocketlauncher/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) +/obj/item/weapon/gun/rocketlauncher/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override = "") if(rockets.len) var/obj/item/ammo_casing/rocket/I = rockets[1] var/obj/item/missile/M = new projectile(user.loc) @@ -47,4 +51,4 @@ qdel(I) return else - to_chat(usr, "\red [src] is empty.") + to_chat(usr, "[src] is empty.") diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm new file mode 100644 index 00000000000..5c4856d2503 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -0,0 +1,179 @@ +/obj/item/weapon/gun/projectile/automatic/l6_saw + name = "\improper L6 SAW" + desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the reciever below the designation." + icon_state = "l6closed100" + item_state = "l6closedmag" + w_class = 5 + slot_flags = 0 + origin_tech = "combat=5;materials=1;syndicate=2" + mag_type = /obj/item/ammo_box/magazine/mm556x45 + weapon_weight = WEAPON_MEDIUM + fire_sound = 'sound/weapons/Gunshot3.ogg' + var/cover_open = 0 + can_suppress = 0 + burst_size = 3 + fire_delay = 1 + +/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_self(mob/user) + cover_open = !cover_open + to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.") + update_icon() + +/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() + icon_state = "l6[cover_open ? "open" : "closed"][magazine ? Ceiling(get_ammo(0)/12.5)*25 : "-empty"][suppressed ? "-suppressed" : ""]" + item_state = "l6[cover_open ? "openmag" : "closedmag"]" + +/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays + if(cover_open) + to_chat(user, "[src]'s cover is open! Close it before firing!") + else + ..() + update_icon() + +/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user) + if(loc != user) + ..() + return //let them pick it up + if(!cover_open || (cover_open && !magazine)) + ..() + else if(cover_open && magazine) + //drop the mag + magazine.update_icon() + magazine.loc = get_turf(src.loc) + user.put_in_hands(magazine) + magazine = null + update_icon() + to_chat(user, "You remove the magazine from [src].") + + +/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(obj/item/A, mob/user, params) + . = ..() + if(.) + return + if(!cover_open) + to_chat(user, "[src]'s cover is closed! You can't insert a new mag.") + return + ..() + +//ammo// + +/obj/item/projectile/bullet/saw + damage = 45 + armour_penetration = 5 + +/obj/item/projectile/bullet/saw/bleeding + damage = 20 + armour_penetration = 0 + +/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone) + . = ..() + if((blocked != 100) && istype(target, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = target + H.drip(35) + +/obj/item/projectile/bullet/saw/hollow + damage = 60 + armour_penetration = -10 + +/obj/item/projectile/bullet/saw/ap + damage = 40 + armour_penetration = 75 + +/obj/item/projectile/bullet/saw/incen + damage = 7 + armour_penetration = 0 + +obj/item/projectile/bullet/saw/incen/Move() + ..() + var/turf/location = get_turf(src) + if(location) + PoolOrNew(/obj/effect/hotspot, location) + location.hotspot_expose(700, 50, 1) + +/obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0) + . = ..() + if(iscarbon(target)) + var/mob/living/carbon/M = target + M.adjust_fire_stacks(3) + M.IgniteMob() + +//magazines// + +/obj/item/ammo_box/magazine/mm556x45 + name = "box magazine (5.56x45mm)" + icon_state = "a762-50" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/mm556x45 + caliber = "mm55645" + max_ammo = 50 + +/obj/item/ammo_box/magazine/mm556x45/bleeding + name = "box magazine (Bleeding 5.56x45mm)" + origin_tech = "combat=3" + ammo_type = /obj/item/ammo_casing/mm556x45/bleeding + +/obj/item/ammo_box/magazine/mm556x45/hollow + name = "box magazine (Hollow-Point 5.56x45mm)" + origin_tech = "combat=3" + ammo_type = /obj/item/ammo_casing/mm556x45/hollow + +/obj/item/ammo_box/magazine/mm556x45/ap + name = "box magazine (Armor Penetrating 5.56x45mm)" + origin_tech = "combat=4" + ammo_type = /obj/item/ammo_casing/mm556x45/ap + +/obj/item/ammo_box/magazine/mm556x45/incen + name = "box magazine (Incendiary 5.56x45mm)" + origin_tech = "combat=4" + ammo_type = /obj/item/ammo_casing/mm556x45/incen + +/obj/item/ammo_box/magazine/mm556x45/update_icon() + ..() + icon_state = "a762-[round(ammo_count(),10)]" + +/obj/item/ammo_box/magazine/mm556x45/buckshot //adminbus + name = "box magazine (buckshot)" + icon_state = "b762" + caliber = "shotgun" + ammo_type = /obj/item/ammo_casing/shotgun/buckshot + max_ammo = 300 + +/obj/item/ammo_box/magazine/mm556x45/buckshot/update_icon() + ..() + icon_state = "b762-[round(ammo_count(),10)]" + +/obj/item/ammo_box/magazine/m556x45/he // also adminbus + name = "box magazine (40mm high explosive)" + icon_state = "g762" + caliber = "40mm" + ammo_type =/obj/item/ammo_casing/a40mm + max_ammo = 25 + +/obj/item/ammo_box/magazine/mm556x45/he/update_icon() + ..() + icon_state = "g762-[round(ammo_count(),5)]" + +//casings// + +/obj/item/ammo_casing/mm556x45 + desc = "A 556x45mm bullet casing." + icon_state = "762-casing" + caliber = "mm55645" + projectile_type = /obj/item/projectile/bullet/saw + +/obj/item/ammo_casing/mm556x45/bleeding + desc = "A 556x45mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding." + icon_state = "762-casing" + projectile_type = /obj/item/projectile/bullet/saw/bleeding + +/obj/item/ammo_casing/mm556x45/hollow + desc = "A 556x45mm bullet casing designed to cause more damage to unarmored targets." + projectile_type = /obj/item/projectile/bullet/saw/hollow + +/obj/item/ammo_casing/mm556x45/ap + desc = "A 556x45mm bullet casing designed with a hardened-tipped core to help penetrate armored targets." + projectile_type = /obj/item/projectile/bullet/saw/ap + +/obj/item/ammo_casing/mm556x45/incen + desc = "A 556x45mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. " + projectile_type = /obj/item/projectile/bullet/saw/incen diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 7ae951ad908..1119a795505 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -8,26 +8,14 @@ flags = CONDUCT slot_flags = SLOT_BACK origin_tech = "combat=4;materials=2" + mag_type = /obj/item/ammo_box/magazine/internal/shot var/recentpump = 0 // to prevent spammage - mag_type = "/obj/item/ammo_box/magazine/internal/shot" -/obj/item/weapon/gun/projectile/shotgun/attackby(var/obj/item/A as obj, mob/user as mob, params) - var/num_loaded = 0 - if(istype(A, /obj/item/ammo_box)) - var/obj/item/ammo_box/AM = A - for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - var/didload = magazine.give_round(AC) - if(didload) - AM.stored_ammo -= AC - num_loaded++ - if(!didload || !magazine.multiload) - break - if(istype(A, /obj/item/ammo_casing)) - var/obj/item/ammo_casing/AC = A - if(magazine && magazine.give_round(AC)) - user.drop_item() - AC.loc = src - num_loaded++ +/obj/item/weapon/gun/projectile/shotgun/attackby(obj/item/A, mob/user, params) + . = ..() + if(.) + return + var/num_loaded = magazine.attackby(A, user, params, 1) if(num_loaded) to_chat(user, "You load [num_loaded] shell\s into \the [src]!") A.update_icon() @@ -40,8 +28,14 @@ /obj/item/weapon/gun/projectile/shotgun/chamber_round() return -/obj/item/weapon/gun/projectile/shotgun/attack_self(mob/living/user as mob) - if(recentpump) return +/obj/item/weapon/gun/projectile/shotgun/can_shoot() + if(!chambered) + return 0 + return (chambered.BB ? 1 : 0) + +/obj/item/weapon/gun/projectile/shotgun/attack_self(mob/living/user) + if(recentpump) + return pump(user) recentpump = 1 spawn(10) @@ -49,7 +43,7 @@ return -/obj/item/weapon/gun/projectile/shotgun/proc/pump(mob/M as mob) +/obj/item/weapon/gun/projectile/shotgun/proc/pump(mob/M) playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1) pump_unload(M) pump_reload(M) @@ -61,36 +55,41 @@ chambered.loc = get_turf(src)//Eject casing chambered.SpinAnimation(5, 1) chambered = null - if(in_chamber) - in_chamber = null /obj/item/weapon/gun/projectile/shotgun/proc/pump_reload(mob/M) - if(!magazine.ammo_count()) return 0 + if(!magazine.ammo_count()) + return 0 var/obj/item/ammo_casing/AC = magazine.get_round() //load next casing. chambered = AC /obj/item/weapon/gun/projectile/shotgun/examine(mob/user) - ..(user) + ..() if (chambered) to_chat(user, "A [chambered.BB ? "live" : "spent"] one is in the chamber.") /obj/item/weapon/gun/projectile/shotgun/isHandgun() //You cannot, in fact, holster a shotgun. return 0 +/obj/item/weapon/gun/projectile/shotgun/lethal + mag_type = /obj/item/ammo_box/magazine/internal/shot/lethal + // RIOT SHOTGUN // /obj/item/weapon/gun/projectile/shotgun/riot //for spawn in the armory name = "riot shotgun" desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control." icon_state = "riotshotgun" - mag_type = "/obj/item/ammo_box/magazine/internal/shotriot" + mag_type = /obj/item/ammo_box/magazine/internal/shotriot sawn_desc = "Come with me if you want to live." -/obj/item/weapon/gun/projectile/shotgun/riot/attackby(var/obj/item/A as obj, mob/user as mob, params) +/obj/item/weapon/gun/projectile/shotgun/riot/attackby(obj/item/A, mob/user, params) ..() - if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/gun/energy/plasmacutter)) + if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/gun/energy/plasmacutter)) sawoff(user) - + if(istype(A, /obj/item/weapon/melee/energy)) + var/obj/item/weapon/melee/energy/W = A + if(W.active) + sawoff(user) /////////////////////// // BOLT ACTION RIFLE // @@ -102,7 +101,7 @@ icon_state = "moistnugget" item_state = "moistnugget" slot_flags = 0 //no SLOT_BACK sprite, alas - mag_type = "/obj/item/ammo_box/magazine/internal/boltaction" + mag_type = /obj/item/ammo_box/magazine/internal/boltaction var/bolt_open = 0 /obj/item/weapon/gun/projectile/shotgun/boltaction/pump(mob/M) @@ -115,21 +114,21 @@ update_icon() //I.E. fix the desc return 1 -/obj/item/weapon/gun/projectile/shotgun/boltaction/attackby(var/obj/item/A as obj, mob/user as mob) +/obj/item/weapon/gun/projectile/shotgun/boltaction/attackby(obj/item/A, mob/user, params) if(!bolt_open) to_chat(user, "The bolt is closed!") return . = ..() /obj/item/weapon/gun/projectile/shotgun/boltaction/examine(mob/user) - ..(user) + ..() to_chat(user, "The bolt is [bolt_open ? "open" : "closed"].") /obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted name = "enchanted bolt action rifle" desc = "Careful not to lose your head." var/guns_left = 30 - mag_type = "/obj/item/ammo_box/magazine/internal/boltaction/enchanted" + mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted /obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/New() ..() @@ -137,9 +136,10 @@ pump() /obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/dropped() + ..() guns_left = 0 -/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/Fire(atom/target as mob|obj|turf|area, mob/living/carbon/user as mob|obj, params, reflex = 0) +/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/shoot_live_shot(mob/living/user as mob|obj, pointblank = 0, mob/pbtarget = null, message = 1) ..() if(guns_left) var/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/GUN = new @@ -156,6 +156,7 @@ /obj/item/ammo_box/magazine/internal/boltaction/enchanted max_ammo =1 + ammo_type = /obj/item/ammo_casing/a762/enchanted ///////////////////////////// // DOUBLE BARRELED SHOTGUN // @@ -166,22 +167,38 @@ desc = "A true classic." icon_state = "dshotgun" item_state = "shotgun" - w_class = 4.0 + w_class = 4 force = 10 flags = CONDUCT slot_flags = SLOT_BACK origin_tech = "combat=3;materials=1" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/dualshot" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/dual sawn_desc = "Omar's coming!" + unique_rename = 1 + unique_reskin = 1 -/obj/item/weapon/gun/projectile/revolver/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob, params) +/obj/item/weapon/gun/projectile/revolver/doublebarrel/New() + ..() + options["Default"] = "dshotgun" + options["Dark Red Finish"] = "dshotgun-d" + options["Ash"] = "dshotgun-f" + options["Faded Grey"] = "dshotgun-g" + options["Maple"] = "dshotgun-l" + options["Rosewood"] = "dshotgun-p" + options["Cancel"] = null + +/obj/item/weapon/gun/projectile/revolver/doublebarrel/attackby(obj/item/A, mob/user, params) ..() if(istype(A, /obj/item/ammo_box) || istype(A, /obj/item/ammo_casing)) chamber_round() - if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/gun/energy/plasmacutter)) + if(istype(A, /obj/item/weapon/melee/energy)) + var/obj/item/weapon/melee/energy/W = A + if(W.active) + sawoff(user) + if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/gun/energy/plasmacutter)) sawoff(user) -/obj/item/weapon/gun/projectile/revolver/doublebarrel/attack_self(mob/living/user as mob) +/obj/item/weapon/gun/projectile/revolver/doublebarrel/attack_self(mob/living/user) var/num_unloaded = 0 while (get_ammo() > 0) var/obj/item/ammo_casing/CB @@ -205,14 +222,17 @@ desc = "Essentially a tube that aims shotgun shells." icon_state = "ishotgun" item_state = "shotgun" - w_class = 4.0 + w_class = 4 force = 10 slot_flags = null origin_tech = "combat=2;materials=2" - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/improvised" + mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised sawn_desc = "I'm just here for the gasoline." + unique_rename = 0 + unique_reskin = 0 + var/slung = 0 -/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/attackby(var/obj/item/A as obj, mob/user as mob, params) +/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/attackby(obj/item/A, mob/user, params) ..() if(istype(A, /obj/item/stack/cable_coil) && !sawn_state) var/obj/item/stack/cable_coil/C = A @@ -220,21 +240,34 @@ slot_flags = SLOT_BACK icon_state = "ishotgunsling" to_chat(user, "You tie the lengths of cable to the shotgun, making a sling.") + slung = 1 update_icon() else to_chat(user, "You need at least ten lengths of cable if you want to make a sling.") return +/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/update_icon() + ..() + if (slung && (slot_flags & SLOT_BELT) ) + slung = 0 + icon_state = "ishotgun-sawn" + // Sawing guns related procs // -/obj/item/weapon/gun/projectile/proc/blow_up(mob/user as mob) - if(get_ammo()) - afterattack(user, user) - playsound(user, fire_sound, 50, 1) - user.visible_message("The [src] goes off!", "The [src] goes off in your face!") - return +/obj/item/weapon/gun/projectile/proc/blow_up(mob/user) + . = 0 + for(var/obj/item/ammo_casing/AC in magazine.stored_ammo) + if(AC.BB) + process_fire(user, user,0) + . = 1 -/obj/item/weapon/gun/projectile/proc/sawoff(mob/user as mob) +/obj/item/weapon/gun/projectile/shotgun/blow_up(mob/user) + . = 0 + if(chambered && chambered.BB) + process_fire(user, user,0) + . = 1 + +/obj/item/weapon/gun/projectile/proc/sawoff(mob/user) if(sawn_state == SAWN_OFF) to_chat(user, "\The [src] is already shortened.") return @@ -256,7 +289,7 @@ name = "sawn-off [src.name]" desc = sawn_desc icon_state = "[icon_state]-sawn" - w_class = 3.0 + w_class = 3 item_state = "gun" slot_flags &= ~SLOT_BACK //you can't sling it on your back slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) @@ -266,56 +299,64 @@ else sawn_state = SAWN_INTACT -/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog - name = "\improper 'Bulldog' Shotgun" - desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines." - icon_state = "bulldog" - item_state = "bulldog" - w_class = 3.0 - origin_tech = "combat=5;materials=4;syndicate=6" - mag_type = "/obj/item/ammo_box/magazine/m12g" - fire_sound = 'sound/weapons/Gunshot4.ogg' - can_suppress = 0 - burst_size = 1 - fire_delay = 0 - action_button_name = null +// Automatic Shotguns// -/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/New() +/obj/item/weapon/gun/projectile/shotgun/automatic/shoot_live_shot(mob/living/user as mob|obj) ..() - update_icon() - return - -/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/proc/update_magazine() - if(magazine) - overlays.Cut() - overlays += "[magazine.icon_state]" - return - -/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/update_icon() - overlays.Cut() - update_magazine() - icon_state = "bulldog[chambered ? "" : "-e"]" - return - -/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - empty_alarm() - return - -/obj/item/weapon/gun/projectile/shotgun/automatic/Fire(mob/living/user as mob|obj) - ..() - pump(user) - -// COMBAT SHOTGUN // + src.pump(user) /obj/item/weapon/gun/projectile/shotgun/automatic/combat name = "combat shotgun" desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath." icon_state = "cshotgun" origin_tech = "combat=5;materials=2" - mag_type = "/obj/item/ammo_box/magazine/internal/shotcom" + mag_type = /obj/item/ammo_box/magazine/internal/shot/com w_class = 5 +//Dual Feed Shotgun + +/obj/item/weapon/gun/projectile/shotgun/automatic/dual_tube + name = "cycler shotgun" + desc = "An advanced shotgun with two separate magazine tubes, allowing you to quickly toggle between ammo types." + icon_state = "cycler" + origin_tech = "combat=4;materials=2" + mag_type = /obj/item/ammo_box/magazine/internal/shot/tube + w_class = 5 + var/toggled = 0 + var/obj/item/ammo_box/magazine/internal/shot/alternate_magazine + +/obj/item/weapon/gun/projectile/shotgun/automatic/dual_tube/New() + ..() + if (!alternate_magazine) + alternate_magazine = new mag_type(src) + +/obj/item/weapon/gun/projectile/shotgun/automatic/dual_tube/attack_self(mob/living/user) + if(!chambered && magazine.contents.len) + pump() + else + toggle_tube(user) + +/obj/item/weapon/gun/projectile/shotgun/automatic/dual_tube/proc/toggle_tube(mob/living/user) + var/current_mag = magazine + var/alt_mag = alternate_magazine + magazine = alt_mag + alternate_magazine = current_mag + toggled = !toggled + if(toggled) + to_chat(user, "You switch to tube B.") + else + to_chat(user, "You switch to tube A.") + +/obj/item/weapon/gun/projectile/shotgun/automatic/dual_tube/AltClick(mob/living/user) + if(user.incapacitated() || !Adjacent(user) || !istype(user)) + return + pump() + +/obj/item/ammo_box/magazine/internal/shot/tube + name = "dual feed shotgun internal tube" + ammo_type = /obj/item/ammo_casing/shotgun/rubbershot + max_ammo = 4 + //caneshotgun /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane @@ -330,7 +371,7 @@ can_unsuppress = 0 slot_flags = null origin_tech = "" // NO GIVAWAYS - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/improvised" + mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised sawn_desc = "I'm sorry, but why did you saw your cane in the first place?" attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") fire_sound = 'sound/weapons/Gunshot_silenced.ogg' @@ -354,4 +395,4 @@ to_chat(user, "\icon[src] That's [f_name]") if(desc) - to_chat(user, desc) \ No newline at end of file + to_chat(user, desc) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index ee70bb3f80b..5033d0f8a0e 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -5,7 +5,7 @@ item_state = "sniper" recoil = 2 heavy_weapon = 1 - mag_type = "/obj/item/ammo_box/magazine/sniper_rounds" + mag_type = /obj/item/ammo_box/magazine/sniper_rounds fire_delay = 40 origin_tech = "combat=8" can_unsuppress = 1 @@ -35,18 +35,18 @@ max_ammo = 6 caliber = ".50" -/obj/item/ammo_casing/point50 - desc = "A .50 bullet casing." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper - icon_state = ".50" - /obj/item/ammo_box/magazine/sniper_rounds/update_icon() if(ammo_count()) icon_state = "[initial(icon_state)]-ammo" else icon_state = "[initial(icon_state)]" +/obj/item/ammo_casing/point50 + desc = "A .50 bullet casing." + caliber = ".50" + projectile_type = /obj/item/projectile/bullet/sniper + icon_state = ".50" + /obj/item/projectile/bullet/sniper damage = 70 stun = 5 @@ -69,8 +69,6 @@ origin_tech = "combat=6;syndicate=3" ammo_type = /obj/item/ammo_casing/soporific max_ammo = 3 - caliber = ".50" - icon_state = ".50" /obj/item/ammo_casing/soporific desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." @@ -79,10 +77,10 @@ icon_state = ".50" /obj/item/projectile/bullet/sniper/soporific + armour_penetration = 0 nodamage = 1 stun = 0 weaken = 0 - armour_penetration = 0 breakthings = FALSE /obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone) @@ -102,8 +100,6 @@ origin_tech = "combat=7;syndicate=5" ammo_type = /obj/item/ammo_casing/haemorrhage max_ammo = 5 - caliber = ".50" - icon_state = ".50" /obj/item/ammo_casing/haemorrhage desc = "A .50 bullet casing, specialised in causing massive bloodloss" @@ -112,16 +108,16 @@ icon_state = ".50" /obj/item/projectile/bullet/sniper/haemorrhage + armour_penetration = 15 damage = 15 stun = 0 weaken = 0 breakthings = FALSE - armour_penetration = 15 /obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/H = target - H.drip(1000) + H.drip(100) return ..() @@ -145,4 +141,4 @@ forcedodge = 1 stun = 0 weaken = 0 - breakthings = FALSE \ No newline at end of file + breakthings = FALSE diff --git a/code/modules/projectiles/guns/projectile/toy.dm b/code/modules/projectiles/guns/projectile/toy.dm index 7bb290f4f46..e533710b604 100644 --- a/code/modules/projectiles/guns/projectile/toy.dm +++ b/code/modules/projectiles/guns/projectile/toy.dm @@ -4,7 +4,8 @@ icon = 'icons/obj/toyguns.dmi' icon_state = "saber" item_state = "gun" - mag_type = "/obj/item/ammo_box/magazine/toy/smg" + mag_type = /obj/item/ammo_box/magazine/toy/smg + fire_sound = 'sound/weapons/Gunshot_smg.ogg' force = 0 throwforce = 0 burst_size = 3 @@ -12,15 +13,15 @@ clumsy_check = 0 needs_permit = 0 -/obj/item/weapon/gun/projectile/automatic/toy/process_chambered() - return ..(0, 1) +/obj/item/weapon/gun/projectile/automatic/toy/process_chamber(eject_casing = 0, empty_chamber = 1) + ..() /obj/item/weapon/gun/projectile/automatic/toy/pistol name = "foam force pistol" desc = "A small, easily concealable toy handgun. Ages 8 and up." icon_state = "pistol" w_class = 2 - mag_type = "/obj/item/ammo_box/magazine/toy/pistol" + mag_type = /obj/item/ammo_box/magazine/toy/pistol fire_sound = 'sound/weapons/Gunshot.ogg' can_suppress = 0 burst_size = 1 @@ -34,35 +35,12 @@ /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot name = "foam force riot pistol" desc = "RIOT! Ages 8 and up." + mag_type = /obj/item/ammo_box/magazine/toy/pistol/riot /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot/New() magazine = new /obj/item/ammo_box/magazine/toy/pistol/riot(src) ..() -/obj/item/weapon/gun/projectile/automatic/c20r/toy - name = "donksoft SMG" - desc = "A bullpup two-round burst toy SMG, designated 'C-20r'. Ages 8 and up." - icon = 'icons/obj/toyguns.dmi' - can_suppress = 0 - needs_permit = 0 - mag_type = "/obj/item/ammo_box/magazine/toy/smgm45" - -/obj/item/weapon/gun/projectile/automatic/c20r/toy/process_chambered() - return ..(0, 1) - -/obj/item/weapon/gun/projectile/automatic/l6_saw/toy - name = "donksoft LMG" - desc = "A heavily modified toy light machine gun, designated 'L6 SAW'. Ages 8 and up." - icon = 'icons/obj/toyguns.dmi' - can_suppress = 0 - needs_permit = 0 - mag_type = "/obj/item/ammo_box/magazine/toy/m762" - -/obj/item/weapon/gun/projectile/automatic/l6_saw/toy/process_chambered() - return ..(0, 1) - - - /obj/item/weapon/gun/projectile/shotgun/toy name = "foam force shotgun" desc = "A toy shotgun with wood furniture and a four-shell capacity underneath. Ages 8 and up." @@ -70,31 +48,52 @@ force = 0 throwforce = 0 origin_tech = null - mag_type = "/obj/item/ammo_box/magazine/internal/shot/toy" + mag_type = /obj/item/ammo_box/magazine/internal/shot/toy clumsy_check = 0 needs_permit = 0 -/obj/item/weapon/gun/projectile/shotgun/toy/pump_unload() - if(chambered)//We have a shell in the chamber - chambered = null - if(in_chamber) - in_chamber = null +/obj/item/weapon/gun/projectile/shotgun/toy/process_chamber() + ..() + if(chambered && !chambered.BB) + qdel(chambered) /obj/item/weapon/gun/projectile/shotgun/toy/crossbow name = "foam force crossbow" desc = "A weapon favored by many overactive children. Ages 8 and up." icon_state = "crossbow" item_state = "crossbow" - mag_type = "/obj/item/ammo_box/magazine/internal/shot/toy/crossbow" + mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/crossbow fire_sound = 'sound/items/syringeproj.ogg' slot_flags = SLOT_BELT w_class = 2 +/obj/item/weapon/gun/projectile/automatic/c20r/toy + name = "donksoft SMG" + desc = "A bullpup two-round burst toy SMG, designated 'C-20r'. Ages 8 and up." + icon = 'icons/obj/toyguns.dmi' + can_suppress = 0 + needs_permit = 0 + mag_type = /obj/item/ammo_box/magazine/toy/smgm45 + +/obj/item/weapon/gun/projectile/automatic/c20r/toy/process_chamber(eject_casing = 0, empty_chamber = 1) + ..() + +/obj/item/weapon/gun/projectile/automatic/l6_saw/toy + name = "donksoft LMG" + desc = "A heavily modified toy light machine gun, designated 'L6 SAW'. Ages 8 and up." + icon = 'icons/obj/toyguns.dmi' + can_suppress = 0 + needs_permit = 0 + mag_type = /obj/item/ammo_box/magazine/toy/m762 + +/obj/item/weapon/gun/projectile/automatic/l6_saw/toy/process_chamber(eject_casing = 0, empty_chamber = 1) + ..() + /obj/item/weapon/gun/projectile/shotgun/toy/tommygun name = "tommy gun" desc = "Looks almost like the real thing! Great for practicing Drive-bys. Ages 8 and up." icon = 'icons/obj/gun.dmi' icon_state = "tommy" item_state = "shotgun" - mag_type = "/obj/item/ammo_box/magazine/internal/shot/toy/tommygun" + mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/tommygun w_class = 2 diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 0e43d550c85..45a590bd420 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -13,25 +13,41 @@ var/list/syringes = list() var/max_syringes = 1 -/obj/item/weapon/gun/syringe/process_chambered() - if(!syringes.len) return 0 +/obj/item/weapon/gun/syringe/New() + ..() + chambered = new /obj/item/ammo_casing/syringegun(src) + +/obj/item/weapon/gun/syringe/newshot() + if(!syringes.len) + return var/obj/item/weapon/reagent_containers/syringe/S = syringes[1] - if(!S) return 0 + if(!S) + return + + chambered.BB = new S.projectile_type (src) - in_chamber = new /obj/item/projectile/bullet/dart/syringe(src) S.reagents.trans_to(in_chamber, S.reagents.total_volume) - in_chamber.name = S.name + chambered.BB.name = S.name syringes.Remove(S) qdel(S) - return 1 + return + +/obj/item/weapon/gun/syringe/process_chamber() + return + +/obj/item/weapon/gun/syringe/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, params) + if(target == loc) + return + newshot() + ..() /obj/item/weapon/gun/syringe/examine(mob/user) - ..(user) + ..() to_chat(user, "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining.") - + /obj/item/weapon/gun/syringe/attack_self(mob/living/user as mob) if(!syringes.len) to_chat(user, "[src] is empty.") @@ -47,16 +63,17 @@ return 1 -/obj/item/weapon/gun/syringe/attackby(var/obj/item/A as obj, mob/user as mob, var/show_msg = 1, params) +/obj/item/weapon/gun/syringe/attackby(obj/item/A, mob/user, params, show_msg = 1) if(istype(A, /obj/item/weapon/reagent_containers/syringe)) if(syringes.len < max_syringes) - user.drop_item() + if(!user.unEquip(A)) + return to_chat(user, "You load [A] into \the [src]!") syringes.Add(A) A.forceMove(src) return 1 else - to_chat(usr, "[src] cannot hold more syringes.") + to_chat(user, "[src] cannot hold more syringes.") return 0 /obj/item/weapon/gun/syringe/rapidsyringe @@ -64,7 +81,7 @@ desc = "A modification of the syringe gun design, using a rotating cylinder to store up to six syringes." icon_state = "rapidsyringegun" max_syringes = 6 - + /obj/item/weapon/gun/syringe/syndicate name = "dart pistol" desc = "A small spring-loaded sidearm that functions identically to a syringe gun." diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5a028a1084a..0cba3aa5fbf 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -1,353 +1,224 @@ -/* -#define BRUTE "brute" -#define BURN "burn" -#define TOX "tox" -#define OXY "oxy" -#define CLONE "clone" - -#define ADD "add" -#define SET "set" -*/ - /obj/item/projectile name = "projectile" icon = 'icons/obj/projectiles.dmi' icon_state = "bullet" - density = 1 + density = 0 unacidable = 1 anchored = 1 //There's a reason this is here, Mport. God fucking damn it -Agouri. Find&Fix by Pete. The reason this is here is to stop the curving of emitter shots. + flags = ABSTRACT pass_flags = PASSTABLE mouse_opacity = 0 hitsound = 'sound/weapons/pierce.ogg' - animate_movement = 0 - var/bumped = 0 //Prevents it from hitting more than one guy at once + var/hitsound_wall = "" + pressure_resistance = INFINITY var/def_zone = "" //Aiming at var/mob/firer = null//Who shot it - var/silenced = 0 //Attack message + var/obj/item/ammo_casing/ammo_casing = null + var/suppressed = 0 //Attack message var/yo = null var/xo = null var/current = null - var/obj/shot_from = null // the object which shot us var/atom/original = null // the original target clicked var/turf/starting = null // the projectile's starting turf var/list/permutated = list() // we've passed through these atoms, don't try to hit them again var/paused = FALSE //for suspending the projectile midair - var/p_x = 16 var/p_y = 16 // the pixel location of the tile that the player clicked. Default is the center + var/speed = 1 //Amount of deciseconds it takes for projectile to travel + var/Angle = 0 + var/spread = 0 //amount (in degrees) of projectile spread + var/legacy = 0 //legacy projectile system + animate_movement = 0 var/damage = 10 var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here var/nodamage = 0 //Determines if the projectile will skip any damage inflictions var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid var/projectile_type = "/obj/item/projectile" - var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile. - //Effects + var/range = 50 //This will de-increment every step. When 0, it will delete the projectile. + //Effects var/stun = 0 var/weaken = 0 var/paralyze = 0 var/irradiate = 0 - var/slur = 0 var/stutter = 0 + var/slur = 0 var/eyeblur = 0 var/drowsy = 0 var/stamina = 0 var/jitter = 0 var/embed = 0 // whether or not the projectile can embed itself in the mob - var/forcedodge = 0 + var/forcedodge = 0 //to pass through everything - var/range = 0 - var/proj_hit = 0 +/obj/item/projectile/New() + permutated = list() + return ..() - var/chatlog_attacks = 1 +/obj/item/projectile/proc/Range() + range-- + if(range <= 0 && loc) + on_range() - var/speed = 1 //Amount of deciseconds it takes for projectile to travel. Animation is adjusted accordingly. - var/Angle = 0 //For new projectiles - var/spread = 0 //Amount of degrees by which the projectiles will be spread DURING MOVEMENT. It exists for chaotic types of projectiles, like bees or something. - var/legacy = 0 //Use the legacy projectile system or new pixel movement? +/obj/item/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range + qdel(src) - proc/delete() - // Garbage collect the projectiles - loc = null - - proc/Range() - if(range) - range-- - if(range <= 0) - on_range() - else - return - - proc/on_range() //if we want there to be effects when they reach the end of their range - proj_hit = 1 - del(src) - - proc/on_hit(var/atom/target, var/blocked = 0, var/hit_zone) - if(!isliving(target)) return 0 - if(isanimal(target)) return 0 - var/mob/living/L = target - return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) - - proc/OnFired() //if assigned, allows for code when the projectile gets fired - return 1 - - proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. - if(!istype(target) || !istype(user)) - return 0 - var/obj/item/projectile/test/in_chamber = new /obj/item/projectile/test(get_step_to(user,target)) //Making the test.... - in_chamber.target = target - in_chamber.flags = flags //Set the flags... - in_chamber.pass_flags = pass_flags //And the pass flags to that of the real projectile... - in_chamber.firer = user - var/output = in_chamber.process() //Test it! - del(in_chamber) //No need for it anymore - return output //Send it back to the gun! - - Bump(atom/A as mob|obj|turf|area) - if(A == firer) - loc = A.loc - return 0 //cannot shoot yourself - - if(bumped) - return 1 - bumped = 1 - if(firer && istype(A, /mob)) - var/mob/M = A - if(!istype(A, /mob/living)) - loc = A.loc - return 0// nope.avi - - var/reagent_note - if(reagents && reagents.reagent_list) - reagent_note = " REAGENTS:" - for(var/datum/reagent/R in reagents.reagent_list) - reagent_note += R.id + " (" - reagent_note += num2text(R.volume) + ") " - //Lower accurancy/longer range tradeoff. Distance matters a lot here, so at - // close distance, actually RAISE the chance to hit. - var/distance = get_dist(get_turf(A), starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations. - def_zone = ran_zone(def_zone, max(100-(7*distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use. - /* - if(!def_zone) - visible_message("\blue \The [src] misses [M] narrowly!") - forcedodge = -1 - else - */ - if(ishuman(A)) - var/mob/living/carbon/human/H = A - var/obj/item/organ/external/organ = H.get_organ(check_zone(def_zone)) - if(isnull(organ)) - return - if(silenced) - playsound(loc, hitsound, 5, 1, -1) - to_chat(M, "\red You've been shot in the [parse_zone(def_zone)] by the [src.name]!") - else - playsound(loc, hitsound, 20, 1, -1) - visible_message("\red [A.name] is hit by the [src.name] in the [parse_zone(def_zone)]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter - if(istype(firer, /mob)) - M.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [M]/[M.ckey] with a [src.type][reagent_note]" - firer.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [M]/[M.ckey] with a [src.type][reagent_note]" - if(M.ckey && chatlog_attacks) - msg_admin_attack("[key_name_admin(firer)] shot [key_name_admin(M)] with a [src][reagent_note]") //BS12 EDIT ALG - if(!iscarbon(firer)) - M.LAssailant = null - else - M.LAssailant = firer - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [key_name(M)] with a [src][reagent_note]" - if(M.ckey && chatlog_attacks) - msg_admin_attack("UNKNOWN shot [key_name_admin(M)] with a [src][reagent_note] (JMP)") //BS12 EDIT ALG - - spawn(0) - if(A) - var/turf/new_loc = get_turf(A) - var/permutation = A.bullet_act(src, def_zone) // searches for return value, could be deleted after run so check A isn't null - if(permutation == -1 || forcedodge)// the bullet passes through a dense object! - spawn(1) - bumped = 0 // reset bumped variable... after a delay. We don't want the projectile to hit AGAIN. Fixes deflecting projectiles. - loc = new_loc - permutated.Add(A) - return 0 - if(istype(A,/turf)) - for(var/obj/O in A) - O.bullet_act(src) - for(var/mob/M in A) - M.bullet_act(src, def_zone) - if(!istype(src, /obj/item/projectile/beam/lightning)) - density = 0 - invisibility = 101 - del(src) - return 1 - - - CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - - if(istype(mover, /obj/item/projectile)) - return prob(95) - else - return 1 - - - Process_Spacemove(var/movement_dir = 0) - return 1 //Bullets don't drift in space - - - - process(var/setAngle) - if(setAngle) Angle = setAngle - if(!legacy) - spawn() //New projectile system - while(loc) - if(kill_count < 1) - del(src) - return - if(!paused) - kill_count-- - if((!( current ) || loc == current)) - current = locate(Clamp(x+xo,1,world.maxx),Clamp(y+yo,1,world.maxy),z) - - if(!Angle) - Angle=round(Get_Angle(src,current)) -// to_chat(world, "[Angle] angle") - //overlays.Cut() - //var/icon/I=new(initial(icon),icon_state) //using initial(icon) makes sure that the angle for that is reset as well - //I.Turn(Angle) - //I.DrawBox(rgb(255,0,0,50),1,1,32,32) - //icon = I - if(spread) //Chaotic spread - Angle += (rand() - 0.5) * spread - var/matrix/M = new//matrix(transform) - M.Turn(Angle) - transform = M - - var/Pixel_x=round(sin(Angle)+16*sin(Angle)*2) - var/Pixel_y=round(cos(Angle)+16*cos(Angle)*2) - var/pixel_x_offset = pixel_x + Pixel_x - var/pixel_y_offset = pixel_y + Pixel_y - var/new_x = x - var/new_y = y - //Not sure if using whiles for this is good - while(pixel_x_offset > 16) -// to_chat(world, "Pre-adjust coords (x++): xy [pixel_x] xy offset [pixel_x_offset]") - pixel_x_offset -= 32 - pixel_x -= 32 - new_x++// x++ - while(pixel_x_offset < -16) -// to_chat(world, "Pre-adjust coords (x--): xy [pixel_x] xy offset [pixel_x_offset]") - pixel_x_offset += 32 - pixel_x += 32 - new_x-- - - while(pixel_y_offset > 16) -// to_chat(world, "Pre-adjust coords (y++): py [pixel_y] py offset [pixel_y_offset]") - pixel_y_offset -= 32 - pixel_y -= 32 - new_y++ - while(pixel_y_offset < -16) -// to_chat(world, "Pre-adjust coords (y--): py [pixel_y] py offset [pixel_y_offset]") - pixel_y_offset += 32 - pixel_y += 32 - new_y-- - - speed = round(speed) //Just in case. - step_towards(src, locate(new_x, new_y, z)) //Original projectiles stepped towards 'current' - if(speed <= 1) //We should really only animate at speed 2 - pixel_x = pixel_x_offset - pixel_y = pixel_y_offset - else - animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = max(1, (speed <= 3 ? speed - 1 : speed))) - - /* - var/turf/T = get_turf(src) - if(T) - T.color = "#6666FF" - spawn(10) - T.color = initial(T.color) - */ - - if(!bumped && ((original && original.layer>=2.75) || ismob(original))) - if(loc == get_turf(original)) - if(!(original in permutated)) - Bump(original) - Range() - sleep(max(1, speed)) - else - spawn() //Old projectile system - while(loc) - if(kill_count < 1) - del(src) - return - if(!paused) - kill_count-- - if((!( current ) || loc == current)) - current = locate(Clamp(x+xo,1,world.maxx),Clamp(y+yo,1,world.maxy),z) - if(!Angle) - Angle=round(Get_Angle(src,current)) - var/matrix/M = new//matrix(transform) - M.Turn(Angle) - transform = M //So there's no need to give icons directions again - step_towards(src, current) - if(!bumped && ((original && original.layer>=2.75) || ismob(original))) - if(loc == get_turf(original)) - if(!(original in permutated)) - Bump(original) - Range() - sleep(1) - - proc/dumbfire(var/dir) - current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better. - process() - -/obj/item/projectile/test //Used to see if you can hit them. - invisibility = 101 //Nope! Can't see me! - yo = null - xo = null - var/target = null - var/result = 0 //To pass the message back to the gun. - - Bump(atom/A as mob|obj|turf|area) - if(A == firer) - loc = A.loc - return //cannot shoot yourself - if(istype(A, /obj/item/projectile)) - return - if(istype(A, /mob/living) || istype(A, /obj/mecha) || istype(A, /obj/spacepod) || istype(A, /obj/vehicle)) - result = 2 //We hit someone, return 1! - return - result = 1 - return - - process() - var/turf/curloc = get_turf(src) - var/turf/targloc = get_turf(target) - if(!curloc || !targloc) - return 0 - yo = targloc.y - curloc.y - xo = targloc.x - curloc.x - target = targloc - while(src) //Loop on through! - if(result) - return (result - 1) - if((!( target ) || loc == target)) - target = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) //Finding the target turf at map edge - step_towards(src, target) - var/mob/living/M = locate() in get_turf(src) - if(istype(M)) //If there is someting living... - return 1 //Return 1 - else - M = locate() in get_step(src,target) - if(istype(M)) - return 1 - -/proc/check_trajectory(atom/target as mob|obj, atom/firer as mob|obj, var/pass_flags=PASSTABLE|PASSGLASS|PASSGRILLE, flags=null) //Checks if you can hit them or not. - if(!istype(target) || !istype(firer)) +/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone) + if(!isliving(target)) return 0 - var/obj/item/projectile/test/trace = new /obj/item/projectile/test(get_turf(firer)) //Making the test.... - trace.target = target - if(!isnull(flags)) - trace.flags = flags //Set the flags... - trace.pass_flags = pass_flags //And the pass flags to that of the real projectile... - var/output = trace.process() //Test it! - qdel(trace) //No need for it anymore - return output //Send it back to the gun! + var/mob/living/L = target + if(blocked < 100) // not completely blocked + var/organ_hit_text = "" + if(L.has_limbs) + organ_hit_text = " in \the [parse_zone(def_zone)]" + if(suppressed) + playsound(loc, hitsound, 5, 1, -1) + to_chat(L, "You're shot by \a [src][organ_hit_text]!") + else + if(hitsound) + var/volume = vol_by_damage() + playsound(loc, hitsound, volume, 1, -1) + L.visible_message("[L] is hit by \a [src][organ_hit_text]!", \ + "[L] is hit by \a [src][organ_hit_text]!") //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter + L.on_hit(type) + + var/reagent_note + if(reagents && reagents.reagent_list) + reagent_note = " REAGENTS:" + for(var/datum/reagent/R in reagents.reagent_list) + reagent_note += R.id + " (" + reagent_note += num2text(R.volume) + ") " + add_logs(L, firer, "shot", src, reagent_note) + return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) + +/obj/item/projectile/proc/vol_by_damage() + if(src.damage) + return Clamp((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100 + else + return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume + +/obj/item/projectile/Bump(atom/A, yes) + if(!yes) //prevents double bumps. + return + if(firer) + if(A == firer || (A == firer.loc && istype(A, /obj/mecha))) //cannot shoot yourself or your mech + loc = A.loc + return 0 + + var/distance = get_dist(get_turf(A), starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations. + def_zone = ran_zone(def_zone, max(100-(7*distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use. + + if(ishuman(A)) + var/mob/living/carbon/human/H = A + var/obj/item/organ/external/organ = H.get_organ(check_zone(def_zone)) + if(isnull(organ)) + return + else if(isturf(A) && hitsound_wall) + var/volume = Clamp(vol_by_damage() + 20, 0, 100) + if(suppressed) + volume = 5 + playsound(loc, hitsound_wall, volume, 1, -1) + + var/turf/target_turf = get_turf(A) + + var/permutation = A.bullet_act(src, def_zone) // searches for return value, could be deleted after run so check A isn't null + if(permutation == -1 || forcedodge)// the bullet passes through a dense object! + loc = target_turf + if(A) + permutated.Add(A) + return 0 + else + if(A && A.density && !ismob(A) && !(A.flags & ON_BORDER)) //if we hit a dense non-border obj or dense turf then we also hit one of the mobs on that tile. + var/list/mobs_list = list() + for(var/mob/living/L in target_turf) + mobs_list += L + if(mobs_list.len) + var/mob/living/picked_mob = pick(mobs_list) + picked_mob.bullet_act(src, def_zone) + qdel(src) + +/obj/item/projectile/Process_Spacemove(var/movement_dir = 0) + return 1 //Bullets don't drift in space + +/obj/item/projectile/proc/fire(var/setAngle) + if(setAngle) + Angle = setAngle + if(!legacy) //new projectiles + set waitfor = 0 + while(loc) + if(!paused) + if((!( current ) || loc == current)) + current = locate(Clamp(x+xo,1,world.maxx),Clamp(y+yo,1,world.maxy),z) + + if(!Angle) + Angle=round(Get_Angle(src,current)) + if(spread) + Angle += (rand() - 0.5) * spread + var/matrix/M = new + M.Turn(Angle) + transform = M + + var/Pixel_x=round(sin(Angle)+16*sin(Angle)*2) + var/Pixel_y=round(cos(Angle)+16*cos(Angle)*2) + var/pixel_x_offset = pixel_x + Pixel_x + var/pixel_y_offset = pixel_y + Pixel_y + var/new_x = x + var/new_y = y + + while(pixel_x_offset > 16) + pixel_x_offset -= 32 + pixel_x -= 32 + new_x++// x++ + while(pixel_x_offset < -16) + pixel_x_offset += 32 + pixel_x += 32 + new_x-- + + while(pixel_y_offset > 16) + pixel_y_offset -= 32 + pixel_y -= 32 + new_y++ + while(pixel_y_offset < -16) + pixel_y_offset += 32 + pixel_y += 32 + new_y-- + + speed = round(speed) + step_towards(src, locate(new_x, new_y, z)) + if(speed <= 1) + pixel_x = pixel_x_offset + pixel_y = pixel_y_offset + else + animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = max(1, (speed <= 3 ? speed - 1 : speed))) + + if(original && (original.layer>=2.75) || ismob(original)) + if(loc == get_turf(original)) + if(!(original in permutated)) + Bump(original, 1) + Range() + sleep(max(1, speed)) + else //old projectile system + set waitfor = 0 + while(loc) + if(!paused) + if((!( current ) || loc == current)) + current = locate(Clamp(x+xo,1,world.maxx),Clamp(y+yo,1,world.maxy),z) + step_towards(src, current) + if(original && (original.layer>=2.75) || ismob(original)) + if(loc == get_turf(original)) + if(!(original in permutated)) + Bump(original, 1) + Range() + sleep(1) + +obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it. + ..() + if(isliving(AM) && AM.density && !checkpass(PASSMOB)) + Bump(AM, 1) + +/obj/item/projectile/Destroy() + ammo_casing = null + return ..() + +/obj/item/projectile/proc/dumbfire(var/dir) + current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better. + fire() diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index e86d8e7a739..b11c4f66961 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -5,50 +5,27 @@ damage = 20 damage_type = BURN hitsound = 'sound/weapons/sear.ogg' + hitsound_wall = 'sound/weapons/effects/searwall.ogg' flag = "laser" eyeblur = 2 -/obj/item/projectile/practice - name = "laser" - icon_state = "laser" - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE +/obj/item/projectile/beam/laser + +/obj/item/projectile/beam/laser/heavylaser + name = "heavy laser" + icon_state = "heavylaser" + damage = 40 + +/obj/item/projectile/beam/practice + name = "practice laser" damage = 0 - hitsound = null - damage_type = BURN - flag = "laser" - eyeblur = 2 - chatlog_attacks = 0 + nodamage = 1 /obj/item/projectile/beam/scatter name = "laser pellet" icon_state = "scatterlaser" damage = 5 - -/obj/item/projectile/beam/heavylaser - name = "heavy laser" - icon_state = "heavylaser" - damage = 40 - -/obj/item/projectile/beam/sniper - name = "sniper beam" - icon_state = "sniperlaser" - damage = 60 - stun = 5 - weaken = 5 - stutter = 5 - - -/obj/item/projectile/beam/immolator - name = "immolation beam" - -/obj/item/projectile/beam/immolator/on_hit(var/atom/target, var/blocked = 0) - . = ..() - if(istype(target, /mob/living/carbon)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(1) - M.IgniteMob() - /obj/item/projectile/beam/xray name = "xray beam" icon_state = "xray" @@ -82,41 +59,80 @@ name = "emitter beam" icon_state = "emitter" damage = 30 + legacy = 1 + animate_movement = SLIDE_STEPS /obj/item/projectile/beam/emitter/singularity_pull() return //don't want the emitters to miss -/obj/item/projectile/lasertag +/obj/item/projectile/beam/lasertag name = "laser tag beam" icon_state = "omnilaser" hitsound = null damage = 0 damage_type = STAMINA flag = "laser" - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE var/suit_types = list(/obj/item/clothing/suit/redtag, /obj/item/clothing/suit/bluetag) - chatlog_attacks = 0 -/obj/item/projectile/lasertag/on_hit(var/atom/target, var/blocked = 0) - if(istype(target, /mob/living/carbon/human)) +/obj/item/projectile/beam/lasertag/on_hit(atom/target, blocked = 0) + . = ..() + if(ishuman(target)) var/mob/living/carbon/human/M = target if(istype(M.wear_suit)) if(M.wear_suit.type in suit_types) M.adjustStaminaLoss(34) return 1 -/obj/item/projectile/lasertag/omni +/obj/item/projectile/beam/lasertag/omni name = "laser tag beam" icon_state = "omnilaser" -/obj/item/projectile/lasertag/red +/obj/item/projectile/beam/lasertag/red icon_state = "laser" suit_types = list(/obj/item/clothing/suit/bluetag) -/obj/item/projectile/lasertag/blue +/obj/item/projectile/beam/lasertag/blue icon_state = "bluelaser" suit_types = list(/obj/item/clothing/suit/redtag) +/obj/item/projectile/beam/sniper + name = "sniper beam" + icon_state = "sniperlaser" + damage = 60 + stun = 5 + weaken = 5 + stutter = 5 + +/obj/item/projectile/beam/immolator + name = "immolation beam" + +/obj/item/projectile/beam/immolator/on_hit(var/atom/target, var/blocked = 0) + . = ..() + if(istype(target, /mob/living/carbon)) + var/mob/living/carbon/M = target + M.adjust_fire_stacks(1) + M.IgniteMob() + +/obj/item/projectile/beam/instakill + name = "instagib laser" + icon_state = "purple_laser" + damage = 200 + damage_type = BURN + +/obj/item/projectile/beam/instakill/blue + icon_state = "blue_laser" + +/obj/item/projectile/beam/instakill/red + icon_state = "red_laser" + +/obj/item/projectile/beam/instakill/on_hit(atom/target) + . = ..() + if(iscarbon(target)) + var/mob/living/carbon/M = target + M.visible_message("[M] explodes into a shower of gibs!") + M.gib() + +/* //THIS CODE MAKES ME WANT TO STAB MY EYES OUT /obj/item/projectile/beam/lightning invisibility = 101 name = "lightning" @@ -133,12 +149,12 @@ kill_count = 6 var/bullet_acted = 0 - Bump(var/atom/A) +/obj/item/projectile/beam/lightning/Bump(var/atom/A) if((A != firer) && !bullet_acted) A.bullet_act(src) bullet_acted = 1 - proc/adjustAngle(angle) +/obj/item/projectile/beam/lightning/proc/adjustAngle(angle) angle = round(angle) + 45 if(angle > 180) angle -= 180 @@ -146,14 +162,9 @@ angle += 180 if(!angle) angle = 1 - /*if(angle < 0) - //angle = (round(abs(get_angle(A, user))) + 45) - 90 - angle = round(angle) + 45 + 180 - else - angle = round(angle) + 45*/ return angle - process() +/obj/item/projectile/beam/lightning/process() var/first = 1 //So we don't make the overlay in the same tile as the firer var/broke = 0 var/broken @@ -239,16 +250,11 @@ f.break_tile() f.hotspot_expose(1000,CELL_VOLUME) if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) -// to_chat(world, "deleting") - //qdel(src) //Delete if it passes the world edge broken = 1 return if(kill_count < 1) -// to_chat(world, "deleting") - //qdel(src) broken = 1 kill_count-- -// to_chat(world, "[x] [y]") if(!bumped && !isturf(original)) if(loc == get_turf(original)) if(!(original in permutated)) @@ -263,7 +269,6 @@ Bump(original) first = 0 if(broken) -// to_chat(world, "breaking") break else last = get_turf(src.loc) @@ -273,13 +278,9 @@ icon_state = "[tang]" qdel(src) return - /*cleanup(reference) //Waits .3 seconds then removes the overlay. -// to_chat(world, "setting invisibility") - sleep(50) - src.invisibility = 101 - return*/ - on_hit(atom/target, blocked = 0) +/obj/item/projectile/beam/lightning/on_hit(atom/target, blocked = 0) if(istype(target, /mob/living)) var/mob/living/M = target M.playsound_local(src, "explosion", 50, 1) - ..() \ No newline at end of file + ..() +*/ diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 879bbf7fad0..f3a676d962f 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -3,21 +3,10 @@ icon_state = "bullet" damage = 60 damage_type = BRUTE - nodamage = 0 flag = "bullet" embed = 1 sharp = 1 - -/obj/item/projectile/bullet/cap - name = "cap" - damage = 0 - nodamage = 1 - embed = 0 - sharp = 0 - -/obj/item/projectile/bullet/cap/process() - loc = null - del(src) + hitsound_wall = "ricochet" /obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage damage = 5 @@ -27,6 +16,26 @@ embed = 0 sharp = 0 +/obj/item/projectile/bullet/weakbullet/booze + embed = 0 + +/obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0) + if(..(target, blocked)) + var/mob/living/M = target + M.dizziness += 20 + M.slurring += 20 + M.confused += 20 + M.eye_blurry += 20 + M.drowsyness += 20 + for(var/datum/reagent/ethanol/A in M.reagents.reagent_list) + M.AdjustParalysis(2) + M.dizziness += 10 + M.slurring += 10 + M.confused += 10 + M.eye_blurry += 10 + M.drowsyness += 10 + A.volume += 5 //Because we can + /obj/item/projectile/bullet/weakbullet2 //detective revolver instastuns, but multiple shots are better for keeping punks down damage = 5 weaken = 3 @@ -44,6 +53,15 @@ damage = 15 damage_type = TOX +/obj/item/projectile/bullet/incendiary + +/obj/item/projectile/bullet/incendiary/on_hit(var/atom/target, var/blocked = 0) + ..() + if(istype(target, /mob/living/carbon)) + var/mob/living/carbon/M = target + M.adjust_fire_stacks(1) + M.IgniteMob() + /obj/item/projectile/bullet/incendiary/firebullet damage = 10 @@ -55,15 +73,34 @@ name = "pellet" damage = 15 -/obj/item/projectile/bullet/blank - name = "blankshot" - nodamage = 1 - /obj/item/projectile/bullet/pellet/weak + damage = 6 + +/obj/item/projectile/bullet/pellet/weak/New() + range = rand(8) + +/obj/item/projectile/bullet/pellet/weak/on_range() + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + sparks.set_up(1, 1, src) + sparks.start() + ..() + +/obj/item/projectile/bullet/pellet/overload damage = 3 -/obj/item/projectile/bullet/pellet/random/New() - damage = rand(10) +/obj/item/projectile/bullet/pellet/overload/New() + range = rand(10) + +/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = 0) + ..() + explosion(target, 0, 0, 2) + +/obj/item/projectile/bullet/pellet/overload/on_range() + explosion(src, 0, 0, 2) + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + sparks.set_up(3, 3, src) + sparks.start() + ..() /obj/item/projectile/bullet/midbullet damage = 20 @@ -89,39 +126,11 @@ weaken = 5 stutter = 5 jitter = 20 - icon_state = "spark" range = 7 embed = 0 sharp = 0 - - -/obj/item/projectile/bullet/weakbullet/booze - embed = 0 - on_hit(var/atom/target, var/blocked = 0) - if(..(target, blocked)) - var/mob/living/M = target - M.dizziness += 20 - M.slurring += 20 - M.confused += 20 - M.eye_blurry += 20 - M.drowsyness += 20 - for(var/datum/reagent/ethanol/A in M.reagents.reagent_list) - M.AdjustParalysis(2) - M.dizziness += 10 - M.slurring += 10 - M.confused += 10 - M.eye_blurry += 10 - M.drowsyness += 10 - A.volume += 5 //Because we can - -/obj/item/projectile/bullet/incendiary - -/obj/item/projectile/bullet/incendiary/on_hit(var/atom/target, var/blocked = 0) - ..() - if(istype(target, /mob/living/carbon)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(1) - M.IgniteMob() + icon_state = "spark" + color = "#FFFF00" /obj/item/projectile/bullet/incendiary/shell name = "incendiary slug" @@ -130,8 +139,9 @@ /obj/item/projectile/bullet/incendiary/shell/Move() ..() var/turf/location = get_turf(src) - new /obj/effect/hotspot(location) - location.hotspot_expose(700, 50, 1) + if(location) + new /obj/effect/hotspot(location) + location.hotspot_expose(700, 50, 1) /obj/item/projectile/bullet/incendiary/shell/dragonsbreath name = "dragonsbreath round" @@ -157,7 +167,25 @@ ..() SpinAnimation() +/obj/item/projectile/bullet/meteorshot/weak + damage = 10 + weaken = 4 + stun = 4 +/obj/item/projectile/bullet/honker + damage = 0 + weaken = 5 + stun = 5 + forcedodge = 1 + nodamage = 1 + hitsound = 'sound/items/bikehorn.ogg' + icon = 'icons/obj/hydroponics/harvest.dmi' + icon_state = "banana" + range = 200 + +/obj/item/projectile/bullet/honker/New() + ..() + SpinAnimation() /obj/item/projectile/bullet/mime damage = 0 @@ -168,7 +196,7 @@ /obj/item/projectile/bullet/mime/on_hit(var/atom/target, var/blocked = 0) ..(target, blocked) - if(istype(target, /mob/living/carbon)) + if(iscarbon(target)) var/mob/living/carbon/M = target M.silent = max(M.silent, 10) else if(istype(target, /obj/mecha/combat/honker)) @@ -184,32 +212,38 @@ damage = 6 embed = 0 sharp = 0 + var/piercing = 0 - New() - ..() - flags |= NOREACT - create_reagents(50) +/obj/item/projectile/bullet/dart/New() + ..() + flags |= NOREACT + create_reagents(50) - on_hit(var/atom/target, var/blocked = 0, var/hit_zone) - if(istype(target, /mob/living/carbon)) - var/mob/living/carbon/M = target +/obj/item/projectile/bullet/dart/on_hit(var/atom/target, var/blocked = 0, var/hit_zone) + if(iscarbon(target)) + var/mob/living/carbon/M = target + if(blocked != 100) if(M.can_inject(null,0,hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + ..() reagents.reaction(M, INGEST) reagents.trans_to(M, reagents.total_volume) return 1 else + blocked = 100 target.visible_message("The [name] was deflected!", \ - "You were protected against the [name]!") - flags &= ~NOREACT - reagents.handle_reactions() - return 1 + "You were protected against the [name]!") + ..(target, blocked, hit_zone) + flags &= ~NOREACT + reagents.handle_reactions() + return 1 /obj/item/projectile/bullet/dart/metalfoam - New() - ..() - reagents.add_reagent("aluminum", 15) - reagents.add_reagent("fluorosurfactant", 5) - reagents.add_reagent("sacid", 5) + +/obj/item/projectile/bullet/dart/metalfoam/New() + ..() + reagents.add_reagent("aluminum", 15) + reagents.add_reagent("fluorosurfactant", 5) + reagents.add_reagent("sacid", 5) //This one is for future syringe guns update /obj/item/projectile/bullet/dart/syringe @@ -218,9 +252,9 @@ icon_state = "syringeproj" /obj/item/projectile/bullet/dart/syringe/tranquilizer - New() - ..() - reagents.add_reagent("haloperidol", 15) +/obj/item/projectile/bullet/dart/syringe/tranquilizer/New() + ..() + reagents.add_reagent("haloperidol", 15) /obj/item/projectile/bullet/neurotoxin name = "neurotoxin spit" @@ -231,5 +265,17 @@ /obj/item/projectile/bullet/neurotoxin/on_hit(var/atom/target, var/blocked = 0) if(isalien(target)) - return 0 - ..() // Execute the rest of the code. + weaken = 0 + nodamage = 1 + . = ..() // Execute the rest of the code. + +/obj/item/projectile/bullet/cap + name = "cap" + damage = 0 + nodamage = 1 + embed = 0 + sharp = 0 + +/obj/item/projectile/bullet/cap/fire() + loc = null + qdel(src) diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index b5665a6af1c..b023d77de52 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -5,7 +5,6 @@ damage_type = BURN flag = "energy" - /obj/item/projectile/energy/electrode name = "electrode" icon_state = "spark" @@ -20,26 +19,23 @@ //Damage will be handled on the MOB side, to prevent window shattering. /obj/item/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0) - if(!proj_hit) - if(!ismob(target) || blocked >= 2) //Fully blocked by mob or collided with dense object - burst into sparks! - var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread - sparks.set_up(1, 1, src) - sparks.start() - proj_hit = 1 - else if(iscarbon(target)) - var/mob/living/carbon/C = target - if(HULK in C.mutations) - C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - else if(C.status_flags & CANWEAKEN) - C.do_jitter_animation(jitter) - ..() - -/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet - if(!proj_hit) - var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread + . = ..() + if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks! + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) sparks.start() - proj_hit = 1 + else if(iscarbon(target)) + var/mob/living/carbon/C = target + if(HULK in C.mutations) + C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) + else if(C.status_flags & CANWEAKEN) + spawn(5) + C.do_jitter_animation(jitter) + +/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + sparks.set_up(1, 1, src) + sparks.start() ..() /obj/item/projectile/energy/declone @@ -49,7 +45,6 @@ damage_type = CLONE irradiate = 10 - /obj/item/projectile/energy/dart name = "dart" icon_state = "toxin" @@ -63,7 +58,6 @@ icon_state = "toxin" damage = 10 damage_type = TOX - nodamage = 0 weaken = 5 stutter = 5 @@ -77,12 +71,28 @@ stutter = 5 /obj/item/projectile/energy/bolt/large - name = "largebolt" damage = 20 -/obj/item/projectile/energy/plasma +/obj/item/projectile/energy/shock_revolver + name = "shock bolt" + icon_state = "purple_laser" + var/chain + +/obj/item/ammo_casing/energy/shock_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") + ..() + var/obj/item/projectile/hook/P = BB + spawn(1) + P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30) + +/obj/item/projectile/energy/shock_revolver/on_hit(atom/target) + . = ..() + if(isliving(target)) + tesla_zap(src, 3, 10000) + qdel(chain) + +/obj/item/projectile/energy/toxplasma name = "plasma bolt" icon_state = "energy" damage = 20 damage_type = TOX - irradiate = 20 \ No newline at end of file + irradiate = 20 diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm index 2fab1a4da18..4e5c6d27700 100644 --- a/code/modules/projectiles/projectile/force.dm +++ b/code/modules/projectiles/projectile/force.dm @@ -10,21 +10,8 @@ name = "force bolt" /obj/item/projectile/forcebolt/on_hit(var/atom/target, var/blocked = 0) - - var/obj/T = target - var/throwdir = get_dir(firer,target) - T.throw_at(get_edge_target_turf(target, throwdir),10,10) - return 1 - -/* -/obj/item/projectile/forcebolt/strong/on_hit(var/atom/target, var/blocked = 0) - - // NONE OF THIS WORKS. DO NOT USE. - var/throwdir = null - - for(var/mob/M in hearers(2, src)) - if(M.loc != src.loc) - throwdir = get_dir(src,target) - M.throw_at(get_edge_target_turf(M, throwdir),15,1) - return ..() -*/ \ No newline at end of file + . = ..() + if(blocked < 100) + var/obj/T = target + var/throwdir = get_dir(firer,target) + T.throw_at(get_edge_target_turf(target, throwdir),10,10) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index ecbbfb530f8..74eff57d98d 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -4,15 +4,14 @@ damage = 0 damage_type = OXY nodamage = 1 + armour_penetration = 100 flag = "magic" /obj/item/projectile/magic/death name = "bolt of death" icon_state = "pulse1_bl" - damage = 9001 - damage_type = OXY - nodamage = 0 - flag = "magic" + damage_type = BURN //OXY does not kill IPCs + damage = 50000 /obj/item/projectile/magic/fireball name = "bolt of fireball" @@ -20,9 +19,22 @@ damage = 10 damage_type = BRUTE nodamage = 0 - flag = "magic" + +/obj/item/projectile/magic/fireball/Range() + var/turf/T1 = get_step(src,turn(dir, -45)) + var/turf/T2 = get_step(src,turn(dir, 45)) + var/mob/living/L = locate(/mob/living) in T1 //if there's a mob alive in our front right diagonal, we hit it. + if(L && L.stat != DEAD) + Bump(L) //Magic Bullet #teachthecontroversy + return + L = locate(/mob/living) in T2 + if(L && L.stat != DEAD) + Bump(L) + return + ..() /obj/item/projectile/magic/fireball/on_hit(var/target) + . = ..() var/turf/T = get_turf(target) explosion(T, -1, 0, 2, 3, 0, flame_range = 2) if(ismob(target)) //multiple flavors of pain @@ -32,35 +44,13 @@ /obj/item/projectile/magic/resurrection name = "bolt of resurrection" icon_state = "ion" - damage = 0 - damage_type = OXY - nodamage = 1 - flag = "magic" /obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target) - - if(istype(target,/mob)) - var/old_stat = target.stat - if(isanimal(target) && target.stat == DEAD) - var/mob/living/simple_animal/O = target - var/mob/living/simple_animal/A = new O.type(O.loc) - A.real_name = O.real_name - A.name = O.name - if(iscorgi(O)) - var/mob/living/simple_animal/pet/corgi/C = O - if(C.inventory_head) - C.inventory_head.loc = C.loc - if(C.inventory_back) - C.inventory_back.loc = C.loc - if(O.mind) - O.mind.transfer_to(A) - else - A.key = O.key - qdel(O) - target = A - else - target.revive() - target.suiciding = 0 + . = ..() + if(ismob(target)) + var/old_stat = stat + target.suiciding = 0 + target.revive() if(!target.ckey) for(var/mob/dead/observer/ghost in player_list) if(target.real_name == ghost.real_name) @@ -74,14 +64,11 @@ /obj/item/projectile/magic/teleport name = "bolt of teleportation" icon_state = "bluespace" - damage = 0 - damage_type = OXY - nodamage = 1 - flag = "magic" var/inner_tele_radius = 0 var/outer_tele_radius = 6 /obj/item/projectile/magic/teleport/on_hit(var/mob/target) + . = ..() var/teleammount = 0 var/teleloc = target if(!isturf(target)) @@ -97,37 +84,40 @@ /obj/item/projectile/magic/door name = "bolt of door creation" icon_state = "energy" - damage = 0 - damage_type = OXY - nodamage = 1 - flag = "magic" + var/list/door_types = list(/obj/structure/mineral_door/wood,/obj/structure/mineral_door/iron,/obj/structure/mineral_door/silver,\ + /obj/structure/mineral_door/gold,/obj/structure/mineral_door/uranium,/obj/structure/mineral_door/sandstone,/obj/structure/mineral_door/transparent/plasma,\ + /obj/structure/mineral_door/transparent/diamond) /obj/item/projectile/magic/door/on_hit(var/atom/target) + . = ..() var/atom/T = target.loc - if(isturf(target)) - if(target.density) - new /obj/structure/mineral_door/wood(target) - target:ChangeTurf(/turf/simulated/floor/plating) - else if (isturf(T)) - if(T.density) - new /obj/structure/mineral_door/wood(T) - T:ChangeTurf(/turf/simulated/floor/plating) + if(isturf(target) && target.density) + CreateDoor(target) + else if (isturf(T) && T.density) + CreateDoor(T + else if(istype(target, /obj/machinery/door)) + OpenDoor(target)) + +/obj/item/projectile/magic/door/proc/CreateDoor(turf/T) + var/door_type = pick(door_types) + var/obj/structure/mineral_door/D = new door_type(T) + T.ChangeTurf(/turf/open/floor/plating) + D.Open() /obj/item/projectile/magic/change name = "bolt of change" icon_state = "ice_1" - damage = 0 damage_type = BURN - nodamage = 1 - flag = "magic" /obj/item/projectile/magic/change/on_hit(var/atom/change) + . = ..() wabbajack(change) proc/wabbajack(mob/living/M) if(istype(M)) if(istype(M, /mob/living) && M.stat != DEAD) - if(M.notransform) return + if(M.notransform) + return M.notransform = 1 M.canmove = 0 M.icon = null @@ -136,7 +126,9 @@ proc/wabbajack(mob/living/M) if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/Robot = M - if(Robot.mmi) qdel(Robot.mmi) + if(Robot.mmi) + qdel(Robot.mmi) + Robot.notify_ai(1) else if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -146,7 +138,8 @@ proc/wabbajack(mob/living/M) for(var/i in H.internal_organs) qdel(i) for(var/obj/item/W in M) - M.unEquip(W) + M.unEquip(W, 1) + qdel(W) var/mob/living/new_mob @@ -166,8 +159,6 @@ proc/wabbajack(mob/living/M) Robot.mmi.transfer_identity(M) //Does not transfer key/client. if("slime") new_mob = new /mob/living/carbon/slime(M.loc) -/* if(prob(50)) - new_mob.is_adult = 1*/ new_mob.universal_speak = 1 if("xeno") if(prob(50)) @@ -175,14 +166,6 @@ proc/wabbajack(mob/living/M) else new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) new_mob.universal_speak = 1 - - /*var/alien_caste = pick("Hunter","Sentinel","Drone","Larva") - switch(alien_caste) - if("Hunter") new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) - if("Sentinel") new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) - if("Drone") new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc) - else new_mob = new /mob/living/carbon/alien/larva(M.loc) - new_mob.universal_speak = 1*/ if("animal") if(prob(50)) var/beast = pick("carp","bear","mushroom","statue", "bat", "goat", "tomato") @@ -225,7 +208,6 @@ proc/wabbajack(mob/living/M) randomize = picked_species var/datum/preferences/A = new() //Randomize appearance for the human A.copy_to(new_mob) - else return @@ -246,13 +228,10 @@ proc/wabbajack(mob/living/M) /obj/item/projectile/magic/animate name = "bolt of animation" icon_state = "red_1" - damage = 0 damage_type = BURN - nodamage = 1 - flag = "magic" /obj/item/projectile/magic/animate/Bump(var/atom/change) - . = ..() + ..() if(istype(change, /obj/item) || istype(change, /obj/structure) && !is_type_in_list(change, protected_objects)) if(istype(change, /obj/structure/closet/statue)) for(var/mob/living/carbon/human/H in change.contents) @@ -273,4 +252,4 @@ proc/wabbajack(mob/living/M) else if(istype(change, /mob/living/simple_animal/hostile/mimic/copy)) // Change our allegiance! var/mob/living/simple_animal/hostile/mimic/copy/C = change - C.ChangeOwner(firer) \ No newline at end of file + C.ChangeOwner(firer) diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm index 81defd55743..9f4e36bc1b4 100644 --- a/code/modules/projectiles/projectile/reusable.dm +++ b/code/modules/projectiles/projectile/reusable.dm @@ -1,42 +1,63 @@ /obj/item/projectile/bullet/reusable name = "reusable bullet" desc = "How do you even reuse a bullet?" - var/obj/item/ammo_casing/caseless/ammo_type = /obj/item/ammo_casing/caseless/ - var/hit = 0 + ammo_type = /obj/item/ammo_casing/caseless/ + var/dropped = 0 -/obj/item/projectile/bullet/reusable/on_hit(var/atom/target, var/blocked = 0) - if(!proj_hit) - proj_hit = 1 - if (src.contents.len) - var/obj/content - for(content in src.contents) - content.loc = src.loc - else - new ammo_type(src.loc) - ..() +/obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = 0) + . = ..() + handle_drop() /obj/item/projectile/bullet/reusable/on_range() - if(!proj_hit) - if (src.contents.len) - var/obj/content - for(content in src.contents) - content.loc = src.loc - else - new ammo_type(src.loc) + handle_drop() ..() +/obj/item/projectile/bullet/reusable/proc/handle_drop() + if(!dropped) + new ammo_type(src.loc) + dropped = 1 + +/obj/item/projectile/bullet/reusable/magspear + name = "magnetic spear" + desc = "WHITE WHALE, HOLY GRAIL" + damage = 30 //takes 3 spears to kill a mega carp, one to kill a normal carp + icon_state = "magspear" + ammo_type = /obj/item/ammo_casing/caseless/magspear + /obj/item/projectile/bullet/reusable/foam_dart name = "foam dart" desc = "I hope you're wearing eye protection." damage = 0 // It's a damn toy. damage_type = OXY nodamage = 1 - edge = 0 - embed = 0 icon = 'icons/obj/toyguns.dmi' icon_state = "foamdart" ammo_type = /obj/item/ammo_casing/caseless/foam_dart - range = 10 + range = 10 + var/obj/item/weapon/pen/pen = null + edge = 0 + embed = 0 + +/obj/item/projectile/bullet/reusable/foam_dart/handle_drop() + if(dropped) + return + dropped = 1 + var/obj/item/ammo_casing/caseless/foam_dart/newdart = new ammo_type(src.loc) + var/obj/item/ammo_casing/caseless/foam_dart/old_dart = ammo_casing + newdart.modified = old_dart.modified + if(pen) + var/obj/item/projectile/bullet/reusable/foam_dart/newdart_FD = newdart.BB + newdart_FD.pen = pen + pen.loc = newdart_FD + pen = null + newdart.BB.damage = damage + newdart.BB.nodamage = nodamage + newdart.BB.damage_type = damage_type + newdart.update_icon() + +/obj/item/projectile/bullet/reusable/foam_dart/Destroy() + pen = null + return ..() /obj/item/projectile/bullet/reusable/foam_dart/riot name = "riot foam dart" diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index ed64d73df4e..851f23bcdd7 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -6,15 +6,15 @@ nodamage = 1 flag = "energy" - - on_hit(var/atom/target, var/blocked = 0) - empulse(target, 1, 1) - return 1 - +/obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0) + ..() + empulse(target, 1, 1) + return 1 /obj/item/projectile/ion/weak /obj/item/projectile/ion/weak/on_hit(atom/target, blocked = 0) + ..() empulse(target, 0, 0) return 1 @@ -26,9 +26,10 @@ sharp = 1 edge = 1 - on_hit(var/atom/target, var/blocked = 0) - explosion(target, -1, 0, 2) - return 1 +/obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0) + ..() + explosion(target, -1, 0, 2) + return 1 /obj/item/projectile/bullet/a40mm name ="40mm grenade" @@ -43,18 +44,17 @@ return 1 /obj/item/projectile/temp - name = "freeze beam" + name = "temperature beam" icon_state = "temp_4" damage = 0 damage_type = BURN nodamage = 1 flag = "energy" - var/temperature = 300 - var/obj/item/weapon/gun/energy/temperature/T = null + var/temperature = null + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - OnFired() - T = shot_from - temperature = T.temperature +/obj/item/projectile/temp/New() + spawn(1) switch(temperature) if(501 to INFINITY) name = "searing beam" //if emagged @@ -86,17 +86,19 @@ else name = "temperature beam"//failsafe icon_state = "temp_4" + ..() - on_hit(var/atom/target, var/blocked = 0)//These two could likely check temp protection on the mob - if(istype(target, /mob/living)) - var/mob/living/M = target - M.bodytemperature = temperature - if(temperature > 500)//emagged - M.adjust_fire_stacks(0.5) - M.IgniteMob() - playsound(M.loc, 'sound/effects/bamf.ogg', 50, 0) - return 1 +/obj/item/projectile/temp/on_hit(var/atom/target, var/blocked = 0)//These two could likely check temp protection on the mob + ..() + if(isliving(target)) + var/mob/living/M = target + M.bodytemperature = temperature + if(temperature > 500)//emagged + M.adjust_fire_stacks(0.5) + M.IgniteMob() + playsound(M.loc, 'sound/effects/bamf.ogg', 50, 0) + return 1 /obj/item/projectile/meteor name = "meteor" @@ -107,26 +109,17 @@ nodamage = 1 flag = "bullet" - Bump(atom/A as mob|obj|turf|area) - if(A == firer) - loc = A.loc - return - - sleep(-1) //Might not be important enough for a sleep(-1) but the sleep/spawn itself is necessary thanks to explosions and metoerhits - - if(src)//Do not add to this if() statement, otherwise the meteor won't delete them - if(A) - - A.ex_act(2) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai))\ - shake_camera(M, 3, 1) - qdel(src) - return 1 - else - return 0 +/obj/item/projectile/meteor/Bump(atom/A, yes) + if(yes) + return + if(A == firer) + loc = A.loc + return + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) + for(var/mob/M in urange(10, src)) + if(!M.stat) + shake_camera(M, 3, 1) + qdel(src) /obj/item/projectile/energy/floramut name = "alpha somatoray" @@ -136,36 +129,31 @@ nodamage = 1 flag = "energy" - on_hit(var/atom/target, var/blocked = 0) - var/mob/living/M = target - if(ishuman(target)) - var/mob/living/carbon/human/H = M - if((H.species.flags & IS_PLANT) && (M.nutrition < 500)) - if(prob(15)) - M.apply_effect((rand(30,80)),IRRADIATE) - M.Weaken(5) - for (var/mob/V in viewers(src)) - V.show_message("\red [M] writhes in pain as \his vacuoles boil.", 3, "\red You hear the crunching of leaves.", 2) - if(prob(35)) - // for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan - // V.show_message("\red [M] is mutated by the radiation beam.", 3, "\red You hear the snapping of twigs.", 2) - if(prob(80)) - randmutb(M) - domutcheck(M,null) - else - randmutg(M) - domutcheck(M,null) +/obj/item/projectile/energy/floramut/on_hit(var/atom/target, var/blocked = 0) + ..() + var/mob/living/M = target + if(ishuman(target)) + var/mob/living/carbon/human/H = M + if((H.species.flags & IS_PLANT) && (M.nutrition < 500)) + if(prob(15)) + M.apply_effect((rand(30,80)),IRRADIATE) + M.Weaken(5) + for (var/mob/V in viewers(src)) + V.show_message("[M] writhes in pain as \his vacuoles boil.", 3, "You hear the crunching of leaves.", 2) + if(prob(35)) + if(prob(80)) + randmutb(M) + domutcheck(M,null) else - M.adjustFireLoss(rand(5,15)) - M.show_message("\red The radiation beam singes you!") - // for (var/mob/V in viewers(src)) - // V.show_message("\red [M] is singed by the radiation beam.", 3, "\red You hear the crackle of burning leaves.", 2) - else if(istype(target, /mob/living/carbon/)) - // for (var/mob/V in viewers(src)) - // V.show_message("The radiation beam dissipates harmlessly through [M]", 3) - M.show_message("\blue The radiation beam dissipates harmlessly through your body.") - else - return 1 + randmutg(M) + domutcheck(M,null) + else + M.adjustFireLoss(rand(5,15)) + M.show_message("The radiation beam singes you!") + else if(istype(target, /mob/living/carbon/)) + M.show_message("The radiation beam dissipates harmlessly through your body.") + else + return 1 /obj/item/projectile/energy/florayield name = "beta somatoray" @@ -175,40 +163,42 @@ nodamage = 1 flag = "energy" - on_hit(var/atom/target, var/blocked = 0) - var/mob/M = target - if(ishuman(target)) //These rays make plantmen fat. - var/mob/living/carbon/human/H = M - if((H.species.flags & IS_PLANT) && (M.nutrition < 500)) - M.nutrition += 30 - else if (istype(target, /mob/living/carbon/)) - M.show_message("\blue The radiation beam dissipates harmlessly through your body.") - else - return 1 +/obj/item/projectile/energy/florayield/on_hit(var/atom/target, var/blocked = 0) + ..() + var/mob/M = target + if(ishuman(target)) //These rays make plantmen fat. + var/mob/living/carbon/human/H = M + if((H.species.flags & IS_PLANT) && (M.nutrition < 500)) + M.nutrition += 30 + else if (istype(target, /mob/living/carbon/)) + M.show_message("The radiation beam dissipates harmlessly through your body.") + else + return 1 /obj/item/projectile/beam/mindflayer name = "flayer ray" - on_hit(var/atom/target, var/blocked = 0) - if(ishuman(target)) - var/mob/living/carbon/human/M = target - M.adjustBrainLoss(20) - M.hallucination += 20 +/obj/item/projectile/beam/mindflayer/on_hit(var/atom/target, var/blocked = 0) + . = ..() + if(ishuman(target)) + var/mob/living/carbon/human/M = target + M.adjustBrainLoss(20) + M.hallucination += 20 /obj/item/projectile/clown name = "snap-pop" icon = 'icons/obj/toy.dmi' icon_state = "snappop" - Bump(atom/A as mob|obj|turf|area) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - new /obj/effect/decal/cleanable/ash(src.loc) - src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") - playsound(src, 'sound/effects/snap.ogg', 50, 1) - qdel(src) +/obj/item/projectile/clown/Bump(atom/A as mob|obj|turf|area) + var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + new /obj/effect/decal/cleanable/ash(src.loc) + src.visible_message("The [src.name] explodes!","You hear a snap!") + playsound(src, 'sound/effects/snap.ogg', 50, 1) + qdel(src) /obj/item/projectile/kinetic name = "kinetic force" @@ -239,11 +229,9 @@ obj/item/projectile/kinetic/New() damage *= 4 ..() -/obj/item/projectile/kinetic/Range() - range-- - if(range <= 0) - new /obj/item/effect/kinetic_blast(src.loc) - qdel(src) +/obj/item/projectile/kinetic/on_range() + new /obj/effect/kinetic_blast(src.loc) + ..() /obj/item/projectile/kinetic/on_hit(atom/target) . = ..() @@ -268,6 +256,40 @@ obj/item/projectile/kinetic/New() spawn(4) qdel(src) +/obj/item/projectile/beam/wormhole + name = "bluespace beam" + icon_state = "spark" + hitsound = "sparks" + damage = 3 + var/obj/item/weapon/gun/energy/wormhole_projector/gun + color = "#33CCFF" + +/obj/item/projectile/beam/wormhole/orange + name = "orange bluespace beam" + color = "#FF6600" + +/obj/item/projectile/beam/wormhole/New(var/obj/item/ammo_casing/energy/wormhole/casing) + if(casing) + gun = casing.gun + +/obj/item/projectile/beam/wormhole/on_hit(atom/target) + if(ismob(target)) + var/turf/portal_destination = pick(orange(6, src)) + do_teleport(target, portal_destination) + return ..() + if(!gun) + qdel(src) + gun.create_portal(src) + +/obj/item/projectile/beam/wormhole/on_hit(atom/target) + if(ismob(target)) + var/turf/portal_destination = pick(orange(6, src)) + do_teleport(target, portal_destination) + return ..() + if(!gun) + qdel(src) + gun.create_portal(src) + /obj/item/projectile/bullet/frag12 name ="explosive slug" damage = 25 @@ -278,25 +300,6 @@ obj/item/projectile/kinetic/New() explosion(target, -1, 0, 1) return 1 -/obj/item/projectile/energy/teleport - name = "teleportation burst" - icon_state = "bluespace" - damage = 0 - nodamage = 1 - var/obj/item/weapon/gun/energy/telegun/T = null - var/teleport_target = null - - OnFired() - T = shot_from - teleport_target = T.teleport_target - -/obj/item/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0) - if(isliving(target)) - if(teleport_target) - do_teleport(target, teleport_target, 0)//teleport what's in the tile to the beacon - else - do_teleport(target, target, 15) //Otherwise it just warps you off somewhere. - /obj/item/projectile/plasma name = "plasma blast" icon_state = "plasmacutter" @@ -321,8 +324,9 @@ obj/item/projectile/kinetic/New() if(istype(target, /turf/simulated/mineral)) var/turf/simulated/mineral/M = target M.gets_drilled(firer) - range = max(range - 1, 1) - return -1 + Range() + if(range > 0) + return -1 /obj/item/projectile/plasma/adv range = 5 @@ -331,29 +335,24 @@ obj/item/projectile/kinetic/New() damage = 10 range = 6 -/obj/item/projectile/beam/wormhole - name = "bluespace beam" - icon_state = "spark" - hitsound = "sparks" - damage = 3 - var/obj/item/weapon/gun/energy/wormhole_projector/gun = null - color = "#33CCFF" +/obj/item/projectile/energy/teleport + name = "teleportation burst" + icon_state = "bluespace" + damage = 0 + nodamage = 1 + var/obj/item/weapon/gun/energy/telegun/T = null + var/teleport_target = null -/obj/item/projectile/beam/wormhole/orange - name = "orange bluespace beam" - color = "#FF6600" + OnFired() + T = shot_from + teleport_target = T.teleport_target -/obj/item/projectile/beam/wormhole/OnFired() - gun = shot_from - -/obj/item/projectile/beam/wormhole/on_hit(atom/target) - if(ismob(target)) - var/turf/portal_destination = pick(orange(6, src)) - do_teleport(target, portal_destination) - return ..() - if(!gun) - qdel(src) - gun.create_portal(src) +/obj/item/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0) + if(isliving(target)) + if(teleport_target) + do_teleport(target, teleport_target, 0)//teleport what's in the tile to the beacon + else + do_teleport(target, target, 15) //Otherwise it just warps you off somewhere. /obj/item/projectile/snowball name = "snowball" @@ -363,6 +362,7 @@ obj/item/projectile/kinetic/New() damage_type = BURN /obj/item/projectile/snowball/on_hit(atom/target) //chilling + . = ..() if(istype(target, /mob/living)) var/mob/living/M = target M.bodytemperature = max(0, M.bodytemperature - 50) //each hit will drop your body temp, so don't get surrounded! @@ -380,9 +380,10 @@ obj/item/projectile/kinetic/New() ..() /obj/item/projectile/ornament/on_hit(atom/target) //knockback + ..() if(istype(target, /turf)) return 0 var/obj/T = target var/throwdir = get_dir(firer,target) T.throw_at(get_edge_target_turf(target, throwdir),10,10) - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/reagents/grenade_launcher.dm b/code/modules/reagents/grenade_launcher.dm deleted file mode 100644 index 9b9484ba60e..00000000000 --- a/code/modules/reagents/grenade_launcher.dm +++ /dev/null @@ -1,111 +0,0 @@ - - -/obj/item/weapon/gun/grenadelauncher - name = "grenade launcher" - icon = 'icons/obj/gun.dmi' - icon_state = "riotgun" - item_state = "riotgun" - w_class = 4.0 - throw_speed = 2 - throw_range = 10 - force = 5.0 - var/list/grenades = new/list() - var/max_grenades = 3 - var/ammo_name = "grenade" - var/ammo_type = /obj/item/weapon/grenade - var/unloaded - - materials = list(MAT_METAL=2000) - -/obj/item/weapon/gun/grenadelauncher/examine(mob/user) - if(..(user, 2)) - to_chat(user, "\blue [grenades.len] / [max_grenades] [ammo_name]s.") - -/obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params) - - if((istype(I, ammo_type))) - if(grenades.len < max_grenades) - user.drop_item() - I.loc = src - grenades += I - to_chat(user, "\blue You put the [ammo_name] in the [name].") - to_chat(user, "\blue [grenades.len] / [max_grenades] [ammo_name]s.") - else - to_chat(usr, "\red The grenade launcher cannot hold more [ammo_name]s.") - -/obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag) - - if (istype(target, /obj/item/weapon/storage/backpack )) - return - - else if (locate (/obj/structure/table, src.loc)) - return - - else if(target == user) - return - - if(grenades.len) - spawn(0) fire_grenade(target,user) - else - to_chat(usr, "\red The [name] is empty.") - -/obj/item/weapon/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] fired a [ammo_name]!", user), 1) - to_chat(user, "\red You fire the [name]!") - var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta! - grenades -= F - F.loc = user.loc - F.throw_at(target, 30, 2, user) - message_admins("[key_name_admin(user)] fired a [ammo_name] ([F.name]) from a launcher ([name]).") - log_game("[key_name_admin(user)] used a [ammo_name] ([name]).") - F.active = 1 - F.icon_state = initial(icon_state) + "_active" - playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn(15) - F.prime() - - -/obj/item/weapon/gun/grenadelauncher/piecannon - name = "pie cannon" - icon = 'icons/obj/gun.dmi' - icon_state = "piecannon1" - item_state = "piecannon1" - w_class = 4.0 - throw_speed = 2 - throw_range = 10 - force = 5.0 - clumsy_check = 0 - grenades = new/list() - max_grenades = 5 - ammo_name = "cream pie" - ammo_type = /obj/item/weapon/reagent_containers/food/snacks/pie - -/obj/item/weapon/gun/grenadelauncher/piecannon/New() - ..() - for(var/i=0, i < max_grenades, i++) - var/obj/item/weapon/reagent_containers/food/snacks/pie/P = new /obj/item/weapon/reagent_containers/food/snacks/pie(src) - grenades += P - -/obj/item/weapon/gun/grenadelauncher/piecannon/attackby(obj/item/I as obj, mob/user as mob, params) - if((istype(I, ammo_type))) - if(grenades.len < max_grenades) - user.drop_item() - I.loc = src - grenades += I - to_chat(user, "\blue You put the [ammo_name] in the [name].") - to_chat(user, "\blue [grenades.len] / [max_grenades] [ammo_name]s.") - icon_state = "piecannon1" - else - to_chat(usr, "\red The grenade launcher cannot hold more [ammo_name]s.") - -/obj/item/weapon/gun/grenadelauncher/piecannon/fire_grenade(atom/target, mob/user) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] fired a [ammo_name]!", user), 1) - to_chat(user, "\red You fire the [name]!") - var/obj/item/weapon/reagent_containers/food/snacks/pie/P = grenades[1] //Now with less copypasta! - grenades -= P - P.loc = user.loc - P.throw_at(target, 30, 2, user) - if(!grenades.len) - icon_state = "piecannon0" diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index bd8a22cd06f..332375dae8d 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -17,6 +17,7 @@ w_class = 1 sharp = 1 var/mode = SYRINGE_DRAW + var/projectile_type = /obj/item/projectile/bullet/dart/syringe /obj/item/weapon/reagent_containers/syringe/on_reagent_change() update_icon() @@ -533,4 +534,4 @@ reagents.add_reagent("capulettium_plus", 5) reagents.add_reagent("sodium_thiopental", 5) mode = SYRINGE_INJECT - update_icon() \ No newline at end of file + update_icon() diff --git a/paradise.dme b/paradise.dme index bf55518d633..97f182a3d3a 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1748,37 +1748,36 @@ #include "code\modules\procedural_mapping\mapGenerators\nature.dm" #include "code\modules\procedural_mapping\mapGenerators\syndicate.dm" #include "code\modules\projectiles\ammunition.dm" +#include "code\modules\projectiles\firing.dm" #include "code\modules\projectiles\gun.dm" -#include "code\modules\projectiles\medbeam.dm" #include "code\modules\projectiles\projectile.dm" #include "code\modules\projectiles\ammunition\ammo_casings.dm" #include "code\modules\projectiles\ammunition\boxes.dm" +#include "code\modules\projectiles\ammunition\energy.dm" #include "code\modules\projectiles\ammunition\magazines.dm" +#include "code\modules\projectiles\ammunition\special.dm" #include "code\modules\projectiles\guns\alien.dm" #include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\grenade_launcher.dm" #include "code\modules\projectiles\guns\magic.dm" +#include "code\modules\projectiles\guns\medbeam.dm" #include "code\modules\projectiles\guns\mounted.dm" #include "code\modules\projectiles\guns\projectile.dm" #include "code\modules\projectiles\guns\syringe_gun.dm" -#include "code\modules\projectiles\guns\energy\advtaser.dm" -#include "code\modules\projectiles\guns\energy\blueshield.dm" -#include "code\modules\projectiles\guns\energy\hos.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\nuclear.dm" #include "code\modules\projectiles\guns\energy\pulse.dm" #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\energy\telegun.dm" -#include "code\modules\projectiles\guns\energy\temperature.dm" #include "code\modules\projectiles\guns\magic\staff.dm" #include "code\modules\projectiles\guns\magic\wand.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" -#include "code\modules\projectiles\guns\projectile\crossbow.dm" -#include "code\modules\projectiles\guns\projectile\grenade launcher.dm" #include "code\modules\projectiles\guns\projectile\launchers.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" #include "code\modules\projectiles\guns\projectile\rocket.dm" +#include "code\modules\projectiles\guns\projectile\saw.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" #include "code\modules\projectiles\guns\projectile\sniper.dm" #include "code\modules\projectiles\guns\projectile\toy.dm" @@ -1794,7 +1793,6 @@ #include "code\modules\reagents\Chemistry-Machinery.dm" #include "code\modules\reagents\Chemistry-Readme.dm" #include "code\modules\reagents\dartgun.dm" -#include "code\modules\reagents\grenade_launcher.dm" #include "code\modules\reagents\pandemic.dm" #include "code\modules\reagents\reagent_containers.dm" #include "code\modules\reagents\reagent_dispenser.dm" From a4e950d21a9a366f7785261913c014f4ee75f4ea Mon Sep 17 00:00:00 2001 From: TheDZD Date: Sat, 28 May 2016 14:28:23 -0400 Subject: [PATCH 036/260] =?UTF-8?q?Compiles,=20and=20guns=20work=E2=84=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MetaStation/MetaStation.v41A.II.dmm | 2 +- _maps/map_files/RandomZLevels/beach.dmm | 2 +- _maps/map_files/cyberiad/cyberiad.dmm | 2 +- _maps/map_files/cyberiad/z2.dmm | 4 +- _maps/map_files/cyberiad/z6.dmm | 2 +- code/__DEFINES/misc.dm | 6 +- code/_onclick/click.dm | 56 +------ code/datums/uplink_item.dm | 6 +- .../gamemodes/malfunction/Malf_Modules.dm | 2 +- .../miniantags/abduction/abduction_gear.dm | 6 +- code/game/gamemodes/steal_items.dm | 4 +- code/game/machinery/portable_turret.dm | 8 +- code/game/machinery/rechargestation.dm | 3 +- code/game/machinery/turrets.dm | 6 +- code/game/mecha/equipment/weapons/weapons.dm | 2 +- .../objects/items/robot/robot_upgrades.dm | 6 +- code/game/objects/items/shooting_range.dm | 4 +- .../items/stacks/sheets/sheet_types.dm | 2 +- .../objects/items/weapons/chrono_eraser.dm | 23 ++- .../crates_lockers/closets/secure/security.dm | 2 +- code/modules/admin/verbs/honksquad.dm | 6 +- .../admin/verbs/striketeam_syndicate.dm | 4 +- code/modules/admin/verbs/vox_raiders.dm | 6 +- .../clothing/spacesuits/rig/modules/combat.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 19 ++- .../mob/living/carbon/human/human_defense.dm | 5 +- .../carbon/human/interactive/functions.dm | 17 +- code/modules/mob/living/living.dm | 6 + code/modules/mob/living/living_defense.dm | 4 - .../mob/living/simple_animal/bot/ed209bot.dm | 10 +- code/modules/mob/living/simple_animal/vox.dm | 8 +- code/modules/projectiles/ammunition.dm | 10 +- .../projectiles/ammunition/ammo_casings.dm | 12 +- code/modules/projectiles/ammunition/energy.dm | 12 +- .../projectiles/ammunition/magazines.dm | 2 +- code/modules/projectiles/firing.dm | 20 +-- code/modules/projectiles/gun.dm | 16 +- code/modules/projectiles/guns/alien.dm | 84 +--------- code/modules/projectiles/guns/energy.dm | 26 +-- code/modules/projectiles/guns/energy/laser.dm | 6 +- .../projectiles/guns/energy/nuclear.dm | 37 +---- code/modules/projectiles/guns/energy/pulse.dm | 2 +- .../projectiles/guns/energy/special.dm | 32 ++-- code/modules/projectiles/guns/energy/stun.dm | 2 +- .../projectiles/guns/energy/telegun.dm | 4 + .../projectiles/guns/grenade_launcher.dm | 12 +- code/modules/projectiles/guns/magic.dm | 3 +- code/modules/projectiles/guns/magic/wand.dm | 2 +- code/modules/projectiles/guns/medbeam.dm | 2 +- code/modules/projectiles/guns/mounted.dm | 4 +- code/modules/projectiles/guns/projectile.dm | 12 +- .../projectiles/guns/projectile/automatic.dm | 7 +- .../projectiles/guns/projectile/revolver.dm | 16 +- .../projectiles/guns/projectile/rocket.dm | 4 +- .../projectiles/guns/projectile/saw.dm | 4 +- .../projectiles/guns/projectile/shotgun.dm | 18 +- .../projectiles/guns/projectile/sniper.dm | 4 +- code/modules/projectiles/guns/syringe_gun.dm | 11 +- code/modules/projectiles/projectile.dm | 18 +- code/modules/projectiles/projectile/beams.dm | 157 +----------------- .../modules/projectiles/projectile/bullets.dm | 6 +- code/modules/projectiles/projectile/energy.dm | 6 +- code/modules/projectiles/projectile/magic.dm | 14 +- .../projectiles/projectile/reusable.dm | 6 +- .../modules/projectiles/projectile/special.dm | 17 +- code/modules/reagents/dartgun.dm | 9 +- .../xenoarchaeology/machinery/coolant.dm | 2 +- code/modules/spacepods/equipment.dm | 2 - sound/weapons/effects/ric1.ogg | Bin 0 -> 7937 bytes sound/weapons/effects/ric2.ogg | Bin 0 -> 6359 bytes sound/weapons/effects/ric3.ogg | Bin 0 -> 7430 bytes sound/weapons/effects/ric4.ogg | Bin 0 -> 7072 bytes sound/weapons/effects/ric5.ogg | Bin 0 -> 8545 bytes sound/weapons/effects/searwall.ogg | Bin 0 -> 7213 bytes 74 files changed, 288 insertions(+), 550 deletions(-) create mode 100644 sound/weapons/effects/ric1.ogg create mode 100644 sound/weapons/effects/ric2.ogg create mode 100644 sound/weapons/effects/ric3.ogg create mode 100644 sound/weapons/effects/ric4.ogg create mode 100644 sound/weapons/effects/ric5.ogg create mode 100644 sound/weapons/effects/searwall.ogg diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index b50efa38848..61c46bad876 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -583,7 +583,7 @@ "alk" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "all" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/turf/space,/area/shuttle/vox) "alm" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) -"aln" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) +"aln" = (/obj/structure/rack,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "alo" = (/obj/machinery/door/poddoor{id_tag = "trash"; name = "disposal bay door"},/turf/simulated/floor/plating,/area/maintenance/disposal) "alp" = (/obj/machinery/mass_driver{dir = 8; id_tag = "trash"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) "alq" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm index 0a5cd703fc0..04512b660bf 100644 --- a/_maps/map_files/RandomZLevels/beach.dmm +++ b/_maps/map_files/RandomZLevels/beach.dmm @@ -19,7 +19,7 @@ "as" = (/obj/structure/boulder,/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea) "at" = (/obj/item/flag/cult,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) "au" = (/obj/structure/mineral_door/sandstone,/obj/structure/barricade/wooden,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) -"av" = (/obj/item/weapon/crossbowframe,/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea) +"av" = (/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea) "aw" = (/obj/item/toy/eight_ball/conch,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) "ax" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) "ay" = (/obj/structure/closet/cabinet,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 6eef766fd9b..a2f06af2b25 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -8497,7 +8497,7 @@ "dhv" = (/obj/structure/rack,/obj/item/weapon/pneumatic_cannon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "dhw" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/turf/space,/area/shuttle/vox) "dhx" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) -"dhy" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) +"dhy" = (/obj/structure/rack,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "dhz" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/stealth,/obj/item/clothing/head/helmet/space/vox/stealth,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "dhA" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "dhB" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 2},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 46b1662d8d6..65b00ea2f84 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -1136,7 +1136,7 @@ "EY" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) "EZ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) "Fa" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{name = "Chem Lab"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fb" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Fb" = (/obj/structure/rack,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "Fc" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/automatic/proto,/obj/item/weapon/gun/projectile/automatic/proto{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "Fd" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/weapon/gun/projectile/automatic/m90,/obj/item/weapon/gun/projectile/automatic/m90{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "Fe" = (/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -32},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) @@ -1174,7 +1174,7 @@ "FL" = (/turf/simulated/wall/r_wall,/area/adminconstruction) "FM" = (/obj/structure/rack,/obj/item/weapon/gun/energy/meteorgun,/obj/item/weapon/gun/energy/meteorgun{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "FN" = (/obj/structure/rack,/obj/item/weapon/twohanded/knighthammer{pixel_x = -3; pixel_y = 3},/obj/item/weapon/twohanded/mjollnir,/obj/item/weapon/twohanded/singularityhammer{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FO" = (/obj/structure/rack,/obj/item/weapon/gun/energy/crossbow,/obj/item/weapon/gun/energy/crossbow{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"FO" = (/obj/structure/rack,/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow,/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "FP" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "FQ" = (/obj/structure/table,/obj/random/tool,/obj/item/clothing/gloves/color/yellow,/obj/item/weapon/pinpointer/advpinpointer,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "FR" = (/obj/structure/table,/obj/item/weapon/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2; pixel_z = 0},/obj/item/weapon/grenade/syndieminibomb{pixel_x = -1},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 104c590cccc..da5594a4405 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -648,7 +648,7 @@ "mx" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "my" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/syndicate_depot) "mz" = (/turf/simulated/floor/engine,/area/syndicate_depot) -"mA" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/weapon/storage/box/donkpockets,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/m90,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mA" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/weapon/storage/box/donkpockets,/obj/item/ammo_box/magazine/mm556x45,/obj/item/weapon/gun/projectile/automatic/m90,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "mB" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Telepad"; req_access_txt = "0"},/turf/simulated/floor/engine,/area/syndicate_depot) "mC" = (/obj/machinery/telepad,/turf/simulated/floor/engine,/area/syndicate_depot) "mD" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate,/obj/item/weapon/storage/firstaid/tactical,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 99918eccbc8..d36405db5d1 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -250,4 +250,8 @@ #define MATRIX_GREYSCALE list(0.3, 0.3, 0.3, 0,\ 0.3, 0.3, 0.3, 0,\ 0.3, 0.3, 0.3, 0,\ - 0, 0, 0, 1)//Gun trigger guards #define TRIGGER_GUARD_ALLOW_ALL -1 #define TRIGGER_GUARD_NONE 0 #define TRIGGER_GUARD_NORMAL 1 \ No newline at end of file + 0, 0, 0, 1) +//Gun trigger guards +#define TRIGGER_GUARD_ALLOW_ALL -1 +#define TRIGGER_GUARD_NONE 0 +#define TRIGGER_GUARD_NORMAL 1 diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index d135e62ae69..35274d2102d 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -167,8 +167,6 @@ animals lunging, etc. */ /mob/proc/RangedAttack(var/atom/A, var/params) - if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/color/yellow/power)) && a_intent == I_HARM) - PowerGlove(A) if(!mutations.len) return if((LASER in mutations) && a_intent == I_HARM) LaserEyes(A) // moved into a proc below @@ -322,58 +320,6 @@ spawn(1) LE.process() -/mob/proc/PowerGlove(atom/A) - return - -/mob/living/carbon/human/PowerGlove(atom/A) - var/obj/item/clothing/gloves/color/yellow/power/G = src:gloves - var/time = 100 - var/turf/T = get_turf(src) - var/turf/U = get_turf(A) - var/obj/structure/cable/cable = locate() in T - if(!cable || !istype(cable)) - to_chat(src, "There is no cable here to power the gloves.") - return - if(world.time < G.next_shock) - to_chat(src, "[G] aren't ready to shock again!") - return - src.visible_message("[name] fires an arc of electricity!", \ - "You fire an arc of electricity!", \ - "You hear the loud crackle of electricity!") - var/datum/powernet/PN = cable.get_powernet() - var/available = 0 - var/obj/item/projectile/beam/lightning/L = new /obj/item/projectile/beam/lightning/(get_turf(src)) - if(PN) - available = PN.avail - L.damage = PN.get_electrocute_damage() - if(available >= 5000000) - L.damage = 205 - if(L.damage >= 200) - time = 200 - else if(L.damage >= 100) - time = 150 - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - if(L.damage <= 0) - qdel(L) - if(L) - playsound(get_turf(src), 'sound/effects/eleczap.ogg', 75, 1) - L.tang = L.adjustAngle(get_angle(U,T)) - L.icon = midicon - L.icon_state = "[L.tang]" - L.firer = usr - L.def_zone = get_organ_target() - L.original = src - L.current = U - L.starting = U - L.yo = U.y - T.y - L.xo = U.x - T.x - spawn( 1 ) - L.process() - - next_move = world.time + 12 - G.next_shock = world.time + time // Simple helper to face what you clicked on, in case it should be needed in more than one place /mob/proc/face_atom(var/atom/A) @@ -419,4 +365,4 @@ else var/turf/T = screen_loc2turf(modifiers["screen-loc"], get_turf(usr)) T.Click(location, control, params) - return 1 \ No newline at end of file + return 1 diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 08c418778a3..d9daba46e40 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -605,10 +605,10 @@ var/list/uplink_items = list() gamemodes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/machinegun - name = "Box Magazine - 7.62x51mm" - desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machine gun. By the time you need to use this, you'll already be on a pile of corpses." + name = "Box Magazine - 5.56x45mm" + desc = "A 50-round magazine of 5.56x45mm ammunition for use in the L6 SAW machine gun. By the time you need to use this, you'll already be on a pile of corpses." reference = "762" - item = /obj/item/ammo_box/magazine/m762 + item = /obj/item/ammo_box/magazine/mm556x45 cost = 12 gamemodes = list(/datum/game_mode/nuclear) surplus = 0 diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 803a7ba0d80..3c8b96935ec 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -72,7 +72,7 @@ rcd light flash thingy on matter drain if(T.z in config.station_levels) // Increase health by 37.5% of original max, decrease delays between shots to 66% turret.health += initial(turret.health) * 3 / 8 - turret.eprojectile = /obj/item/projectile/beam/heavylaser //Once you see it, you will know what it means to FEAR. + turret.eprojectile = /obj/item/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR. turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg' to_chat(src, "Turrets upgraded.") /datum/AI_Module/large/destroy_rcd diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 5107ff7cab4..d1c5428d093 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -309,7 +309,9 @@ item_state = "alienpistol" origin_tech = "combat=5;materials=4;powerstorage=3;abductor=3" -/obj/item/weapon/gun/energy/decloner/alien/special_check(user) +/obj/item/weapon/gun/energy/decloner/alien/can_trigger_gun(user) + if(!..()) + return 0 if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user if(H.get_species() != "Abductor") @@ -631,4 +633,4 @@ Congratulations! You are now trained for xenobiology research!"} icon_state = "abductor" icon_closed = "abductor" icon_opened = "abductoropen" - material_drop = /obj/item/stack/sheet/mineral/abductor \ No newline at end of file + material_drop = /obj/item/stack/sheet/mineral/abductor diff --git a/code/game/gamemodes/steal_items.dm b/code/game/gamemodes/steal_items.dm index fd648b05c7d..25d2807432e 100644 --- a/code/game/gamemodes/steal_items.dm +++ b/code/game/gamemodes/steal_items.dm @@ -35,7 +35,7 @@ /datum/theft_objective/hoslaser name = "the head of security's recreated antique laser gun" - typepath = /obj/item/weapon/gun/energy/hos + typepath = /obj/item/weapon/gun/energy/gun/hos protected_jobs = list("Head Of Security") /datum/theft_objective/hand_tele @@ -244,4 +244,4 @@ datum/theft_objective/ai/check_special_completion(var/obj/item/device/aicard/C) typepath = /obj/item/stack/sheet/mineral/uranium min=10 max=30 - step=5 \ No newline at end of file + step=5 diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index eab12bb22d5..7378cae2b85 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -100,10 +100,9 @@ /obj/machinery/porta_turret/proc/setup() var/obj/item/weapon/gun/energy/E = installation //All energy-based weapons are applicable - if(istext(installation)) E = text2path(installation) - //var/obj/item/ammo_casing/shottype = E.projectile_type + var/obj/item/ammo_casing/shottype = E.ammo_type[1] - projectile = initial(E.projectile_type) + projectile = shottype.projectile_type eprojectile = projectile shot_sound = initial(E.fire_sound) eshot_sound = shot_sound @@ -561,9 +560,6 @@ var/list/turret_icons if(get_dist(src, L) > 7) //if it's too far away, why bother? return TURRET_NOT_TARGET - if(!check_trajectory(L, src)) //check if we have true line of sight - return TURRET_NOT_TARGET - if(emagged) // If emagged not even the dead get a rest return L.stat ? TURRET_SECONDARY_TARGET : TURRET_PRIORITY_TARGET diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 92bca16c5b7..a1559c4fb3a 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -203,7 +203,8 @@ if(istype(O,/obj/item/weapon/gun/energy/disabler/cyborg)) var/obj/item/weapon/gun/energy/disabler/cyborg/D = O if(D.power_supply.charge < D.power_supply.maxcharge) - D.power_supply.give(D.charge_cost) + var/obj/item/ammo_casing/energy/E = D.ammo_type[D.select] + D.power_supply.give(E.e_cost) D.update_icon() else D.charge_tick = 0 diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 82060d47bc2..ff24aa01027 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -227,15 +227,15 @@ if(1) A = new /obj/item/projectile/beam(loc) if(2) - A = new /obj/item/projectile/beam/heavylaser(loc) + A = new /obj/item/projectile/beam/laser/heavylaser(loc) if(3) A = new /obj/item/projectile/beam/pulse(loc) if(4) A = new /obj/item/projectile/magic/change(loc) if(5) - A = new /obj/item/projectile/lasertag/blue(loc) + A = new /obj/item/projectile/beam/lasertag/bluetag(loc) if(6) - A = new /obj/item/projectile/lasertag/red(loc) + A = new /obj/item/projectile/beam/lasertag/redtag(loc) A.original = target use_power(500) else diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index d95cbaff799..a92e949bafc 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -56,7 +56,7 @@ name = "CH-LC \"Solaris\" Laser Cannon" icon_state = "mecha_laser" energy_drain = 40 - projectile = /obj/item/projectile/beam/heavylaser + projectile = /obj/item/projectile/beam/laser/heavylaser fire_sound = 'sound/weapons/lasercannonfire.ogg' /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index bfb90de8cac..512baa30703 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -125,13 +125,13 @@ to_chat(usr, "This robot has had its disabler removed!") return 0 - if(T.recharge_time <= 2) + if(T.charge_delay <= 2) to_chat(R, "Maximum cooling achieved for this hardpoint!") to_chat(usr, "There's no room for another cooling unit!") return 0 else - T.recharge_time = max(2 , T.recharge_time - 4) + T.charge_delay = max(2 , T.charge_delay - 4) return 1 @@ -214,4 +214,4 @@ return 0 R.emagged = 1 - return 1 \ No newline at end of file + return 1 diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index c71f2e14182..fd3f5505f4f 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -114,7 +114,7 @@ bmark.pixel_x-- bmark.pixel_y-- - if(Proj.damage >= 20 || istype(Proj, /obj/item/projectile/practice)) + if(Proj.damage >= 20 || istype(Proj, /obj/item/projectile/beam/practice)) bmark.icon_state = "scorch" bmark.dir = pick(NORTH,SOUTH,EAST,WEST) // random scorch design @@ -178,4 +178,4 @@ b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4) b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4) - Target.bulletholes.Add(src) \ No newline at end of file + Target.bulletholes.Add(src) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 3fe6dc7102f..c4c5d3cea4c 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -140,7 +140,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40), \ - new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \ + /*new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \ */ new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("easel", /obj/structure/easel, 3, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index e0ac96c4feb..b0a1c45622d 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -41,12 +41,11 @@ icon = 'icons/obj/chronos.dmi' icon_state = "chronogun" item_state = "chronogun" - w_class = 3.0 - projectile_type = "/obj/item/projectile/energy/chrono_beam" - fire_sound = 'sound/weapons/Laser.ogg' - charge_cost = 0 - fire_delay = 50 + w_class = 3 flags = NODROP + ammo_type = list(/obj/item/ammo_casing/energy/chrono_beam) + can_charge = 0 + fire_delay = 50 var/obj/item/weapon/chrono_eraser/TED = null var/obj/effect/chrono_field/field = null var/turf/startpos = null @@ -60,12 +59,13 @@ qdel(src) /obj/item/weapon/gun/energy/chrono_gun/dropped() + ..() qdel(src) /obj/item/weapon/gun/energy/chrono_gun/update_icon() return -/obj/item/weapon/gun/energy/chrono_gun/Fire() +/obj/item/weapon/gun/energy/chrono_gun/process_fire() if(field) field_disconnect(field) ..() @@ -125,18 +125,23 @@ nodamage = 1 var/obj/item/weapon/gun/energy/chrono_gun/gun = null -/obj/item/projectile/energy/chrono_beam/process() +/obj/item/projectile/energy/chrono_beam/fire() gun = firer.get_active_hand() if(istype(gun)) return ..() else return 0 -/obj/item/projectile/energy/chrono_beam/on_hit(var/atom/target) +/obj/item/projectile/energy/chrono_beam/on_hit(atom/target) if(target && gun && isliving(target)) var/obj/effect/chrono_field/F = new(target.loc, target, gun) gun.field_connect(F) +/obj/item/ammo_casing/energy/chrono_beam + name = "eradication beam" + projectile_type = /obj/item/projectile/energy/chrono_beam + icon_state = "chronobolt" + e_cost = 0 /obj/effect/chrono_field name = "eradication field" @@ -256,4 +261,4 @@ #undef CHRONO_BEAM_RANGE -#undef CHRONO_FRAME_COUNT \ No newline at end of file +#undef CHRONO_FRAME_COUNT diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 4a2ced79339..1cadbfbd14a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -115,7 +115,7 @@ new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/storage/belt/security/sec(src) new /obj/item/taperoll/police(src) - new /obj/item/weapon/gun/energy/hos(src) + new /obj/item/weapon/gun/energy/gun/hos(src) new /obj/item/weapon/door_remote/head_of_security(src) diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index 75fc6af84d9..4afbeaa4f15 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -120,8 +120,8 @@ var/global/sent_honksquad = 0 equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/waterflower(src), slot_in_backpack) if(prob(50)) equip_to_slot_or_del(new /obj/item/weapon/gun/energy/clown(src), slot_in_backpack) - else - equip_to_slot_or_del(new /obj/item/weapon/gun/grenadelauncher/piecannon(src), slot_in_backpack) + //else + //equip_to_slot_or_del(new /obj/item/weapon/gun/grenadelauncher/piecannon(src), slot_in_backpack) src.mutations.Add(CLUMSY) @@ -134,4 +134,4 @@ var/global/sent_honksquad = 0 W.registered_name = real_name equip_to_slot_or_del(W, slot_wear_id) - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index 6131962b881..0b84e6d065a 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -144,7 +144,7 @@ var/global/sent_syndicate_strike_team = 0 equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses) equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back) - equip_to_slot_or_del(new /obj/item/ammo_box/magazine/m762, slot_in_backpack) + equip_to_slot_or_del(new /obj/item/ammo_box/magazine/mm556x45) equip_to_slot_or_del(new /obj/item/ammo_box/magazine/m45(src), slot_in_backpack) equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(src), slot_in_backpack) @@ -173,4 +173,4 @@ var/global/sent_syndicate_strike_team = 0 W.registered_name = real_name equip_to_slot_or_del(W, slot_wear_id) - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index c5e370f06f7..0f6f3dda06e 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -18,8 +18,8 @@ var/global/vox_tick = 1 equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store) - var/obj/item/weapon/gun/launcher/spikethrower/W = new(src) - equip_to_slot_or_del(W, slot_r_hand) + //var/obj/item/weapon/gun/launcher/spikethrower/W = new(src) + //equip_to_slot_or_del(W, slot_r_hand) if(2) // Vox engineer! @@ -77,4 +77,4 @@ var/global/vox_tick = 1 vox_tick++ if (vox_tick > 4) vox_tick = 1 - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/clothing/spacesuits/rig/modules/combat.dm b/code/modules/clothing/spacesuits/rig/modules/combat.dm index 2473fd24eb8..16ddf2bdd69 100644 --- a/code/modules/clothing/spacesuits/rig/modules/combat.dm +++ b/code/modules/clothing/spacesuits/rig/modules/combat.dm @@ -119,7 +119,7 @@ gun.attack_self(holder.wearer) return 1 - gun.Fire(target,holder.wearer) + gun.process_fire(target,holder.wearer) return 1 /obj/item/rig_module/mounted/egun @@ -168,7 +168,7 @@ active_power_cost = 10 passive_power_cost = 0 - gun_type = /obj/item/weapon/gun/energy/crossbow/ninja + gun_type = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/ninja /obj/item/rig_module/mounted/energy_blade/process() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7775830b4a0..cb067591904 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1982,4 +1982,21 @@ . |= A.GetAccess() /mob/living/carbon/human/is_mechanical() - return ..() || (species.flags & ALL_RPARTS) != 0 \ No newline at end of file + return ..() || (species.flags & ALL_RPARTS) != 0 + +/mob/living/carbon/human/can_use_guns(var/obj/item/weapon/gun/G) + . = ..() + + if(G.trigger_guard == TRIGGER_GUARD_NORMAL) + if(HULK in mutations) + to_chat(src, "Your meaty finger is much too large for the trigger guard!") + return 0 + if(species.flags & NOGUNS) + to_chat(src, "Your fingers don't fit in the trigger guard!") + return 0 + + if(martial_art && martial_art.name == "The Sleeping Carp") //great dishonor to famiry + to_chat(src, "Use of ranged weaponry would bring dishonor to the clan.") + return 0 + + return . diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 835f741be3d..c30e02f5881 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -46,7 +46,10 @@ emp_act if((P.embed && prob(20 + max(P.damage - armor, -10)))) var/obj/item/weapon/shard/shrapnel/SP = new() (SP.name) = "[P.name] shrapnel" - (SP.desc) = "[SP.desc] It looks like it was fired from [P.shot_from]." + if(P.ammo_casing && P.ammo_casing.caliber) + (SP.desc) = "[SP.desc] It looks like it is a [P.ammo_casing.caliber] caliber round." + else + (SP.desc) = "[SP.desc] The round's caliber is unidentifiable." (SP.loc) = organ organ.embed(SP) diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm index 0a220accc98..b0806e66241 100644 --- a/code/modules/mob/living/carbon/human/interactive/functions.dm +++ b/code/modules/mob/living/carbon/human/interactive/functions.dm @@ -693,7 +693,7 @@ best = R if(istype(R, /obj/item/weapon/gun)) var/obj/item/weapon/gun/G = R - if(G.can_fire()) + if(G.can_shoot()) best = R break // gun with ammo? screw the rest if(best && best != main_hand) @@ -727,22 +727,23 @@ if(main_hand.force != 0) if(istype(main_hand,/obj/item/weapon/gun)) var/obj/item/weapon/gun/G = main_hand - if(G.special_check(src)) + if(G.can_trigger_gun(src)) var/shouldFire = 1 if(istype(main_hand, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/P = main_hand var/stunning = 0 - if(ispath(text2path(P.projectile_type), /obj/item/projectile/energy/electrode)) - stunning = 1 + for(var/A in P.ammo_type) + if(ispath(A,/obj/item/ammo_casing/energy/electrode)) + stunning = 1 var/mob/stunCheck = TARGET if(stunning && stunCheck.stunned) shouldFire = 0 if(shouldFire) - if(!G.process_chambered()) - G.click_empty(src) + if(!G.can_shoot()) + G.shoot_with_empty_chamber(src) npcDrop(G, 1) else - G.Fire(TARGET, src) + G.process_fire(TARGET, src) else if(get_dist(src,TARGET) > 6) if(!walk2derpless(TARGET)) @@ -871,4 +872,4 @@ else A.stamp(S) custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")] as they stamp \the [A] with \a [S]!") - return \ No newline at end of file + return diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f28e884f92f..f3c48bce39a 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -855,3 +855,9 @@ tally += 10 return tally + +/mob/living/proc/can_use_guns(var/obj/item/weapon/gun/G) + if (G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser()) + to_chat(src, "You don't have the dexterity to do this!") + return 0 + return 1 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 4d994436489..cc50408148e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -47,10 +47,6 @@ proj_sharp = 0 proj_edge = 0 - if(istype(P, /obj/item/projectile/beam/lightning)) //Stupid snowflake lightning gun. - if(P.damage >= 200) - src.dust() - if(!P.nodamage) apply_damage(P.damage, P.damage_type, def_zone, armor) return P.on_hit(src, armor, def_zone) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 12dd032ba49..23b87eb0c51 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -403,7 +403,7 @@ Auto Patrol[]"}, shoot_sound = 'sound/weapons/laser.ogg' if(emagged == 2) if(lasercolor) - projectile = /obj/item/projectile/lasertag + projectile = /obj/item/projectile/beam/lasertag else projectile = /obj/item/projectile/beam else @@ -411,9 +411,9 @@ Auto Patrol[]"}, shoot_sound = 'sound/weapons/Taser.ogg' projectile = /obj/item/projectile/energy/electrode else if(lasercolor == "b") - projectile = /obj/item/projectile/lasertag/blue + projectile = /obj/item/projectile/beam/lasertag/bluetag else if(lasercolor == "r") - projectile = /obj/item/projectile/lasertag/red + projectile = /obj/item/projectile/beam/lasertag/redtag /mob/living/simple_animal/bot/ed209/proc/shootAt(mob/target) if(lastfired && world.time - lastfired < shot_delay) @@ -491,10 +491,10 @@ Auto Patrol[]"}, if(!disabled) var/lasertag_check = 0 if((lasercolor == "b")) - if(istype(Proj, /obj/item/projectile/lasertag/red)) + if(istype(Proj, /obj/item/projectile/beam/lasertag/redtag)) lasertag_check++ else if((lasercolor == "r")) - if(istype(Proj, /obj/item/projectile/lasertag/blue)) + if(istype(Proj, /obj/item/projectile/beam/lasertag/bluetag)) lasertag_check++ if(lasertag_check) icon_state = "[lasercolor]ed2090" diff --git a/code/modules/mob/living/simple_animal/vox.dm b/code/modules/mob/living/simple_animal/vox.dm index 3b34ddaf143..0ca934739d5 100644 --- a/code/modules/mob/living/simple_animal/vox.dm +++ b/code/modules/mob/living/simple_animal/vox.dm @@ -65,9 +65,9 @@ if ((O.client && !( O.blinded ))) to_chat(O, "\red [src] launches a razor-sharp quill at [target]!") - var/obj/item/weapon/arrow/quill/Q = new(loc) - Q.fingerprintslast = src.ckey - Q.throw_at(target,10,30) + //var/obj/item/weapon/arrow/quill/Q = new(loc) + //Q.fingerprintslast = src.ckey + //Q.throw_at(target,10,30) quills-- spawn(100) @@ -155,4 +155,4 @@ desc = "A series of metallic lenses and chains." icon = 'icons/obj/clothing/hats.dmi' icon_state = "amp" - item_state = "amp" \ No newline at end of file + item_state = "amp" diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 169e968afaf..ab3c224ac08 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -17,7 +17,6 @@ var/randomspread = 0 //Randomspread for automatics var/click_cooldown_override = 0 //Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown. - /obj/item/ammo_casing/New() ..() if(projectile_type) @@ -32,6 +31,11 @@ icon_state = "[initial(icon_state)][BB ? "-live" : ""]" desc = "[initial(desc)][BB ? "" : " This one is spent"]" +/obj/item/ammo_casing/proc/newshot() //For energy weapons, shotgun shells and wands (!). + if (!BB) + BB = new projectile_type(src) + return + /obj/item/ammo_casing/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/ammo_box)) var/obj/item/ammo_box/box = I @@ -99,7 +103,7 @@ update_icon() /obj/item/ammo_box/Destroy() - for(atom/A in stored_ammo) + for(var/atom/A in stored_ammo) qdel(A) stored_ammo = null return ..() @@ -128,7 +132,7 @@ for(var/obj/item/ammo_casing/AC in stored_ammo) if(!AC.BB)//found a spent ammo stored_ammo -= AC - AC.loc = get_turf(src.loc) + AC.loc = get_turf(loc) stored_ammo += R R.loc = src diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 010ce185acb..980e9fb16bc 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -96,7 +96,7 @@ icon_state = "gshell" projectile_type = /obj/item/projectile/bullet/pellet pellets = 6 - deviation = 25 + variance = 25 /obj/item/ammo_casing/shotgun/rubbershot name = "rubber shot" @@ -104,7 +104,7 @@ icon_state = "bshell" projectile_type = /obj/item/projectile/bullet/rpellet pellets = 6 - deviation = 25 + variance = 25 materials = list(MAT_METAL=4000) /obj/item/ammo_casing/shotgun/beanbag @@ -121,17 +121,17 @@ projectile_type = /obj/item/projectile/bullet/pellet/weak materials = list(MAT_METAL=250) pellets = 5 - deviation = 25 + variance = 25 /obj/item/ammo_casing/shotgun/improvised/overload name = "overloaded improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \ propellant. It's like playing russian roulette, with a shotgun." icon_state = "improvshell" - projectile_type = /obj/item/projectile/bullet/pellet/random + projectile_type = /obj/item/projectile/bullet/pellet/overload materials = list(MAT_METAL=250) pellets = 5 - deviation = 40 + variance = 40 /obj/item/ammo_casing/shotgun/improvised/overload/New() ..() @@ -191,7 +191,7 @@ icon_state = "ionshell" projectile_type = /obj/item/projectile/ion/weak pellets = 4 - deviation = 35 + variance = 35 /obj/item/ammo_casing/shotgun/laserslug name = "laser slug" diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index b4e979e3b20..4fc5295e8ae 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -110,7 +110,8 @@ /obj/item/ammo_casing/energy/temp/newshot() ..() - BB.temperature = temperature + var/obj/item/projectile/temp/T = BB + T.temperature = temperature /obj/item/ammo_casing/energy/meteor projectile_type = /obj/item/projectile/meteor @@ -202,7 +203,7 @@ projectile_type = /obj/item/projectile/energy/shock_revolver /obj/item/ammo_casing/energy/toxplasma - projectile_type = /obj/item/projectile/toxplasma + projectile_type = /obj/item/projectile/energy/toxplasma fire_sound = "sound/weapons/taser2.ogg" select_name = "plasma dart" @@ -214,7 +215,7 @@ /obj/item/ammo_casing/energy/sniper projectile_type = /obj/item/projectile/beam/sniper fire_sound = 'sound/weapons/marauder.ogg' - fire_delay = 50 + delay = 50 select_name = "sniper beam" /obj/item/ammo_casing/energy/teleport @@ -222,3 +223,8 @@ fire_sound = 'sound/weapons/wave.ogg' e_cost = 1250 select_name = "teleport beam" + var/teleport_target + +/obj/item/ammo_casing/energy/teleport/newshot() + var/obj/item/projectile/energy/teleport/T = BB + T.teleport_target = teleport_target diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index e26e536e62a..367270d0cd1 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -50,7 +50,7 @@ R.loc = src if(bullet) - bullet.loc = get_turf(src.loc) + bullet.loc = get_turf(loc) return 1 return 0 diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index 9642923c452..c17a7948fcb 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -28,7 +28,7 @@ if (zone_override) BB.def_zone = zone_override else - BB.def_zone = user.zone_selected + BB.def_zone = user.zone_sel.selecting BB.suppressed = quiet if(reagents && BB.reagents) @@ -60,18 +60,18 @@ /obj/item/projectile/proc/preparePixelProjectile(atom/target, var/turf/targloc, mob/living/user, params, spread) var/turf/curloc = get_turf(user) - src.loc = get_turf(user) - src.starting = get_turf(user) - src.current = curloc - src.yo = targloc.y - curloc.y - src.xo = targloc.x - curloc.x + loc = get_turf(user) + starting = get_turf(user) + current = curloc + yo = targloc.y - curloc.y + xo = targloc.x - curloc.x if(params) var/list/mouse_control = params2list(params) if(mouse_control["icon-x"]) - src.p_x = text2num(mouse_control["icon-x"]) + p_x = text2num(mouse_control["icon-x"]) if(mouse_control["icon-y"]) - src.p_y = text2num(mouse_control["icon-y"]) + p_y = text2num(mouse_control["icon-y"]) if(mouse_control["screen-loc"]) //Split screen-loc up into X+Pixel_X and Y+Pixel_Y var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",") @@ -90,6 +90,6 @@ var/ox = round(screenview/2) //"origin" x var/oy = round(screenview/2) //"origin" y var/angle = Atan2(y - oy, x - ox) - src.Angle = angle + Angle = angle if(spread) - src.Angle += spread + Angle += spread diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 7d72082b297..8233a172af8 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -65,7 +65,6 @@ ..() if(F) verbs += /obj/item/weapon/gun/proc/toggle_gunlight - new /datum/action/item_action/toggle_gunlight(src) build_zooming() /obj/item/weapon/gun/examine(mob/user) @@ -120,7 +119,7 @@ return if(!ismob(target) || user.a_intent == "harm") //melee attack return - if(target == user && user.zone_selected != "mouth") //so we can't shoot ourselves (unless mouth selected) + if(target == user && user.zone_sel.selecting != "mouth") //so we can't shoot ourselves (unless mouth selected) return if(istype(user))//Check if the user can use the gun, if the user isn't alive(turrets) assume it can. @@ -133,7 +132,7 @@ return if(flag) - if(user.zone_selected == "mouth") + if(user.zone_sel.selecting == "mouth") handle_suicide(user, target, params) return @@ -222,7 +221,7 @@ obj/item/weapon/gun/proc/newshot() user.update_inv_l_hand() else user.update_inv_r_hand() - feedback_add_details("gun_fired","[src.type]") + feedback_add_details("gun_fired","[type]") /obj/item/weapon/gun/attack(mob/M as mob, mob/user) if(user.a_intent == "harm") //Flogging @@ -239,15 +238,12 @@ obj/item/weapon/gun/proc/newshot() return to_chat(user, "You click [S] into place on [src].") if(S.on) - SetLuminosity(0) + set_light(0) F = S I.loc = src update_icon() update_gunlight(user) verbs += /obj/item/weapon/gun/proc/toggle_gunlight - var/datum/action/A = new /datum/action/item_action/toggle_gunlight(src) - if(loc == user) - A.Grant(user) if(istype(I, /obj/item/weapon/screwdriver)) if(F && can_flashlight) @@ -259,8 +255,6 @@ obj/item/weapon/gun/proc/newshot() S.update_brightness(user) update_icon() verbs -= /obj/item/weapon/gun/proc/toggle_gunlight - for(var/datum/action/item_action/toggle_gunlight/TGL in actions) - qdel(TGL) if(unique_rename) if(istype(I, /obj/item/weapon/pen)) @@ -351,7 +345,7 @@ obj/item/weapon/gun/proc/newshot() semicd = 1 - if(!do_mob(user, target, 120) || user.zone_selected != "mouth") + if(!do_mob(user, target, 120) || user.zone_sel.selecting != "mouth") if(user) if(user == target) user.visible_message("[user] decided life was worth living.") diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index 56852f4e1ae..a503e92dd6b 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -1,71 +1,5 @@ -//Vox pinning weapon. -/obj/item/weapon/gun/launcher/spikethrower - - name = "Vox spike thrower" - desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive." - - var/last_regen = 0 - var/spike_gen_time = 100 - var/max_spikes = 3 - var/spikes = 3 - release_force = 30 - icon = 'icons/obj/gun.dmi' - icon_state = "spikethrower3" - item_state = "spikethrower" - fire_sound_text = "a strange noise" - fire_sound = 'sound/weapons/bladeslice.ogg' - -/obj/item/weapon/gun/launcher/spikethrower/New() - ..() - processing_objects.Add(src) - last_regen = world.time - -/obj/item/weapon/gun/launcher/spikethrower/Destroy() - processing_objects.Remove(src) - return ..() - -/obj/item/weapon/gun/launcher/spikethrower/process() - - if(spikes < max_spikes && world.time > last_regen + spike_gen_time) - spikes++ - last_regen = world.time - update_icon() - -/obj/item/weapon/gun/launcher/spikethrower/examine(mob/user) - ..(user) - to_chat(user, "It has [spikes] [spikes == 1 ? "spike" : "spikes"] remaining.") - -/obj/item/weapon/gun/launcher/spikethrower/update_icon() - icon_state = "spikethrower[spikes]" - -/obj/item/weapon/gun/launcher/spikethrower/emp_act(severity) - return - -/obj/item/weapon/gun/launcher/spikethrower/special_check(user) - if(istype(user,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - if(H.species && H.species.name != "Vox" && H.species.name != "Vox Armalis") - to_chat(user, "\red \The [src] does not respond to you!") - return 0 - return 1 - -/obj/item/weapon/gun/launcher/spikethrower/update_release_force() - return - -/obj/item/weapon/gun/launcher/spikethrower/chamber_round() - if(in_chamber) return 1 - if(spikes < 1) return 0 - - spikes-- - in_chamber = new /obj/item/weapon/spike(src) - return 1 - -/obj/item/weapon/gun/launcher/spikethrower/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - if(..()) update_icon() - //This gun only functions for armalis. The on-sprite is too huge to render properly on other sprites. /obj/item/weapon/gun/energy/noisecannon - name = "alien heavy cannon" desc = "It's some kind of enormous alien weapon, as long as a man is tall." @@ -73,15 +7,11 @@ icon_state = "noisecannon" item_state = "noisecannon" recoil = 1 - force = 10 - projectile_type = "/obj/item/projectile/energy/sonic" + ammo_type = "/obj/item/projectile/energy/sonic" cell_type = "/obj/item/weapon/stock_parts/cell/super" - fire_delay = 40 fire_sound = 'sound/effects/basscannon.ogg' - var/mode = 1 - /obj/item/weapon/gun/energy/noisecannon/attack_hand(mob/user as mob) if(loc != user) var/mob/living/carbon/human/H = user @@ -89,16 +19,18 @@ if(H.species.name == "Vox Armalis") ..() return - to_chat(user, "\red \The [src] is far too large for you to pick up.") + to_chat(user, "\The [src] is far too large for you to pick up.") return -/obj/item/weapon/gun/energy/noisecannon/process_chambered() //Does not have ammo. - in_chamber = new projectile_type(src) - return 1 - /obj/item/weapon/gun/energy/noisecannon/update_icon() return +//Casing +/obj/item/ammo_casing/energy/sonic + projectile_type = /obj/item/projectile/energy/sonic + fire_sound = 'sound/effects/basscannon.ogg' + delay = 40 + //Projectile. /obj/item/projectile/energy/sonic name = "distortion" diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index df023424265..32c3009f312 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -3,6 +3,7 @@ name = "energy gun" desc = "A basic energy-based gun." fire_sound = 'sound/weapons/Taser.ogg' + fire_sound_text = "laser blast" var/obj/item/weapon/stock_parts/cell/power_supply //What type of power cell this uses var/cell_type = /obj/item/weapon/stock_parts/cell @@ -42,23 +43,24 @@ update_icon() /obj/item/weapon/gun/energy/Destroy() - if(self_recharge) + if(selfcharge) processing_objects.Remove(src) return ..() /obj/item/weapon/gun/energy/process() if(selfcharge) //Every [recharge_time] ticks, recharge a shot for the cyborg charge_tick++ - if(charge_tick < recharge_time) + if(charge_tick < charge_delay) return 0 charge_tick = 0 if(!power_supply) return 0 // check if we actually need to recharge + var/obj/item/ammo_casing/energy/E = ammo_type[select] if(use_external_power) var/obj/item/weapon/stock_parts/cell/external = get_external_power_supply() - if(!external || !external.use(charge_cost/10)) //Take power from the borg... + if(!external || !external.use((E.e_cost)/10)) //Take power from the borg... return 0 //Note, uses /10 because of shitty mods to the cell system - power_supply.give(charge_cost) //... to recharge the shot + power_supply.give(E.e_cost) //... to recharge the shot update_icon() /obj/item/weapon/gun/energy/attack_self(mob/living/user as mob) @@ -136,11 +138,11 @@ toggle_gunlight() /obj/item/weapon/gun/energy/suicide_act(mob/user) - if (src.can_shoot()) - user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.") + if (can_shoot()) + user.visible_message("[user] is putting the barrel of the [name] in \his mouth. It looks like \he's trying to commit suicide.") sleep(25) if(user.l_hand == src || user.r_hand == src) - user.visible_message("[user] melts \his face off with the [src.name]!") + user.visible_message("[user] melts \his face off with the [name]!") playsound(loc, fire_sound, 50, 1, -1) var/obj/item/ammo_casing/energy/shot = ammo_type[select] power_supply.use(shot.e_cost) @@ -150,21 +152,21 @@ user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!") + user.visible_message("[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!") playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) return (OXYLOSS) /obj/item/weapon/gun/energy/proc/robocharge() - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc + if(isrobot(loc)) + var/mob/living/silicon/robot/R = loc if(R && R.cell) var/obj/item/ammo_casing/energy/shot = ammo_type[select] //Necessary to find cost of shot if(R.cell.use(shot.e_cost/10)) //Take power from the borg... //Divided by 10 because cells and charge costs are fucked. power_supply.give(shot.e_cost) //... to recharge the shot /obj/item/weapon/gun/energy/proc/get_external_power_supply() - if(istype(src.loc, /obj/item/rig_module)) - var/obj/item/rig_module/module = src.loc + if(istype(loc, /obj/item/rig_module)) + var/obj/item/rig_module/module = loc if(module.holder && module.holder.wearer) var/mob/living/carbon/human/H = module.holder.wearer if(istype(H) && H.back) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 46add8b8b47..952c61aaf00 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -92,9 +92,9 @@ /obj/item/weapon/gun/energy/lasercannon/mounted name = "mounted laser cannon" - self_recharge = 1 + selfcharge = 1 use_external_power = 1 - recharge_time = 10 + charge_delay = 10 /obj/item/weapon/gun/energy/lasercannon/cyborg @@ -130,7 +130,6 @@ origin_tech = "combat=1;magnets=2" clumsy_check = 0 needs_permit = 0 - pin = /obj/item/device/firing_pin/tag/blue ammo_x_offset = 2 selfcharge = 1 @@ -142,6 +141,5 @@ origin_tech = "combat=1;magnets=2" clumsy_check = 0 needs_permit = 0 - pin = /obj/item/device/firing_pin/tag/red ammo_x_offset = 2 selfcharge = 1 diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index b53563c81a7..ff9ef57a322 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -23,7 +23,7 @@ /obj/item/weapon/gun/energy/gun/mounted name = "mounted energy gun" - self_recharge = 1 + selfcharge = 1 use_external_power = 1 /obj/item/weapon/gun/energy/gun/mini @@ -37,8 +37,8 @@ can_flashlight = 0 // Can't attach or detach the flashlight, and override it's icon update /obj/item/weapon/gun/energy/gun/mini/New() - cell.maxcharge = 6000 - cell.charge = 6000 + power_supply.maxcharge = 6000 + power_supply.charge = 6000 F = new /obj/item/device/flashlight/seclite(src) ..() @@ -84,7 +84,6 @@ origin_tech = "combat=3;materials=5;powerstorage=3" var/fail_tick = 0 charge_delay = 5 - pin = null can_charge = 0 ammo_x_offset = 1 ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/disabler) @@ -106,11 +105,11 @@ switch(fail_tick) if(0 to 200) fail_tick += (2*(100-reliability)) - M.rad_act(40) + M.apply_effect(rand(3,120), IRRADIATE) to_chat(M, "Your [name] feels warmer.") if(201 to INFINITY) - SSobj.processing.Remove(src) - M.rad_act(80) + processing_objects.Remove(src) + M.apply_effect(300, IRRADIATE) crit_fail = 1 to_chat(M, "Your [name]'s reactor overloads!") @@ -130,27 +129,3 @@ overlays += "[icon_state]_fail_1" if(151 to INFINITY) overlays += "[icon_state]_fail_2" - -/obj/item/weapon/gun/energy/gun/turret/attack_self(mob/living/user as mob) - switch(mode) - if(0) - mode = 1 - charge_cost = 500 - fire_sound = 'sound/weapons/Laser.ogg' - to_chat(user, "\red [src.name] is now set to kill.") - projectile_type = /obj/item/projectile/beam - modifystate = "energykill" - fire_delay = 0 - if(1) - mode = 0 - charge_cost = 1000 - fire_sound = 'sound/weapons/Taser.ogg' - to_chat(user, "\red [src.name] is now set to stun.") - projectile_type = /obj/item/projectile/energy/electrode - modifystate = "energystun" - fire_delay = 15 - update_icon() - if(user.l_hand == src) - user.update_inv_l_hand() - else - user.update_inv_r_hand() diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index b8ddc12a691..0587040afe4 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -54,7 +54,7 @@ ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse) /obj/item/weapon/gun/energy/pulse/destroyer/attack_self(mob/living/user) - to_chat(user, "[src.name] has three settings, and they are all DESTROY.") + to_chat(user, "[name] has three settings, and they are all DESTROY.") /obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911 name = "\improper M1911-P" diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index e0328ac6058..949e0ef7d7d 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -173,7 +173,7 @@ /obj/item/weapon/gun/energy/kinetic_accelerator/proc/reload() power_supply.give(5000) if(!suppressed) - playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) + playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) else to_chat(loc, "[src] silently charges up.") update_icon() @@ -200,6 +200,10 @@ holds_charge = TRUE unique_frequency = TRUE +/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/ninja + name = "energy dart thrower" + ammo_type = list(/obj/item/ammo_casing/energy/dart) + /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large name = "energy crossbow" desc = "A reverse engineered weapon using syndicate technology." @@ -218,8 +222,8 @@ /obj/item/weapon/gun/energy/kinetic_accelerator/suicide_act(mob/user) if(!suppressed) - playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) - user.visible_message("[user] cocks the [src.name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!") + playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) + user.visible_message("[user] cocks the [name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!") shoot_live_shot() return (OXYLOSS) @@ -235,9 +239,9 @@ flags = CONDUCT | OPENCONTAINER attack_verb = list("attacked", "slashed", "cut", "sliced") force = 12 - sharpness = IS_SHARP + sharp = 1 + edge = 1 can_charge = 0 - heat = 3800 /obj/item/weapon/gun/energy/plasmacutter/examine(mob/user) ..() @@ -406,7 +410,7 @@ obj/item/weapon/gun/energy/staff/focus var/e_cost = 1000 origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2" - ammo_type = /obj/item/ammo_casing/energy/temp + ammo_type = list(/obj/item/ammo_casing/energy/temp) cell_type = "/obj/item/weapon/stock_parts/cell" var/powercost = "" @@ -427,8 +431,9 @@ obj/item/weapon/gun/energy/staff/focus /obj/item/weapon/gun/energy/temperature/newshot() ..() - chambered.temperature = temperature - chambered.e_cost = e_cost + var/obj/item/ammo_casing/energy/temp/T = chambered + T.temperature = temperature + T.e_cost = e_cost /obj/item/weapon/gun/energy/temperature/attack_self(mob/living/user as mob) user.set_machine(src) @@ -459,23 +464,22 @@ obj/item/weapon/gun/energy/staff/focus add_fingerprint(usr) return - /obj/item/weapon/gun/energy/temperature/process() switch(temperature) if(0 to 100) - charge_cost = 3000 + e_cost = 3000 powercost = "High" if(100 to 250) - charge_cost = 2000 + e_cost = 2000 powercost = "Medium" if(251 to 300) - charge_cost = 1000 + e_cost = 1000 powercost = "Low" if(301 to 400) - charge_cost = 2000 + e_cost = 2000 powercost = "Medium" if(401 to 1000) - charge_cost = 3000 + e_cost = 3000 powercost = "High" switch(powercost) if("High") powercostcolor = "orange" diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 5e3f5128d6f..6fdbe55c171 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -9,7 +9,7 @@ /obj/item/weapon/gun/energy/taser/mounted name = "mounted taser gun" - self_recharge = 1 + selfcharge = 1 use_external_power = 1 /obj/item/weapon/gun/energy/taser/cyborg diff --git a/code/modules/projectiles/guns/energy/telegun.dm b/code/modules/projectiles/guns/energy/telegun.dm index e145e2ccbcf..0113f11068c 100644 --- a/code/modules/projectiles/guns/energy/telegun.dm +++ b/code/modules/projectiles/guns/energy/telegun.dm @@ -35,3 +35,7 @@ var/desc = input("Please select a location to lock in.", "Telegun Target Interface") in L teleport_target = L[desc] + +/obj/item/weapon/gun/energy/telegun/newshot() + var/obj/item/ammo_casing/energy/teleport/T = chambered + T.teleport_target = teleport_target diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm index 5d883ac7de7..7af9c18ea7d 100644 --- a/code/modules/projectiles/guns/grenade_launcher.dm +++ b/code/modules/projectiles/guns/grenade_launcher.dm @@ -15,7 +15,7 @@ /obj/item/weapon/gun/grenadelauncher/examine(mob/user) if(..(user, 2)) - to_chat(user, "[grenades.len] / [max_grenades] [ammo_name]s.") + to_chat(user, "[grenades.len] / [max_grenades] grenades.") /obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params) if((istype(I, /obj/item/weapon/grenade))) @@ -24,10 +24,10 @@ return I.loc = src grenades += I - to_chat(user, "You put the [ammo_name] in the [name].") - to_chat(user, "[grenades.len] / [max_grenades] [ammo_name]s.") + to_chat(user, "You put the grenade in the [name].") + to_chat(user, "[grenades.len] / [max_grenades] grenades.") else - to_chat(user, "The grenade launcher cannot hold more [ammo_name]s.") + to_chat(user, "The grenade launcher cannot hold more grenades.") /obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag) if(target == user) @@ -45,8 +45,8 @@ grenades -= F F.loc = user.loc F.throw_at(target, 30, 2, user) - message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") - log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") + message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([name]).") + log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([name]).") F.active = 1 F.icon_state = initial(icon_state) + "_active" playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index b64fb37e1c6..299c87b536f 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -5,6 +5,7 @@ icon_state = "staffofnothing" item_state = "staff" fire_sound = 'sound/weapons/emitter.ogg' + fire_sound_text = "energy blast" flags = CONDUCT w_class = 5 var/max_charges = 6 @@ -75,6 +76,6 @@ return /obj/item/weapon/gun/magic/suicide_act(mob/user) - user.visible_message("[user] is twisting the [src.name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is twisting the [name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.") playsound(loc, fire_sound, 50, 1, -1) return FIRELOSS diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index c6d5bc4bf00..abde404e87d 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -67,7 +67,7 @@ var/message ="You irradiate yourself with pure energy! " message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") to_chat(user, message) - user.adjustBurnLoss(500) + user.adjustFireLoss(500) charges-- ..() diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index bd5f6b23e79..032874c4918 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -48,7 +48,7 @@ spawn(0) current_beam.Start() - feedback_add_details("gun_fired","[src.type]") + feedback_add_details("gun_fired","[type]") /obj/item/weapon/gun/medbeam/process() var/mob/living/carbon/human/H = loc diff --git a/code/modules/projectiles/guns/mounted.dm b/code/modules/projectiles/guns/mounted.dm index b200dd1d6a7..592908a6b87 100644 --- a/code/modules/projectiles/guns/mounted.dm +++ b/code/modules/projectiles/guns/mounted.dm @@ -12,7 +12,7 @@ /obj/item/weapon/gun/energy/advtaser/mounted/dropped()//if somebody manages to drop this somehow... ..() - src.loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases. + loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases. /obj/item/weapon/gun/energy/laser/mounted name = "mounted laser" @@ -28,4 +28,4 @@ /obj/item/weapon/gun/energy/laser/mounted/dropped() ..() - src.loc = null + loc = null diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index fddc09349ab..3fc01b0a5b5 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -96,7 +96,7 @@ if(user.l_hand != src && user.r_hand != src) ..() return - to_chat(user, "You unscrew [silenced] from [src].") + to_chat(user, "You unscrew [suppressed] from [src].") user.put_in_hands(suppressed) fire_sound = S.oldsound w_class = S.initial_w_class @@ -108,7 +108,7 @@ /obj/item/weapon/gun/projectile/attack_self(mob/living/user as mob) var/obj/item/ammo_casing/AC = chambered //Find chambered round if(magazine) - magazine.loc = get_turf(src.loc) + magazine.loc = get_turf(loc) user.put_in_hands(magazine) magazine.update_icon() magazine = null @@ -136,18 +136,18 @@ return boolets /obj/item/weapon/gun/projectile/suicide_act(mob/user) - if (src.chambered && src.chambered.BB && !src.chambered.BB.nodamage) - user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.") + if (chambered && chambered.BB && !chambered.BB.nodamage) + user.visible_message("[user] is putting the barrel of the [name] in \his mouth. It looks like \he's trying to commit suicide.") sleep(25) if(user.l_hand == src || user.r_hand == src) process_fire(user, user, 0, zone_override = "head") - user.visible_message("[user] blows \his brains out with the [src.name]!") + user.visible_message("[user] blows \his brains out with the [name]!") return(BRUTELOSS) else user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!") + user.visible_message("[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!") playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) return (OXYLOSS) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 8e700c92cc0..b3d09e049cd 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -1,6 +1,5 @@ /obj/item/weapon/gun/projectile/automatic w_class = 3.0 - automatic = 1 var/alarmed = 0 var/select = 1 can_suppress = 1 @@ -37,14 +36,14 @@ if(istype(AM, mag_type)) if(magazine) to_chat(user, "You perform a tactical reload on \the [src], replacing the magazine.") - magazine.forceMove(get_turf(src.loc)) + magazine.loc = get_turf(loc) magazine.update_icon() magazine = null else to_chat(user, "You insert the magazine into \the [src].") user.remove_from_mob(AM) magazine = AM - magazine.forceMove(src) + magazine.loc = src chamber_round() A.update_icon() update_icon() @@ -74,7 +73,7 @@ /obj/item/weapon/gun/projectile/automatic/proc/empty_alarm() if(!chambered && !get_ammo() && !alarmed) - playsound(src.loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) + playsound(loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) update_icon() alarmed = 1 return diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 66e404a7de8..1a9da6fcf22 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -45,7 +45,7 @@ var/obj/item/ammo_casing/CB CB = magazine.get_round(0) if(CB) - CB.loc = get_turf(src.loc) + CB.loc = get_turf(loc) CB.SpinAnimation(10, 1) CB.update_icon() num_unloaded++ @@ -124,7 +124,7 @@ afterattack(user, user) //you know the drill user.visible_message("[src] goes off!", "[src] goes off in your face!") return - if(do_after(user, 30/A.toolspeed, target = src)) + if(do_after(user, 30, target = src)) if(magazine.ammo_count()) to_chat(user, "You can't modify it!") return @@ -173,7 +173,7 @@ name = "\improper Russian Revolver" desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism that spins the chamber before each trigger pull." origin_tech = "combat=2;materials=2" - mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357 + mag_type = /obj/item/ammo_box/magazine/internal/rus357 var/spun = 0 @@ -211,7 +211,7 @@ var/obj/item/ammo_casing/CB CB = magazine.get_round() chambered = null - CB.loc = get_turf(src.loc) + CB.loc = get_turf(loc) CB.update_icon() num_unloaded++ if (num_unloaded) @@ -234,7 +234,6 @@ return if(ishuman(user)) - var/mob/living/carbon/human/H = user if(!spun) to_chat(user, "You need to spin the revolver's chamber first!") return @@ -245,12 +244,11 @@ var/obj/item/ammo_casing/AC = chambered if(AC.fire(user, user)) playsound(user, fire_sound, 50, 1) - var/zone = check_zone(user.zone_selected) - var/obj/item/bodypart/affecting = H.get_bodypart(zone) + var/zone = check_zone(user.zone_sel.selecting) if(zone == "head" || zone == "eyes" || zone == "mouth") - shoot_self(user, affecting) + shoot_self(user, zone) else - user.visible_message("[user.name] cowardly fires [src] at \his [affecting.name]!", "You cowardly fire [src] at your [affecting.name]!", "You hear a gunshot!") + user.visible_message("[user.name] cowardly fires [src] at \his [zone]!", "You cowardly fire [src] at your [zone]!", "You hear a gunshot!") return user.visible_message("*click*") diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index a82caddeba1..b2d01b303ed 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -45,8 +45,8 @@ playsound(user.loc, 'sound/effects/bang.ogg', 50, 1) M.primed = 1 M.throw_at(target, missile_range, missile_speed,user) - message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).") - log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).") + message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([name]).") + log_game("[key_name_admin(user)] used a rocket launcher ([name]).") rockets -= I qdel(I) return diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index 5c4856d2503..4cb8a59b305 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -39,7 +39,7 @@ else if(cover_open && magazine) //drop the mag magazine.update_icon() - magazine.loc = get_turf(src.loc) + magazine.loc = get_turf(loc) user.put_in_hands(magazine) magazine = null update_icon() @@ -69,7 +69,7 @@ . = ..() if((blocked != 100) && istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/H = target - H.drip(35) + H.drip(350) /obj/item/projectile/bullet/saw/hollow damage = 60 diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 1119a795505..47ffa8de488 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -22,7 +22,7 @@ update_icon() -/obj/item/weapon/gun/projectile/shotgun/process_chambered() +/obj/item/weapon/gun/projectile/shotgun/process_chamber() return ..(0, 0) /obj/item/weapon/gun/projectile/shotgun/chamber_round() @@ -79,7 +79,7 @@ name = "riot shotgun" desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control." icon_state = "riotshotgun" - mag_type = /obj/item/ammo_box/magazine/internal/shotriot + mag_type = /obj/item/ammo_box/magazine/internal/shot/riot sawn_desc = "Come with me if you want to live." /obj/item/weapon/gun/projectile/shotgun/riot/attackby(obj/item/A, mob/user, params) @@ -143,7 +143,7 @@ ..() if(guns_left) var/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/GUN = new - GUN.guns_left = src.guns_left - 1 + GUN.guns_left = guns_left - 1 user.drop_item() user.swap_hand() user.put_in_hands(GUN) @@ -172,7 +172,7 @@ flags = CONDUCT slot_flags = SLOT_BACK origin_tech = "combat=3;materials=1" - mag_type = /obj/item/ammo_box/magazine/internal/cylinder/dual + mag_type = /obj/item/ammo_box/magazine/internal/shot/dual sawn_desc = "Omar's coming!" unique_rename = 1 unique_reskin = 1 @@ -204,7 +204,7 @@ var/obj/item/ammo_casing/CB CB = magazine.get_round(0) chambered = null - CB.loc = get_turf(src.loc) + CB.loc = get_turf(loc) CB.update_icon() num_unloaded++ if (num_unloaded) @@ -286,7 +286,7 @@ if(do_after(user, 30, target = src)) user.visible_message("[user] shortens \the [src]!", "You shorten \the [src]!") - name = "sawn-off [src.name]" + name = "sawn-off [name]" desc = sawn_desc icon_state = "[icon_state]-sawn" w_class = 3 @@ -303,7 +303,7 @@ /obj/item/weapon/gun/projectile/shotgun/automatic/shoot_live_shot(mob/living/user as mob|obj) ..() - src.pump(user) + pump(user) /obj/item/weapon/gun/projectile/shotgun/automatic/combat name = "combat shotgun" @@ -375,7 +375,7 @@ sawn_desc = "I'm sorry, but why did you saw your cane in the first place?" attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") fire_sound = 'sound/weapons/Gunshot_silenced.ogg' - silenced = 1 + suppressed = 1 needs_permit = 0 //its just a cane beepsky..... /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/attackby(obj/item/A, mob/user, params) @@ -385,7 +385,7 @@ /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/examine(mob/user) // HAD TO REPEAT EXAMINE CODE BECAUSE GUN CODE DOESNT STEALTH var/f_name = "\a [src]." - if(src.blood_DNA && !istype(src, /obj/effect/decal)) + if(blood_DNA && !istype(src, /obj/effect/decal)) if(gender == PLURAL) f_name = "some " else diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 5033d0f8a0e..59bd7fb649b 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -4,7 +4,7 @@ icon_state = "sniper" item_state = "sniper" recoil = 2 - heavy_weapon = 1 + weapon_weight = WEAPON_MEDIUM mag_type = /obj/item/ammo_box/magazine/sniper_rounds fire_delay = 40 origin_tech = "combat=8" @@ -117,7 +117,7 @@ /obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/H = target - H.drip(100) + H.drip(1000) return ..() diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 45a590bd420..332d279376b 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -28,7 +28,7 @@ chambered.BB = new S.projectile_type (src) - S.reagents.trans_to(in_chamber, S.reagents.total_volume) + S.reagents.trans_to(chambered.BB, S.reagents.total_volume) chambered.BB.name = S.name syringes.Remove(S) @@ -55,8 +55,9 @@ var/obj/item/weapon/reagent_containers/syringe/S = syringes[syringes.len] - if(!S) return 0 - S.forceMove(user.loc) + if(!S) + return 0 + S.loc = user.loc syringes.Remove(S) to_chat(user, "You unload [S] from \the [src]!") @@ -70,7 +71,7 @@ return to_chat(user, "You load [A] into \the [src]!") syringes.Add(A) - A.forceMove(src) + A.loc = src return 1 else to_chat(user, "[src] cannot hold more syringes.") @@ -90,5 +91,5 @@ w_class = 2 origin_tech = "combat=2;syndicate=2" force = 2 //Also very weak because it's smaller - silenced = 1 //Softer fire sound + suppressed = 1 //Softer fire sound can_unsuppress = 0 //Permanently silenced diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0cba3aa5fbf..9816fa7a804 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -79,7 +79,7 @@ playsound(loc, hitsound, volume, 1, -1) L.visible_message("[L] is hit by \a [src][organ_hit_text]!", \ "[L] is hit by \a [src][organ_hit_text]!") //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter - L.on_hit(type) + L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) var/reagent_note if(reagents && reagents.reagent_list) @@ -91,8 +91,8 @@ return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) /obj/item/projectile/proc/vol_by_damage() - if(src.damage) - return Clamp((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100 + if(damage) + return Clamp((damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100 else return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume @@ -113,10 +113,10 @@ if(isnull(organ)) return else if(isturf(A) && hitsound_wall) - var/volume = Clamp(vol_by_damage() + 20, 0, 100) - if(suppressed) - volume = 5 - playsound(loc, hitsound_wall, volume, 1, -1) + var/volume = Clamp(vol_by_damage() + 20, 0, 100) + if(suppressed) + volume = 5 + playsound(loc, hitsound_wall, volume, 1, -1) var/turf/target_turf = get_turf(A) @@ -220,5 +220,5 @@ obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a pro return ..() /obj/item/projectile/proc/dumbfire(var/dir) - current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better. - fire() + current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better. + fire() diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index b11c4f66961..8c946455a65 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -87,11 +87,11 @@ name = "laser tag beam" icon_state = "omnilaser" -/obj/item/projectile/beam/lasertag/red +/obj/item/projectile/beam/lasertag/redtag icon_state = "laser" suit_types = list(/obj/item/clothing/suit/bluetag) -/obj/item/projectile/beam/lasertag/blue +/obj/item/projectile/beam/lasertag/bluetag icon_state = "bluelaser" suit_types = list(/obj/item/clothing/suit/redtag) @@ -131,156 +131,3 @@ var/mob/living/carbon/M = target M.visible_message("[M] explodes into a shower of gibs!") M.gib() - -/* //THIS CODE MAKES ME WANT TO STAB MY EYES OUT -/obj/item/projectile/beam/lightning - invisibility = 101 - name = "lightning" - damage = 0 - icon = 'icons/obj/lightning.dmi' - icon_state = "lightning" - stun = 10 - weaken = 10 - stutter = 50 - eyeblur = 50 - var/tang = 0 - layer = 3 - var/turf/last = null - kill_count = 6 - var/bullet_acted = 0 - -/obj/item/projectile/beam/lightning/Bump(var/atom/A) - if((A != firer) && !bullet_acted) - A.bullet_act(src) - bullet_acted = 1 - -/obj/item/projectile/beam/lightning/proc/adjustAngle(angle) - angle = round(angle) + 45 - if(angle > 180) - angle -= 180 - else - angle += 180 - if(!angle) - angle = 1 - return angle - -/obj/item/projectile/beam/lightning/process() - var/first = 1 //So we don't make the overlay in the same tile as the firer - var/broke = 0 - var/broken - var/atom/curr = current - var/Angle=round(Get_Angle(firer,curr)) - var/icon/I=new('icons/obj/zap.dmi',"lightning") - I.Turn(Angle) - var/DX=(32*curr.x+curr.pixel_x)-(32*firer.x+firer.pixel_x) - var/DY=(32*curr.y+curr.pixel_y)-(32*firer.y+firer.pixel_y) - var/N=0 - var/length=round(sqrt((DX)**2+(DY)**2)) - var/count = 0 - for(N,N= kill_count) - break - count++ - var/obj/effect/overlay/beam/X=new(loc) - X.BeamSource=src - if(N+32>length) - var/icon/II=new(icon,icon_state) - II.DrawBox(null,1,(length-N),32,32) - II.Turn(Angle) - X.icon=II - else X.icon=I - var/Pixel_x=round(sin(Angle)+32*sin(Angle)*(N+16)/32) - var/Pixel_y=round(cos(Angle)+32*cos(Angle)*(N+16)/32) - if(DX==0) Pixel_x=0 - if(DY==0) Pixel_y=0 - if(Pixel_x>32) - for(var/a=0, a<=Pixel_x,a+=32) - X.x++ - Pixel_x-=32 - if(Pixel_x<-32) - for(var/a=0, a>=Pixel_x,a-=32) - X.x-- - Pixel_x+=32 - if(Pixel_y>32) - for(var/a=0, a<=Pixel_y,a+=32) - X.y++ - Pixel_y-=32 - if(Pixel_y<-32) - for(var/a=0, a>=Pixel_y,a-=32) - X.y-- - Pixel_y+=32 - X.pixel_x=Pixel_x - X.pixel_y=Pixel_y - var/turf/TT = get_turf(X.loc) - if(TT == firer.loc) - continue - if(TT.density) - qdel(X) - break - for(var/atom/O in TT) - if(istype(O,/mob/living)) - if(O.density) - qdel(X) - broke = 1 - break - if(!O.CanPass(src)) - qdel(X) - broke = 1 - break - if(broke) - if(X) - qdel(X) - break - spawn - while(src) //Move until we hit something - if(first) - icon = midicon - if((!( current ) || loc == current)) //If we pass our target - broken = 1 - icon = endicon - tang = adjustAngle(get_angle(original,current)) - if(tang > 180) - tang -= 180 - else - tang += 180 - icon_state = "[tang]" - var/turf/simulated/floor/f = current - if(f && istype(f)) - if(!bullet_acted) - f.break_tile() - f.hotspot_expose(1000,CELL_VOLUME) - if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) - broken = 1 - return - if(kill_count < 1) - broken = 1 - kill_count-- - if(!bumped && !isturf(original)) - if(loc == get_turf(original)) - if(!(original in permutated)) - icon = endicon - if(!broken) - tang = adjustAngle(get_angle(original,current)) - if(tang > 180) - tang -= 180 - else - tang += 180 - icon_state = "[tang]" - Bump(original) - first = 0 - if(broken) - break - else - last = get_turf(src.loc) - step_towards(src, current) //Move~ - if(src.loc != current) - tang = adjustAngle(get_angle(src.loc,current)) - icon_state = "[tang]" - qdel(src) - return -/obj/item/projectile/beam/lightning/on_hit(atom/target, blocked = 0) - if(istype(target, /mob/living)) - var/mob/living/M = target - M.playsound_local(src, "explosion", 50, 1) - ..() -*/ diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index f3a676d962f..38c9a9efd55 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -80,7 +80,7 @@ range = rand(8) /obj/item/projectile/bullet/pellet/weak/on_range() - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread sparks.set_up(1, 1, src) sparks.start() ..() @@ -97,7 +97,7 @@ /obj/item/projectile/bullet/pellet/overload/on_range() explosion(src, 0, 0, 2) - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread sparks.set_up(3, 3, src) sparks.start() ..() @@ -179,7 +179,7 @@ forcedodge = 1 nodamage = 1 hitsound = 'sound/items/bikehorn.ogg' - icon = 'icons/obj/hydroponics/harvest.dmi' + icon = 'icons/obj/harvest.dmi' icon_state = "banana" range = 200 diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index b023d77de52..79ffc1d0898 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -21,7 +21,7 @@ /obj/item/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0) . = ..() if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks! - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread sparks.set_up(1, 1, src) sparks.start() else if(iscarbon(target)) @@ -33,7 +33,7 @@ C.do_jitter_animation(jitter) /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread sparks.set_up(1, 1, src) sparks.start() ..() @@ -80,7 +80,7 @@ /obj/item/ammo_casing/energy/shock_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") ..() - var/obj/item/projectile/hook/P = BB + var/obj/item/projectile/energy/shock_revolver/P = BB spawn(1) P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 74eff57d98d..1d1f6dc93a8 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -48,7 +48,7 @@ /obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target) . = ..() if(ismob(target)) - var/old_stat = stat + var/old_stat = target.stat target.suiciding = 0 target.revive() if(!target.ckey) @@ -94,16 +94,22 @@ if(isturf(target) && target.density) CreateDoor(target) else if (isturf(T) && T.density) - CreateDoor(T + CreateDoor(T) else if(istype(target, /obj/machinery/door)) - OpenDoor(target)) + OpenDoor(target) /obj/item/projectile/magic/door/proc/CreateDoor(turf/T) var/door_type = pick(door_types) var/obj/structure/mineral_door/D = new door_type(T) - T.ChangeTurf(/turf/open/floor/plating) + T.ChangeTurf(/turf/simulated/floor/plasteel) D.Open() +/obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D) + if(istype(D,/obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/A = D + A.locked = 0 + D.open() + /obj/item/projectile/magic/change name = "bolt of change" icon_state = "ice_1" diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm index 9f4e36bc1b4..466a8ba8e99 100644 --- a/code/modules/projectiles/projectile/reusable.dm +++ b/code/modules/projectiles/projectile/reusable.dm @@ -1,7 +1,7 @@ /obj/item/projectile/bullet/reusable name = "reusable bullet" desc = "How do you even reuse a bullet?" - ammo_type = /obj/item/ammo_casing/caseless/ + var/ammo_type = /obj/item/ammo_casing/caseless/ var/dropped = 0 /obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = 0) @@ -14,7 +14,7 @@ /obj/item/projectile/bullet/reusable/proc/handle_drop() if(!dropped) - new ammo_type(src.loc) + new ammo_type(loc) dropped = 1 /obj/item/projectile/bullet/reusable/magspear @@ -42,7 +42,7 @@ if(dropped) return dropped = 1 - var/obj/item/ammo_casing/caseless/foam_dart/newdart = new ammo_type(src.loc) + var/obj/item/ammo_casing/caseless/foam_dart/newdart = new ammo_type(loc) var/obj/item/ammo_casing/caseless/foam_dart/old_dart = ammo_casing newdart.modified = old_dart.modified if(pen) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 851f23bcdd7..56b4875002b 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -115,7 +115,7 @@ if(A == firer) loc = A.loc return - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) + playsound(loc, 'sound/effects/meteorimpact.ogg', 40, 1) for(var/mob/M in urange(10, src)) if(!M.stat) shake_camera(M, 3, 1) @@ -195,8 +195,8 @@ var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(3, 1, src) s.start() - new /obj/effect/decal/cleanable/ash(src.loc) - src.visible_message("The [src.name] explodes!","You hear a snap!") + new /obj/effect/decal/cleanable/ash(loc) + visible_message("The [name] explodes!","You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) qdel(src) @@ -230,7 +230,7 @@ obj/item/projectile/kinetic/New() ..() /obj/item/projectile/kinetic/on_range() - new /obj/effect/kinetic_blast(src.loc) + new /obj/effect/kinetic_blast(loc) ..() /obj/item/projectile/kinetic/on_hit(atom/target) @@ -240,13 +240,13 @@ obj/item/projectile/kinetic/New() var/turf/simulated/mineral/M = target_turf M.gets_drilled(firer) new /obj/item/effect/kinetic_blast(target_turf) - if(src.splash) + if(splash) for(var/turf/T in range(splash, target_turf)) if(istype(T, /turf/simulated/mineral)) var/turf/simulated/mineral/M = T M.gets_drilled(firer) -/obj/item/effect/kinetic_blast +/obj/effect/kinetic_blast name = "kinetic explosion" icon = 'icons/obj/projectiles.dmi' icon_state = "kinetic_blast" @@ -340,13 +340,8 @@ obj/item/projectile/kinetic/New() icon_state = "bluespace" damage = 0 nodamage = 1 - var/obj/item/weapon/gun/energy/telegun/T = null var/teleport_target = null - OnFired() - T = shot_from - teleport_target = T.teleport_target - /obj/item/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0) if(isliving(target)) if(teleport_target) diff --git a/code/modules/reagents/dartgun.dm b/code/modules/reagents/dartgun.dm index 4fb705dbcf9..f08685b3d88 100644 --- a/code/modules/reagents/dartgun.dm +++ b/code/modules/reagents/dartgun.dm @@ -104,7 +104,7 @@ to_chat(user, "