mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-31 00:49:06 +01:00
Qol and bugfix variety pack (#21367)
changes: - qol: "Added detailed extended examine info on mechanics to pens." - qol: "Added detailed extended examine info on mechanics to the psychiatrist/chaplain Mesmetron." - qol: "Added detailed extended examine info on mechanics to barricades." - qol: "Added some extended examine info to (hanging) flags, crayons, misc." - code_imp: "Updated dmdocs in many locations." - bugfix: "You can no longer force-feed people crayons. However, you can still offer a bite of crayon for them to accept or refuse, for tradition's sake." - bugfix: "Reading the contents of a noticeboard now makes you actually face the noticeboard."
This commit is contained in:
@@ -28,7 +28,7 @@
|
||||
|
||||
/obj/machinery/stasis_bed/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can alt-click this to toggle it on or off."
|
||||
. += "ALT-click this to toggle it on or off."
|
||||
|
||||
/obj/machinery/stasis_bed/Initialize(mapload, d, populate_components)
|
||||
. = ..()
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/obj/machinery/washing_machine.dmi'
|
||||
icon_state = "wm_10"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
anchored = TRUE
|
||||
clicksound = /singleton/sound_category/button_sound
|
||||
clickvol = 40
|
||||
|
||||
@@ -32,6 +32,10 @@
|
||||
. += "ALT-click a washing machine to start and stop it."
|
||||
. += "Washing machines can be used as part of the leather tanning process by putting scraped bare hides in them."
|
||||
|
||||
/obj/machinery/washing_machine/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "It [anchored ? "is" : "could be"] anchored to the floor with some <b>bolts</b>."
|
||||
|
||||
/obj/machinery/washing_machine/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "If you put Ian inside this machine and run it, terrible things will happen."
|
||||
@@ -109,6 +113,14 @@
|
||||
state = 3
|
||||
else
|
||||
return ..()
|
||||
else if(attacking_item.iswrench())
|
||||
if(anchored)
|
||||
to_chat(user, SPAN_NOTICE("You lean down and unwrench \the [src]."))
|
||||
anchored = FALSE
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("You wrench \the [src] into place."))
|
||||
anchored = TRUE
|
||||
return
|
||||
else
|
||||
if(contents.len < 5)
|
||||
if (state in list(1, 3))
|
||||
|
||||
@@ -69,6 +69,10 @@
|
||||
colourName = "rainbow"
|
||||
reagents_to_add = list(/singleton/reagent/crayon_dust/brown = 20)
|
||||
|
||||
/obj/item/crayon/rainbow/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use this on yourself to change the current primary and shade colors."
|
||||
|
||||
/obj/item/pen/crayon/rainbow/attack_self(mob/living/user as mob)
|
||||
colour = input(user, "Please select the main colour.", "Crayon colour") as color
|
||||
shadeColour = input(user, "Please select the shade colour.", "Crayon colour") as color
|
||||
@@ -80,6 +84,10 @@
|
||||
shadeColour = "#886422"
|
||||
desc = "A crayon that is integrated into a user's finger. It can synthesize a multitude of colors."
|
||||
|
||||
/obj/item/crayon/augment/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use this on yourself to change the current primary and shade colors."
|
||||
|
||||
/obj/item/pen/crayon/augment/Initialize()
|
||||
. = ..()
|
||||
name = "integrated crayon"
|
||||
@@ -141,8 +149,22 @@
|
||||
if(ishuman(target_mob))
|
||||
var/mob/living/carbon/human/H = target_mob
|
||||
if(H.check_has_mouth())
|
||||
target_mob.visible_message(SPAN_NOTICE("[target_mob] takes a bite of their crayon and swallows it."),
|
||||
SPAN_NOTICE("You take a bite of your crayon and swallow it."))
|
||||
// The end of an era: no more force-feeding people crayons.
|
||||
if(user != target_mob)
|
||||
var/crayon_eater_response = alert(target_mob, "[user] is trying to feed you a crayon. How hungry are you?", "Hunger", "Very hungry!", "Not that hungry.")
|
||||
// The ungrateful bastard doesn't want to eat any crayon.
|
||||
if(crayon_eater_response == "Not that hungry.")
|
||||
target_mob.visible_message(SPAN_NOTICE("[target_mob] pushes away the crayon [user] held out for them to eat."),
|
||||
SPAN_NOTICE("[target_mob] doesn't want seem to eat any crayon right now."))
|
||||
return TRUE
|
||||
// Yum yum! This message is handled separately to make it Very Clear to observers that someone is hand-feeding someone else a crayon.
|
||||
else
|
||||
target_mob.visible_message(SPAN_NOTICE("[target_mob] takes a bite of the crayon held out by [user] and swallows it."),
|
||||
SPAN_NOTICE("You take a bite of crayon and swallow it."))
|
||||
|
||||
else
|
||||
target_mob.visible_message(SPAN_NOTICE("[target_mob] takes a bite of crayon and swallows it."),
|
||||
SPAN_NOTICE("You take a bite of crayon and swallow it."))
|
||||
|
||||
target_mob.adjustNutritionLoss(-1)
|
||||
reagents.trans_to_mob(target_mob, 2, CHEM_INGEST)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
/obj/item/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 seperately."
|
||||
worn_overlay = "syndiesuit"
|
||||
starts_with = list(
|
||||
/obj/item/clothing/under/chameleon = 1,
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
/obj/item/storage/box/syndie_kit/clerical
|
||||
name = "clerical kit"
|
||||
desc = "Comes with all you need to fake paperwork. Assumes you have passed basic writing lessons."
|
||||
desc = "Comes with all you need to fake paperwork or write with invisible ink. Assumes you have passed basic writing lessons."
|
||||
worn_overlay = "pen"
|
||||
starts_with = list(
|
||||
/obj/item/stamp/chameleon = 1,
|
||||
|
||||
@@ -4,19 +4,25 @@
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
atom_flags = ATOM_FLAG_CHECKS_BORDER
|
||||
/// The type of stack the barricade dropped when disassembled if any.
|
||||
var/stack_type
|
||||
/// The amount of stack dropped when disassembled at full health
|
||||
var/stack_amount = 5
|
||||
/// to specify a non-zero amount of stack to drop when destroyed
|
||||
var/destroyed_stack_amount
|
||||
/// Pretty tough. Changes sprites at 300 and 150
|
||||
var/health = 100
|
||||
/// Basic code functions
|
||||
var/maxhealth = 100
|
||||
|
||||
var/stack_type //The type of stack the barricade dropped when disassembled if any.
|
||||
var/stack_amount = 5 //The amount of stack dropped when disassembled at full health
|
||||
var/destroyed_stack_amount //to specify a non-zero amount of stack to drop when destroyed
|
||||
var/health = 100 //Pretty tough. Changes sprites at 300 and 150
|
||||
var/maxhealth = 100 //Basic code functions
|
||||
|
||||
///Used for calculating some stuff related to maxhealth as it constantly changes due to e.g. barbed wire. set to 100 to avoid possible divisions by zero
|
||||
/// Used for calculating some stuff related to maxhealth as it constantly changes due to e.g. barbed wire. set to 100 to avoid possible divisions by zero
|
||||
var/starting_maxhealth = 100
|
||||
|
||||
var/force_level_absorption = 5 //How much force an item needs to even damage it at all.
|
||||
/// How much force an item needs to even damage it at all.
|
||||
var/force_level_absorption = 5
|
||||
var/barricade_hitsound
|
||||
var/barricade_type = "barricade" //"metal", "plasteel", etc.
|
||||
/// "metal", "plasteel", etc.
|
||||
var/barricade_type = "barricade"
|
||||
var/can_change_dmg_state = TRUE
|
||||
var/damage_state = BARRICADE_DMG_NONE
|
||||
var/closed = FALSE
|
||||
@@ -43,12 +49,15 @@
|
||||
|
||||
/obj/structure/barricade/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "RIGHT-click on this to rotate it (if not anchored to the floor)."
|
||||
if(!is_wired)
|
||||
. += "Use a length of barbed wire on this barricade to restrict enemies from climbing it and damage them on attacking it at close range."
|
||||
. += "Use a length of barbed wire on this barricade to prevent enemies from climbing it and damage them on attacking it at close range."
|
||||
else
|
||||
. += "Wirecutters could remove the barbed wire on this, but it will take several moments."
|
||||
|
||||
/obj/structure/barricade/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += SPAN_INFO("It is recommended to stand flush to a barricade or one tile away for maximum efficiency.")
|
||||
. += SPAN_INFO("It is recommended to stand flush to a barricade or one tile away for maximum effectiveness.")
|
||||
if(is_wired)
|
||||
. += SPAN_INFO("There is a length of barbed wire strewn across the top of this barricade, preventing it from being climbed and making it hazardous to attack at close range.")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/structure/barricade/metal
|
||||
name = "metal barricade"
|
||||
desc = "A sturdy and easily assembled barricade made of metal plates, often used for quick fortifications. Use a blowtorch to repair."
|
||||
desc = "A sturdy and easily assembled barricade made of metal plates, often used for quick fortifications."
|
||||
icon_state = "metal_0"
|
||||
build_amt = 4
|
||||
health = 450
|
||||
@@ -12,8 +12,20 @@
|
||||
barricade_hitsound = 'sound/effects/metalhit.ogg'
|
||||
barricade_type = "metal"
|
||||
can_wire = TRUE
|
||||
var/build_state = BARRICADE_BSTATE_SECURED //Look at __game.dm for barricade defines
|
||||
/// Look at __game.dm for barricade defines
|
||||
var/build_state = BARRICADE_BSTATE_SECURED
|
||||
|
||||
// Duplicated in /obj/structure/barricade/plasteel. If you change one, also change the other.
|
||||
/obj/structure/barricade/metal/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Damage (up to a point) can be repaired with a welding torch."
|
||||
switch(build_state)
|
||||
if(BARRICADE_BSTATE_MOVABLE)
|
||||
. += "The barricade is ready to have its <b>anchor bolts</b> tightened."
|
||||
if(BARRICADE_BSTATE_UNSECURED)
|
||||
. += "The protection panel is ready to be <b>screwed</b> into place."
|
||||
|
||||
// Duplicated in /obj/structure/barricade/plasteel. If you change one, also change the other.
|
||||
/obj/structure/barricade/metal/disassembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
switch(build_state)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/structure/barricade/plasteel
|
||||
name = "plasteel barricade"
|
||||
desc = "A very sturdy barricade made out of plasteel panels, the pinnacle of strongpoints. Use a blowtorch to repair. Can be flipped down to create a path."
|
||||
desc = "A very sturdy barricade made out of plasteel panels, the pinnacle of strongpoints."
|
||||
icon_state = "plasteel_closed_0"
|
||||
health = 800
|
||||
maxhealth = 800
|
||||
@@ -15,9 +15,12 @@
|
||||
closed = TRUE
|
||||
can_wire = TRUE
|
||||
|
||||
var/build_state = BARRICADE_BSTATE_SECURED //Look at __game.dm for barricade defines
|
||||
var/tool_cooldown = 0 //Delay to apply tools to prevent spamming
|
||||
var/busy = 0 //Standard busy check
|
||||
/// Look at __game.dm for barricade defines
|
||||
var/build_state = BARRICADE_BSTATE_SECURED
|
||||
/// Delay to apply tools to prevent spamming
|
||||
var/tool_cooldown = 0
|
||||
/// Standard busy check
|
||||
var/busy = 0
|
||||
var/linked = 0
|
||||
var/recentlyflipped = FALSE
|
||||
var/hasconnectionoverlay = TRUE
|
||||
@@ -35,22 +38,37 @@
|
||||
overlays += image('icons/obj/barricades.dmi', icon_state = "[src.barricade_type]_connection_[get_dir(src, cade)]")
|
||||
continue
|
||||
|
||||
|
||||
/obj/structure/barricade/plasteel/handle_barrier_chance(mob/living/M)
|
||||
if(!closed) // Closed = gate down for plasteel for some reason
|
||||
return ..()
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/structure/barricade/plasteel/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/structure/barricade/plasteel/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use this with an empty active hand to toggle it closed or open."
|
||||
. += "Multiple plasteel barricades aligned in a row can be linked together by using a crowbar on adjacent ones sequentially."
|
||||
|
||||
// Duplicated in /obj/structure/barricade/metal. If you change one, also change the other.
|
||||
/obj/structure/barricade/plasteel/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Damage (up to a point) can be repaired with a welding torch."
|
||||
switch(build_state)
|
||||
if(BARRICADE_BSTATE_MOVABLE)
|
||||
. += "The barricade is ready to have its <b>anchor bolts</b> tightened."
|
||||
if(BARRICADE_BSTATE_UNSECURED)
|
||||
. += "The protection panel is ready to be <b>screwed</b> into place."
|
||||
|
||||
// Duplicated in /obj/structure/barricade/metal. If you change one, also change the other.
|
||||
/obj/structure/barricade/plasteel/disassembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
switch(build_state)
|
||||
if(BARRICADE_BSTATE_SECURED)
|
||||
. += SPAN_INFO("The protection panel is still tighly screwed in place.")
|
||||
. += "The protection panel is still tighly <b>screwed</b> in place."
|
||||
if(BARRICADE_BSTATE_UNSECURED)
|
||||
. += SPAN_INFO("The protection panel has been removed, you can see the anchor bolts.")
|
||||
. += "The protection panel has been removed, you can see the <b>anchor bolts</b>."
|
||||
if(BARRICADE_BSTATE_MOVABLE)
|
||||
. += SPAN_INFO("The protection panel has been removed and the anchor bolts loosened. It's ready to be taken apart.")
|
||||
. += "The protection panel has been removed and the anchor bolts loosened. It's ready to be <b>pried</b> apart."
|
||||
|
||||
/obj/structure/barricade/plasteel/weld_cade(obj/item/W, mob/user)
|
||||
busy = TRUE
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
can_wire = FALSE
|
||||
metallic = FALSE
|
||||
|
||||
/obj/structure/barricade/wooden/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "A plank of wood can be used on this to repair damage."
|
||||
|
||||
/obj/structure/barricade/wooden/attackby(obj/item/attacking_item, mob/user)
|
||||
if(istype(attacking_item, /obj/item/stack/material/wood))
|
||||
var/obj/item/stack/material/wood/D = attacking_item
|
||||
@@ -27,7 +31,7 @@
|
||||
if(D.use(1))
|
||||
update_health(-0.5*maxhealth)
|
||||
update_damage_state()
|
||||
visible_message(SPAN_NOTICE("[user] clumsily repairs [src]."))
|
||||
visible_message(SPAN_NOTICE("[user] haphazardly repairs [src]."))
|
||||
return
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
user.put_in_hands(chosen_item)
|
||||
to_chat(user, SPAN_NOTICE("You take [my_plasteel[chosen_item]] from [src]."))
|
||||
my_plasteel -= chosen_item
|
||||
if(/obj/item/device/lightreplacer)
|
||||
if(/obj/item/device/lightreplacer, /obj/item/device/lightreplacer/advanced)
|
||||
if(my_lightreplacer)
|
||||
user.put_in_hands(my_lightreplacer)
|
||||
to_chat(user, SPAN_NOTICE("You take [my_lightreplacer] from [src]."))
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
/obj/structure/coatrack
|
||||
name = "coat rack"
|
||||
desc = "Rack that holds coats, or hats, if you're so inclined."
|
||||
desc = "Rack that holds coats, or hats, if you're so inclined. Well, exactly one coat and one hat, at least."
|
||||
icon = 'icons/obj/coatrack.dmi'
|
||||
icon_state = "coatrack"
|
||||
layer = ABOVE_HUMAN_LAYER
|
||||
var/obj/item/clothing/coat
|
||||
var/obj/item/clothing/head/hat
|
||||
var/list/custom_sprites = list(/obj/item/clothing/head/beret/security, /obj/item/clothing/accessory/poncho/tajarancloak) // Custom manual sprite override.
|
||||
/// Custom manual sprite override.
|
||||
var/list/custom_sprites = list(/obj/item/clothing/head/beret/security, /obj/item/clothing/accessory/poncho/tajarancloak)
|
||||
|
||||
/obj/structure/coatrack/attack_hand(mob/user as mob)
|
||||
if(use_check_and_message(user))
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon_state = "flag_boxed"
|
||||
var/flag_path
|
||||
|
||||
///Boolean, set to `TRUE` if a flag is large (2x1)
|
||||
/// Boolean, set to `TRUE` if a flag is large (2x1)
|
||||
var/flag_size = FALSE
|
||||
|
||||
var/obj/structure/sign/flag/flag_structure
|
||||
@@ -23,17 +23,17 @@
|
||||
icon = 'icons/obj/structure/flags.dmi'
|
||||
icon_state = "flag"
|
||||
|
||||
///If a big flag, the other half of the flag is referenced here
|
||||
/// If a big flag, the other half of the flag is referenced here
|
||||
var/obj/structure/sign/flag/linked_flag
|
||||
/// For returning your flag
|
||||
var/obj/item/flag/flag_item
|
||||
|
||||
var/obj/item/flag/flag_item //For returning your flag
|
||||
|
||||
///Boolean, if we've been torn down
|
||||
/// Boolean, if we've been torn down
|
||||
var/ripped = FALSE
|
||||
|
||||
///Default offset value. Used in accurately locating the turf we're standing on.
|
||||
/// Default offset value. Used in accurately locating the turf we're standing on.
|
||||
var/offset_constant = 32
|
||||
///Boolean, set to TRUE if someone is folding the banner.
|
||||
/// Boolean, set to TRUE if someone is folding the banner.
|
||||
var/currently_folding = FALSE
|
||||
var/ripped_outline_state = "flag_ripped"
|
||||
var/flag_path
|
||||
@@ -45,6 +45,13 @@
|
||||
var/unmovable = FALSE
|
||||
var/stand_icon = "banner_stand"
|
||||
|
||||
/obj/structure/sign/flag/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "With the HELP intent, use an empty hand on this to examine it."
|
||||
. += "With the DISARM intent, use an empty hand on this to fold it back up."
|
||||
. += "With the GRAB intent, use an empty hand on this to salute it. How patriotic!"
|
||||
. += "With the HURT intent, use an empty hand on this rip it down. You will receive a prompt to confirm the action."
|
||||
|
||||
/obj/structure/sign/flag/Initialize(mapload, var/newdir, var/linked_flag_path, var/deploy, var/icon_file, var/item_flag_path)
|
||||
. = ..()
|
||||
dir = newdir
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
pass_flags_self = PASSTABLE
|
||||
var/state = 0
|
||||
var/health = 200
|
||||
var/cover = 50 //how much cover the girder provides against projectiles.
|
||||
/// How much cover the girder provides against projectiles.
|
||||
var/cover = 50
|
||||
build_amt = 2
|
||||
var/material/reinf_material
|
||||
var/reinforcing = 0
|
||||
@@ -30,15 +31,13 @@
|
||||
state = SPAN_NOTICE("The support struts look completely intact.")
|
||||
. += state
|
||||
|
||||
/obj/structure/girder/mechanics_hints()
|
||||
. = list()
|
||||
/obj/structure/girder/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if (state == 0 && anchored)
|
||||
. += SPAN_NOTICE("It could be <b>pried</b> to subtly displace it to build a fake wall.")
|
||||
return .
|
||||
|
||||
/obj/structure/girder/assembly_hints()
|
||||
. = list()
|
||||
/obj/structure/girder/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if (health < initial(health))
|
||||
. += "It could be repaired with a few choice <b>welds</b>."
|
||||
@@ -55,8 +54,7 @@
|
||||
. += "It [anchored ? "is" : "could be"] anchored to the floor with some <b>bolts</b>."
|
||||
return .
|
||||
|
||||
/obj/structure/girder/disassembly_hints()
|
||||
. = list()
|
||||
/obj/structure/girder/disassembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
// Reinf wall deconstruction.
|
||||
if (state == 2)
|
||||
@@ -66,7 +64,6 @@
|
||||
if (!anchored)
|
||||
. += "It is held together by a couple of <b>bolts</b>; a heavy <b>cutting</b> tool might also take it apart."
|
||||
|
||||
|
||||
/obj/structure/girder/displaced
|
||||
name = "displaced girder"
|
||||
icon_state = "displaced"
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
// level, it should be fine to let anyone mess with the board other than ghosts.
|
||||
/obj/structure/noticeboard/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended)
|
||||
if(is_adjacent)
|
||||
user.face_atom(src)
|
||||
var/dat = "<B>Noticeboard</B><BR>"
|
||||
for(var/obj/item/paper/P in src)
|
||||
dat += "<A href='byond://?src=[REF(src)];read=[REF(P)]'>[P.name]</A> <A href='byond://?src=[REF(src)];write=[REF(P)]'>Write</A> <A href='byond://?src=[REF(src)];remove=[REF(P)]'>Remove</A><BR>"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/mesmetron
|
||||
name = "mesmetron pocketwatch"
|
||||
desc = "An elaborate pocketwatch, with a captivating gold etching and an enchanting face. . ."
|
||||
desc = "An elaborate pocketwatch, with a captivating gold etching and an enchanting face..."
|
||||
icon = 'icons/obj/item/clothing/wrists/wrist.dmi'
|
||||
icon_state = "pocketwatch"
|
||||
item_state = "pocketwatch"
|
||||
@@ -14,6 +14,13 @@
|
||||
var/time_counter = 0
|
||||
var/closed = FALSE
|
||||
|
||||
/obj/item/mesmetron/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "ALT-click this to snap it open or shut."
|
||||
. += "Use this on yourself (when opened) to check the date and time."
|
||||
. += "Use this on someone (when opened) to attempt to hypnotize them! They will receive a prompt; if they believe in hypnosis, they will fall into a deep slumber."
|
||||
. += "While you have someone hypnotized, use this on yourself to either awaken them, or to whisper a suggestion to them!"
|
||||
|
||||
/obj/item/mesmetron/AltClick(mob/user)
|
||||
if(!closed)
|
||||
icon_state = "[initial(icon_state)]_closed"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
\[br\] : Creates a linebreak.
|
||||
\[center\] - \[/center\] : Centers the text.
|
||||
\[h1\] - \[/h1\] : Makes the text a first level heading.
|
||||
\[h2\] - \[/h2\] : Makes the text a second level headin.
|
||||
\[h2\] - \[/h2\] : Makes the text a second level heading.
|
||||
\[h3\] - \[/h3\] : Makes the text a third level heading.
|
||||
\[b\] - \[/b\] : Makes the text bold.
|
||||
\[i\] - \[/i\] : Makes the text italic.
|
||||
@@ -50,8 +50,14 @@
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
||||
|
||||
var/colour = "black" // Ink colour.
|
||||
var/cursive = FALSE // Done here so other pen variants can access the cursive variable.
|
||||
/// Ink colour.
|
||||
var/colour = "black"
|
||||
/// Done here so other pen variants can access the cursive variable.
|
||||
var/cursive = FALSE
|
||||
|
||||
/obj/item/pen/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Pens can be used on paper to write, or on a wide variety of objects, machinery, etc. to label or rename them."
|
||||
|
||||
/obj/item/pen/ispen()
|
||||
return TRUE
|
||||
@@ -97,7 +103,7 @@
|
||||
colour = "green"
|
||||
|
||||
/obj/item/pen/invisible
|
||||
desc = "An instrument for writing or drawing with ink. This one has invisible ink."
|
||||
desc = "An instrument for writing or drawing with ink. This one has invisible (white) ink."
|
||||
icon_state = "pen"
|
||||
colour = "white"
|
||||
|
||||
@@ -107,6 +113,10 @@
|
||||
var/selectedColor = 1
|
||||
var/colors = list("black", "blue", "red", "green", "yellow")
|
||||
|
||||
/obj/item/pen/multi/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use this on yourself to change the current pen color."
|
||||
|
||||
/obj/item/pen/multi/attack_self(mob/user)
|
||||
if(++selectedColor > 3)
|
||||
selectedColor = 1
|
||||
@@ -134,6 +144,10 @@
|
||||
throwforce = 1 //pointy
|
||||
colour = "#1c1713" //dark ashy brownish
|
||||
|
||||
/obj/item/pen/fountain/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use this on yourself to toggle between normal and cursive script."
|
||||
|
||||
/obj/item/pen/fountain/attack_self(var/mob/user)
|
||||
playsound(loc, 'sound/items/penclick.ogg', 50, 1)
|
||||
to_chat(user, SPAN_NOTICE("You snap the nib into position to write [cursive ? "normally" : "in cursive"]."))
|
||||
@@ -172,6 +186,10 @@
|
||||
slot_flags = SLOT_BELT
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
|
||||
/obj/item/pen/reagent/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use this on someone to inject them with its current reagents. They'll definitely notice."
|
||||
|
||||
/obj/item/pen/reagent/Initialize()
|
||||
. = ..()
|
||||
create_reagents(30)
|
||||
@@ -203,48 +221,78 @@
|
||||
/*
|
||||
* Parapens
|
||||
*/
|
||||
|
||||
/obj/item/pen/reagent/paralysis
|
||||
icon_state = "pen_red"
|
||||
colour = "red"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
reagents_to_add = list(/singleton/reagent/toxin/dextrotoxin = 10) // ~5 minutes worth of paralysis. Measured from falling over to getting up.
|
||||
|
||||
/obj/item/pen/reagent/paralysis/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You recall this pen contains approximately five minutes' worth of paralyzing agents."
|
||||
|
||||
/obj/item/pen/reagent/purge
|
||||
icon_state = "pen_green"
|
||||
colour = "green"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
reagents_to_add = list(/singleton/reagent/fluvectionem = 5)
|
||||
|
||||
/obj/item/pen/reagent/purge/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You recall this pen contains a paralysis counteragent for removing the effect early if desired."
|
||||
|
||||
/obj/item/pen/reagent/healing
|
||||
icon_state = "pen_green"
|
||||
colour = "green"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
reagents_to_add = list(/singleton/reagent/tricordrazine = 10, /singleton/reagent/dermaline = 5, /singleton/reagent/bicaridine = 5)
|
||||
|
||||
/obj/item/pen/reagent/healing/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You recall this pen contains a number of healing chemicals."
|
||||
|
||||
/obj/item/pen/reagent/pacifier
|
||||
icon_state = "pen_blue"
|
||||
colour = "blue"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
reagents_to_add = list(/singleton/reagent/wulumunusha = 2, /singleton/reagent/pacifier = 15, /singleton/reagent/drugs/cryptobiolin = 10)
|
||||
|
||||
/obj/item/pen/reagent/pacifier/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You recall this pen contains a mixture of chemicals to pacify its victim."
|
||||
|
||||
/obj/item/pen/reagent/hyperzine
|
||||
icon_state = "pen_yellow"
|
||||
colour = "yellow"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
reagents_to_add = list(/singleton/reagent/hyperzine = 10)
|
||||
|
||||
/obj/item/pen/reagent/hyperzine/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You recall this pen contains hyperzine."
|
||||
|
||||
/obj/item/pen/reagent/poison
|
||||
icon_state = "pen_red"
|
||||
colour = "red"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
reagents_to_add = list(/singleton/reagent/toxin/cyanide = 1, /singleton/reagent/lexorin = 20)
|
||||
|
||||
/obj/item/pen/reagent/poison/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You recall this pen contains deadly poison."
|
||||
|
||||
/*
|
||||
* Chameleon pen
|
||||
*/
|
||||
/obj/item/pen/chameleon
|
||||
var/signature = ""
|
||||
|
||||
/obj/item/pen/chameleon/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use the Change Pen Colour verb to set the colour you want to use. Note that this pen can write in invisible (white) ink!"
|
||||
. += "Use this on yourself to set the current signature you want to use. Perfect for forging names on otherwise foolproof signature fields."
|
||||
|
||||
/obj/item/pen/chameleon/attack_self(mob/user)
|
||||
signature = sanitize(input("Enter new signature. Leave blank for 'Anonymous'", "New Signature", signature))
|
||||
|
||||
@@ -327,6 +375,10 @@
|
||||
cursive = FALSE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/pen/augment/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use this on yourself to change the current pen color, or to toggle between normal and cursive script."
|
||||
|
||||
/obj/item/pen/augment/attack_self(mob/user)
|
||||
var/choice = input(user, "Would you like to change colour or writing style?", "Pen Selector") as null|anything in list("Colour", "Style")
|
||||
if(!choice)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Your name.
|
||||
author: Batrachophrenoboocosmomachia
|
||||
|
||||
# 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, this gets changed to [] after reading. Just remove the brackets when you add new shit.
|
||||
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- qol: "Added detailed extended examine info on mechanics to pens."
|
||||
- qol: "Added detailed extended examine info on mechanics to the psychiatrist/chaplain Mesmetron."
|
||||
- qol: "Added detailed extended examine info on mechanics to barricades."
|
||||
- qol: "Added some extended examine info to (hanging) flags, crayons, misc."
|
||||
- qol: "Washing machines can now be anchored/unanchored with a wrench."
|
||||
- code_imp: "Updated dmdocs in many locations."
|
||||
- bugfix: "You can no longer force-feed people crayons. However, you can still offer a bite of crayon for them to accept or refuse, for tradition's sake."
|
||||
- bugfix: "Reading the contents of a noticeboard now makes you actually face the noticeboard."
|
||||
- bugfix: "Fixed Advanced light replacers not being retrievable from Engineering Carts."
|
||||
Reference in New Issue
Block a user