From 2e34cb79a5c33fa1c9608b7bbc787e7ac3151a5d Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 12 Dec 2014 10:03:37 +0100 Subject: [PATCH] Morphic Clerical Kit Buy the morphic chameleon stamp (or Stmap) now and get a new pen which fakes signatures for free. Attempts to improve the value of said chameleon stamp as it feels rather expensive for what it do. --- code/game/gamemodes/game_mode.dm | 2 +- .../items/weapons/storage/uplink_kits.dm | 13 +- code/modules/paperwork/paper.dm | 6 +- code/modules/paperwork/pen.dm | 254 ++++++++++-------- 4 files changed, 157 insertions(+), 118 deletions(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 80b3a7c113..b27fd85607 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -56,7 +56,7 @@ "Devices and Tools" = list( new/datum/uplink_item(/obj/item/weapon/card/emag, 3, "Cryptographic Sequencer", "EC"), new/datum/uplink_item(/obj/item/weapon/storage/toolbox/syndicate, 1, "Fully Loaded Toolbox", "ST"), - new/datum/uplink_item(/obj/item/weapon/stamp/chameleon, 3, "Morphic Chameleon Stmap", "CS"), + new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/clerical, 3, "Morphic Clerical Kit", "CK"), new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/space, 3, "Space Suit", "SS"), new/datum/uplink_item(/obj/item/clothing/glasses/thermal/syndi, 3, "Thermal Imaging Glasses", "TM"), new/datum/uplink_item(/obj/item/device/encryptionkey/binary, 3, "Binary Translator Key", "BT"), diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index d28586b0a2..8e78bfcf9d 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -125,7 +125,7 @@ /obj/item/weapon/storage/box/syndie_kit/chameleon name = "Chameleon Kit" - desc = "Comes with all the clothes you need to impersonate most people. Acting lessons sold seperately." + desc = "Comes with all the clothes you need to impersonate most people. Acting lessons sold separately." storage_slots = 10 /obj/item/weapon/storage/box/syndie_kit/chameleon/New() @@ -139,4 +139,13 @@ new /obj/item/clothing/mask/chameleon(src) new /obj/item/clothing/glasses/chameleon(src) new /obj/item/weapon/gun/projectile/chameleon(src) - new /obj/item/ammo_magazine/chameleon(src) \ No newline at end of file + new /obj/item/ammo_magazine/chameleon(src) + +/obj/item/weapon/storage/box/syndie_kit/clerical + name = "Clerical Kit" + desc = "Comes with all you need to fake paperwork. Assumes you have passed basic writing lessons." + +/obj/item/weapon/storage/box/syndie_kit/clerical/New() + ..() + new /obj/item/weapon/stamp/chameleon(src) + new /obj/item/weapon/pen/chameleon(src) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 72f827f7ed..440d48aca1 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -193,6 +193,10 @@ updateinfolinks() update_icon() +/obj/item/weapon/paper/proc/get_signature(var/obj/item/weapon/pen/P, mob/user as mob) + if(P) + return P.get_signature(user) + return (user && user.real_name) ? user.real_name : "Anonymous" /obj/item/weapon/paper/proc/parsepencode(var/t, var/obj/item/weapon/pen/P, mob/user as mob, var/iscrayon = 0) // t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) @@ -208,7 +212,7 @@ t = replacetext(t, "\[/u\]", "") t = replacetext(t, "\[large\]", "") t = replacetext(t, "\[/large\]", "") - t = replacetext(t, "\[sign\]", "[user ? user.real_name : "Anonymous"]") + t = replacetext(t, "\[sign\]", "[get_signature(P, user)]") t = replacetext(t, "\[field\]", "") t = replacetext(t, "\[h1\]", "

") diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 6197956587..dd60029382 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -1,114 +1,140 @@ -/* Pens! - * Contains: - * Pens - * Sleepy Pens - * Parapens - */ - - -/* - * Pens - */ -/obj/item/weapon/pen - desc = "It's a normal black ink pen." - name = "pen" - icon = 'icons/obj/bureaucracy.dmi' - icon_state = "pen" - item_state = "pen" - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT | SLOT_EARS - throwforce = 0 - w_class = 1.0 - throw_speed = 7 - throw_range = 15 - matter = list("metal" = 10) - var/colour = "black" //what colour the ink is! - pressure_resistance = 2 - - -/obj/item/weapon/pen/blue - desc = "It's a normal blue ink pen." - icon_state = "pen_blue" - colour = "blue" - -/obj/item/weapon/pen/red - desc = "It's a normal red ink pen." - icon_state = "pen_red" - colour = "red" - -/obj/item/weapon/pen/invisible - desc = "It's an invisble pen marker." - icon_state = "pen" - colour = "white" - - -/obj/item/weapon/pen/attack(mob/M as mob, mob/user as mob) - if(!ismob(M)) - return - user << "You stab [M] with the pen." -// M << "\red You feel a tiny prick!" //That's a whole lot of meta! - M.attack_log += text("\[[time_stamp()]\] Has been stabbed with [name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [name] to stab [M.name] ([M.ckey])") - msg_admin_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey]) (JMP)") - return - - -/* - * Sleepy Pens - */ -/obj/item/weapon/pen/sleepypen - desc = "It's a black ink pen with a sharp point and a carefully engraved \"Waffle Co.\"" - flags = FPRINT | TABLEPASS | OPENCONTAINER - slot_flags = SLOT_BELT - origin_tech = "materials=2;syndicate=5" - - -/obj/item/weapon/pen/sleepypen/New() - var/datum/reagents/R = new/datum/reagents(30) //Used to be 300 - reagents = R - R.my_atom = src - R.add_reagent("chloralhydrate", 22) //Used to be 100 sleep toxin//30 Chloral seems to be fatal, reducing it to 22./N - ..() - return - - -/obj/item/weapon/pen/sleepypen/attack(mob/M as mob, mob/user as mob) - if(!(istype(M,/mob))) - return - ..() - if(reagents.total_volume) - if(M.reagents) reagents.trans_to(M, 50) //used to be 150 - return - - -/* - * Parapens - */ - /obj/item/weapon/pen/paralysis - flags = FPRINT | TABLEPASS | OPENCONTAINER - slot_flags = SLOT_BELT - origin_tech = "materials=2;syndicate=5" - - -/obj/item/weapon/pen/paralysis/attack(mob/living/M as mob, mob/user as mob) - - if(!(istype(M,/mob))) - return - - ..() - - - if(M.can_inject(user,1)) - if(reagents.total_volume) - if(M.reagents) reagents.trans_to(M, 50) - return - - -/obj/item/weapon/pen/paralysis/New() - var/datum/reagents/R = new/datum/reagents(50) - reagents = R - R.my_atom = src - R.add_reagent("zombiepowder", 10) - R.add_reagent("cryptobiolin", 15) - ..() - return +/* Pens! + * Contains: + * Pens + * Sleepy Pens + * Parapens + */ + + +/* + * Pens + */ +/obj/item/weapon/pen + desc = "It's a normal black ink pen." + name = "pen" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "pen" + item_state = "pen" + flags = FPRINT | TABLEPASS + slot_flags = SLOT_BELT | SLOT_EARS + throwforce = 0 + w_class = 1.0 + throw_speed = 7 + throw_range = 15 + matter = list("metal" = 10) + var/colour = "black" //what colour the ink is! + pressure_resistance = 2 + + +/obj/item/weapon/pen/blue + desc = "It's a normal blue ink pen." + icon_state = "pen_blue" + colour = "blue" + +/obj/item/weapon/pen/red + desc = "It's a normal red ink pen." + icon_state = "pen_red" + colour = "red" + +/obj/item/weapon/pen/invisible + desc = "It's an invisble pen marker." + icon_state = "pen" + colour = "white" + + +/obj/item/weapon/pen/attack(mob/M as mob, mob/user as mob) + if(!ismob(M)) + return + user << "You stab [M] with the pen." +// M << "\red You feel a tiny prick!" //That's a whole lot of meta! + M.attack_log += text("\[[time_stamp()]\] Has been stabbed with [name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [name] to stab [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey]) (JMP)") + return + + +/* + * Sleepy Pens + */ +/obj/item/weapon/pen/sleepypen + desc = "It's a black ink pen with a sharp point and a carefully engraved \"Waffle Co.\"" + flags = FPRINT | TABLEPASS | OPENCONTAINER + slot_flags = SLOT_BELT + origin_tech = "materials=2;syndicate=5" + + +/obj/item/weapon/pen/sleepypen/New() + var/datum/reagents/R = new/datum/reagents(30) //Used to be 300 + reagents = R + R.my_atom = src + R.add_reagent("chloralhydrate", 22) //Used to be 100 sleep toxin//30 Chloral seems to be fatal, reducing it to 22./N + ..() + return + + +/obj/item/weapon/pen/sleepypen/attack(mob/M as mob, mob/user as mob) + if(!(istype(M,/mob))) + return + ..() + if(reagents.total_volume) + if(M.reagents) reagents.trans_to(M, 50) //used to be 150 + return + + +/* + * Parapens + */ + /obj/item/weapon/pen/paralysis + flags = FPRINT | TABLEPASS | OPENCONTAINER + slot_flags = SLOT_BELT + origin_tech = "materials=2;syndicate=5" + + +/obj/item/weapon/pen/paralysis/attack(mob/living/M as mob, mob/user as mob) + + if(!(istype(M,/mob))) + return + + ..() + + + if(M.can_inject(user,1)) + if(reagents.total_volume) + if(M.reagents) reagents.trans_to(M, 50) + return + + +/obj/item/weapon/pen/paralysis/New() + var/datum/reagents/R = new/datum/reagents(50) + reagents = R + R.my_atom = src + R.add_reagent("zombiepowder", 10) + R.add_reagent("cryptobiolin", 15) + ..() + return + +/* + * Chameleon pen + */ +/obj/item/weapon/pen/chameleon + var/signature = "" + +/obj/item/weapon/pen/chameleon/attack_self(mob/user as mob) + /* + // Limit signatures to official crew members + var/personnel_list[] = list() + for(var/datum/data/record/t in data_core.locked) //Look in data core locked. + personnel_list.Add(t.fields["name"]) + personnel_list.Add("Anonymous") + + var/new_signature = input("Enter new signature pattern.", "New Signature") as null|anything in personnel_list + if(new_signature) + signature = new_signature + */ + signature = trim_strip_html_properly(input("Enter new signature. Leave blank for 'Anonymous'", "New Signature", signature)) + +/obj/item/weapon/pen/proc/get_signature(var/mob/user) + return (user && user.real_name) ? user.real_name : "Anonymous" + +/obj/item/weapon/pen/chameleon/get_signature(var/mob/user) + return signature ? signature : "Anonymous"