mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-24 04:26:38 +01:00
@@ -30,7 +30,7 @@
|
||||
#define LANGUAGE_SOL_COMMON "Sol Common"
|
||||
#define LANGUAGE_UNATHI "Sinta'unathi"
|
||||
#define LANGUAGE_SIIK "Siik"
|
||||
#define LANGUAGE_SKRELLIAN "Skrellian"
|
||||
#define LANGUAGE_SKRELLIAN "Common Skrellian"
|
||||
#define LANGUAGE_TRADEBAND "Tradeband"
|
||||
#define LANGUAGE_GUTTER "Gutter"
|
||||
#define LANGUAGE_SIGN "Sign Language"
|
||||
|
||||
@@ -58,6 +58,10 @@
|
||||
name = "fax machine electronics"
|
||||
path =/obj/item/weapon/circuitboard/fax
|
||||
|
||||
/datum/category_item/autolathe/engineering/papershredder
|
||||
name = "paper shredder electronics"
|
||||
path =/obj/item/weapon/circuitboard/papershredder
|
||||
|
||||
/datum/category_item/autolathe/engineering/microwave
|
||||
name = "microwave electronics"
|
||||
path =/obj/item/weapon/circuitboard/microwave
|
||||
|
||||
@@ -49,12 +49,9 @@ datum/track/New(var/title_name, var/audio)
|
||||
|
||||
/obj/machinery/media/jukebox/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
|
||||
component_parts += new /obj/item/stack/cable_coil(src, 5)
|
||||
RefreshParts()
|
||||
default_apply_parts()
|
||||
wires = new/datum/wires/jukebox(src)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/media/jukebox/Destroy()
|
||||
StopPlaying()
|
||||
@@ -78,6 +75,10 @@ datum/track/New(var/title_name, var/audio)
|
||||
return
|
||||
if(default_deconstruction_crowbar(user, W))
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/wirecutters))
|
||||
return wires.Interact(user)
|
||||
if(istype(W, /obj/item/device/multitool))
|
||||
return wires.Interact(user)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(playing)
|
||||
StopPlaying()
|
||||
|
||||
@@ -283,6 +283,13 @@ Class Procs:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/proc/default_apply_parts()
|
||||
var/obj/item/weapon/circuitboard/CB = circuit
|
||||
if(!istype(CB))
|
||||
return
|
||||
CB.apply_default_parts(src)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/proc/default_part_replacement(var/mob/user, var/obj/item/weapon/storage/part_replacer/R)
|
||||
if(!istype(R))
|
||||
return 0
|
||||
|
||||
@@ -35,3 +35,22 @@
|
||||
if(istype(M, build_path))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
//Should be called from the constructor of any machine to automatically populate the default parts
|
||||
/obj/item/weapon/circuitboard/proc/apply_default_parts(var/obj/machinery/M)
|
||||
if(!istype(M))
|
||||
return
|
||||
if(!req_components)
|
||||
return
|
||||
M.component_parts = list()
|
||||
for(var/comp_path in req_components)
|
||||
var/comp_amt = req_components[comp_path]
|
||||
if(!comp_amt)
|
||||
continue
|
||||
|
||||
if(ispath(comp_path, /obj/item/stack))
|
||||
M.component_parts += new comp_path(contain_parts ? M : null, comp_amt)
|
||||
else
|
||||
for(var/i in 1 to comp_amt)
|
||||
M.component_parts += new comp_path(contain_parts ? M : null)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef T_BOARD
|
||||
#error T_BOARD macro is not defined but we need it!
|
||||
#endif
|
||||
|
||||
/obj/item/weapon/circuitboard/papershredder
|
||||
name = T_BOARD("papershredder")
|
||||
build_path = /obj/machinery/papershredder
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/motor = 1,
|
||||
/obj/item/weapon/stock_parts/gear = 2,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 1)
|
||||
@@ -21,12 +21,12 @@
|
||||
// 'basic' language; spoken by default.
|
||||
/datum/language/common
|
||||
name = LANGUAGE_GALCOM
|
||||
desc = "The common galactic tongue."
|
||||
desc = "The common galactic tongue, engineered for cross-species communication."
|
||||
speech_verb = "says"
|
||||
whisper_verb = "whispers"
|
||||
key = "0"
|
||||
flags = RESTRICTED
|
||||
syllables = list("blah","blah","blah","bleh","meh","neh","nah","wah")
|
||||
syllables = list("vol", "zum", "coo","zoo","bi","do","ooz","ite","og","re","si","ite","ish","ar","at","on","ee","east","ma","da", "rim")
|
||||
|
||||
//TODO flag certain languages to use the mob-type specific say_quote and then get rid of these.
|
||||
/datum/language/common/get_spoken_verb(var/msg_end)
|
||||
|
||||
@@ -72,24 +72,25 @@
|
||||
|
||||
/datum/language/skrell
|
||||
name = LANGUAGE_SKRELLIAN
|
||||
desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans."
|
||||
desc = "A set of warbles and hums, the language itself a complex mesh of both melodic and rhythmic components, exceptionally capable of conveying intent and emotion of the speaker."
|
||||
speech_verb = "warbles"
|
||||
ask_verb = "warbles"
|
||||
exclaim_verb = "warbles"
|
||||
exclaim_verb = "sings"
|
||||
whisper_verb = "hums"
|
||||
colour = "skrell"
|
||||
key = "k"
|
||||
space_chance = 30
|
||||
flags = WHITELISTED
|
||||
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!")
|
||||
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!", "'")
|
||||
|
||||
/datum/language/human
|
||||
name = LANGUAGE_SOL_COMMON
|
||||
desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system."
|
||||
desc = "A bastardized hybrid of many languages, including Chinese, English, French, and more; it is the common language of the Sol system."
|
||||
speech_verb = "says"
|
||||
whisper_verb = "whispers"
|
||||
colour = "solcom"
|
||||
key = "1"
|
||||
flags = WHITELISTED
|
||||
|
||||
//syllables are at the bottom of the file
|
||||
|
||||
/datum/language/human/get_spoken_verb(var/msg_end)
|
||||
@@ -118,7 +119,7 @@
|
||||
colour = "changeling"
|
||||
key = "6"
|
||||
flags = NO_STUTTER
|
||||
syllables = list("beep","beep","beep","beep","beep","boop","boop","boop","bop","bop","dee","dee","doo","doo","hiss","hss","buzz","buzz","bzz","ksssh","keey","wurr","wahh","tzzz")
|
||||
syllables = list("beep","beep","beep","beep","beep","boop","boop","boop","bop","bop","dee","dee","doo","doo","hiss","hss","buzz","buzz","bzz","ksssh","keey","wurr","wahh","tzzz","shh","shk")
|
||||
space_chance = 10
|
||||
|
||||
/datum/language/machine/can_speak_special(var/mob/speaker)
|
||||
@@ -155,9 +156,13 @@
|
||||
/*
|
||||
This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed,
|
||||
and the english syllables had to be duplicated so that there is roughly a 50-50 weighting.
|
||||
The other 3 languages were duplicated just so they could show occasionally.
|
||||
|
||||
Sources:
|
||||
http://www.sttmedia.com/syllablefrequency-english
|
||||
http://www.sttmedia.com/syllablefrequency-spanish
|
||||
http://www.sttmedia.com/syllablefrequency-russian
|
||||
http://www.sttmedia.com/syllablefrequency-french
|
||||
http://www.chinahighlights.com/travelguide/learning-chinese/pinyin-syllables.htm
|
||||
*/
|
||||
/datum/language/human/syllables = list(
|
||||
@@ -210,4 +215,31 @@
|
||||
"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it",
|
||||
"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to",
|
||||
"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin",
|
||||
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi")
|
||||
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi",
|
||||
"ah", "be", "bo", "eh", "ep", "et", "ka", "ko", "ha", "he", "ho", "ob", "oh", "op", "oc", "ot", "pa", "pe", "ct", "ta", "te", "to",
|
||||
"vse", "tak", "nak", "no", "epo", "pre", "kan", "dly", "ime", "sha", "kur", "yey", "khi", "yeg", "ne",
|
||||
"ion", "ne", "nas", "v",
|
||||
"ah", "be", "bo", "eh", "ep", "et", "ka", "ko", "ha", "he", "ho", "ob", "oh", "op", "oc", "ot", "pa", "pe", "ct", "ta", "te", "to",
|
||||
"vse", "tak", "nak", "no", "epo", "pre", "kan", "dly", "ime", "sha", "kur", "yey", "khi", "yeg", "ne",
|
||||
"ion", "ne", "nas", "v",
|
||||
"ah", "be", "bo", "eh", "ep", "et", "ka", "ko", "ha", "he", "ho", "ob", "oh", "op", "oc", "ot", "pa", "pe", "ct", "ta", "te", "to",
|
||||
"vse", "tak", "nak", "no", "epo", "pre", "kan", "dly", "ime", "sha", "kur", "yey", "khi", "yeg", "ne",
|
||||
"ion", "ne", "nas", "v",
|
||||
"ai", "an", "ar", "au", "ce", "ch", "co", "de", "em", "en", "er", "es", "et", "eu", "il", "in", "is", "la", "le",
|
||||
"ma", "me", "ne", "ns", "nt", "on", "ou", "pa", "qu", "ra", "re", "se", "te", "ti", "tr", "ue", "ur", "us", "ve",
|
||||
"tou", "e", "eve", "hen", "son", "non", "not", "le",
|
||||
"ai", "an", "ar", "au", "ce", "ch", "co", "de", "em", "en", "er", "es", "et", "eu", "il", "in", "is", "la", "le",
|
||||
"ma", "me", "ne", "ns", "nt", "on", "ou", "pa", "qu", "ra", "re", "se", "te", "ti", "tr", "ue", "ur", "us", "ve",
|
||||
"tou", "e", "eve", "hen", "son", "non", "not", "le",
|
||||
"ai", "an", "ar", "au", "ce", "ch", "co", "de", "em", "en", "er", "es", "et", "eu", "il", "in", "is", "la", "le",
|
||||
"ma", "me", "ne", "ns", "nt", "on", "ou", "pa", "qu", "ra", "re", "se", "te", "ti", "tr", "ue", "ur", "us", "ve",
|
||||
"tou", "e", "eve", "hen", "son", "non", "not", "le",
|
||||
"ad", "al", "an", "ar", "as", "ci", "co", "de", "do", "el", "en", "er", "es", "ie", "in", "la", "lo", "me", "na",
|
||||
"no", "nt", "or", "os", "pa", "qu", "ra", "re", "ro", "se", "st", "ta", "te", "to", "ue", "un",
|
||||
"tod", "ser", "su", "no", "nue", "el",
|
||||
"ad", "al", "an", "ar", "as", "ci", "co", "de", "do", "el", "en", "er", "es", "ie", "in", "la", "lo", "me", "na",
|
||||
"no", "nt", "or", "os", "pa", "qu", "ra", "re", "ro", "se", "st", "ta", "te", "to", "ue", "un",
|
||||
"tod", "ser", "su", "no", "nue", "el",
|
||||
"ad", "al", "an", "ar", "as", "ci", "co", "de", "do", "el", "en", "er", "es", "ie", "in", "la", "lo", "me", "na",
|
||||
"no", "nt", "or", "os", "pa", "qu", "ra", "re", "ro", "se", "st", "ta", "te", "to", "ue", "un",
|
||||
"tod", "ser", "su", "no", "nue", "el")
|
||||
@@ -1,10 +1,19 @@
|
||||
//
|
||||
// Paper Shredder Machine
|
||||
//
|
||||
/obj/machinery/papershredder
|
||||
name = "paper shredder"
|
||||
desc = "For those documents you don't want seen."
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "papershredder0"
|
||||
icon = 'icons/obj/papershredder.dmi'
|
||||
icon_state = "shredder-off"
|
||||
var/shred_anim = "shredder-shredding"
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 200
|
||||
power_channel = EQUIP
|
||||
circuit = /obj/item/weapon/circuitboard/papershredder
|
||||
var/max_paper = 10
|
||||
var/paperamount = 0
|
||||
var/list/shred_amounts = list(
|
||||
@@ -16,17 +25,40 @@
|
||||
/obj/item/weapon/paper_bundle = 3,
|
||||
)
|
||||
|
||||
/obj/machinery/papershredder/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/stock_parts/motor(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/gear(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/gear(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
|
||||
RefreshParts()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/papershredder/attackby(var/obj/item/W, var/mob/user)
|
||||
|
||||
if(istype(W, /obj/item/weapon/storage))
|
||||
empty_bin(user, W)
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
anchored = !anchored
|
||||
user << "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>"
|
||||
return
|
||||
else if(default_part_replacement(user, W))
|
||||
return
|
||||
else if(default_deconstruction_screwdriver(user, W))
|
||||
return
|
||||
else if(default_deconstruction_crowbar(user, W))
|
||||
return
|
||||
else
|
||||
var/paper_result
|
||||
for(var/shred_type in shred_amounts)
|
||||
if(istype(W, shred_type))
|
||||
paper_result = shred_amounts[shred_type]
|
||||
if(paper_result)
|
||||
if(inoperable())
|
||||
return // Need powah!
|
||||
if(paperamount == max_paper)
|
||||
user << "<span class='warning'>\The [src] is full; please empty it before you continue.</span>"
|
||||
return
|
||||
@@ -34,6 +66,7 @@
|
||||
user.drop_from_inventory(W)
|
||||
qdel(W)
|
||||
playsound(src.loc, 'sound/items/pshred.ogg', 75, 1)
|
||||
flick(shred_anim, src)
|
||||
if(paperamount > max_paper)
|
||||
user <<"<span class='danger'>\The [src] was too full, and shredded paper goes everywhere!</span>"
|
||||
for(var/i=(paperamount-max_paper);i>0;i--)
|
||||
@@ -92,8 +125,40 @@
|
||||
paperamount--
|
||||
return PoolOrNew(/obj/item/weapon/shreddedp, get_turf(src))
|
||||
|
||||
/obj/machinery/papershredder/power_change()
|
||||
..()
|
||||
spawn(rand(0,15))
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/papershredder/update_icon()
|
||||
icon_state = "papershredder[max(0,min(5,Floor(paperamount/2)))]"
|
||||
overlays.Cut()
|
||||
if(operable())
|
||||
icon_state = "shredder-on"
|
||||
else
|
||||
icon_state = "shredder-off"
|
||||
// Fullness overlay
|
||||
overlays += "shredder-[max(0,min(5,Floor(paperamount/max_paper*5)))]"
|
||||
if (panel_open)
|
||||
overlays += "panel_open"
|
||||
|
||||
//
|
||||
// Shredded Paper Item
|
||||
//
|
||||
|
||||
/obj/item/weapon/shreddedp
|
||||
name = "shredded paper"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "shredp"
|
||||
throwforce = 0
|
||||
w_class = ITEMSIZE_TINY
|
||||
throw_range = 3
|
||||
throw_speed = 1
|
||||
|
||||
/obj/item/weapon/shreddedp/New()
|
||||
..()
|
||||
pixel_x = rand(-5,5)
|
||||
pixel_y = rand(-5,5)
|
||||
if(prob(65)) color = pick("#BABABA","#7F7F7F")
|
||||
|
||||
/obj/item/weapon/shreddedp/attackby(var/obj/item/W as obj, var/mob/user)
|
||||
if(istype(W, /obj/item/weapon/flame/lighter))
|
||||
@@ -122,18 +187,3 @@
|
||||
M.drop_from_inventory(src)
|
||||
PoolOrNew(/obj/effect/decal/cleanable/ash,get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/shreddedp
|
||||
name = "shredded paper"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "shredp"
|
||||
throwforce = 0
|
||||
w_class = ITEMSIZE_TINY
|
||||
throw_range = 3
|
||||
throw_speed = 1
|
||||
|
||||
/obj/item/weapon/shreddedp/New()
|
||||
..()
|
||||
pixel_x = rand(-5,5)
|
||||
pixel_y = rand(-5,5)
|
||||
if(prob(65)) color = pick("#BABABA","#7F7F7F")
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
@@ -212,6 +212,10 @@ h4 {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.multiLine {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.noticePlaceholder {
|
||||
position: relative;
|
||||
font-size: 12px;
|
||||
|
||||
@@ -75,7 +75,7 @@ code/modules/mob/living/silicon/pai/software_modules.dm
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="itemLabel">Important Notes</div>
|
||||
<div class="itemContent">{{:data.medical.notes}}</div>
|
||||
<div class="itemContent multiLine">{{:data.medical.notes}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ code/modules/mob/living/silicon/pai/software_modules.dm
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="itemLabel">Important Notes</div>
|
||||
<div class="itemContent">{{:data.security.notes}}</div>
|
||||
<div class="itemContent multiLine">{{:data.security.notes}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
||||
@@ -591,7 +591,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<span class="good">Details: </span> <span class="average">{{:data.records.medical.alg_d}} </span><br><br>
|
||||
<span class="good">Current Disease: </span> <span class="average">{{:data.records.medical.cdi}} </span><br>
|
||||
<span class="good">Details: </span> <span class="average">{{:data.records.medical.alg_d}} </span><br><br>
|
||||
<span class="good">Important Notes: </span> <span class="average">{{:data.records.medical.notes}} </span>
|
||||
<span class="good">Important Notes: </span> <span class="average multiLine">{{:data.records.medical.notes}} </span>
|
||||
{{else}}
|
||||
<span class="bad">
|
||||
Medical Record Lost!
|
||||
@@ -643,7 +643,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<span class="good">Details: </span><span class="average">{{:data.records.security.mi_crim_d}} </span><br><br>
|
||||
<span class="good">Major Crimes: </span><span class="average">{{:data.records.security.ma_crim}} </span><br>
|
||||
<span class="good">Details: </span><span class="average">{{:data.records.security.ma_crim_d}} </span><br><br>
|
||||
<span class="good">Important Notes: </span><span class="average">{{:data.records.security.notes}} </span>
|
||||
<span class="good">Important Notes: </span><span class="average multiLine">{{:data.records.security.notes}} </span>
|
||||
{{else}}
|
||||
<span class="bad">
|
||||
Security Record Lost!<br><br>
|
||||
|
||||
@@ -903,6 +903,7 @@
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\mech_recharger.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\papershredder.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\recharge_station.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\research.dm"
|
||||
|
||||
Reference in New Issue
Block a user