diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c08eb25d9fb..cd6324bca17 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -25,7 +25,7 @@ var/global/list/obj/item/device/pda/PDAs = list() //Secondary variables var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner. - var/fon = 0 //Is the flashlight function on? + var/fon = FALSE //Is the flashlight function on? var/f_lum = 2 //Luminosity for the flashlight function var/message_silent = 0 //To beep or not to beep, that is the question var/news_silent = 1 //To beep or not to beep, that is the question. The answer is No. @@ -43,7 +43,7 @@ var/global/list/obj/item/device/pda/PDAs = list() var/cart = "" //A place to stick cartridge menu information var/detonate = 1 // Can the PDA be blown up? var/hidden = 0 // Is the PDA hidden from the PDA list? - var/has_pen = 1 // Does the PDA have a pen + penslot? + var/has_inserted_item = TRUE // Does the PDA have a pen + penslot? var/active_conversation = null // New variable that allows us to only view a single conversation. var/list/conversations = list() // For keeping up with who we have PDA messsages from. var/new_message = 0 //To remove hackish overlay check @@ -65,7 +65,13 @@ var/global/list/obj/item/device/pda/PDAs = list() var/obj/item/device/paicard/pai = null // A slot for a personal AI device - var/obj/item/pen/pen + var/list/contained_item = list(/obj/item/pen, + /obj/item/lipstick, + /obj/item/device/flashlight/pen, + /obj/item/clothing/mask/smokable/cigarette + ) + var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion/removal + var/list/obj/machinery/requests_console/linked_consoles var/flippable = 1 @@ -75,166 +81,221 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/examine(mob/user) if(..(user, 1)) to_chat(user, "The time [worldtime2text()] is displayed in the corner of the screen.") - if (pen) - to_chat(user, "There is \a [pen] in the pen slot.") + if(id) + to_chat(user, "There is \a [id] in the ID slot.") + if(inserted_item) + to_chat(user, "There is \a [inserted_item] in the pen slot.") -/obj/item/device/pda/medical - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-m" +/* + * Civillian + */ -/obj/item/device/pda/viro - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-v" +/obj/item/device/pda/bar + icon_state = "pda-bar" + inserted_item = /obj/item/pen/fountain -/obj/item/device/pda/engineering - default_cartridge = /obj/item/cartridge/engineering - icon_state = "pda-e" - -/obj/item/device/pda/security - default_cartridge = /obj/item/cartridge/security - icon_state = "pda-s" - -/obj/item/device/pda/detective - default_cartridge = /obj/item/cartridge/detective - icon_state = "pda-det" - -/obj/item/device/pda/warden - default_cartridge = /obj/item/cartridge/security - icon_state = "pda-warden" - -/obj/item/device/pda/janitor - default_cartridge = /obj/item/cartridge/janitor - icon_state = "pda-j" - ttone = "slip" - -/obj/item/device/pda/science - default_cartridge = /obj/item/cartridge/signal/science - icon_state = "pda-tox" - ttone = "boom" - -/obj/item/device/pda/xenobio - default_cartridge = /obj/item/cartridge/signal/science - icon_state = "pda-xenobio" - -/obj/item/device/pda/clown - default_cartridge = /obj/item/cartridge/clown - icon_state = "pda-clown" - desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings." - ttone = "honk" - -/obj/item/device/pda/mime - default_cartridge = /obj/item/cartridge/mime - icon_state = "pda-mime" - message_silent = 1 - news_silent = 1 - ttone = "silence" - newstone = "silence" - -/obj/item/device/pda/heads - default_cartridge = /obj/item/cartridge/head - icon_state = "pda-h" - news_silent = 1 - -/obj/item/device/pda/heads/hop - default_cartridge = /obj/item/cartridge/hop - icon_state = "pda-hop" - -/obj/item/device/pda/heads/hos - default_cartridge = /obj/item/cartridge/hos - icon_state = "pda-hos" - -/obj/item/device/pda/heads/ce - default_cartridge = /obj/item/cartridge/ce - icon_state = "pda-ce" - -/obj/item/device/pda/heads/cmo - default_cartridge = /obj/item/cartridge/cmo - icon_state = "pda-cmo" - -/obj/item/device/pda/heads/rd - default_cartridge = /obj/item/cartridge/rd - icon_state = "pda-rd" - -/obj/item/device/pda/captain - default_cartridge = /obj/item/cartridge/captain - icon_state = "pda-c" - detonate = 0 - //toff = 1 - -/obj/item/device/pda/ert - default_cartridge = /obj/item/cartridge/captain - icon_state = "pda-h" - detonate = 0 - hidden = 1 - -/obj/item/device/pda/cargo - default_cartridge = /obj/item/cartridge/quartermaster - icon_state = "pda-cargo" - -/obj/item/device/pda/quartermaster - default_cartridge = /obj/item/cartridge/quartermaster - icon_state = "pda-q" - -/obj/item/device/pda/shaftminer - icon_state = "pda-miner" - -/obj/item/device/pda/syndicate - default_cartridge = /obj/item/cartridge/syndicate - icon_state = "pda-syn" - name = "Military PDA" - owner = "John Doe" - hidden = 1 - -/obj/item/device/pda/chaplain - icon_state = "pda-holy" - ttone = "holy" - -/obj/item/device/pda/lawyer - default_cartridge = /obj/item/cartridge/lawyer - icon_state = "pda-lawyer" - ttone = "..." +/obj/item/device/pda/chef + icon_state = "pda-chef" /obj/item/device/pda/botanist //default_cartridge = /obj/item/cartridge/botanist icon_state = "pda-hydro" -/obj/item/device/pda/roboticist - icon_state = "pda-robot" - /obj/item/device/pda/librarian icon_state = "pda-libb" + inserted_item = /obj/item/pen/fountain desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader." note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!" message_silent = 1 //Quiet in the library! news_silent = 0 // Librarian is above the law! (That and alt job title is reporter) +/obj/item/device/pda/janitor + icon_state = "pda-j" + default_cartridge = /obj/item/cartridge/janitor + ttone = "slip" + +/obj/item/device/pda/chaplain + icon_state = "pda-holy" + inserted_item = /obj/item/pen/fountain + ttone = "holy" + +/obj/item/device/pda/heads/hop + icon_state = "pda-hop" + default_cartridge = /obj/item/cartridge/hop + +/* + * Engineering + */ + + /obj/item/device/pda/atmos + icon_state = "pda-atmo" + default_cartridge = /obj/item/cartridge/atmos + inserted_item = /obj/item/pen/silver + +/obj/item/device/pda/engineering + icon_state = "pda-e" + default_cartridge = /obj/item/cartridge/engineering + inserted_item = /obj/item/pen/silver + +/obj/item/device/pda/heads/ce + icon_state = "pda-ce" + default_cartridge = /obj/item/cartridge/ce + + /* + * Cargo + */ + + /obj/item/device/pda/cargo + icon_state = "pda-cargo" + default_cartridge = /obj/item/cartridge/quartermaster + inserted_item = /obj/item/pen/silver + +/obj/item/device/pda/shaftminer + icon_state = "pda-miner" + inserted_item = /obj/item/pen/silver + +/obj/item/device/pda/quartermaster + icon_state = "pda-q" + default_cartridge = /obj/item/cartridge/quartermaster + inserted_item = /obj/item/pen/fountain + +/* + * Medical + */ + +/obj/item/device/pda/medical + icon_state = "pda-m" + default_cartridge = /obj/item/cartridge/medical + inserted_item = /obj/item/pen/white + +/obj/item/device/pda/viro + icon_state = "pda-v" + default_cartridge = /obj/item/cartridge/medical + inserted_item = /obj/item/pen/white + +/obj/item/device/pda/chemist + icon_state = "pda-chem" + default_cartridge = /obj/item/cartridge/chemistry + inserted_item = /obj/item/pen/white + +/obj/item/device/pda/psych + icon_state = "pda-psych" + default_cartridge = /obj/item/cartridge/medical + inserted_item = /obj/item/pen/fountain/white + +/obj/item/device/pda/paramedic + icon_state = "pda-paramedic" + default_cartridge = /obj/item/cartridge/medical + inserted_item = /obj/item/pen/white + +/obj/item/device/pda/heads/cmo + icon_state = "pda-cmo" + default_cartridge = /obj/item/cartridge/cmo + +/* + * Science + */ + +/obj/item/device/pda/science + icon_state = "pda-tox" + default_cartridge = /obj/item/cartridge/signal/science + inserted_item = /obj/item/pen/white + ttone = "boom" + +/obj/item/device/pda/roboticist + icon_state = "pda-robot" + +/obj/item/device/pda/xenobio + icon_state = "pda-xenobio" + default_cartridge = /obj/item/cartridge/signal/science + inserted_item = /obj/item/pen/white + +/obj/item/device/pda/heads/rd + icon_state = "pda-rd" + default_cartridge = /obj/item/cartridge/rd + +/* + * Security + */ + + +/obj/item/device/pda/security + icon_state = "pda-s" + default_cartridge = /obj/item/cartridge/security + +/obj/item/device/pda/detective + icon_state = "pda-det" + default_cartridge = /obj/item/cartridge/detective + +/obj/item/device/pda/warden + icon_state = "pda-warden" + default_cartridge = /obj/item/cartridge/security + +/obj/item/device/pda/heads/hos + icon_state = "pda-hos" + default_cartridge = /obj/item/cartridge/hos + +/* + * Captain + */ + +/obj/item/device/pda/heads + icon_state = "pda-h" + default_cartridge = /obj/item/cartridge/head + inserted_item = /obj/item/pen/fountain/head + news_silent = 1 + +/obj/item/device/pda/captain + icon_state = "pda-c" + default_cartridge = /obj/item/cartridge/captain + inserted_item = /obj/item/pen/fountain/captain + detonate = 0 + //toff = 1 + +/* + * Misc + */ + +/obj/item/device/pda/lawyer + icon_state = "pda-lawyer" + default_cartridge = /obj/item/cartridge/lawyer + inserted_item = /obj/item/pen/fountain + ttone = "..." + +/obj/item/device/pda/syndicate + icon_state = "pda-syn" + default_cartridge = /obj/item/cartridge/syndicate + inserted_item = /obj/item/pen/black + name = "Military PDA" + owner = "John Doe" + hidden = 1 + +/obj/item/device/pda/clown + icon_state = "pda-clown" + default_cartridge = /obj/item/cartridge/clown + inserted_item = /obj/item/pen/crayon + desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings." + ttone = "honk" + +/obj/item/device/pda/mime + icon_state = "pda-mime" + default_cartridge = /obj/item/cartridge/mime + message_silent = 1 + news_silent = 1 + ttone = "silence" + newstone = "silence" + +/obj/item/device/pda/ert + icon_state = "pda-h" + default_cartridge = /obj/item/cartridge/captain + detonate = 0 + hidden = 1 + /obj/item/device/pda/clear icon_state = "pda-transp" desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition with a transparent case." note = "Congratulations, you have chosen the Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition!" -/obj/item/device/pda/chef - icon_state = "pda-chef" - -/obj/item/device/pda/bar - icon_state = "pda-bar" - -/obj/item/device/pda/atmos - default_cartridge = /obj/item/cartridge/atmos - icon_state = "pda-atmo" - -/obj/item/device/pda/chemist - default_cartridge = /obj/item/cartridge/chemistry - icon_state = "pda-chem" - -/obj/item/device/pda/psych - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-psych" - -/obj/item/device/pda/paramedic - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-paramedic" - /obj/item/device/pda/merchant icon_state = "pda-chef" hidden = 1 @@ -245,7 +306,7 @@ var/global/list/obj/item/device/pda/PDAs = list() ttone = "data" newstone = "news" detonate = 0 - has_pen = 0 + has_inserted_item = FALSE /obj/item/device/pda/ai/proc/set_name_and_job(newname as text, newjob as text, newrank as null|text) @@ -336,9 +397,10 @@ var/global/list/obj/item/device/pda/PDAs = list() try_sort_pda_list() if(default_cartridge) cartridge = new default_cartridge(src) - - if (has_pen) - pen = new /obj/item/pen(src) + if(inserted_item) + inserted_item = new inserted_item(src) + else + inserted_item = new /obj/item/pen(src) /obj/item/device/pda/proc/try_sort_pda_list() addtimer(CALLBACK(GLOBAL_PROC, /proc/sortTim, PDAs, /proc/cmp_pda), 1 SECOND, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT) @@ -667,10 +729,10 @@ var/global/list/obj/item/device/pda/PDAs = list() if("Light") if(fon) - fon = 0 + fon = FALSE set_light(0) else - fon = 1 + fon = TRUE set_light(f_lum) if("Medical Scan") if(scanmode == 1) @@ -965,13 +1027,47 @@ var/global/list/obj/item/device/pda/PDAs = list() qdel(P) +/obj/item/device/pda/AltClick() + ..() + + if(id) + remove_id() + else + remove_pen() + +/obj/item/device/pda/CtrlClick() + ..() + + if(isturf(loc)) //stops the user from dragging the PDA by ctrl-clicking it. + return + + remove_pen() + +/obj/item/device/pda/verb/verb_toggle_light() + set category = "Object" + set name = "Toggle Flashlight" + + toggle_light() + +/obj/item/device/pda/proc/toggle_light() + if(issilicon(usr)) + return + if(ismob(loc)) + if(fon) + fon = FALSE + set_light(0) + else if(f_lum) + fon = TRUE + set_light(f_lum) + update_icon() + /obj/item/device/pda/proc/remove_id() if (id) if (ismob(loc)) var/mob/M = loc M.put_in_hands(id) to_chat(usr, "You remove the ID from the [name].") - playsound(loc, 'sound/machines/id_swipe.ogg', 100, 1) + playsound(loc, 'sound/machines/id_swipe.ogg', 50, 1) else id.forceMove(get_turf(src)) id = null @@ -979,7 +1075,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/proc/remove_pen(mob/user) if (!istype(user)) return - if (!has_pen) + if (!has_inserted_item) to_chat(user, "[src] does not have a pen slot.") return @@ -988,14 +1084,14 @@ var/global/list/obj/item/device/pda/PDAs = list() to_chat(user, "You are too far away from [src].") if (USE_FAIL_NON_ADV_TOOL_USR) - if (!pen) + if (!inserted_item) to_chat(user, "[src] does not have a pen in it.") else - to_chat(user, "You are unable to figure out the mechanism holding [pen] in-place.") + to_chat(user, "You are unable to figure out the mechanism holding \the [inserted_item] in-place.") if (USE_FAIL_IS_SILICON) - if (pen) - to_chat(user, "You do not have hands, how do you propose to remove [pen]?") + if (inserted_item) + to_chat(user, "You do not have hands, how do you propose to remove \the [inserted_item]?") else to_chat(user, "You do not have hands.") @@ -1003,18 +1099,20 @@ var/global/list/obj/item/device/pda/PDAs = list() to_chat(user, "You cannot do this in your current state.") if (USE_SUCCESS) - if (!pen) - to_chat(user, "[src] does not have a pen in it.") + if (!inserted_item) + to_chat(user, "[src] does not have pen in it.") return if (loc == user && !user.get_active_hand()) - to_chat(user, "You remove [pen] from [src].") - user.put_in_hands(pen) - pen = null + to_chat(user, "You remove \the [inserted_item] from [src].") + playsound(src.loc, 'sound/weapons/blade_open.ogg', 50, 1) + user.put_in_hands(inserted_item) + inserted_item = null else - to_chat(user, "You remove [pen] from [src], dropping it on the ground. Whoops.") - pen.forceMove(get_turf(src)) - pen = null + to_chat(user, "You remove \the [inserted_item] from [src], dropping it on the ground. Whoops.") + playsound(src.loc, 'sound/weapons/blade_open.ogg', 50, 1) + inserted_item.forceMove(get_turf(src)) + inserted_item = null /obj/item/device/pda/proc/create_message(var/mob/living/U = usr, var/obj/item/device/pda/P, var/tap = 1) if(tap) @@ -1235,7 +1333,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if (cartridge.radio) cartridge.radio.hostpda = null to_chat(usr, "You remove \the [cartridge] from the [name].") - playsound(loc, 'sound/machines/click.ogg', 100, 1) + playsound(loc, 'sound/machines/click.ogg', 50, 1) cartridge = null /obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use. @@ -1266,7 +1364,7 @@ var/global/list/obj/item/device/pda/PDAs = list() cartridge = C user.drop_from_inventory(cartridge,src) to_chat(user, "You insert [cartridge] into [src].") - playsound(loc, 'sound/machines/click.ogg', 100, 1) + playsound(loc, 'sound/machines/click.ogg', 50, 1) SSnanoui.update_uis(src) // update all UIs attached to src if(cartridge.radio) cartridge.radio.hostpda = src @@ -1283,7 +1381,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) ) if(id_check(user, 2)) to_chat(user, "You put the ID into \the [src]'s slot.") - playsound(loc, 'sound/machines/id_swipe.ogg', 100, 1) + playsound(loc, 'sound/machines/id_swipe.ogg', 50, 1) updateSelfDialog()//Update self dialog on success. return //Return in case of failed check or when successful. updateSelfDialog()//For the non-input related code. @@ -1293,13 +1391,14 @@ var/global/list/obj/item/device/pda/PDAs = list() pai.update_location()//This notifies the pAI that they've been slotted into a PDA to_chat(user, "You slot \the [C] into [src].") SSnanoui.update_uis(src) // update all UIs attached to src - else if(C.ispen()) - if(pen) - to_chat(user, "There is already a pen in \the [src].") + else if(is_type_in_list(C, contained_item)) //Checks if there is a pen + if(inserted_item) + to_chat(user, "There is already \a [inserted_item] in \the [src].") else user.drop_from_inventory(C,src) - pen = C + inserted_item = C to_chat(user, "You slide \the [C] into \the [src].") + playsound(src.loc, 'sound/weapons/blade_close.ogg', 50, 1) return /obj/item/device/pda/proc/update_userinfo(var/obj/item/card/id/idcard, var/mob/living/user) @@ -1454,7 +1553,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/Destroy() PDAs -= src QDEL_NULL(id) - QDEL_NULL(pen) + QDEL_NULL(inserted_item) if (LAZYLEN(linked_consoles)) for(var/A in linked_consoles) var/obj/machinery/requests_console/B = A diff --git a/code/game/objects/items/devices/lighting/flashlight.dm b/code/game/objects/items/devices/lighting/flashlight.dm index 4e5f7401714..b5de521372b 100644 --- a/code/game/objects/items/devices/lighting/flashlight.dm +++ b/code/game/objects/items/devices/lighting/flashlight.dm @@ -101,6 +101,7 @@ desc = "A pen-sized light, used by medical staff." icon_state = "penlight" item_state = "" + drop_sound = 'sound/items/drop/accessory.ogg' flags = CONDUCT slot_flags = SLOT_EARS brightness_on = 2 diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index c9b8b78dba8..bd62a540e21 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -140,8 +140,9 @@ active = !active if(active) to_chat(user, "You flip out \the [src].") - playsound(user, 'sound/weapons/flipblade.ogg', 15, 1) + playsound(user, 'sound/weapons/blade_open.ogg', 15, 1) else to_chat(user, "\The [src] can now be concealed.") + playsound(user, 'sound/weapons/blade_close.ogg', 15, 1) update_force() add_fingerprint(user) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 96d82b40592..c5523ea5b78 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -768,3 +768,7 @@ max_storage_space = 20 chewable = FALSE foldable = null + +/obj/item/storage/box/fountainpens + name = "box of fountain pens" + starts_with = list(/obj/item/pen/fountain = 7) diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 062fd3db0e0..4ced6091792 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -26,6 +26,21 @@ folders["yellow folder"] = /obj/item/folder/yellow gear_tweaks += new/datum/gear_tweak/path(folders) +/datum/gear/utility/fountainpen + display_name = "fountain pen selection" + description = "A selection of fountain pens." + path = /obj/item/pen/fountain + cost = 1 + +/datum/gear/utility/fountainpen/New() + ..() + var/fountainpens = list() + fountainpens["black fountain pen"] = /obj/item/pen/fountain/black + fountainpens["grey fountain pen"] = /obj/item/pen/fountain + fountainpens["silver fountain pen"] = /obj/item/pen/fountain/silver + fountainpens["white fountain pen"] = /obj/item/pen/fountain/white + gear_tweaks += new/datum/gear_tweak/path(fountainpens) + /datum/gear/utility/paicard display_name = "personal AI device" path = /obj/item/device/paicard diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index c06dfddc4a7..cfd594752b1 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -35,6 +35,7 @@ var/const/deffont = "Verdana" var/const/signfont = "Times New Roman" var/const/crayonfont = "Comic Sans MS" + var/const/fountainfont = "Segoe Script" drop_sound = 'sound/items/drop/paper.ogg' @@ -263,7 +264,7 @@ return signfont -/obj/item/paper/proc/parsepencode(t, obj/item/pen/P, mob/user, iscrayon) +/obj/item/paper/proc/parsepencode(t, obj/item/pen/P, mob/user, iscrayon, isfountain) t = replacetext(t, "\[sign\]", "[get_signature(P, user)]") @@ -289,6 +290,8 @@ if(iscrayon) t = "[t]" + else if(isfountain) + t = "[t]" else t = "[t]" @@ -362,7 +365,8 @@ var/obj/item/i = usr.get_active_hand() // Check to see if he still got that darn pen, also check if he's using a crayon or pen. var/obj/item/clipboard/c - var/iscrayon = 0 + var/iscrayon = FALSE + var/isfountain = FALSE if(!i.ispen()) if(usr.back && istype(usr.back,/obj/item/rig)) var/obj/item/rig/r = usr.back @@ -381,8 +385,10 @@ return if(istype(i, /obj/item/pen/crayon)) - iscrayon = 1 + iscrayon = TRUE + if(istype(i, /obj/item/pen/fountain)) + isfountain = TRUE // if paper is not in usr, then it must be near them, or in a clipboard or folder, which must be in or near usr if(src.loc != usr && !src.Adjacent(usr) && !((istype(src.loc, /obj/item/clipboard) || istype(src.loc, /obj/item/folder)) && (src.loc.loc == usr || src.loc.Adjacent(usr)) ) ) @@ -390,7 +396,7 @@ var/last_fields_value = fields - t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html + t = parsepencode(t, i, usr, iscrayon, isfountain) // Encode everything from pencode to html if(fields > 50)//large amount of fields creates a heavy load on the server, see updateinfolinks() and addtofield() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index b99332810d6..0b73339c76e 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -1,8 +1,11 @@ /* Pens! * Contains: * Pens + * PDA Pens * Sleepy Pens + * Coloured Pens * Parapens + * Fountain Pens */ @@ -10,7 +13,7 @@ * Pens */ /obj/item/pen - desc = "An instrument for writing or drawing with ink. This one is in black. Stylish, classic and professional." + desc = "An instrument for writing or drawing with ink. This one is in black, in a classic, grey casing. Stylish, classic and professional." name = "pen" icon = 'icons/obj/bureaucracy.dmi' icon_state = "pen" @@ -27,6 +30,26 @@ /obj/item/pen/ispen() return TRUE +/* + * PDA Pens + */ + +/obj/item/pen/black + desc = "An instrument for writing or drawing with ink. This one is in black, in a sleek, black casing. Stylish, classic and professional." + icon_state = "pen_black" + +/obj/item/pen/silver + desc = "An instrument for writing or drawing with ink. This one is in black, in a shiny, silver casing. Stylish, classic and professional." + icon_state = "pen_silver" + +/obj/item/pen/white + desc = "An instrument for writing or drawing with ink. This one is in black, in a sterile, white casing. Stylish, classic and professional." + icon_state = "pen_white" + +/* + * Coloured Pens + */ + /obj/item/pen/blue desc = "An instrument for writing or drawing with ink. This one is in blue. Ironically used mostly by white-collar workers." icon_state = "pen_blue" @@ -37,6 +60,11 @@ icon_state = "pen_red" colour = "red" +/obj/item/pen/invisible + desc = "An instrument for writing or drawing with ink. This one has invisible ink." + icon_state = "pen" + colour = "white" + /obj/item/pen/multi desc = "An instrument for writing or drawing with ink. This one comes with with multiple colors! Push down all three simultaneously to rule the universe." icon_state = "pen_multi" @@ -56,12 +84,6 @@ to_chat(user, "Changed color to '[colour].'") -/obj/item/pen/invisible - desc = "An instrument for writing or drawing with ink. This one has invisible ink." - icon_state = "pen" - colour = "white" - - /obj/item/pen/attack(mob/M as mob, mob/user as mob, var/target_zone) if(!ismob(M)) return @@ -75,6 +97,44 @@ /obj/item/pen/attack_self(var/mob/user) playsound(loc, 'sound/items/penclick.ogg', 50, 1) +/* + * Fountain Pens + */ + +/obj/item/pen/fountain + name = "fountain pen" + desc = "A traditional fountain pen. Guaranteed never to leak." + icon_state = "pen_fountain" + throwforce = 1 //pointy + colour = "#1c1713" //dark ashy brownish + +/obj/item/pen/fountain/attack_self(var/mob/user) + return +/* + * PDA Fountain Pens + */ +/obj/item/pen/fountain/black + desc = "It's an expensive Sleek Black fountain pen. Guaranteed never to leak." + icon_state = "pen_fountain-b" + +/obj/item/pen/fountain/silver + desc = "It's an expensive Shiny Silver fountain pen. Guaranteed never to leak." + icon_state = "pen_fountain-s" + +/obj/item/pen/fountain/white + desc = "It's an expensive Sterile White fountain pen. Guaranteed never to leak." + icon_state = "pen_fountain-w" + +/obj/item/pen/fountain/head + name = "command fountain pen" + desc = "It's an expensive Command Navy Blue fountain pen, embellished with silver. Guaranteed never to leak." + icon_state = "pen_fountain-nb" + +/obj/item/pen/fountain/captain + name = "captain's fountain pen" + desc = "It's an expensive Command Navy Blue fountain pen, embellished with ornate gold detailing. Guaranteed never to leak." + icon_state = "pen_fountain-nbc" + /* * Reagent pens */ @@ -185,6 +245,7 @@ desc = "A colourful crayon. Please refrain from eating it or putting it in your nose." icon = 'icons/obj/crayons.dmi' icon_state = "crayonred" + drop_sound = 'sound/items/drop/gloves.ogg' w_class = 1.0 attack_verb = list("attacked", "coloured") colour = "#FF0000" //RGB diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index a4f1857d477..e46c0f70473 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -97,9 +97,10 @@ /obj/item/gun/launcher/syringe/attack_self(mob/living/user as mob) if(next) user.visible_message("[user] unlatches and carefully relaxes the bolt on [src].", "You unlatch and carefully relax the bolt on [src], unloading the spring.") + playsound(src.loc, 'sound/weapons/blade_close.ogg', 50, 1) next = null else if(darts.len) - playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) + playsound(src.loc, 'sound/weapons/blade_open.ogg', 50, 1) user.visible_message("[user] draws back the bolt on [src], clicking it into place.", "You draw back the bolt on the [src], loading the spring!") next = darts[1] add_fingerprint(user) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 06681175e36..8191c600586 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -128,7 +128,7 @@ AM.forceMove(src) ammo_magazine = AM user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src].") - playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) + playsound(src.loc, 'sound/weapons/blade_open.ogg', 50, 1) if(SPEEDLOADER) if(loaded.len >= max_shells) to_chat(user,"[src] is full!") diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 46d4be5b9ef..372fa826a5e 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -37,9 +37,9 @@ update_held_icon() /obj/item/gun/projectile/heavysniper/attack_self(mob/user as mob) - playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) bolt_open = !bolt_open if(bolt_open) + playsound(src.loc, 'sound/weapons/blade_open.ogg', 50, 1) if(chambered) to_chat(user, "You work the bolt open, ejecting [chambered]!") chambered.forceMove(get_turf(src)) @@ -49,6 +49,7 @@ to_chat(user, "You work the bolt open.") else to_chat(user, "You work the bolt closed.") + playsound(src.loc, 'sound/weapons/blade_close.ogg', 50, 1) bolt_open = 0 add_fingerprint(user) update_icon() diff --git a/html/changelogs/wezzy_PPAP.yml b/html/changelogs/wezzy_PPAP.yml new file mode 100644 index 00000000000..3e9762ea10b --- /dev/null +++ b/html/changelogs/wezzy_PPAP.yml @@ -0,0 +1,45 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: Wowzewow(Wezzy) + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - imageadd: "PDA sprites are on lightmode again." + - rscadd: "You can now put pen-shaped things into the PDA pen slot." + - rscadd: "New fountain pens! Write like a 19th century person writing a letter like some kind of space hipster!" + - tweak: "PDAs now have color coded pens to go with them as well. Some even have fountain pens!" + - soundadd: "Pen insertion and removal have new sounds." diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 6e56bb30181..9543ca4b57f 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index e9a6d36c9c4..278856910b8 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index d55ba484bfc..c59e642d019 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 165ed828ae4..db98a8f9aec 100644 Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ diff --git a/sound/weapons/blade_close.ogg b/sound/weapons/blade_close.ogg new file mode 100644 index 00000000000..43d17ce8368 Binary files /dev/null and b/sound/weapons/blade_close.ogg differ diff --git a/sound/effects/flipblade.ogg b/sound/weapons/blade_open.ogg similarity index 100% rename from sound/effects/flipblade.ogg rename to sound/weapons/blade_open.ogg diff --git a/sound/weapons/flipblade.ogg b/sound/weapons/flipblade.ogg deleted file mode 100644 index 09fc995b4fa..00000000000 Binary files a/sound/weapons/flipblade.ogg and /dev/null differ