diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c499e3d2dcb..2e60daf63b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,6 +58,8 @@ jobs: tools/bootstrap/python -c '' - name: Run Grep Checks run: tools/ci/validate_files.sh + - name: Run Define Sanity Checks + run: tools/bootstrap/python -m define_sanity.check - name: Run TGUI Checks run: tools/build/build --ci lint tgui-test diff --git a/.gitignore b/.gitignore index d87340a7fa6..dae7acc0032 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,6 @@ tgui/public/tgui.bundle.css tgui/public/tgui.bundle.js #ignore tracy dll prof.dll + +# From /tools/define_sanity/check.py - potential output file that we load onto the user's machine that we don't want to have committed. +define_sanity_output.txt diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index b60f2436d14..ed1a5da51f0 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -313,6 +313,7 @@ /obj/machinery/atmospherics/unary/vent_pump/proc/set_frequency(new_frequency) radio_connection = register_radio(src, frequency, new_frequency, radio_filter_in) frequency = new_frequency + broadcast_status() /obj/machinery/atmospherics/unary/vent_pump/receive_signal(datum/signal/signal) if(stat & (NOPOWER|BROKEN)) diff --git a/code/__defines/_fruits.dm b/code/__defines/_fruits.dm index a217af7cf3a..827d64b4712 100644 --- a/code/__defines/_fruits.dm +++ b/code/__defines/_fruits.dm @@ -122,7 +122,7 @@ GLOBAL_LIST_INIT(acceptable_fruit_types, list( PLANT_PUMPKIN, PLANT_RICE, PLANT_ROSE, - PLANT_ROSE, + PLANT_RHUBARB, PLANT_SOYBEAN, PLANT_SPINEAPPLE, PLANT_SUGARCANE, diff --git a/code/__defines/_planes+layers.dm b/code/__defines/_planes+layers.dm index f8ee1c976ea..1bae171a3cf 100644 --- a/code/__defines/_planes+layers.dm +++ b/code/__defines/_planes+layers.dm @@ -105,6 +105,8 @@ What is the naming convention for planes or layers? // Invisible things plane #define CLOAKED_PLANE -15 +#define PLANE_CH_STOMACH -11 //Stomach Plane + // Top plane (in the sense that it's the highest in 'the world' and not a UI element) #define ABOVE_PLANE -10 @@ -160,6 +162,12 @@ What is the naming convention for planes or layers? #define PLANE_CH_SPECIAL 23 //Special role icon (revhead or w/e) #define PLANE_CH_STATUS_OOC 24 //OOC status hud for spooks +// "Character HUDs", aka HUDs, but not the game's UI. Things like medhuds. +#define PLANE_CH_HEALTH_VR 26 //Hidden healthbar when at full health +#define PLANE_CH_STATUS_R 27 //Right-side status icon +#define PLANE_CH_BACKUP 28 //Backup implant +#define PLANE_CH_VANTAG 29 //Vore Antag hud + #define PLANE_MESONS 30 //Stuff seen with mesons, like open ceilings. This is 30 for downstreams. #define PLANE_JANHUD 31 //Stuff seen with janiHUD. Mostly highlight of dirt. @@ -167,6 +175,9 @@ What is the naming convention for planes or layers? #define PLANE_BUILDMODE 39 //Things that only show up when you have buildmode on +#define PLANE_AUGMENTED 40 //Augmented-reality plane +#define PLANE_SOULCATCHER 41 //Soulcatcher + //Fullscreen overlays under inventory #define PLANE_FULLSCREEN 90 //Blindness, mesons, druggy, etc #define OBFUSCATION_LAYER 5 //Where images covering the view for eyes are put diff --git a/code/__defines/_planes+layers_vr.dm b/code/__defines/_planes+layers_vr.dm deleted file mode 100644 index a9266aa701d..00000000000 --- a/code/__defines/_planes+layers_vr.dm +++ /dev/null @@ -1,8 +0,0 @@ -// "Character HUDs", aka HUDs, but not the game's UI. Things like medhuds. -#define PLANE_CH_HEALTH_VR 26 //Hidden healthbar when at full health -#define PLANE_CH_STATUS_R 27 //Right-side status icon -#define PLANE_CH_BACKUP 28 //Backup implant -#define PLANE_CH_VANTAG 29 //Vore Antag hud -#define PLANE_CH_STOMACH -11 //Stomach Plane - -#define PLANE_AUGMENTED 40 //Augmented-reality plane diff --git a/code/__defines/belly_modes_vr.dm b/code/__defines/belly_modes_vr.dm index b0e7976dbd2..266d2f583af 100644 --- a/code/__defines/belly_modes_vr.dm +++ b/code/__defines/belly_modes_vr.dm @@ -43,3 +43,9 @@ #define DR_SLEEP "Sleep" #define DR_FAKE "False Sleep" #define DR_WEIGHT "Weight Drain" + +//Vore Sprite Flags +#define DM_FLAG_VORESPRITE_BELLY 0x1 +#define DM_FLAG_VORESPRITE_TAIL 0x2 +#define DM_FLAG_VORESPRITE_MARKING 0x4 +#define DM_FLAG_VORESPRITE_ARTICLE 0x8 diff --git a/code/__defines/dna.dm b/code/__defines/dna.dm index 10fe4d729be..b958466201e 100644 --- a/code/__defines/dna.dm +++ b/code/__defines/dna.dm @@ -154,3 +154,9 @@ var/SMALLSIZEBLOCK = 0 #define DNA2_BUF_UI 1 #define DNA2_BUF_UE 2 #define DNA2_BUF_SE 4 + +// Mutation flags +#define MUTCHK_FORCED 1 + +// Gene flags +#define GENE_ALWAYS_ACTIVATE 1 diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index c5f860ea7ab..efd90a01ff5 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -44,7 +44,11 @@ #define SPECIALROLE_HUD 8 // AntagHUD image. #define STATUS_HUD_OOC 9 // STATUS_HUD without virus DB check for someone being ill. #define LIFE_HUD 10 // STATUS_HUD that only reports dead or alive -#define TOTAL_HUDS 10 // Total number of HUDs. Like body layers, and other things, it comes up sometimes. +#define BACKUP_HUD 11 // HUD for showing whether or not they have a backup implant. +#define STATUS_R_HUD 12 // HUD for showing the same STATUS_HUD info on the right side, but not for 'boring' statuses (transparent icons) +#define HEALTH_VR_HUD 13 // HUD with blank 100% bar so it's hidden most of the time. +#define VANTAG_HUD 14 // HUD for showing being-an-antag-target prefs +#define TOTAL_HUDS 14 // Total number of HUDs. Like body layers, and other things, it comes up sometimes. #define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (isclient(I) ? I : null)) @@ -108,6 +112,7 @@ #define AREA_ALLOW_LARGE_SIZE 0x400 // If mob size is limited in the area. #define AREA_BLOCK_SUIT_SENSORS 0x800 // If suit sensors are blocked in the area. #define AREA_BLOCK_TRACKING 0x1000 // If camera tracking is blocked in the area. +#define AREA_BLOCK_GHOST_SIGHT 0x2000 // If an area blocks sight for ghosts // OnTopic return values #define TOPIC_NOACTION 0 @@ -483,3 +488,79 @@ GLOBAL_LIST_INIT(all_volume_channels, list( // Vote Types #define VOTE_RESULT_TYPE_MAJORITY "Majority" #define VOTE_RESULT_TYPE_SKEWED "Seventy" + +#define ECO_MODIFIER 10 + +#define VANTAG_NONE "hudblank" +#define VANTAG_VORE "vantag_vore" +#define VANTAG_KIDNAP "vantag_kidnap" +#define VANTAG_KILL "vantag_kill" + +// ColorMate states +#define COLORMATE_TINT 1 +#define COLORMATE_HSV 2 +#define COLORMATE_MATRIX 3 + +#define DEPARTMENT_OFFDUTY "Off-Duty" + +#define ANNOUNCER_NAME "Facility PA" + +//For custom species +#define STARTING_SPECIES_POINTS 2 +#define MAX_SPECIES_TRAITS 5 + +// Xenochimera thing mostly +#define REVIVING_NOW -1 +#define REVIVING_DONE 0 +#define REVIVING_READY 1 + +// Resleeving Mind Record Status +#define MR_NORMAL 0 +#define MR_UNSURE 1 +#define MR_DEAD 2 + +//Shuttle madness! +#define SHUTTLE_CRASHED 3 // Yup that can happen now + +//Herm Gender +#define HERM "herm" + +// Bluespace shelter deploy checks +#define SHELTER_DEPLOY_ALLOWED "allowed" +#define SHELTER_DEPLOY_BAD_TURFS "bad turfs" +#define SHELTER_DEPLOY_BAD_AREA "bad area" +#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects" +#define SHELTER_DEPLOY_SHIP_SPACE "ship not in space" + +#define PTO_SECURITY "Security" +#define PTO_MEDICAL "Medical" +#define PTO_ENGINEERING "Engineering" +#define PTO_SCIENCE "Science" +#define PTO_EXPLORATION "Exploration" +#define PTO_CARGO "Cargo" +#define PTO_CIVILIAN "Civilian" +#define PTO_CYBORG "Cyborg" +#define PTO_TALON "Talon Contractor" + +#define DEPARTMENT_TALON "ITV Talon" + +#define MAT_TITANIUMGLASS "ti-glass" +#define MAT_PLASTITANIUM "plastitanium" +#define MAT_PLASTITANIUMHULL "plastitanium hull" +#define MAT_PLASTITANIUMGLASS "plastitanium glass" +#define MAT_GOLDHULL "gold hull" + +#define RESIZE_MINIMUM 0.25 +#define RESIZE_MAXIMUM 2 +#define RESIZE_MINIMUM_DORMS 0.01 +#define RESIZE_MAXIMUM_DORMS 6 + +#define RESIZE_HUGE 2 +#define RESIZE_BIG 1.5 +#define RESIZE_NORMAL 1 +#define RESIZE_SMALL 0.5 +#define RESIZE_TINY 0.25 +#define RESIZE_A_HUGEBIG (RESIZE_HUGE + RESIZE_BIG) / 2 +#define RESIZE_A_BIGNORMAL (RESIZE_BIG + RESIZE_NORMAL) / 2 +#define RESIZE_A_NORMALSMALL (RESIZE_NORMAL + RESIZE_SMALL) / 2 +#define RESIZE_A_SMALLTINY (RESIZE_SMALL + RESIZE_TINY) / 2 diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm deleted file mode 100644 index ab083010b10..00000000000 --- a/code/__defines/misc_vr.dm +++ /dev/null @@ -1,84 +0,0 @@ -#define ECO_MODIFIER 10 - -// Because of omnihud having overlapping issues, we have extra ones. -#define BACKUP_HUD 11 // HUD for showing whether or not they have a backup implant. -#define STATUS_R_HUD 12 // HUD for showing the same STATUS_HUD info on the right side, but not for 'boring' statuses (transparent icons) -#define HEALTH_VR_HUD 13 // HUD with blank 100% bar so it's hidden most of the time. -#define VANTAG_HUD 14 // HUD for showing being-an-antag-target prefs - -#undef TOTAL_HUDS //Undo theirs. -#define TOTAL_HUDS 14 // Total number of HUDs. - -#define VANTAG_NONE "hudblank" -#define VANTAG_VORE "vantag_vore" -#define VANTAG_KIDNAP "vantag_kidnap" -#define VANTAG_KILL "vantag_kill" - -// ColorMate states -#define COLORMATE_TINT 1 -#define COLORMATE_HSV 2 -#define COLORMATE_MATRIX 3 - -#define DEPARTMENT_OFFDUTY "Off-Duty" - -#define ANNOUNCER_NAME "Facility PA" - -//For custom species -#define STARTING_SPECIES_POINTS 2 -#define MAX_SPECIES_TRAITS 5 - -// Xenochimera thing mostly -#define REVIVING_NOW -1 -#define REVIVING_DONE 0 -#define REVIVING_READY 1 - -// Resleeving Mind Record Status -#define MR_NORMAL 0 -#define MR_UNSURE 1 -#define MR_DEAD 2 - -//Shuttle madness! -#define SHUTTLE_CRASHED 3 // Yup that can happen now - -//Herm Gender -#define HERM "herm" - -// Bluespace shelter deploy checks -#define SHELTER_DEPLOY_ALLOWED "allowed" -#define SHELTER_DEPLOY_BAD_TURFS "bad turfs" -#define SHELTER_DEPLOY_BAD_AREA "bad area" -#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects" -#define SHELTER_DEPLOY_SHIP_SPACE "ship not in space" - -#define PTO_SECURITY "Security" -#define PTO_MEDICAL "Medical" -#define PTO_ENGINEERING "Engineering" -#define PTO_SCIENCE "Science" -#define PTO_EXPLORATION "Exploration" -#define PTO_CARGO "Cargo" -#define PTO_CIVILIAN "Civilian" -#define PTO_CYBORG "Cyborg" -#define PTO_TALON "Talon Contractor" - -#define DEPARTMENT_TALON "ITV Talon" - -#define MAT_TITANIUMGLASS "ti-glass" -#define MAT_PLASTITANIUM "plastitanium" -#define MAT_PLASTITANIUMHULL "plastitanium hull" -#define MAT_PLASTITANIUMGLASS "plastitanium glass" -#define MAT_GOLDHULL "gold hull" - -#define RESIZE_MINIMUM 0.25 -#define RESIZE_MAXIMUM 2 -#define RESIZE_MINIMUM_DORMS 0.01 -#define RESIZE_MAXIMUM_DORMS 6 - -#define RESIZE_HUGE 2 -#define RESIZE_BIG 1.5 -#define RESIZE_NORMAL 1 -#define RESIZE_SMALL 0.5 -#define RESIZE_TINY 0.25 -#define RESIZE_A_HUGEBIG (RESIZE_HUGE + RESIZE_BIG) / 2 -#define RESIZE_A_BIGNORMAL (RESIZE_BIG + RESIZE_NORMAL) / 2 -#define RESIZE_A_NORMALSMALL (RESIZE_NORMAL + RESIZE_SMALL) / 2 -#define RESIZE_A_SMALLTINY (RESIZE_SMALL + RESIZE_TINY) / 2 diff --git a/code/__defines/phobias.dm b/code/__defines/phobias.dm new file mode 100644 index 00000000000..0bf2fc1613b --- /dev/null +++ b/code/__defines/phobias.dm @@ -0,0 +1,9 @@ +//Handling and defining of phobias and fears +#define NYCTOPHOBIA 1 +#define ARACHNOPHOBIA 2 +#define HEMOPHOBIA 4 +#define THALASSOPHOBIA 8 +#define CLAUSTROPHOBIA_MINOR 16 +#define CLAUSTROPHOBIA_MAJOR 32 +#define ANATIDAEPHOBIA 64 +#define AGRAVIAPHOBIA 128 diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 80abfae6522..a687776f884 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -62,6 +62,7 @@ var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg) var/list/datum/visualnet/visual_nets = list() var/datum/visualnet/camera/cameranet = new() var/datum/visualnet/cult/cultnet = new() +var/datum/visualnet/ghost/ghostnet = new() // Runes var/global/list/rune_list = new() diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 065576f9355..05bfc9a4442 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -1565,6 +1565,7 @@ GLOBAL_REAL_VAR(list/stack_trace_storage) . += new /obj/screen/plane_master{plane = PLANE_MESONS} //Meson-specific things like open ceilings. . += new /obj/screen/plane_master{plane = PLANE_BUILDMODE} //Things that only show up while in build mode + . += new /obj/screen/plane_master{plane = PLANE_JANHUD} // Real tangible stuff planes . += new /obj/screen/plane_master/main{plane = TURF_PLANE} diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index f15e61ebe65..492884b12a4 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -73,12 +73,19 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) stage = min(stage + 1, max_stages) if(!discovered && stage >= CEILING(max_stages * discovery_threshold, 1)) discovered = TRUE - BITSET(affected_mob.hud_updateflag, STATUS_HUD) /datum/disease/proc/handle_cure_testing(has_cure = FALSE) if(has_cure && prob(cure_chance)) stage = max(stage -1, 1) + for(var/organ in required_organs) + if(locate(organ) in affected_mob.internal_organs) + continue + if(locate(organ) in affected_mob.organs) + continue + cure() + return FALSE + if(disease_flags & CURABLE) if(has_cure && prob(cure_chance)) cure() @@ -165,7 +172,6 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) /datum/disease/proc/remove_virus() affected_mob.viruses -= src - BITSET(affected_mob.hud_updateflag, STATUS_HUD) /datum/disease/proc/Start() return diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm index 039d9ad8db6..dc28c109a23 100644 --- a/code/datums/diseases/advance/symptoms/confusion.dm +++ b/code/datums/diseases/advance/symptoms/confusion.dm @@ -16,7 +16,6 @@ Bonus */ /datum/symptom/confusion - name = "Confusion" stealth = 1 resistance = -1 @@ -25,7 +24,6 @@ Bonus level = 4 severity = 2 - /datum/symptom/confusion/Activate(datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB)) diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm index 00a33e9ce64..cc932ab4cc9 100644 --- a/code/datums/diseases/advance/symptoms/cough.dm +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -10,8 +10,7 @@ Coughing Low Level. BONUS - Will force the affected mob to drop small items. - Small spread if not wearing a mask + Will force the affected mob to drop small items. Small spread if not wearing a mask. ////////////////////////////////////// */ diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index f2a299469b1..b47aa89a6c3 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -22,6 +22,7 @@ Bonus stage_speed = -4 transmittable = -2 level = 4 + severity = 0 /datum/symptom/damage_converter/Activate(datum/disease/advance/A) ..() diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm index fdedcba79c0..90bc8836b05 100644 --- a/code/datums/diseases/advance/symptoms/dizzy.dm +++ b/code/datums/diseases/advance/symptoms/dizzy.dm @@ -15,7 +15,6 @@ Bonus ////////////////////////////////////// */ -/// Not the egg /datum/symptom/dizzy name = "Dizziness" stealth = 2 diff --git a/code/datums/diseases/advance/symptoms/flip.dm b/code/datums/diseases/advance/symptoms/flip.dm index e210e4b3bfe..2c9164a5365 100644 --- a/code/datums/diseases/advance/symptoms/flip.dm +++ b/code/datums/diseases/advance/symptoms/flip.dm @@ -11,7 +11,6 @@ Flippinov BONUS Makes the host FLIP. - Should be used for buffing your disease. ////////////////////////////////////// */ @@ -23,7 +22,7 @@ BONUS stage_speed = 3 transmittable = 1 level = 1 - severity = 1 + severity = 0 /datum/symptom/spyndrome/Activate(datum/disease/advance/A) ..() diff --git a/code/datums/diseases/advance/symptoms/hair.dm b/code/datums/diseases/advance/symptoms/hair.dm index 1a6c2ff109c..2b2342ae08a 100644 --- a/code/datums/diseases/advance/symptoms/hair.dm +++ b/code/datums/diseases/advance/symptoms/hair.dm @@ -1,5 +1,6 @@ /* ////////////////////////////////////// + Alopecia Noticable. diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm index 431ed9b6703..de84b21fc11 100644 --- a/code/datums/diseases/advance/symptoms/headache.dm +++ b/code/datums/diseases/advance/symptoms/headache.dm @@ -10,8 +10,7 @@ Headache Low Level. BONUS - Displays an annoying message! - Should be used for buffing your disease. + Displays an annoying message. ////////////////////////////////////// */ diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 340b88d6b4c..0d77fc6f072 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -22,6 +22,7 @@ Bonus stage_speed = -4 transmittable = -4 level = 6 + severity = 0 /datum/symptom/heal/Activate(datum/disease/advance/A) ..() @@ -61,6 +62,7 @@ Bonus stage_speed = -1 transmittable = -4 level = 3 + severity = 0 var/list/cured_diseases = list() /datum/symptom/heal/metabolism/Heal(mob/living/M, datum/disease/advance/A) @@ -108,6 +110,7 @@ Bonus stage_speed = 4 transmittable = 4 level = 3 + severity = 0 var/longevity = 30 /datum/symptom/heal/longevity/Heal(mob/living/M, datum/disease/advance/A) @@ -142,6 +145,7 @@ Bonus stage_speed = 0 transmittable = -3 level = 5 + severity = 0 /datum/symptom/heal/dna/Heal(var/mob/living/carbon/M, var/datum/disease/advance/A) var/amt_healed = max(0, (sqrtor0(20+A.totalStageSpeed()*(3+rand())))-(sqrtor0(16+A.totalStealth()*rand()))) diff --git a/code/datums/diseases/advance/symptoms/hematophagy.dm b/code/datums/diseases/advance/symptoms/hematophagy.dm index 53e5aa842d4..086c0400a99 100644 --- a/code/datums/diseases/advance/symptoms/hematophagy.dm +++ b/code/datums/diseases/advance/symptoms/hematophagy.dm @@ -22,6 +22,7 @@ BONUS resistance = -4 transmittable = 1 level = 4 + severity = 1 /datum/symptom/hematophagy/Start(datum/disease/advance/A) if(ishuman(A.affected_mob)) diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index fdf2f5f5e4f..f9e67814439 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -10,8 +10,7 @@ Itching Low Level. BONUS - Displays an annoying message! - Should be used for buffing your disease. + Displays an annoying message. ////////////////////////////////////// */ diff --git a/code/datums/diseases/advance/symptoms/language.dm b/code/datums/diseases/advance/symptoms/language.dm index 3ffa7c06bb6..1f06e5c030c 100644 --- a/code/datums/diseases/advance/symptoms/language.dm +++ b/code/datums/diseases/advance/symptoms/language.dm @@ -10,7 +10,7 @@ Lingual Disocation Moderate Level. Bonus - Forces the affected mob to vomit + Randomly changes the language of the mob. ////////////////////////////////////// */ @@ -22,6 +22,7 @@ Bonus stage_speed = -2 transmittable = -1 level = 3 + severity = 1 /datum/symptom/language/Activate(var/datum/disease/advance/A) ..() diff --git a/code/datums/diseases/advance/symptoms/mlem.dm b/code/datums/diseases/advance/symptoms/mlem.dm index fdb8672c276..e48329be9cc 100644 --- a/code/datums/diseases/advance/symptoms/mlem.dm +++ b/code/datums/diseases/advance/symptoms/mlem.dm @@ -11,7 +11,6 @@ Mlemingtong BONUS Mlem. Mlem. Mlem. - Should be used for buffing your disease. ////////////////////////////////////// */ diff --git a/code/datums/diseases/advance/symptoms/oxygen.dm b/code/datums/diseases/advance/symptoms/oxygen.dm index 1e69116c941..a0e04987003 100644 --- a/code/datums/diseases/advance/symptoms/oxygen.dm +++ b/code/datums/diseases/advance/symptoms/oxygen.dm @@ -22,6 +22,7 @@ Bonus stage_speed = -3 transmittable = -4 level = 6 + severity = 0 /datum/symptom/oxygen/Activate(var/datum/disease/advance/A) ..() diff --git a/code/datums/diseases/advance/symptoms/pica.dm b/code/datums/diseases/advance/symptoms/pica.dm index ddd7e282d85..6f8221a74b4 100644 --- a/code/datums/diseases/advance/symptoms/pica.dm +++ b/code/datums/diseases/advance/symptoms/pica.dm @@ -22,7 +22,7 @@ BONUS stage_speed = 3 transmittable = 1 level = 1 - severity = 1 + severity = 0 /datum/symptom/pica/Start(datum/disease/advance/A) add_verb(A.affected_mob, /mob/living/proc/eat_trash) diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 529596945b8..d2f203bba1b 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -68,7 +68,7 @@ Bonus stage_speed = 0 transmittable = 1 level = 4 - severity = 1 + severity = 3 /datum/symptom/sneeze/bluespace/Activate(datum/disease/advance/A) ..() @@ -79,8 +79,9 @@ Bonus M.emote("sniff") else SneezeTeleport(A, M) - A.spread(A.stage) - if(prob(30)) + if(!M.wear_mask) + A.spread(A.stage) + if(prob(30) && !M.wear_mask) var/obj/effect/decal/cleanable/mucus/icky = new(get_turf(M)) icky.viruses |= A.Copy() diff --git a/code/datums/diseases/advance/symptoms/spin.dm b/code/datums/diseases/advance/symptoms/spin.dm index 055505dba95..0dc0d7d6bf8 100644 --- a/code/datums/diseases/advance/symptoms/spin.dm +++ b/code/datums/diseases/advance/symptoms/spin.dm @@ -11,7 +11,6 @@ Spyndrome BONUS Makes the host spin. - Should be used for buffing your disease. ////////////////////////////////////// */ @@ -23,7 +22,7 @@ BONUS stage_speed = 3 transmittable = 1 level = 1 - severity = 1 + severity = 0 /datum/symptom/spyndrome/Activate(var/datum/disease/advance/A) ..() diff --git a/code/datums/diseases/advance/symptoms/stimulant.dm b/code/datums/diseases/advance/symptoms/stimulant.dm index f1f4460266a..665fad2a6d4 100644 --- a/code/datums/diseases/advance/symptoms/stimulant.dm +++ b/code/datums/diseases/advance/symptoms/stimulant.dm @@ -1,7 +1,7 @@ /* ////////////////////////////////////// -Healing +Overactve Adrenal Gland No change to stealth. Slightly decreases resistance. @@ -10,7 +10,7 @@ Healing Moderate Level. Bonus - Heals toxins in the affected mob's blood stream. + The host produces hyperzine and gets very jittery ////////////////////////////////////// */ diff --git a/code/datums/diseases/advance/symptoms/telepathy.dm b/code/datums/diseases/advance/symptoms/telepathy.dm index 3e02ec94d83..dd3424b7c69 100644 --- a/code/datums/diseases/advance/symptoms/telepathy.dm +++ b/code/datums/diseases/advance/symptoms/telepathy.dm @@ -22,6 +22,7 @@ Bonus stage_speed = -3 transmittable = -4 level = 5 + severity = 0 /datum/symptom/telepathy/Start(datum/disease/advance/A) var/mob/living/carbon/human/H = A.affected_mob diff --git a/code/datums/diseases/advance/symptoms/viral.dm b/code/datums/diseases/advance/symptoms/viral.dm index 3da1de698ca..3c901f371de 100644 --- a/code/datums/diseases/advance/symptoms/viral.dm +++ b/code/datums/diseases/advance/symptoms/viral.dm @@ -20,6 +20,7 @@ BONUS stage_speed = -3 transmittable = 0 level = 3 + severity = 0 /datum/symptom/viraladaptation/Activate(datum/disease/advance/A) ..() @@ -53,6 +54,7 @@ BONUS stage_speed = 5 transmittable = 3 level = 3 + severity = 0 /datum/symptom/viralevolution/Activate(datum/disease/advance/A) ..() diff --git a/code/datums/diseases/roanoake.dm b/code/datums/diseases/roanoake.dm index 3d6176728e1..dac36d609f4 100644 --- a/code/datums/diseases/roanoake.dm +++ b/code/datums/diseases/roanoake.dm @@ -18,7 +18,7 @@ var/list/obj/item/organ/organ_list = list() var/obj/item/organ/O -/datum/disease/roanoake/Start +/datum/disease/roanoake/Start() var/mob/living/carbon/human/M = affected_mob organ_list += M.organs @@ -35,6 +35,7 @@ if(prob(1)) to_chat(M, span_warning(pick("You feel hot.", "You feel like you're burning."))) if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT) + fever(M) if(3) if(prob(1)) to_chat(M, span_notice("You shiver a bit.")) @@ -77,8 +78,10 @@ O.take_damage(rand(1, 3)) if(prob(1) && prob(10)) + O = pick(organ_list) + var/obj/item/organ/external/E = O.parent_organ var/datum/wound/W = new /datum/wound/internal_bleeding(5) - O.wounds += W + E.wounds += W if(M.stat == DEAD) M.species = /datum/species/xenochimera diff --git a/code/datums/locations/qerrvallis.dm b/code/datums/locations/qerrvallis.dm index 79efa37c9a2..a3cc2468ba0 100644 --- a/code/datums/locations/qerrvallis.dm +++ b/code/datums/locations/qerrvallis.dm @@ -26,32 +26,32 @@ ..(creator) /datum/locations/qarrkloa - name = "Qarrkloa" - desc = "Mythically considered the first State-City ever built by Skrellkind, Qarrkloa attracts thousands of tourists and archeologists \ + name = "Qarr'kloa" + desc = "Mythically considered the first State-City ever built by Skrellkind, Qarr'kloa attracts thousands of tourists and archeologists \ every year thanks to the ancestral structures, built thousands of years ago by the Skrell, scattered in its vicinity." /datum/locations/moglar - name = "Moglar" - desc = "Built on the northern coast of Qorrgloa, Moglar was, at the time of XiKrrioals colonization, a major port of trade between \ + name = "Mo'glar" + desc = "Built on the northern coast of Qorr'gloa, Mo'glar was, at the time of Xi'Krri'oal's colonization, a major port of trade between \ the two continents of the planet. It has kept that role to this day, although it never truly adapted to inter-planetary trade, leaving the \ - task of exporting Qerrbalaks goods to other planets to other cities, mainly on XiKrrioal." + task of exporting Qerrbalak's goods to other planets to other cities, mainly on Xi'Krri'oal." /datum/locations/miqoxi - name = "Miqoxi" - desc = "This city, built on the small patch of islands north of XiKrrioal, owes most of its current status to the infamous Qerr-Skria \ - Glomorr Krrixi who, in the 23th century BCE, built a large empire spanning from the Qorria Sea to the current city of Qalkrrea, mostly \ - through military conquests. As the center of his empire, Miqoxi became a large center of population and industry and while the fall of \ - the empire at Krrixis death did put a halt to the citys growth, it is still today one of the biggest cities of the continent." + name = "Mi'qoxi" + desc = "This city, built on the small patch of islands north of Xi'Krri'oal, owes most of its current status to the infamous Qerr-Skria \ + Glo'morr Krrixi who, in the 23th century BCE, built a large empire spanning from the Qo'rria Sea to the current city of Qal'krrea, mostly \ + through military conquests. As the center of his empire, Mi'qoxi became a large center of population and industry and while the fall of \ + the empire at Krrixi's death did put a halt to the city's growth, it is still today one of the biggest cities of the continent." /datum/locations/kallo - name = "Kallo" - desc = "A relatively recent city compared to the other major cities of the planet, Kallo quickly rose in status by fathering some of the most \ - important figures of modern skrellian society. It is notably the birthplace of Xikrra Kolgoa, who wrote the Loglomogrri in 46 BCE, \ + name = "Kal'lo" + desc = "A relatively recent city compared to the other major cities of the planet, Kal'lo quickly rose in status by fathering some of the most \ + important figures of modern skrellian society. It is notably the birthplace of Xikrra Kol'goa, who wrote the Lo'glo'mog'rri in 46 BCE, \ the constitutional code that is still used by most of the skrellian states in the galaxy." /datum/locations/glimorr - name = "Glimorr" - desc = "While Glimorr is not as heavily-populated than its continental counterparts, its touristic potential made it rich enough to finance \ + name = "Gli'morr" + desc = "While Gli'morr is not as heavily-populated than its continental counterparts, its touristic potential made it rich enough to finance \ the biggest research center of the planet, covering dozens of scientific fields. Its Academy is just as much renowned, and even the lowest \ Qrri-Mog (although most of its students prefer to continue their studies until they become Qerr-Mog) coming out of its classrooms is \ - considered part of the elite." \ No newline at end of file + considered part of the elite." diff --git a/code/datums/locations/vir.dm b/code/datums/locations/vir.dm index 377ecc9b031..3a407f1dc88 100644 --- a/code/datums/locations/vir.dm +++ b/code/datums/locations/vir.dm @@ -17,12 +17,12 @@ /datum/locations/firnir name = "Firnir" - desc = "Tidally locked to Vir and having temperatures in excess of 570 degrees kelvin (299C) on the day side has caused this planet to go mostly ignored." + desc = "Tidally locked to Vir and having temperatures in excess of 570 degrees kelvin (299°C) on the day side has caused this planet to go mostly ignored." /datum/locations/tyr name = "Tyr" desc = "Second closest planet, with a high concentration of minerals in the crust, but otherwise a typical planet. The surface temperature can reach \ - 405 degrees kelvin (132C), which deter most mining operations, except for one, which has a mining base and a few orbitals established, utilizing \ + 405 degrees kelvin (132°C), which deter most mining operations, except for one, which has a mining base and a few orbitals established, utilizing \ specialized equipment, chiefly being autonomous synthetic mining drones, to retrieve precious ore in a rather expensive, but safer way, compared to the \ pirate haven that is asteroid mining." @@ -30,16 +30,16 @@ name = "Sif" desc = "Falling within Vir's 'habitable zone', the third planet was the first to be colonized, initially by a large group of colonists owing \ loyalty to their own employers. Unfortunate events discussed previously had forced the settlement to be abandoned, and then reclaimed. \ - The planet's mean temperature is 286 kelvin (13C), chilly but habitable." + The planet's mean temperature is 286 kelvin (13°C), chilly but habitable." /datum/locations/magni name = "Magni" - desc = "Outside of the habitable zone, Vir D is generally at 202 kelvin (-71C)." + desc = "Outside of the habitable zone, Vir D is generally at 202 kelvin (-71°C)." /datum/locations/kara name = "Kara" desc = "A gas giant, with a large number of moons. Captured asteroids, to be specific. Many of these asteroids are being used by different companies for \ - various purposes. The temperature of the gas giant is 150 kelvin (-108C)" + various purposes. The temperature of the gas giant is 150 kelvin (-108°C)" /datum/locations/kara/New(var/creator) contents.Add( @@ -65,4 +65,4 @@ /datum/locations/rota name = "Rota" - desc = "A Neptune-like ice giant, with a beautiful ring system circling it. It is 165 kelvin (-157C)." \ No newline at end of file + desc = "A Neptune-like ice giant, with a beautiful ring system circling it. It is 165 kelvin (-157°C)." diff --git a/code/datums/supplypacks/atmospherics.dm b/code/datums/supplypacks/atmospherics.dm index 883fec6fe47..931fe6062b4 100644 --- a/code/datums/supplypacks/atmospherics.dm +++ b/code/datums/supplypacks/atmospherics.dm @@ -9,6 +9,7 @@ /datum/supply_pack/atmos/inflatable name = "Inflatable barriers" + desc = "Three cases of self-inflating barriers." contains = list(/obj/item/storage/briefcase/inflatable = 3) cost = 20 containertype = /obj/structure/closet/crate/aether @@ -16,42 +17,50 @@ /datum/supply_pack/atmos/canister_empty name = "Empty gas canister" + desc = "An empty gas canister." cost = 7 contains = list(/obj/machinery/portable_atmospherics/canister) /datum/supply_pack/atmos/canister_air name = "Air canister" + desc = "A large canister full of standard oxy/nitro air mix." cost = 10 contains = list(/obj/machinery/portable_atmospherics/canister/air) /datum/supply_pack/atmos/canister_oxygen name = "Oxygen canister" + desc = "A large canister full of pure oxygen gas. Warning: flammable!" cost = 15 contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) /datum/supply_pack/atmos/canister_nitrogen name = "Nitrogen canister" + desc = "A large canister full of pure nitrogen gas." cost = 10 contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) /datum/supply_pack/atmos/canister_phoron name = "Phoron gas canister" + desc = "A large canister full of pure phoron gas. Warning: flammable!" cost = 60 contains = list(/obj/machinery/portable_atmospherics/canister/phoron) /datum/supply_pack/atmos/canister_nitrous_oxide name = "N2O gas canister" + desc = "A large canister full of pure nitrous oxide gas." cost = 15 contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide) /datum/supply_pack/atmos/canister_carbon_dioxide name = "Carbon dioxide gas canister" + desc = "A large canister full of pure carbon dioxide gas." cost = 15 contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) /datum/supply_pack/atmos/air_dispenser contains = list(/obj/machinery/pipedispenser/orderable) name = "Pipe Dispenser" + desc = "A portable atmospherics pipe dispensing/laying machine. Atmospherics Access required." cost = 25 containertype = /obj/structure/closet/crate/secure/large/aether containername = "Pipe Dispenser Crate" @@ -60,6 +69,7 @@ /datum/supply_pack/atmos/disposals_dispenser contains = list(/obj/machinery/pipedispenser/disposal/orderable) name = "Disposals Pipe Dispenser" + desc = "A portable disposals pipe dispensing/laying machine. Atmospherics Access required." cost = 25 containertype = /obj/structure/closet/crate/secure/large/aether containername = "Disposal Dispenser Crate" @@ -68,6 +78,7 @@ /datum/supply_pack/atmos/rapid_pipe_dispenser contains = list(/obj/item/pipe_dispenser) name = "Rapid Pipe Dispenser" + desc = "A handheld rapid pipe deploying machine. Atmospherics Access required." cost = 100 containertype = /obj/structure/closet/crate/secure/aether containername = "Rapid Pipe Dispenser Crate" @@ -75,6 +86,7 @@ /datum/supply_pack/atmos/internals name = "Internals crate" + desc = "A set of 3 gas masks and air tanks." contains = list( /obj/item/clothing/mask/gas = 3, /obj/item/tank/air = 3 @@ -85,6 +97,7 @@ /datum/supply_pack/atmos/evacuation name = "Emergency equipment" + desc = "Emergency evacuation supplies." contains = list( /obj/item/storage/toolbox/emergency = 2, /obj/item/clothing/suit/storage/hazardvest = 2, diff --git a/code/datums/supplypacks/contraband.dm b/code/datums/supplypacks/contraband.dm index 8bc4a190fae..890c569b53c 100644 --- a/code/datums/supplypacks/contraband.dm +++ b/code/datums/supplypacks/contraband.dm @@ -14,6 +14,7 @@ ) name = "Contraband crate" + desc = "REDACTED" cost = 25 containertype = /obj/structure/closet/crate containername = "Unlabeled crate" @@ -22,6 +23,7 @@ /datum/supply_pack/security/specialops name = "Special Ops supplies" + desc = "ERR: explosive contents detected" contains = list( /obj/item/storage/box/emps, /obj/item/grenade/smokebomb = 4, @@ -34,6 +36,7 @@ /datum/supply_pack/supply/moghes name = "Moghes imports" + desc = "Black market imports, straight from the Hegemony." contains = list( /obj/item/reagent_containers/food/drinks/bottle/redeemersbrew = 2, /obj/item/reagent_containers/food/snacks/unajerky = 4 @@ -44,18 +47,20 @@ contraband = 1 /datum/supply_pack/munitions/bolt_rifles_militia - name = "Weapon - Surplus militia rifles" - contains = list( - /obj/item/gun/projectile/shotgun/pump/rifle = 3, - /obj/item/ammo_magazine/clip/c762 = 6 - ) - cost = 50 - contraband = 1 - containertype = /obj/structure/closet/crate/hedberg - containername = "Ballistic weapons crate" + name = "Weapon - Surplus militia rifles" + desc = "Vintage ballistic rifles that fell off the back of a truck. A few centuries ago, that is." + contains = list( + /obj/item/gun/projectile/shotgun/pump/rifle = 3, + /obj/item/ammo_magazine/clip/c762 = 6 + ) + cost = 50 + contraband = 1 + containertype = /obj/structure/closet/crate/hedberg + containername = "Ballistic weapons crate" /datum/supply_pack/randomised/misc/telecrate //you get something awesome, a couple of decent things, and a few weak/filler things name = "ERR_NULL_ENTRY" //null crate! also dream maker is hell, + desc = "NO DATA FOUND" num_contained = 1 contains = list( list( //the operator, @@ -116,6 +121,7 @@ /datum/supply_pack/supply/stolen name = "Stolen supply crate" + desc = "ERR: NO DATA!" contains = list(/obj/item/stolenpackage = 1) cost = 150 containertype = /obj/structure/closet/crate @@ -124,6 +130,7 @@ /datum/supply_pack/supply/wolfgirl name = "Wolfgirl Crate" + desc = "Half wolf, half girl, no brains." cost = 200 //I mean, it's a whole wolfgirl containertype = /obj/structure/largecrate/animal/wolfgirl containername = "Wolfgirl crate" @@ -131,6 +138,7 @@ /datum/supply_pack/supply/catgirl name = "Catgirl Crate" + desc = "Half cat, half girl, no brains." cost = 200 //I mean, it's a whole catgirl containertype = /obj/structure/largecrate/animal/catgirl containername = "Catgirl crate" @@ -144,6 +152,7 @@ /obj/item/pizzavoucher ) name = "FANTASTIC PIZZA PIE VOUCHER CRATE!" + desc = "WE ALWAYS DELIVER!" cost = 60 containertype = /obj/structure/closet/crate containername = "WE ALWAYS DELIVER!" diff --git a/code/datums/supplypacks/costumes.dm b/code/datums/supplypacks/costumes.dm index 7e6ae4a9edd..9f0556e505b 100644 --- a/code/datums/supplypacks/costumes.dm +++ b/code/datums/supplypacks/costumes.dm @@ -12,6 +12,7 @@ /datum/supply_pack/costumes/wizard name = "Wizard costume" + desc = "A generic robe and wizard hat." contains = list( /obj/item/staff, /obj/item/clothing/suit/wizrobe/fake, @@ -47,6 +48,7 @@ /obj/item/clothing/head/collectable/petehat ) name = "Collectable hat crate!" + desc = "Collect them all for bragging rights." cost = 200 containertype = /obj/structure/closet/crate/nanothreads containername = "Collectable hats crate" @@ -83,6 +85,7 @@ /obj/item/clothing/under/kilt ) name = "Costumes crate" + desc = "Three choices from a random selection of assorted costumes." cost = 10 containertype = /obj/structure/closet/crate/nanothreads containername = "Actor Costumes" @@ -105,12 +108,14 @@ /obj/item/clothing/accessory/wcoat ) name = "Formalwear (Suits)" + desc = "Fancy formal clothing, for formal occasions." cost = 30 containertype = /obj/structure/closet/crate/gilthari containername = "Formal suit crate" /datum/supply_pack/costumes/witch name = "Witch costume" + desc = "Not to be mistaken for a wizard costume." containername = "Witch costume" containertype = /obj/structure/closet/crate/nanothreads cost = 20 @@ -123,6 +128,7 @@ /datum/supply_pack/randomised/costumes/costume_hats name = "Costume hats" + desc = "Three random hats from a modest selection." containername = "Actor hats crate" containertype = /obj/structure/closet/crate/nanothreads cost = 10 @@ -148,6 +154,7 @@ /datum/supply_pack/randomised/costumes/dresses name = "Formalwear (Dresses)" + desc = "Formal dresses for formal occasions." containername = "Formal dress crate" containertype = /obj/structure/closet/crate/gilthari cost = 15 @@ -168,6 +175,7 @@ /datum/supply_pack/costumes/xenowear_vr name = "Xenowear crate" + desc = "An assortment of non-human clothing." contains = list( /obj/item/clothing/shoes/footwraps, /obj/item/clothing/shoes/boots/jackboots/toeless, @@ -189,6 +197,7 @@ /datum/supply_pack/costumes/tesh_smocks_vr name = "Teshari smocks" + desc = "An assortment of teshari smocks." num_contained = 4 contains = list( /obj/item/clothing/under/teshari/smock, @@ -208,6 +217,7 @@ /datum/supply_pack/randomised/costumes/tesh_coats_vr name = "Teshari undercoats" + desc = "An assortment of teshari undercoats." num_contained = 4 contains = list( /obj/item/clothing/under/teshari/undercoat/standard/orange_grey, @@ -229,6 +239,7 @@ /datum/supply_pack/randomised/costumes/tesh_coats_b_vr name = "Teshari undercoats (black)" + desc = "Another assortment of teshari undercoats." num_contained = 4 contains = list( /obj/item/clothing/under/teshari/undercoat, @@ -250,6 +261,7 @@ /datum/supply_pack/randomised/costumes/tesh_cloaks_vr name = "Teshari cloaks" + desc = "An assortment of teshari cloaks." num_contained = 4 contains = list( /obj/item/clothing/suit/storage/teshari/cloak/standard/white, @@ -271,6 +283,7 @@ /datum/supply_pack/randomised/costumes/tesh_cloaks_b_vr name = "Teshari cloaks (black)" + desc = "Another assortment of teshari cloaks." num_contained = 4 contains = list( /obj/item/clothing/suit/storage/teshari/cloak, @@ -293,6 +306,7 @@ /datum/supply_pack/costumes/tesh_worksuits_vr name = "Teshari worksuits" + desc = "An assortment of teshari worksuits." num_contained = 4 contains = list( /obj/item/clothing/under/teshari/undercoat/standard/worksuit, @@ -312,6 +326,7 @@ /datum/supply_pack/randomised/costumes/tesh_beltcloaks_vr name = "Teshari cloaks (belted)" + desc = "An assortment of belted teshari cloaks." num_contained = 4 contains = list( /obj/item/clothing/suit/storage/teshari/beltcloak/standard/orange_grey, @@ -333,6 +348,7 @@ /datum/supply_pack/randomised/costumes/tesh_beltcloaks_b_vr name = "Teshari cloaks (belted, black)" + desc = "Another assortment of belted teshari cloaks." num_contained = 4 contains = list( /obj/item/clothing/suit/storage/teshari/beltcloak, @@ -356,6 +372,7 @@ /datum/supply_pack/randomised/costumes/tesh_hoodcloaks_vr name = "Teshari cloaks (hooded)" + desc = "An assortment of teshari cloaks, with hoods." num_contained = 4 contains = list( /obj/item/clothing/suit/storage/hooded/teshari/standard/orange_grey, @@ -376,6 +393,7 @@ /datum/supply_pack/randomised/costumes/tesh_hoodcloaks_b_vr name = "Teshari cloaks (hooded, black)" + desc = "Another assortment of teshari cloaks, with hoods." num_contained = 4 contains = list( /obj/item/clothing/suit/storage/hooded/teshari, @@ -399,10 +417,13 @@ /datum/supply_pack/costumes/utility_vr name = "Utility uniforms" + desc = "A set of standard worksuits." contains = list( /obj/item/clothing/under/utility, /obj/item/clothing/under/utility/blue, - /obj/item/clothing/under/utility/grey + /obj/item/clothing/under/utility/grey, + /obj/item/clothing/under/utility/tan, + /obj/item/clothing/under/utility/green ) cost = 30 containertype = /obj/structure/closet/crate @@ -410,6 +431,7 @@ /datum/supply_pack/costumes/skirts_vr name = "Skirts crate" + desc = "A set of standard skirts." contains = list( /obj/item/clothing/under/skirt, /obj/item/clothing/under/skirt/blue, @@ -428,6 +450,7 @@ /datum/supply_pack/costumes/varsity_vr name = "Varsity jackets" + desc = "A set of varsity jackets." contains = list( /obj/item/clothing/suit/varsity, /obj/item/clothing/suit/varsity/blue, @@ -442,6 +465,7 @@ /datum/supply_pack/randomised/costumes/leathergear_vr name = "Leather gear" + desc = "An assortment of leather clothing. Not the naughty kind." num_contained = 5 contains = list( /obj/item/clothing/suit/leathercoat, @@ -475,6 +499,7 @@ /datum/supply_pack/costumes/eyewear_vr name = "Eyewear crate" + desc = "Assorted eyewear." contains = list( /obj/item/clothing/glasses/eyepatch, /obj/item/clothing/glasses/fakesunglasses, @@ -494,6 +519,7 @@ /datum/supply_pack/randomised/costumes/gloves_vr name = "Gloves crate" + desc = "A random assortment of gloves." num_contained = 4 contains = list( /obj/item/clothing/gloves/black, @@ -518,6 +544,7 @@ /datum/supply_pack/randomised/costumes/boots_vr name = "Boots crate" + desc = "A random assortment of boots." num_contained = 3 contains = list( /obj/item/clothing/shoes/boots/workboots, @@ -535,6 +562,7 @@ /datum/supply_pack/costumes/taurbags name = "Saddlebags crate" + desc = "A pack of saddlebags for tauric body types. Not for actual horses." contains = list( /obj/item/storage/backpack/saddlebag_common, /obj/item/storage/backpack/saddlebag_common/robust, @@ -546,6 +574,7 @@ /datum/supply_pack/costumes/knights_gear name = "Knights Gear" + desc = "Knightly costumes, for knightly individuals. No actual protective properties." contains = list( /obj/item/clothing/suit/storage/hooded/knight_costume, /obj/item/clothing/suit/storage/hooded/knight_costume/galahad, @@ -566,6 +595,7 @@ /datum/supply_pack/costumes/christmas name = "Christmas costume pack" + desc = "Ho ho ho!" contains = list( /obj/item/clothing/head/santa, /obj/item/clothing/head/santa/green, diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index f0a8e4d4b70..660ed4c58b0 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -9,6 +9,7 @@ /datum/supply_pack/eng/lightbulbs name = "Replacement lights" + desc = "Three boxes of replacement light tubes and bulbs." contains = list(/obj/item/storage/box/lights/mixed = 3) cost = 10 containertype = /obj/structure/closet/crate/galaksi @@ -16,6 +17,7 @@ /datum/supply_pack/eng/smescoil name = "Superconducting Magnetic Coil" + desc = "A single standard superconducting magnetic coil." contains = list(/obj/item/smes_coil) cost = 75 containertype = /obj/structure/closet/crate/focalpoint @@ -23,6 +25,7 @@ /datum/supply_pack/eng/smescoil/super_capacity name = "Superconducting Capacitance Coil" + desc = "A single high-capacity superconducting magnetic coil." contains = list(/obj/item/smes_coil/super_capacity) cost = 90 containertype = /obj/structure/closet/crate/focalpoint @@ -30,6 +33,7 @@ /datum/supply_pack/eng/smescoil/super_io name = "Superconducting Transmission Coil" + desc = "A single high-transmission superconducting magnetic coil." contains = list(/obj/item/smes_coil/super_io) cost = 90 containertype = /obj/structure/closet/crate/focalpoint @@ -37,6 +41,7 @@ /datum/supply_pack/eng/shield_capacitor name = "Shield Capacitor" + desc = "A standard shield capacitor block." contains = list(/obj/machinery/shield_capacitor) cost = 20 containertype = /obj/structure/closet/crate/focalpoint @@ -44,6 +49,7 @@ /datum/supply_pack/eng/shield_capacitor/advanced name = "Advanced Shield Capacitor" + desc = "An advanced shield capacitor block." contains = list(/obj/machinery/shield_capacitor/advanced) cost = 30 containertype = /obj/structure/closet/crate/focalpoint @@ -51,6 +57,7 @@ /datum/supply_pack/eng/bubble_shield name = "Bubble Shield Generator" + desc = "A standard bubble shield generator." contains = list(/obj/machinery/shield_gen) cost = 40 containertype =/obj/structure/closet/crate/focalpoint @@ -58,6 +65,7 @@ /datum/supply_pack/eng/bubble_shield/advanced name = "Advanced Bubble Shield Generator" + desc = "An advanced bubble shield generator." contains = list(/obj/machinery/shield_gen/advanced) cost = 60 containertype = /obj/structure/closet/crate/focalpoint @@ -65,6 +73,7 @@ /datum/supply_pack/eng/hull_shield name = "Hull Shield Generator" + desc = "A standard hull shield generator." contains = list(/obj/machinery/shield_gen/external) cost = 80 containertype = /obj/structure/closet/crate/focalpoint @@ -72,6 +81,7 @@ /datum/supply_pack/eng/hull_shield/advanced name = "Advanced Hull Shield Generator" + desc = "An advanced hull shield generator." contains = list(/obj/machinery/shield_gen/external/advanced) cost = 120 containertype = /obj/structure/closet/crate/focalpoint @@ -79,6 +89,7 @@ /datum/supply_pack/eng/point_defense_cannon_circuit name = "Point Defense Turret Circuit" + desc = "A pair of point defense turret control circuits." contains = list(/obj/item/circuitboard/pointdefense = 2) cost = 20 containertype = /obj/structure/closet/crate/heph @@ -86,6 +97,7 @@ /datum/supply_pack/eng/point_defense_control_circuit name = "Point Defense Controller Circuit" + desc = "A point defense mainframe master control circuit." contains = list(/obj/item/circuitboard/pointdefense_control = 1) cost = 30 containertype = /obj/structure/closet/crate/heph @@ -93,6 +105,7 @@ /datum/supply_pack/eng/electrical name = "Electrical maintenance crate" + desc = "A pack of equipment and supplies for carrying out electrical maintenance." contains = list( /obj/item/storage/toolbox/electrical = 2, /obj/item/clothing/gloves/yellow = 2, @@ -105,6 +118,7 @@ /datum/supply_pack/eng/e_welders name = "Electric welder crate" + desc = "A set of three electric-powered welders." contains = list( /obj/item/weldingtool/electric = 3 ) @@ -114,6 +128,7 @@ /datum/supply_pack/eng/mechanical name = "Mechanical maintenance crate" + desc = "A pack of equipment and supplies for carrying out mechanical maintenance." contains = list( /obj/item/storage/belt/utility/full = 3, /obj/item/clothing/suit/storage/hazardvest = 3, @@ -126,6 +141,7 @@ /datum/supply_pack/eng/fueltank name = "Fuel tank crate" + desc = "Contains a fuel tank dispenser." contains = list(/obj/structure/reagent_dispensers/fueltank) cost = 10 containertype = /obj/structure/closet/crate/large/nanotrasen @@ -133,6 +149,7 @@ /datum/supply_pack/eng/solar name = "Solar Pack crate" + desc = "Contains basic supplies for setting up a small solar power array (panels, tracker, and controller, no SMES)." contains = list( /obj/item/solar_assembly = 21, /obj/item/circuitboard/solar_control, @@ -145,6 +162,7 @@ /datum/supply_pack/eng/engine name = "Emitter crate" + desc = "Two emitters. Requires Chief Engineer access." contains = list(/obj/machinery/power/emitter = 2) cost = 10 containertype = /obj/structure/closet/crate/secure/einstein @@ -153,6 +171,7 @@ /datum/supply_pack/eng/engine/field_gen name = "Field Generator crate" + desc = "Two containment field generators. Requires Chief Engineer access." contains = list(/obj/machinery/field_generator = 2) containertype = /obj/structure/closet/crate/secure/xion containername = "Field Generator crate" @@ -160,6 +179,7 @@ /datum/supply_pack/eng/engine/sing_gen name = "Singularity Generator crate" + desc = "Singularity core generator. Requires Chief Engineer access." contains = list(/obj/machinery/the_singularitygen) containertype = /obj/structure/closet/crate/secure/einstein containername = "Singularity Generator crate" @@ -167,6 +187,7 @@ /datum/supply_pack/eng/engine/tesla_gen name = "Tesla Generator crate" + desc = "Tesla core generator. Requires Chief Engineer access." contains = list(/obj/machinery/the_singularitygen/tesla) containertype = /obj/structure/closet/crate/secure/einstein containername = "Tesla Generator crate" @@ -174,12 +195,14 @@ /datum/supply_pack/eng/engine/collector name = "Collector crate" + desc = "Three radiation collectors, for use with a singularity or supermatter core." contains = list(/obj/machinery/power/rad_collector = 3) containertype = /obj/structure/closet/crate/secure/einstein containername = "Collector crate" /datum/supply_pack/eng/engine/PA name = "Particle Accelerator crate" + desc = "All the parts needed to set up a particle accelerator. Requires Chief Engineer access." cost = 40 contains = list( /obj/structure/particle_accelerator/fuel_chamber, @@ -197,6 +220,7 @@ /datum/supply_pack/eng/shield_gen contains = list(/obj/item/circuitboard/shield_gen) name = "Bubble shield generator circuitry" + desc = "A bubble shield generator circuitboard. Requires Chief Engineer access." cost = 30 containertype = /obj/structure/closet/crate/secure/focalpoint containername = "bubble shield generator circuitry crate" @@ -205,6 +229,7 @@ /datum/supply_pack/eng/shield_gen_ex contains = list(/obj/item/circuitboard/shield_gen_ex) name = "Hull shield generator circuitry" + desc = "A hull shield generator circuitboard. Requires Chief Engineer access." cost = 30 containertype = /obj/structure/closet/crate/secure/focalpoint containername = "hull shield generator circuitry crate" @@ -213,6 +238,7 @@ /datum/supply_pack/eng/shield_cap contains = list(/obj/item/circuitboard/shield_cap) name = "Bubble shield capacitor circuitry" + desc = "A bubble shield capacitor circuitboard. Requires Chief Engineer access." cost = 30 containertype = /obj/structure/closet/crate/secure/focalpoint containername = "shield capacitor circuitry crate" @@ -220,6 +246,7 @@ /datum/supply_pack/eng/smbig name = "Supermatter Core" + desc = "A transport-safe supermatter crystal. EXTREMELY HAZARDOUS. Requires Chief Engineer access." contains = list(/obj/machinery/power/supermatter) cost = 150 containertype = /obj/structure/closet/crate/secure/phoron @@ -229,6 +256,7 @@ /datum/supply_pack/eng/teg contains = list(/obj/machinery/power/generator) name = "Mark I Thermoelectric Generator" + desc = "A basic thermoelectric generator." cost = 40 containertype = /obj/structure/closet/crate/secure/large/einstein containername = "Mk1 TEG crate" @@ -237,6 +265,7 @@ /datum/supply_pack/eng/circulator contains = list(/obj/machinery/atmospherics/binary/circulator) name = "Binary atmospheric circulator" + desc = "Heavy atmospherics machinery." cost = 20 containertype = /obj/structure/closet/crate/secure/large/einstein containername = "Atmospheric circulator crate" @@ -248,6 +277,7 @@ /obj/item/clothing/head/radiation = 3 ) name = "Radiation suits package (Humanoid)" + desc = "Three radiation suits (with hoods) fit for most humanoids." cost = 20 containertype = /obj/structure/closet/radiation containername = "Radiation suit locker" @@ -258,12 +288,14 @@ /obj/item/clothing/head/radiation/teshari = 3 ) name = "Radiation suits package (Teshari)" + desc = "Three radiation suits (with hoods) fit for teshari." cost = 40 containertype = /obj/structure/closet/crate/aether containername = "Teshari radiation suit locker" /datum/supply_pack/eng/pacman_parts name = "P.A.C.M.A.N. portable generator parts" + desc = "Supplies for assembling a basic phoron-fuelled PACMAN generator." cost = 25 containername = "P.A.C.M.A.N. Portable Generator Construction Kit" containertype = /obj/structure/closet/crate/secure/focalpoint @@ -277,6 +309,7 @@ /datum/supply_pack/eng/super_pacman_parts name = "Super P.A.C.M.A.N. portable generator parts" + desc = "Supplies for assembling a uranium-fuelled Super PACMAN generator." cost = 35 containername = "Super P.A.C.M.A.N. portable generator construction kit" containertype = /obj/structure/closet/crate/secure/focalpoint @@ -290,6 +323,7 @@ /datum/supply_pack/eng/fusion_core name = "R-UST Mk. 8 Tokamak fusion core crate" + desc = "Supplies for assembling a R-UST Tokamak fusion core. Requires Engine access." cost = 50 containername = "R-UST Mk. 8 Tokamak Fusion Core crate" containertype = /obj/structure/closet/crate/secure/einstein @@ -302,6 +336,7 @@ /datum/supply_pack/eng/fusion_fuel_injector name = "R-UST Mk. 8 fuel injector crate" + desc = "Supplies for assembling a R-UST Tokamak fusion core's fuel injector. Requires Engine access." cost = 30 containername = "R-UST Mk. 8 fuel injector crate" containertype = /obj/structure/closet/crate/secure/einstein @@ -314,6 +349,7 @@ /datum/supply_pack/eng/gyrotron name = "Gyrotron crate" + desc = "Supplies for assembling a gyrotron." cost = 15 containername = "Gyrotron Crate" containertype = /obj/structure/closet/crate/secure/einstein @@ -325,6 +361,7 @@ /datum/supply_pack/eng/fusion_fuel_compressor name = "Fusion Fuel Compressor circuitry crate" + desc = "A circuitboard for assembling a fusion fuel compressor." cost = 10 containername = "Fusion Fuel Compressor circuitry crate" containertype = /obj/structure/closet/crate/einstein @@ -332,6 +369,7 @@ /datum/supply_pack/eng/deuterium name = "Deuterium crate" + desc = "A stack of 50 deuterium ingots." cost = 50 containername = "Deuterium crate" containertype = /obj/structure/closet/crate/einstein @@ -339,6 +377,7 @@ /datum/supply_pack/eng/tritium name = "Tritium crate" + desc = "A stack of 50 tritium ingots." cost = 75 containername = "Tritium crate" containertype = /obj/structure/closet/crate/einstein @@ -346,6 +385,7 @@ /datum/supply_pack/eng/modern_shield name = "Modern Shield Construction Kit" + desc = "A set of supplies for constructing a shield generator." contains = list( /obj/item/circuitboard/shield_generator, /obj/item/stock_parts/capacitor, @@ -361,20 +401,16 @@ /datum/supply_pack/eng/thermoregulator contains = list(/obj/machinery/power/thermoregulator) name = "Thermal Regulator" + desc = "A thermal regulator, ready for deployment. Atmospherics access required." cost = 30 containertype = /obj/structure/closet/crate/large containername = "thermal regulator crate" access = access_atmospherics -/datum/supply_pack/eng/radsuit - contains = list( - /obj/item/clothing/suit/radiation = 3, - /obj/item/clothing/head/radiation = 3 - ) - /datum/supply_pack/eng/dosimeter contains = list(/obj/item/storage/box/dosimeter = 6) name = "Dosimeters" + desc = "A set of six dosimeters, for basic radiation detection/safety purposes." cost = 10 containertype = /obj/structure/closet/crate containername = "dosimeter crate" @@ -382,20 +418,15 @@ /datum/supply_pack/eng/algae contains = list(/obj/item/stack/material/algae/ten) name = "Algae Sheets (10)" + desc = "Ten sheets of algae, for carbon dioxide recycling." cost = 20 containertype = /obj/structure/closet/crate containername = "algae sheets crate" -/datum/supply_pack/eng/engine/tesla_gen - name = "Tesla Generator crate" - contains = list(/obj/machinery/the_singularitygen/tesla) - containertype = /obj/structure/closet/crate/secure/engineering - containername = "Tesla Generator crate" - access = access_ce - /datum/supply_pack/eng/inducer contains = list(/obj/item/inducer = 3) name = "inducer" + desc = "A trio of inducers, used for remotely recharging powered devices. Requires Engine access." cost = 90 //Relatively expensive containertype = /obj/structure/closet/crate/xion containername = "Inducers crate" diff --git a/code/datums/supplypacks/hardsuits.dm b/code/datums/supplypacks/hardsuits.dm index ae483129311..4da653ef5fc 100644 --- a/code/datums/supplypacks/hardsuits.dm +++ b/code/datums/supplypacks/hardsuits.dm @@ -8,7 +8,8 @@ group = "Hardsuits" /datum/supply_pack/hardsuits/eva_rig - name = "eva hardsuit (empty)" + name = "EVA hardsuit (empty)" + desc = "An EVA hardsuit with no components. Requires Mining, EVA, or Pilot's access." contains = list( /obj/item/rig/eva = 1 ) @@ -22,6 +23,7 @@ /datum/supply_pack/hardsuits/mining_rig name = "industrial hardsuit (empty)" + desc = "A standard mining hardsuit with no components. Requires Mining or EVA access." contains = list( /obj/item/rig/industrial = 1 ) @@ -34,6 +36,7 @@ /datum/supply_pack/hardsuits/medical_rig name = "medical hardsuit (empty)" + desc = "A medical hardsuit with no components. Requires Medical access." contains = list( /obj/item/rig/medical = 1 ) @@ -44,6 +47,7 @@ /datum/supply_pack/hardsuits/security_rig name = "hazard hardsuit (empty)" + desc = "A hazardous environment combat hardsuit with no components. Requires Armory access." contains = list( /obj/item/rig/hazard = 1 ) @@ -54,6 +58,7 @@ /datum/supply_pack/hardsuits/science_rig name = "ami hardsuit (empty)" + desc = "An advanced Materials hardsuit, with no components. Requires Research Director authorization." contains = list( /obj/item/rig/hazmat = 1 ) @@ -64,6 +69,7 @@ /datum/supply_pack/hardsuits/ce_rig name = "advanced hardsuit (empty)" + desc = "An advanced Engineering hardsuit, with no components. Requires Chief Engineer authorization." contains = list( /obj/item/rig/ce = 1 ) @@ -74,6 +80,7 @@ /datum/supply_pack/hardsuits/com_medical_rig name = "commonwealth medical hardsuit (loaded)" + desc = "A fully-equipped Commonwealth of Sol-Procyon Medical hardsuit. Requires Medical access." contains = list( /obj/item/rig/baymed/equipped = 1 ) @@ -84,6 +91,7 @@ /datum/supply_pack/hardsuits/com_engineering_rig name = "commonwealth engineering hardsuit (loaded)" + desc = "A fully-equipped Commonwealth of Sol-Procyon Engineering hardsuit. Requires Engineering access." contains = list( /obj/item/rig/bayeng/equipped = 1 ) @@ -94,6 +102,7 @@ /datum/supply_pack/hardsuits/breacher_rig name = "unathi breacher hardsuit (empty)" + desc = "A Hegemony \'Breacher\' combat hardsuit. Requires Armory access, and can only be worn by unathi." contains = list( /obj/item/rig/breacher = 1 ) @@ -104,6 +113,7 @@ /datum/supply_pack/hardsuits/zero_rig name = "null hardsuit (jets)" + desc = "A low-profile hardsuit with pre-installed maneuvering jets." contains = list( /obj/item/rig/zero = 1 ) diff --git a/code/datums/supplypacks/hospitality.dm b/code/datums/supplypacks/hospitality.dm index 8ee18ac817b..15c260f505a 100644 --- a/code/datums/supplypacks/hospitality.dm +++ b/code/datums/supplypacks/hospitality.dm @@ -9,6 +9,7 @@ /datum/supply_pack/hospitality/party name = "Party equipment" + desc = "Miscellaneous alcohol, glasses, and smokes, for partying!" contains = list( /obj/item/storage/box/mixedglasses = 2, /obj/item/storage/box/glasses/square, @@ -29,6 +30,7 @@ /datum/supply_pack/hospitality/barsupplies name = "Bar supplies" + desc = "Spare glasses and extras, for bartending. No booze." contains = list( /obj/item/storage/box/glasses/cocktail, /obj/item/storage/box/glasses/rocks, @@ -50,6 +52,7 @@ /datum/supply_pack/hospitality/cookingoil name = "Cooking oil tank crate" + desc = "A tank of cooking oil." contains = list(/obj/structure/reagent_dispensers/cookingoil) cost = 10 containertype = /obj/structure/largecrate @@ -57,6 +60,7 @@ /datum/supply_pack/hospitality/pizza name = "Surprise pack of five pizzas" + desc = "Five random pizzas, a plastic knife, and a pizza delivery outfit." contains = list( /obj/random/pizzabox/supplypack = 5, /obj/item/material/knife/plastic, @@ -69,6 +73,7 @@ /datum/supply_pack/hospitality/gifts name = "Gift crate" + desc = "A selection of gifts from AlliCo." contains = list( /obj/item/toy/bouquet = 3, /obj/item/storage/fancy/heartbox = 2, @@ -83,6 +88,7 @@ /datum/supply_pack/hospitality/painting name = "Painting equipment" + desc = "Miscellaneous items for painting and artistry." contains = list( /obj/item/paint_brush = 2, /obj/item/paint_palette = 2, @@ -100,6 +106,7 @@ /datum/supply_pack/hospitality/holywater name = "Holy water crate" + desc = "Three flasks of genuine Holy water, guaranteed to have been blessed by at least one ordained priest." contains = list( /obj/item/reagent_containers/food/drinks/bottle/holywater = 3 ) @@ -112,6 +119,7 @@ /datum/supply_pack/randomised/hospitality/burgers_vr num_contained = 5 + desc = "A random selection of burgers and/or fries." contains = list( /obj/item/reagent_containers/food/snacks/bigbiteburger, /obj/item/reagent_containers/food/snacks/cheeseburger, @@ -188,6 +196,7 @@ /obj/item/reagent_containers/food/snacks/hotandsoursoup ) name = "Chinese takeout crate" + desc = "Classic chinese-style takeout, a Terran staple throughout much of the 21st century." cost = 50 containertype = /obj/structure/closet/crate/freezer containername = "Chinese takeout crate" @@ -206,6 +215,7 @@ /obj/item/storage/box/jaffacake ) name = "Desatti jaffa cake crate" + desc = "More jaffa cakes than you know what to do with." cost = 25 containertype = /obj/structure/closet/crate/freezer containername = "Desatti jaffa cake crate" @@ -220,6 +230,7 @@ /obj/item/storage/box/rhubarbcustard ) name = "Sweets crate" + desc = "A random selection of sweet treats from Desatti." cost = 25 containertype = /obj/structure/closet/crate/freezer containername = "Sweets crate" diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm index fad0054a36f..29ba9d13463 100644 --- a/code/datums/supplypacks/hydroponics.dm +++ b/code/datums/supplypacks/hydroponics.dm @@ -9,6 +9,7 @@ /datum/supply_pack/hydro/monkey name = "Monkey crate" + desc = "Monkey cubes! Instant monkey, just add water! DO NOT INGEST." contains = list (/obj/item/storage/box/monkeycubes) cost = 20 containertype = /obj/structure/closet/crate/freezer/nanotrasen @@ -16,6 +17,7 @@ /datum/supply_pack/hydro/farwa name = "Farwa crate" + desc = "Farwa cubes! Instant farwa, just add water! DO NOT INGEST." contains = list (/obj/item/storage/box/monkeycubes/farwacubes) cost = 20 containertype = /obj/structure/closet/crate/freezer @@ -23,6 +25,7 @@ /datum/supply_pack/hydro/neara name = "Neaera crate" + desc = "Neaera cubes! Instant nearea, just add water! DO NOT INGEST." contains = list (/obj/item/storage/box/monkeycubes/neaeracubes) cost = 20 containertype = /obj/structure/closet/crate/freezer @@ -30,6 +33,7 @@ /datum/supply_pack/hydro/stok name = "Stok crate" + desc = "Stok cubes! Instant stok, just add water! DO NOT INGEST. NOT SOUP STOCK." contains = list (/obj/item/storage/box/monkeycubes/stokcubes) cost = 20 containertype = /obj/structure/closet/crate/freezer @@ -37,6 +41,7 @@ /datum/supply_pack/hydro/lisa name = "Corgi Crate" + desc = "A corgi in a box." contains = list() cost = 50 containertype = /obj/structure/largecrate/animal/corgi @@ -44,6 +49,7 @@ /datum/supply_pack/hydro/cat name = "Cat Crate" + desc = "A cat in a box." contains = list() cost = 45 containertype = /obj/structure/largecrate/animal/cat @@ -51,6 +57,7 @@ /datum/supply_pack/hydro/catslug name = "Catslug Crate" + desc = "A catslug in a box. Legally distinct from a slugcat." contains = list() cost = 200 containertype = /obj/structure/largecrate/animal/catslug @@ -58,6 +65,7 @@ /datum/supply_pack/hydro/hydroponics name = "Hydroponics Supply Crate" + desc = "A set of standard hydroponics supplies. Requires Hydroponics access." contains = list( /obj/item/reagent_containers/spray/plantbgone = 4, /obj/item/reagent_containers/glass/bottle/ammonia = 2, @@ -76,6 +84,7 @@ /datum/supply_pack/hydro/cow name = "Cow crate" + desc = "A cow in a crate." cost = 25 containertype = /obj/structure/largecrate/animal/cow containername = "Cow crate" @@ -83,6 +92,7 @@ /datum/supply_pack/hydro/goat name = "Goat crate" + desc = "A goat in a crate. Useful for dealing with space vines." cost = 25 containertype = /obj/structure/largecrate/animal/goat containername = "Goat crate" @@ -90,6 +100,7 @@ /datum/supply_pack/hydro/chicken name = "Chicken crate" + desc = "A chicken in a crate." cost = 25 containertype = /obj/structure/largecrate/animal/chick containername = "Chicken crate" @@ -97,6 +108,7 @@ /datum/supply_pack/hydro/turkey name = "Turkey crate" + desc = "A turkey in a crate." cost = 25 containertype = /obj/structure/largecrate/animal/turkey containername = "Turkey crate" @@ -104,6 +116,7 @@ /datum/supply_pack/hydro/seeds name = "Seeds crate" + desc = "A wide selection of seed packets. Requires Hydroponics access." contains = list( /obj/item/seeds/chiliseed, /obj/item/seeds/berryseed, @@ -130,6 +143,7 @@ /datum/supply_pack/hydro/weedcontrol name = "Weed control crate" + desc = "Equipment for dealing with out-of-control weeds. Requires Hydroponics access." contains = list( /obj/item/material/knife/machete/hatchet = 2, /obj/item/reagent_containers/spray/plantbgone = 4, @@ -144,6 +158,7 @@ /datum/supply_pack/hydro/watertank name = "Water tank crate" + desc = "A water tank in a crate." contains = list(/obj/structure/reagent_dispensers/watertank) cost = 10 containertype = /obj/structure/closet/crate/large/aether @@ -151,6 +166,7 @@ /datum/supply_pack/hydro/bee_keeper name = "Beekeeping crate" + desc = "Supplies for keeping bees. Requires Hydroponics access." contains = list( /obj/item/beehive_assembly, /obj/item/bee_smoker, @@ -164,6 +180,7 @@ /datum/supply_pack/hydro/tray name = "Empty hydroponics trays" + desc = "Three empty hydroponics trays, ready for use." cost = 50 containertype = /obj/structure/closet/crate/aether containername = "Hydroponics tray crate" @@ -172,6 +189,7 @@ /datum/supply_pack/hydro/birds name = "Birds Crate" + desc = "A raging case of birds." cost = 200 //You're getting 22 birds. Of course it's going to be a lot! containertype = /obj/structure/largecrate/birds containername = "Bird crate" @@ -179,6 +197,7 @@ /datum/supply_pack/hydro/sobaka name = "Sobaka crate" + desc = "Sobaka cubes! Instant sobaka, just add water! DO NOT INGEST." contains = list (/obj/item/storage/box/monkeycubes/sobakacubes) cost = 20 containertype = /obj/structure/closet/crate/freezer @@ -186,6 +205,7 @@ /datum/supply_pack/hydro/saru name = "Saru crate" + desc = "Saru cubes! Instant saru, just add water! DO NOT INGEST." contains = list (/obj/item/storage/box/monkeycubes/sarucubes) cost = 20 containertype = /obj/structure/closet/crate/freezer @@ -193,6 +213,7 @@ /datum/supply_pack/hydro/sparra name = "Sparra crate" + desc = "Sparra cubes! Instant sparra, just add water! DO NOT INGEST." contains = list (/obj/item/storage/box/monkeycubes/sparracubes) cost = 20 containertype = /obj/structure/closet/crate/freezer @@ -200,6 +221,7 @@ /datum/supply_pack/hydro/wolpin name = "Wolpin crate" + desc = "Wolpin cubes! Instant wolpin, just add water! DO NOT INGEST." contains = list (/obj/item/storage/box/monkeycubes/wolpincubes) cost = 20 containertype = /obj/structure/closet/crate/freezer @@ -207,12 +229,14 @@ /datum/supply_pack/hydro/fennec name = "Fennec crate" + desc = "Two fennecs in a crate." cost = 60 //considering a corgi crate is 50, and you get two fennecs containertype = /obj/structure/largecrate/animal/fennec containername = "Fennec crate" /datum/supply_pack/hydro/fish name = "Fish supply crate" + desc = "An assortment of seafood, kept on ice." contains = list( /obj/item/reagent_containers/food/snacks/lobster = 6, /obj/item/reagent_containers/food/snacks/cuttlefish = 8, @@ -224,6 +248,7 @@ /datum/supply_pack/hydro/fennec_food name = "Fennec treats crate" + desc = "Assorted treats fit for a fennec." contains = list( /obj/item/reagent_containers/food/snacks/locust = 6, /obj/item/storage/box/wings/bucket = 2, @@ -240,12 +265,14 @@ /datum/supply_pack/hydro/jerboa name = "Jerboa crate" + desc = "A jerboa in a box." cost = 10 containertype = /obj/structure/largecrate/animal/jerboa containername = "Jerboa crate" /datum/supply_pack/hydro/tits name = "A pair of great tits" + desc = "Exactly what it sounds like." cost = 10 containertype = /obj/structure/largecrate/tits containername = "A pair of great tits" diff --git a/code/datums/supplypacks/materials.dm b/code/datums/supplypacks/materials.dm index 532ec83680d..f14e18bb269 100644 --- a/code/datums/supplypacks/materials.dm +++ b/code/datums/supplypacks/materials.dm @@ -6,6 +6,7 @@ /datum/supply_pack/materials group = "Materials" + desc = "A stack of fifty sheets (or ingots)." /datum/supply_pack/materials/metal50 name = "50 metal sheets" @@ -58,6 +59,7 @@ /datum/supply_pack/materials/carpet name = "Imported standard carpet" + desc = "Three standard carpet designs in easy-to-lay tiles." containertype = /obj/structure/closet/crate/grayson containername = "Imported carpet crate" cost = 15 @@ -69,6 +71,7 @@ /datum/supply_pack/materials/carpet_ornate name = "Imported ornate carpet" + desc = "Ornate, high-quality carpet in easy-to-lay tiles." containertype = /obj/structure/closet/crate/grayson containername = "Imported ornate carpet crate" cost = 20 @@ -81,6 +84,7 @@ /datum/supply_pack/materials/carpet_diamond name = "Imported diamond carpet" + desc = "Classy diamond-patterned carpets in easy-to-lay tiles." containertype = /obj/structure/closet/crate/grayson containername = "Imported diamond carpet crate" cost = 30 @@ -95,6 +99,7 @@ /datum/supply_pack/materials/retrocarpet name = "Imported retro carpet" + desc = "Terran retro-style carpets in easy-to-lay tiles." containertype = /obj/structure/closet/crate/grayson containername = "Imported retro carpet crate" cost = 20 @@ -106,14 +111,16 @@ ) /datum/supply_pack/materials/linoleum - name = "Linoleum" + name = "Linoleum flooring" + desc = "Easy-to-clean, easy-to-lay, guaranteed non-stick linoleum floor tiles." containertype = /obj/structure/closet/crate/grayson containername = "Linoleum crate" cost = 15 contains = list(/obj/fiftyspawner/linoleum) /datum/supply_pack/materials/concrete - name = "Concrete" + name = "Concrete blocks" + desc = "Cheap structural concrete blocks. Rebar sold seperately." cost = 10 containertype = /obj/structure/closet/crate/grayson contains = list(/obj/fiftyspawner/concrete) diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm index 2e498c92f10..a29ca080606 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -8,7 +8,8 @@ group = "Medical" /datum/supply_pack/med/medical - name = "Medical crate" + name = "Basic Medical Supplies" + desc = "A selection of basic medical supplies, used for treating most simple maladies." contains = list( /obj/item/storage/firstaid/regular, /obj/item/storage/firstaid/fire, @@ -27,13 +28,15 @@ /datum/supply_pack/med/bloodpack name = "BloodPack crate" + desc = "Three boxes of bloodbags." contains = list(/obj/item/storage/box/bloodpacks = 3) cost = 10 - containertype = /obj/structure/closet/crate/nanomed + containertype = /obj/structure/closet/crate/medical/blood containername = "BloodPack crate" /datum/supply_pack/med/synthplas name = "BloodPack (Synthplas) crate" + desc = "Six containers of synthetic blood replacement." contains = list(/obj/item/reagent_containers/blood/synthplas = 6) cost = 80 containertype = /obj/structure/closet/crate/nanomed @@ -41,6 +44,7 @@ /datum/supply_pack/med/bodybag name = "Body bag crate" + desc = "Five boxes of body bags." contains = list(/obj/item/storage/box/bodybags = 3) cost = 10 containertype = /obj/structure/closet/crate/nanomed @@ -48,6 +52,7 @@ /datum/supply_pack/med/cryobag name = "Stasis bag crate" + desc = "Three stasis bags." contains = list(/obj/item/bodybag/cryobag = 3) cost = 40 containertype = /obj/structure/closet/crate/nanomed @@ -55,6 +60,7 @@ /datum/supply_pack/med/surgery name = "Surgery crate" + desc = "A set of replacement surgical equipment. Requires Medical access." contains = list( /obj/item/surgical/cautery, /obj/item/surgical/surgicaldrill, @@ -75,6 +81,7 @@ /datum/supply_pack/med/deathalarm name = "Death Alarm crate" + desc = "Death alarms, a now somewhat-antiquated means of tracking the status of vital personnel. Requires Medical access." contains = list( /obj/item/storage/box/cdeathalarm_kit, /obj/item/storage/box/cdeathalarm_kit @@ -86,6 +93,7 @@ /datum/supply_pack/med/clotting name = "Clotting Medicine crate" + desc = "Zeng Hu-branded \'clotting\' nanomedicine, used to treat internal bleeding without resorting to invasive surgeries. Requires Medical access." contains = list( /obj/item/storage/firstaid/clotting ) @@ -96,6 +104,7 @@ /datum/supply_pack/med/sterile name = "Sterile equipment crate" + desc = "A pack of standard sterile equipment and medical scrubs." contains = list( /obj/item/clothing/under/rank/medical/scrubs/green = 2, /obj/item/clothing/head/surgery/green = 2, @@ -109,6 +118,7 @@ /datum/supply_pack/med/extragear name = "Medical surplus equipment" + desc = "Assorted surplus medical equipment. Requires Medical access." contains = list( /obj/item/storage/belt/medical = 3, /obj/item/clothing/glasses/hud/health = 3, @@ -121,7 +131,8 @@ access = access_medical /datum/supply_pack/med/cmogear - name = "Chief medical officer equipment" + name = "Chief Medical Officer equipment" + desc = "Standard equipment for the Chief Medical Officer. Requires CMO access." contains = list( /obj/item/storage/belt/medical, /obj/item/radio/headset/heads/cmo, @@ -146,6 +157,7 @@ /datum/supply_pack/med/doctorgear name = JOB_MEDICAL_DOCTOR + " equipment" + desc = "Standard equipment for basic Medical personnel. Requires Medical access." contains = list( /obj/item/storage/belt/medical, /obj/item/radio/headset/headset_med, @@ -169,6 +181,7 @@ /datum/supply_pack/med/chemistgear name = JOB_CHEMIST + " equipment" + desc = "Standard equipment for Chemists. Requires Chemistry access." contains = list( /obj/item/storage/box/beakers, /obj/item/radio/headset/headset_med, @@ -192,6 +205,7 @@ /datum/supply_pack/med/paramedicgear name = JOB_PARAMEDIC + " equipment" + desc = "Standard equipment for Paramedics and EMTs. Requires Medical Equipment access." contains = list( /obj/item/storage/belt/medical/emt, /obj/item/radio/headset/headset_med, @@ -220,6 +234,7 @@ /datum/supply_pack/med/psychiatristgear name = JOB_PSYCHIATRIST + " equipment" + desc = "Standard equipment for Psychiatrists. Requires Psychiatry access." contains = list( /obj/item/clothing/under/rank/psych, /obj/item/radio/headset/headset_med, @@ -239,8 +254,9 @@ /datum/supply_pack/med/medicalscrubs name = "Medical scrubs" + desc = "Plenty of extra surgical scrubs. Requires Medical Equipment access." contains = list( - /obj/item/clothing/shoes/white = 3,, + /obj/item/clothing/shoes/white = 3, /obj/item/clothing/under/rank/medical/scrubs = 3, /obj/item/clothing/under/rank/medical/scrubs/green = 3, /obj/item/clothing/under/rank/medical/scrubs/purple = 3, @@ -260,6 +276,7 @@ /datum/supply_pack/med/autopsy name = "Autopsy equipment" + desc = "Supplies for conducting thorough autopsies. Requires Morgue access." contains = list( /obj/item/folder/white, /obj/item/camera, @@ -277,6 +294,7 @@ /datum/supply_pack/med/medicaluniforms name = "Medical uniforms" + desc = "A set of standard Medical uniforms. Requires Medical Equipment access." contains = list( /obj/item/clothing/shoes/white = 3, /obj/item/clothing/under/rank/chief_medical_officer, @@ -304,14 +322,15 @@ /datum/supply_pack/med/medicalbiosuits name = "Medical biohazard gear" + desc = "Several sets of Medical Biohazard suits. Requires Medical Equipment access." contains = list( - /obj/item/clothing/head/bio_hood/modern = 3, - /obj/item/clothing/suit/bio_suit/modern = 3, - /obj/item/clothing/head/bio_hood/virology = 2, + /obj/item/clothing/head/bio_hood/scientist = 3, + /obj/item/clothing/suit/bio_suit/scientist = 3, /obj/item/clothing/suit/bio_suit/cmo, /obj/item/clothing/head/bio_hood/cmo, - /obj/item/clothing/mask/gas = 5, - /obj/item/tank/oxygen = 5, + /obj/item/clothing/shoes/white = 4, + /obj/item/clothing/mask/gas = 4, + /obj/item/tank/oxygen = 4, /obj/item/storage/box/masks, /obj/item/storage/box/gloves ) @@ -322,6 +341,7 @@ /datum/supply_pack/med/portablefreezers name = "Portable freezers crate" + desc = "Several portable freezers, for safely transporting organs and other temperature-sensitive objects. Requires Medical Equipment access." contains = list(/obj/item/storage/box/freezer = 7) cost = 25 containertype = /obj/structure/closet/crate/secure/veymed @@ -330,6 +350,7 @@ /datum/supply_pack/med/virus name = "Virus culture crate" + desc = "Glass bottles with viral cultures. HANDLE WITH CARE. Requires Chief Medical Officer access." contains = list(/obj/item/reagent_containers/glass/bottle/culture/cold = 1, /obj/item/reagent_containers/glass/bottle/culture/flu = 1) cost = 25 containertype = /obj/structure/closet/crate/secure/zenghu @@ -338,6 +359,7 @@ /datum/supply_pack/med/defib name = "Defibrillator crate" + desc = "A pair of defibrillators." contains = list(/obj/item/defib_kit = 2) cost = 30 containertype = /obj/structure/closet/crate/veymed @@ -345,6 +367,7 @@ /datum/supply_pack/med/distillery name = "Chemical distiller crate" + desc = "A portable reagent distillery, for advanced chemistry. Standalone model." contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery = 1) cost = 50 containertype = /obj/structure/closet/crate/large/nanotrasen @@ -352,6 +375,7 @@ /datum/supply_pack/med/advdistillery name = "Industrial Chemical distiller crate" + desc = "A portable industrial reagent distillery, for advanced chemistry. Requires atmospherics experience and equipment to set up." contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery/industrial = 1) cost = 150 containertype = /obj/structure/closet/crate/large/xion @@ -359,6 +383,7 @@ /datum/supply_pack/med/oxypump name = "Oxygen pump crate" + desc = "A mobile oxygen pump." contains = list(/obj/machinery/oxygen_pump/mobile = 1) cost = 125 containertype = /obj/structure/closet/crate/large/xion @@ -366,6 +391,7 @@ /datum/supply_pack/med/anestheticpump name = "Anesthetic pump crate" + desc = "A mobile anaesthetic pump." contains = list(/obj/machinery/oxygen_pump/mobile/anesthetic = 1) cost = 130 containertype = /obj/structure/closet/crate/large/nanotrasen @@ -373,29 +399,15 @@ /datum/supply_pack/med/stablepump name = "Portable stabilizer crate" + desc = "A portable stabilizer, for conducting sensitive operations such as heart transplants." contains = list(/obj/machinery/oxygen_pump/mobile/stabilizer = 1) cost = 175 containertype = /obj/structure/closet/crate/large/nanotrasen containername = "Portable stabilizer crate" -/datum/supply_pack/med/medicalbiosuits - contains = list( - /obj/item/clothing/head/bio_hood/scientist = 3, - /obj/item/clothing/suit/bio_suit/scientist = 3, - /obj/item/clothing/suit/bio_suit/virology = 3, - /obj/item/clothing/head/bio_hood/virology = 3, - /obj/item/clothing/suit/bio_suit/cmo, - /obj/item/clothing/head/bio_hood/cmo, - /obj/item/clothing/shoes/white = 7, - /obj/item/clothing/mask/gas = 7, - /obj/item/tank/oxygen = 7, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves - ) - cost = 40 - /datum/supply_pack/med/virologybiosuits name = "Virology biohazard gear" + desc = "Three virology biohazard suits plus associated equipment. Requires Medical Equipment access." contains = list( /obj/item/clothing/suit/bio_suit/virology = 3, /obj/item/clothing/head/bio_hood/virology = 3, @@ -409,20 +421,9 @@ containername = "Virology biohazard equipment" access = access_medical_equip -/datum/supply_pack/med/virus - name = "Virus culture crate" - contains = list(/obj/item/reagent_containers/glass/bottle/culture/cold = 1, /obj/item/reagent_containers/glass/bottle/culture/flu = 1) - cost = 25 - containertype = /obj/structure/closet/crate/secure - containername = "Virus culture crate" - access = access_medical_equip - - -/datum/supply_pack/med/bloodpack - containertype = /obj/structure/closet/crate/medical/blood - /datum/supply_pack/med/compactdefib name = "Compact Defibrillator crate" + desc = "A compact defibrillator. Requires Medical Equipment access." contains = list(/obj/item/defib_kit/compact = 1) cost = 90 containertype = /obj/structure/closet/crate/secure diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index bc1690c7d8c..0d6d5ba7d82 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -19,6 +19,7 @@ /obj/item/deck/holder ) name = "Trading Card Crate" + desc = "A random set of trading cards. Gotta collect \'em all!" cost = 10 containertype = /obj/structure/closet/crate/oculum containername = "cards crate" @@ -35,8 +36,9 @@ /obj/item/toy/character/lich ) name = "Miniatures Crate" + desc = "Four random prepainted tabletop gaming miniatures." cost = 200 - containertype = /obj/structure/closet/crate/oculum + containertype = /obj/structure/closet/crate/allico containername = "Miniature Crate" /datum/supply_pack/randomised/misc/plushies @@ -90,6 +92,7 @@ /obj/item/toy/plushie/shark) //VOREStation Add End name = "Plushies Crate" + desc = "Five random plushies from AlliCo's wide selection!" cost = 15 containertype = /obj/structure/closet/crate/allico containername = "Plushies Crate" @@ -97,12 +100,14 @@ /datum/supply_pack/misc/eftpos contains = list(/obj/item/eftpos) name = "EFTPOS scanner" + desc = "A handheld Electronic Funds Transfer At Point Of Sale scanner." cost = 10 containertype = /obj/structure/closet/crate/nanotrasen containername = "EFTPOS crate" /datum/supply_pack/misc/chaplaingear name = JOB_CHAPLAIN + " equipment" + desc = "A standard set of liturgical equipment, suitable for various faiths." contains = list( /obj/item/clothing/under/rank/chaplain, /obj/item/clothing/shoes/black, @@ -121,6 +126,7 @@ /datum/supply_pack/misc/hoverpod name = "Hoverpod Shipment" + desc = "A hoverpod." contains = list() cost = 80 containertype = /obj/structure/largecrate/hoverpod @@ -128,6 +134,7 @@ /datum/supply_pack/randomised/misc/webbing name = "Webbing crate" + desc = "Four random webbing sets from a modest selection." num_contained = 4 contains = list( /obj/item/clothing/accessory/storage/black_vest, @@ -144,6 +151,7 @@ /datum/supply_pack/misc/holoplant name = "Holoplant Pot" + desc = "A holoplant, for livening up places with none of the maintenance of a regular plant." contains = list(/obj/machinery/holoplant/shipped) cost = 15 containertype = /obj/structure/closet/crate/thinktronic @@ -151,6 +159,7 @@ /datum/supply_pack/misc/glucose_hypos name = "Glucose Hypoinjectors" + desc = "A set of five glucose autoinjectors, for those with blood sugar issues." contains = list( /obj/item/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5 ) @@ -161,6 +170,7 @@ /datum/supply_pack/misc/mre_rations num_contained = 6 name = "Emergency - MREs" + desc = "Six random ready-to-eat meals. Guaranteed to still be edible." contains = list(/obj/item/storage/mre, /obj/item/storage/mre/menu2, /obj/item/storage/mre/menu3, @@ -177,6 +187,7 @@ /datum/supply_pack/misc/paste_rations name = "Emergency - Paste" + desc = "Two packages of emergency nutripaste rations." contains = list( /obj/item/storage/mre/menu11 = 2 ) @@ -186,6 +197,7 @@ /datum/supply_pack/misc/medical_rations name = "Emergency - VitaPaste" + desc = "Two packages of high-grade \'VitaPaste\' rations." contains = list( /obj/item/storage/mre/menu13 = 2 ) @@ -195,6 +207,7 @@ /datum/supply_pack/misc/reagentpump name = "Machine - Pump" + desc = "A pump." contains = list( /obj/machinery/pump = 1 ) @@ -204,6 +217,7 @@ /datum/supply_pack/misc/beltminer name = "Belt-miner gear crate" + desc = "A set of supplies for belt mining. Requires Mining or Xenoarchaeology access." contains = list( /obj/item/gun/energy/particle = 2, /obj/item/cell/device/weapon = 2, @@ -221,6 +235,7 @@ /datum/supply_pack/misc/jetpack name = "jetpack (empty)" + desc = "An empty jetpack. Requires Mining, Xenoarchaeology, EVA, or Pilot's access." contains = list( /obj/item/tank/jetpack = 1 ) @@ -235,6 +250,7 @@ /datum/supply_pack/randomised/misc/explorer_shield name = JOB_EXPLORER + " shield" + desc = "A pair of shields for use by away teams. Requires EVA or Pilot's access." num_contained = 2 contains = list( /obj/item/shield/riot/explorer, @@ -249,6 +265,7 @@ /datum/supply_pack/misc/music_players name = "music players (3)" + desc = "A trio of 'walkpod' portable music players." contains = list( /obj/item/walkpod = 3 ) @@ -258,6 +275,7 @@ /datum/supply_pack/misc/juke_remotes name = "jukebox remote speakers (2)" + desc = "A pair of remote speakers that can be linked to a jukebox." contains = list( /obj/item/juke_remote = 2 ) @@ -267,6 +285,7 @@ /datum/supply_pack/misc/explorer_headsets name = "shortwave-capable headsets (x4)" + desc = "Four headsets with shortwave fallback capacity. Requires Exploration, EVA, or Pilot's access." contains = list( /obj/item/radio/headset/explorer = 4 ) @@ -282,6 +301,7 @@ /datum/supply_pack/misc/emergency_beacons name = "emergency locator beacons (x4)" + desc = "Four personnel locator emergency beacons." contains = list( /obj/item/emergency_beacon = 4 ) @@ -291,6 +311,7 @@ /datum/supply_pack/misc/random_corpo name = "random corporate supply crate" + desc = "A random corporate supply crate. Could contain almost anything!" contains = list( /obj/random/multiple/corp_crate_supply ) @@ -299,6 +320,7 @@ /datum/supply_pack/misc/random_corpo_special name = "special corporate supply crate" + desc = "A cache of corporate supplies. Could contain more valuable items than the random supply crate." contains = list( /obj/random/multiple/corp_crate ) diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm index af86c66c24d..2eec1dc0d15 100644 --- a/code/datums/supplypacks/munitions.dm +++ b/code/datums/supplypacks/munitions.dm @@ -26,6 +26,7 @@ /datum/supply_pack/munitions/egunpistol name = "Weapons - Energy sidearms" + desc = "A pair of standard two-setting energy guns, from Lawson Arms. Requires Armory access." contains = list(/obj/item/gun/energy/gun = 2) cost = 40 containertype = /obj/structure/closet/crate/secure/lawson @@ -34,6 +35,7 @@ /datum/supply_pack/munitions/flareguns name = "Weapons - Flare guns" + desc = "A set of flare-round ballistic arms and ammunition. Requires Armory access." contains = list( /obj/item/gun/projectile/sec/flash, /obj/item/ammo_magazine/m45/flash, @@ -47,6 +49,7 @@ /datum/supply_pack/munitions/eweapons name = "Weapons - Experimental weapons crate" + desc = "A pair of experimental x-ray laser rifles and portable energy shields. Requires Armory access." contains = list( /obj/item/gun/energy/xray = 2, /obj/item/shield/energy = 2) @@ -57,6 +60,7 @@ /datum/supply_pack/munitions/energyweapons name = "Weapons - Laser rifle crate" + desc = "A pair of standard laser rifles, from Hephaestus Arms. Requires Armory access." contains = list(/obj/item/gun/energy/laser = 2) //VOREStation Edit - Made to be consistent with the energy guns crate. cost = 50 containertype = /obj/structure/closet/crate/secure/heph @@ -65,6 +69,7 @@ /datum/supply_pack/munitions/shotgun name = "Weapons - Shotgun crate" + desc = "Two pump-action combat shotguns and two boxes of 12-gauge ammunition. Requires Armory access." contains = list( /obj/item/ammo_magazine/ammo_box/b12g, /obj/item/ammo_magazine/ammo_box/b12g/pellet, @@ -105,7 +110,8 @@ access = access_armory */ /datum/supply_pack/munitions/ionweapons - name = "Weapons - Electromagnetic Rifles" + name = "Weapons - Electromagnetic Pulse Rifles" + desc = "A pair of EMP rifles and low-power EMP grenades. Requires Armory access." contains = list( /obj/item/gun/energy/ionrifle = 2, /obj/item/storage/box/empslite @@ -116,7 +122,8 @@ access = access_armory /datum/supply_pack/munitions/ionpistols - name = "Weapons - Electromagnetic pistols" + name = "Weapons - Electromagnetic Pulse pistols" + desc = "A pair of EMP pistols and low-power EMP grenades. Requires Armory access." contains = list( /obj/item/gun/energy/ionrifle/pistol = 2, /obj/item/storage/box/empslite @@ -128,6 +135,7 @@ /datum/supply_pack/munitions/bsmg name = "Weapons - Ballistic SMGs" + desc = "A pair of WT-550 ballistic submachineguns. Requires Armory access." contains = list(/obj/item/gun/projectile/automatic/wt550 = 2) cost = 50 containertype = /obj/structure/closet/crate/secure/ward @@ -136,6 +144,7 @@ /datum/supply_pack/munitions/brifle name = "Weapons - Ballistic Rifles" + desc = "A pair of Z-8 ballistic rifles. Requires Armory access." contains = list(/obj/item/gun/projectile/automatic/z8 = 2) cost = 80 containertype = /obj/structure/closet/crate/secure/weapon @@ -143,44 +152,48 @@ access = access_armory /datum/supply_pack/munitions/bolt_rifles_lethal - name = "Weapons - Bolt-Action Rifles" - contains = list( - /obj/item/gun/projectile/shotgun/pump/rifle = 2, - /obj/item/ammo_magazine/ammo_box/b762 = 4, - ) - cost = 60 - containertype = /obj/structure/closet/crate/secure/weapon - containername = "Ballistic Weapons crate" - access = access_armory + name = "Weapons - Bolt-Action Rifles" + desc = "A pair of vintage 7.62mm bolt-action rifles, and four clips. Requires Armory access." + contains = list( + /obj/item/gun/projectile/shotgun/pump/rifle = 2, + /obj/item/ammo_magazine/ammo_box/b762 = 4, + ) + cost = 60 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Ballistic Weapons crate" + access = access_armory /datum/supply_pack/munitions/bolt_rifles_competitive - name = "Weapons - Competitive shooting rifles" - contains = list( - /obj/item/assembly/timer, - /obj/item/gun/projectile/shotgun/pump/rifle/practice = 2, - /obj/item/ammo_magazine/clip/c762/practice = 4, - /obj/item/target = 2, - /obj/item/target/alien = 2, - /obj/item/target/syndicate = 2 - ) - cost = 40 - containertype = /obj/structure/closet/crate/secure/weapon - containername = "Ballistic Weapons crate" - access = access_armory //VOREStation Edit - Guns are for the armory. + name = "Weapons - Competitive shooting rifles" + desc = "A set of 7.62mm bolt-action practice/sport rifles, a timer, and targets. Requires Armory access." + contains = list( + /obj/item/assembly/timer, + /obj/item/gun/projectile/shotgun/pump/rifle/practice = 2, + /obj/item/ammo_magazine/clip/c762/practice = 4, + /obj/item/target = 2, + /obj/item/target/alien = 2, + /obj/item/target/syndicate = 2 + ) + cost = 40 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Ballistic Weapons crate" + access = access_armory //VOREStation Edit - Guns are for the armory. /datum/supply_pack/munitions/caseless name = "Weapons - Prototype Caseless Rifle" + desc = "A prototype 5mm caseless automatic rifle. Requires Armory access." contains = list( /obj/item/gun/projectile/caseless/prototype, /obj/item/ammo_magazine/m5mmcaseless = 3 ) cost = 60 - containertype = /obj/structure/closet/crate/secure/gilthari + containertype = /obj/structure/closet/crate/secure/heph containername = "Caseless rifle crate" - access = access_security + access = access_armory /datum/supply_pack/munitions/mrifle name = "Weapons - Magnetic Rifles" + desc = "A pair of Hephaestus man-portable railguns. Requires Armory access." contains = list(/obj/item/gun/magnetic/railgun/heater = 2) cost = 120 containertype = /obj/structure/closet/crate/secure/heph @@ -189,6 +202,7 @@ /datum/supply_pack/munitions/mpistol name = "Weapons - Magnetic Pistols" + desc = "A pair of Hephaestus man-portable rail-pistols. Requires Armory access." contains = list(/obj/item/gun/magnetic/railgun/heater/pistol = 2) cost = 200 containertype = /obj/structure/closet/crate/secure/heph @@ -197,22 +211,25 @@ /datum/supply_pack/munitions/mcarbine name = "Weapons - Magnetic Carbines" + desc = "A pair of Lawson magnetic flechette carbines. Requires Armory access." contains = list(/obj/item/gun/magnetic/railgun/flechette/sif = 2) cost = 130 containertype = /obj/structure/closet/crate/secure/lawson containername = "Magnetic weapon crate" - access = access_security + access = access_armory /datum/supply_pack/munitions/mshells name = "Weapons - Magnetic Shells" + desc = "A set of ammo for magnetic weapons. Requires Armory access." contains = list(/obj/item/magnetic_ammo = 3) cost = 100 containertype = /obj/structure/closet/crate/secure/weapon containername = "Magnetic ammunition crate" - access = access_security + access = access_armory /datum/supply_pack/munitions/claymore name = "Weapons - Melee - Claymores" + desc = "A pair of replica two-handed claymore swords. Requires Armory access." contains = list(/obj/item/material/sword = 2) cost = 150 containertype = /obj/structure/closet/crate/secure/weapon @@ -221,6 +238,7 @@ /datum/supply_pack/munitions/shotgunammo name = "Ammunition - Shotgun shells" + desc = "Four boxes of 12-gauge lethal ammunition; slug and shot. Requires Armory access." contains = list( /obj/item/ammo_magazine/ammo_box/b12g = 2, /obj/item/ammo_magazine/ammo_box/b12g/pellet = 2 @@ -232,6 +250,7 @@ /datum/supply_pack/munitions/beanbagammo name = "Ammunition - Beanbag shells" + desc = "Three boxes of 12-gauge less-lethal ammunition; beanbag. Requires Armory access." contains = list(/obj/item/ammo_magazine/ammo_box/b12g/beanbag = 3) cost = 25 containertype = /obj/structure/closet/crate @@ -240,6 +259,7 @@ /datum/supply_pack/munitions/bsmgammo name = "Ammunition - 9mm top mounted lethal" + desc = "Six magazines of lethal 9mm ammunition, top-mount. Requires Armory access." contains = list(/obj/item/ammo_magazine/m9mmt = 6) cost = 25 containertype = /obj/structure/closet/crate/secure/weapon @@ -248,14 +268,16 @@ /datum/supply_pack/munitions/bsmgammorubber name = "Ammunition - 9mm top mounted rubber" + desc = "Six magazines of less-lethal 9mm rubber ammunition, top-mount. Requires Armory access." contains = list(/obj/item/ammo_magazine/m9mmt/rubber = 6) cost = 25 containertype = /obj/structure/closet/crate/secure/weapon containername = "Ballistic ammunition crate" - access = access_security + access = access_armory /datum/supply_pack/munitions/brifleammo name = "Ammunition - 7.62mm lethal" + desc = "Six magazines of lethal 7.62mm ammunition. Requires Armory access." contains = list(/obj/item/ammo_magazine/m762 = 6) cost = 25 containertype = /obj/structure/closet/crate/secure/weapon @@ -264,6 +286,7 @@ /datum/supply_pack/munitions/pcellammo name = "Ammunition - Power cell" + desc = "Three standard weapon power cells. Requires Security access." contains = list(/obj/item/cell/device/weapon = 3) cost = 50 containertype = /obj/structure/closet/crate/secure/weapon @@ -295,6 +318,7 @@ /datum/supply_pack/munitions/ofd_charge_emp name = "OFD Charge - EMP" + desc = "An obstruction field disperser charge, electromagnetic pulse core. Inert until catalyzed by the launcher. Requires Security access." contains = list( /obj/structure/ship_munition/disperser_charge/emp ) @@ -305,6 +329,7 @@ /datum/supply_pack/munitions/ofd_charge_explosive name = "OFD Charge - Explosive" + desc = "An obstruction field disperser charge, explosive core. Inert until catalyzed by the launcher. Requires Security access." contains = list( /obj/structure/ship_munition/disperser_charge/explosive ) @@ -315,6 +340,7 @@ /datum/supply_pack/munitions/ofd_charge_incendiary name = "OFD Charge - Incendiary" + desc = "An obstruction field disperser charge, incendiary core. Inert until catalyzed by the launcher. Requires Security access." contains = list( /obj/structure/ship_munition/disperser_charge/fire ) @@ -325,6 +351,7 @@ /datum/supply_pack/munitions/ofd_charge_mining name = "OFD Charge - Mining" + desc = "An obstruction field disperser charge, mining core. Inert until catalyzed by the launcher. Requires Security access." contains = list( /obj/structure/ship_munition/disperser_charge/mining ) @@ -335,6 +362,7 @@ /datum/supply_pack/munitions/longsword name = "Weapons - Melee -Longsword (Steel)" + desc = "A pair of replica two-handed longswords. Requires Armory access." contains = list( /obj/item/material/twohanded/longsword=2 ) diff --git a/code/datums/supplypacks/musical.dm b/code/datums/supplypacks/musical.dm index 61401863bfd..6cdb04fb976 100644 --- a/code/datums/supplypacks/musical.dm +++ b/code/datums/supplypacks/musical.dm @@ -6,6 +6,7 @@ /obj/item/instrument/eguitar, ) name = "string instruments" + desc = "A set of string instruments." cost = 50 containertype = /obj/structure/closet/crate containername = "string instrument crate" @@ -21,6 +22,7 @@ /obj/item/instrument/bikehorn, ) name = "wind instruments" + desc = "A set of wind instruments." cost = 50 containertype = /obj/structure/closet/crate containername = "wind instrument crate" @@ -32,6 +34,7 @@ /obj/item/instrument/musicalmoth ) name = "keyed instruments" + desc = "A set of keyboard-style instruments." cost = 50 containertype = /obj/structure/closet/crate containername = "keyed instruments crate" diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index ab7f37da80b..95fa8e2f1ff 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -13,6 +13,7 @@ /datum/supply_pack/recreation/foam_weapons name = "Foam Weapon Crate" + desc = "A set of foam weapons, from AlliCo." contains = list( /obj/item/material/sword/foam = 2, /obj/item/material/twohanded/baseballbat/foam = 2, @@ -25,6 +26,7 @@ /datum/supply_pack/recreation/donksoftweapons name = "Donk-Soft Weapon Crate" + desc = "Donk-Soft foam dart guns, and extra darts, from AlliCo." contains = list( /obj/item/ammo_magazine/ammo_box/foam = 2, /obj/item/gun/projectile/shotgun/pump/toy = 2, @@ -37,6 +39,7 @@ /datum/supply_pack/recreation/donksoftborg name = "Donk-Soft Cyborg Blaster Crate" + desc = "A pair of modular attachable Donk-Soft foam dart guns, for installation in various cyborg platforms." contains = list( /obj/item/borg/upgrade/no_prod/toygun = 2, ) @@ -46,6 +49,7 @@ /datum/supply_pack/recreation/donksoftvend name = "Donk-Soft Vendor Crate" + desc = "A Donk-Soft vending machine." contains = list() cost = 75 containertype = /obj/structure/largecrate/donksoftvendor @@ -53,6 +57,7 @@ /datum/supply_pack/recreation/lasertag name = "Lasertag equipment" + desc = "A standard set of Laser Tag equipment." contains = list( /obj/item/gun/energy/lasertag/red, /obj/item/clothing/suit/redtag, @@ -65,6 +70,7 @@ /datum/supply_pack/recreation/artscrafts name = "Arts and Crafts supplies" + desc = "A set of painting, drawing, and photography supplies." contains = list( /obj/item/storage/fancy/crayons, /obj/item/storage/fancy/markers, @@ -89,6 +95,7 @@ /datum/supply_pack/recreation/painters name = "Station Painting Supplies" + desc = "A set of supplies for turning the walls and floors into your canvas." cost = 10 containername = "station painting supplies crate" containertype = /obj/structure/closet/crate/grayson @@ -110,6 +117,7 @@ /datum/supply_pack/recreation/cheapbait name = "Cheap Fishing Bait" + desc = "Some cheap, low-quality bait for fishing with." cost = 10 containername = "cheap bait crate" containertype = /obj/structure/closet/crate/freezer @@ -119,6 +127,7 @@ /datum/supply_pack/randomised/recreation/cheapbait name = "Deluxe Fishing Bait" + desc = "High-quality bait for masterful fishing." cost = 40 containername = "deluxe bait crate" containertype = /obj/structure/closet/crate/carp @@ -130,6 +139,7 @@ /datum/supply_pack/recreation/ltagturrets name = "Laser Tag Turrets" + desc = "A pair of portable laser tag turrets." cost = 40 containername = "laser tag turret crate" containertype = /obj/structure/closet/crate/ward @@ -140,6 +150,7 @@ /datum/supply_pack/recreation/monster_bait name = "Monster Bait Toy" + desc = "A simple toy for playing with various critters." cost = 5 containername = "monster bait crate" containertype = /obj/structure/closet/crate/allico @@ -159,6 +170,7 @@ */ /datum/supply_pack/recreation/restraints name = "Recreational Restraints" + desc = "You know what these are for. If you have to ask, you're too innocent for this end of the galaxy." contains = list( /obj/item/clothing/mask/muzzle, /obj/item/clothing/glasses/sunglasses/blindfold, @@ -178,6 +190,7 @@ /datum/supply_pack/recreation/wolfgirl_cosplay_crate name = "Wolfgirl Cosplay Crate" + desc = "A set of cosplay supplies." contains = list( /obj/item/clothing/head/fluff/wolfgirl = 1, /obj/item/clothing/shoes/fluff/wolfgirl = 1, @@ -191,6 +204,7 @@ /datum/supply_pack/randomised/recreation/figures name = "Action figures crate" + desc = "Five random action figures." num_contained = 5 contains = list( /obj/random/action_figure/supplypack @@ -201,6 +215,7 @@ /datum/supply_pack/recreation/collars name = "Collar bundle" + desc = "Collars." contains = list( /obj/item/clothing/accessory/collar/shock = 1, /obj/item/clothing/accessory/collar/spike = 1, @@ -216,6 +231,7 @@ /datum/supply_pack/recreation/shiny name = "Shiny Clothing" + desc = "Questionably shiny clothing. If you have to ask, you're too innocent for this end of the galaxy." contains = list( /obj/item/clothing/mask/muzzle/ballgag = 1, /obj/item/clothing/mask/muzzle/ballgag/ringgag = 1, @@ -239,6 +255,7 @@ //3/19/21 /datum/supply_pack/recreation/smoleworld name = "Smole Bulding Bricks" + desc = "A set of interlocking plastic bricks for building things with." contains = list( /obj/item/storage/smolebrickcase, /obj/item/storage/smolebrickcase, ) @@ -248,6 +265,7 @@ /datum/supply_pack/recreation/smolesnackplanets name = "Snack planets pack" + desc = "Bags of planet-shaped snacks." num_contained = 4 contains = list( /obj/item/storage/bagoplanets, /obj/item/storage/bagoplanets @@ -258,6 +276,7 @@ /datum/supply_pack/recreation/pinkpillows name = "Pillow Crate - Pink" + desc = "Six pink pillows." contains = list( /obj/item/bedsheet/pillow = 6 ) @@ -266,6 +285,7 @@ /datum/supply_pack/recreation/tealpillows name = "Pillow Crate - Teal" + desc = "Six teal pillows." contains = list( /obj/item/bedsheet/pillow/teal = 6 ) @@ -274,6 +294,7 @@ /datum/supply_pack/recreation/whitepillows name = "Pillow Crate - White" + desc = "Six white pillows." contains = list( /obj/item/bedsheet/pillow/white = 6 ) @@ -282,6 +303,7 @@ /datum/supply_pack/recreation/blackpillows name = "Pillow Crate - Black" + desc = "Six black pillows." contains = list( /obj/item/bedsheet/pillow/black = 6 ) @@ -290,6 +312,7 @@ /datum/supply_pack/recreation/redpillows name = "Pillow Crate - Red" + desc = "Six red pillows." contains = list( /obj/item/bedsheet/pillow/red = 6 ) @@ -298,6 +321,7 @@ /datum/supply_pack/recreation/greenpillows name = "Pillow Crate - Green" + desc = "Six green pillows." contains = list( /obj/item/bedsheet/pillow/green = 6 ) @@ -306,6 +330,7 @@ /datum/supply_pack/recreation/orangepillows name = "Pillow Crate - Orange" + desc = "Six orange pillows." contains = list( /obj/item/bedsheet/pillow/orange = 6 ) @@ -314,6 +339,7 @@ /datum/supply_pack/recreation/yellowpillows name = "Pillow Crate - Yellow" + desc = "Six yellow pillows." contains = list( /obj/item/bedsheet/pillow/yellow = 6 ) diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm index 900d56d5f6e..693b635f353 100644 --- a/code/datums/supplypacks/robotics.dm +++ b/code/datums/supplypacks/robotics.dm @@ -13,6 +13,7 @@ /datum/supply_pack/robotics/robotics_assembly name = "Robotics assembly crate" + desc = "An assortment of basic robotics assembly supplies. Requires Robotics access." contains = list( /obj/item/assembly/prox_sensor = 3, /obj/item/storage/toolbox/electrical, @@ -54,6 +55,7 @@ /datum/supply_pack/robotics/robolimbs/morpheus name = "Morpheus robolimb blueprints" + desc = "A disk of robolimbs from the Morpheus catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/morpheus) cost = 20 containertype = /obj/structure/closet/crate/secure/morpheus @@ -62,6 +64,7 @@ /datum/supply_pack/robotics/robolimbs/cybersolutions name = "Cyber Solutions robolimb blueprints" + desc = "A disk of robolimbs from the Cyber Solutions catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/cybersolutions) cost = 20 containertype = /obj/structure/closet/crate/secure/cybersolutions @@ -70,6 +73,7 @@ /datum/supply_pack/robotics/robolimbs/xion name = "Xion robolimb blueprints" + desc = "A disk of robolimbs from the Xion Manufacturing catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/xion) cost = 20 containertype = /obj/structure/closet/crate/secure/xion @@ -78,6 +82,7 @@ /datum/supply_pack/robotics/robolimbs/grayson name = "Grayson robolimb blueprints" + desc = "A disk of robolimbs from the Grayson Industries catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/grayson) cost = 30 containertype = /obj/structure/closet/crate/secure/grayson @@ -86,6 +91,7 @@ /datum/supply_pack/robotics/robolimbs/hephaestus name = "Hephaestus robolimb blueprints" + desc = "A disk of robolimbs from the Hephaestus Arms catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/hephaestus) cost = 35 containertype = /obj/structure/closet/crate/secure/heph @@ -94,6 +100,7 @@ /datum/supply_pack/robotics/robolimbs/wardtakahashi name = "Ward-Takahashi robolimb blueprints" + desc = "A disk of robolimbs from the Ward-Takahashi catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/wardtakahashi) cost = 35 containertype = /obj/structure/closet/crate/secure/ward @@ -102,6 +109,7 @@ /datum/supply_pack/robotics/robolimbs/zenghu name = "Zeng Hu robolimb blueprints" + desc = "A disk of robolimbs from the Zeng Hu Medical catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/zenghu) cost = 35 containertype = /obj/structure/closet/crate/secure/zenghu @@ -110,6 +118,7 @@ /datum/supply_pack/robotics/robolimbs/bishop name = "Bishop robolimb blueprints" + desc = "A disk of robolimbs from the Bishop catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/bishop) cost = 70 containertype = /obj/structure/closet/crate/secure/bishop @@ -118,15 +127,16 @@ /datum/supply_pack/robotics/robolimbs/cenilimicybernetics name = "Cenilimi Cybernetics robolimb blueprints" + desc = "A disk of teshari robolimbs from the Cenilimi Cybernetics catalogue. Requires Robotics access." contains = list(/obj/item/disk/limb/cenilimicybernetics) cost = 45 containertype = /obj/structure/closet/crate/secure/science containername = "Robolimb blueprints (Cenilimi Cybernetics)" access = access_robotics - /datum/supply_pack/robotics/mecha_ripley name = "Circuit Crate (\"Ripley\" APLU)" + desc = "A set of standard core components for a Ripley Power-Loader mech, plus an assembly manual. Requires Robotics access." contains = list( /obj/item/book/manual/ripley_build_and_repair, /obj/item/circuitboard/mecha/ripley/main, @@ -139,6 +149,7 @@ /datum/supply_pack/robotics/mecha_odysseus name = "Circuit Crate (\"Odysseus\")" + desc = "A set of standard core components for an Odysseus Medical Response mech. Requires Robotics access." contains = list( /obj/item/circuitboard/mecha/odysseus/peripherals, /obj/item/circuitboard/mecha/odysseus/main @@ -157,6 +168,7 @@ /obj/item/kit/paint/ripley/flames_blue ) name = "Random APLU modkit" + desc = "A random Ripley customization kit, used to modify a mech's paint job." cost = 200 containertype = /obj/structure/closet/crate/xion containername = "heavy crate" @@ -168,6 +180,7 @@ /obj/item/kit/paint/durand/phazon ) name = "Random Durand exosuit modkit" + desc = "A random Durand customization kit, used to modify a mech's paint job." containertype = /obj/structure/closet/crate/heph /datum/supply_pack/randomised/robotics/exosuit_mod/gygax @@ -177,10 +190,12 @@ /obj/item/kit/paint/gygax/recitence ) name = "Random Gygax exosuit modkit" + desc = "A random Gygax customization kit, used to modify a mech's paint job." containertype = /obj/structure/closet/crate/heph /datum/supply_pack/robotics/jumper_cables name = "Jumper kit crate" + desc = "A pair of jumper kits, for restarting damaged synthetics." contains = list( /obj/item/defib_kit/jumper_kit = 2 ) @@ -191,6 +206,7 @@ /datum/supply_pack/robotics/restrainingbolt name = "Restraining bolt crate" + desc = "A pair of restraining bolts and an implanter. Requires Robotics access." contains = list( /obj/item/implanter = 1, /obj/item/implantcase/restrainingbolt = 2 @@ -202,6 +218,7 @@ /datum/supply_pack/robotics/bike name = "Spacebike Crate" + desc = "A spacebike. Drive with extreme care." contains = list() cost = 350 containertype = /obj/structure/largecrate/vehicle/bike @@ -209,6 +226,7 @@ /datum/supply_pack/robotics/quadbike name = "ATV Crate" + desc = "An all-terrain vehicle in a crate. Can tow a trailer." contains = list() cost = 300 containertype = /obj/structure/largecrate/vehicle/quadbike @@ -216,6 +234,7 @@ /datum/supply_pack/robotics/quadtrailer name = "ATV Trailer Crate" + desc = "A trailer for an all-terrain vehicle." contains = list() cost = 250 containertype = /obj/structure/largecrate/vehicle/quadtrailer @@ -223,6 +242,7 @@ /datum/supply_pack/robotics/mecha_gopher name = "Circuit Crate (\"Gopher\" APLU)" + desc = "A set of standard core components for a Gopher micro-mech. Requires Robotics access." contains = list( /obj/item/circuitboard/mecha/gopher/main, /obj/item/circuitboard/mecha/gopher/peripherals @@ -234,6 +254,7 @@ /datum/supply_pack/robotics/mecha_polecat name = "Circuit Crate (\"Polecat\" APLU)" + desc = "A set of standard core components for a Polecat micro-mech. Requires Robotics access." contains = list( /obj/item/circuitboard/mecha/polecat/main, /obj/item/circuitboard/mecha/polecat/peripherals, @@ -246,6 +267,7 @@ /datum/supply_pack/robotics/mecha_weasel name = "Circuit Crate (\"Weasel\" APLU)" + desc = "A set of standard core components for a Weasel micro-mech. Requires Robotics access." contains = list( /obj/item/circuitboard/mecha/weasel/main, /obj/item/circuitboard/mecha/weasel/peripherals, @@ -258,6 +280,7 @@ /datum/supply_pack/robotics/some_robolimbs name = "Basic Robolimb Blueprints" + desc = "A set of standard cyberlimb blueprints, from the Morpheus, Xion, and Talon LLC catalogues. Requires Robotics access." contains = list( /obj/item/disk/limb/morpheus, /obj/item/disk/limb/xion, @@ -270,6 +293,7 @@ /datum/supply_pack/robotics/all_robolimbs name = "Advanced Robolimb Blueprints" + desc = "A wide selection of advanced cyberlimb blueprints. Includes hyperrealistic prosthetic designs from Vey-Medical and DSI. Requires Robotics access." contains = list( /obj/item/disk/limb/bishop, /obj/item/disk/limb/hephaestus, diff --git a/code/datums/supplypacks/science.dm b/code/datums/supplypacks/science.dm index 94469a886fe..ae5c6c6efc3 100644 --- a/code/datums/supplypacks/science.dm +++ b/code/datums/supplypacks/science.dm @@ -7,6 +7,7 @@ /datum/supply_pack/sci/coolanttank name = "Coolant tank crate" + desc = "Contains a coolant tank dispenser." contains = list(/obj/structure/reagent_dispensers/coolanttank) cost = 15 containertype = /obj/structure/closet/crate/large/aether @@ -14,6 +15,7 @@ /datum/supply_pack/sci/phoron name = "Phoron research crate" + desc = "Assorted supplies for phoron research. Requires Toxins Storage access." contains = list( /obj/item/tank/phoron = 3, /obj/item/tank/oxygen = 3, @@ -30,6 +32,7 @@ /datum/supply_pack/sci/exoticseeds name = "Exotic seeds crate" + desc = "A supply of exotic seeds, for xenobotanical and hydroponics use. Requires Hydroponics access." contains = list( /obj/item/seeds/replicapod = 2, /obj/item/seeds/ambrosiavulgarisseed = 2, @@ -45,6 +48,7 @@ /datum/supply_pack/sci/integrated_circuit_printer name = "Integrated circuit printer" + desc = "Two portable integrated circuit printers." contains = list(/obj/item/integrated_circuit_printer = 2) cost = 15 containertype = /obj/structure/closet/crate/ward @@ -52,13 +56,15 @@ /datum/supply_pack/sci/integrated_circuit_printer_upgrade name = "Integrated circuit printer upgrade - advanced designs" + desc = "An upgrade disk for integrated circuit printers that unlocks advanced circuit designs." contains = list(/obj/item/disk/integrated_circuit/upgrade/advanced) cost = 30 containertype = /obj/structure/closet/crate/ward - containername = "Integrated circuit crate" + containername = "Integrated circuit upgrade crate" /datum/supply_pack/sci/xenoarch name = "Xenoarchaeology Tech crate" + desc = "A set of standard xenoarchaeological supplies. Requires Xenoarchaeology access." contains = list( /obj/item/pickaxe/excavationdrill, /obj/item/xenoarch_multi_tool, @@ -92,6 +98,7 @@ /datum/supply_pack/sci/pred name = "Dangerous Predator crate" + desc = "Contains a dangerous predator. Requires Xenobiology access." cost = 40 containertype = /obj/structure/largecrate/animal/pred containername = "Dangerous Predator crate" @@ -99,6 +106,7 @@ /datum/supply_pack/sci/pred_doom name = "EXTREMELY Dangerous Predator crate" + desc = "Contains an extremely dangerous predator. Requires Xenobiology access." cost = 200 containertype = /obj/structure/largecrate/animal/dangerous containername = "EXTREMELY Dangerous Predator crate" @@ -107,6 +115,7 @@ /datum/supply_pack/sci/weretiger name = "Exotic Weretiger crate" + desc = "Contains a \'weretiger\'. EXTREMELY DANGEROUS. Requires Xenobiology access." cost = 55 containertype = /obj/structure/largecrate/animal/weretiger containername = "Weretiger crate" diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm index 1f2cf06f89e..68e61efccbb 100644 --- a/code/datums/supplypacks/security.dm +++ b/code/datums/supplypacks/security.dm @@ -14,6 +14,7 @@ /datum/supply_pack/randomised/security/armor name = "Armor - Security armor" + desc = "A set of standard security armor vests, chosen at random. Requires Armory access." num_contained = 5 contains = list( /obj/item/clothing/suit/storage/vest, @@ -35,6 +36,7 @@ /datum/supply_pack/security/carriersblack name = "Armor - Black modular armor" + desc = "A set of modular black armor." contains = list( /obj/item/clothing/suit/armor/pcarrier, /obj/item/clothing/accessory/armor/armguards, @@ -47,6 +49,7 @@ /datum/supply_pack/security/carriersblue name = "Armor - Blue modular armor" + desc = "A set of modular blue armor." contains = list( /obj/item/clothing/suit/armor/pcarrier/blue, /obj/item/clothing/accessory/armor/armguards/blue, @@ -59,6 +62,7 @@ /datum/supply_pack/security/carriersgreen name = "Armor - Green modular armor" + desc = "A set of modular green armor." contains = list( /obj/item/clothing/suit/armor/pcarrier/green, /obj/item/clothing/accessory/armor/armguards/green, @@ -71,6 +75,7 @@ /datum/supply_pack/security/carriersnavy name = "Armor - Navy modular armor" + desc = "A set of modular navy blue armor." contains = list( /obj/item/clothing/suit/armor/pcarrier/navy, /obj/item/clothing/accessory/armor/armguards/navy, @@ -83,6 +88,7 @@ /datum/supply_pack/security/carrierstan name = "Armor - Tan modular armor" + desc = "A set of modular tan armor." contains = list( /obj/item/clothing/suit/armor/pcarrier/tan, /obj/item/clothing/accessory/armor/armguards/tan, @@ -95,6 +101,7 @@ /datum/supply_pack/security/armorplate name = "Armor - Security light armor plate" + desc = "A lightweight armor insert plate." contains = list( /obj/item/clothing/accessory/armor/armorplate, ) @@ -104,6 +111,7 @@ /datum/supply_pack/security/armorplatestab name = "Armor - Security stab armor plate" + desc = "A lightweight stabproof armor insert plate." contains = list( /obj/item/clothing/accessory/armor/armorplate/stab, ) @@ -113,6 +121,7 @@ /datum/supply_pack/security/armorplatemedium name = "Armor - Security armor plate" + desc = "A mediumweight armor insert plate." contains = list( /obj/item/clothing/accessory/armor/armorplate/medium, ) @@ -122,6 +131,7 @@ /datum/supply_pack/security/armorplatetac name = "Armor - Security medium armor plate" + desc = "A tactical armor insert plate." contains = list( /obj/item/clothing/accessory/armor/armorplate/tactical, ) @@ -131,6 +141,7 @@ /datum/supply_pack/randomised/security/carriers name = "Armor - Surplus plate carriers" + desc = "A selection of random plate carriers." num_contained = 5 contains = list( /obj/item/clothing/suit/armor/pcarrier, @@ -146,6 +157,7 @@ /datum/supply_pack/security/carriertags name = "Armor - Plate carrier tags" + desc = "Various identifying tags for attachment to a plate carrier set." contains = list( /obj/item/clothing/accessory/armor/tag, /obj/item/clothing/accessory/armor/tag/nt, @@ -164,6 +176,7 @@ /datum/supply_pack/security/helmcovers name = "Armor - Helmet covers" + desc = "A set of helmet covers, for attachment to standard issue helmets." contains = list( /obj/item/clothing/accessory/armor/helmcover/blue, /obj/item/clothing/accessory/armor/helmcover/blue, @@ -180,6 +193,7 @@ /datum/supply_pack/randomised/security/armorplates name = "Armor - Surplus security armor plates" + desc = "A random selection of attachable armor insert plates." num_contained = 5 contains = list( /obj/item/clothing/accessory/armor/armorplate, @@ -199,6 +213,7 @@ /datum/supply_pack/randomised/security/carrierarms name = "Armor - Surplus security armguard attachments" + desc = "A random selection of attachable armor arm guards." num_contained = 5 contains = list( /obj/item/clothing/accessory/armor/armguards, @@ -216,6 +231,7 @@ /datum/supply_pack/randomised/security/carrierlegs name = "Armor - Surplus security legguard attachments" + desc = "A random selection of attachable armor leg guards." num_contained = 5 contains = list( /obj/item/clothing/accessory/armor/legguards, @@ -252,6 +268,7 @@ /datum/supply_pack/security/riot_gear name = "Gear - Riot" + desc = "A pack of riot control gear: less-lethal weapons, batons, shields, and handcuffs. Requires Armory access." contains = list( /obj/item/melee/baton = 3, /obj/item/shield/riot = 3, @@ -267,6 +284,7 @@ /datum/supply_pack/security/riot_armor name = "Armor - Riot" + desc = "A pack of riot suppression armor. Requires Armory access." contains = list( /obj/item/clothing/head/helmet/riot, /obj/item/clothing/suit/armor/riot, @@ -280,6 +298,7 @@ /datum/supply_pack/security/riot_plates name = "Armor - Riot plates" + desc = "A fully-equipped modular riot suppression suit. Requires Armory access." contains = list( /obj/item/clothing/head/helmet/riot, /obj/item/clothing/suit/armor/pcarrier/riot/full @@ -301,6 +320,7 @@ /datum/supply_pack/security/ablative_armor name = "Armor - Ablative" + desc = "A full set of laser-resistant armor. Requires Armory access." contains = list( /obj/item/clothing/head/helmet/laserproof, /obj/item/clothing/suit/armor/laserproof, @@ -314,6 +334,7 @@ /datum/supply_pack/security/ablative_plates name = "Armor - Ablative plates" + desc = "A fully-equipped modular laser-resistant armor suit. Requires Armory access." contains = list( /obj/item/clothing/head/helmet/laserproof, /obj/item/clothing/suit/armor/pcarrier/laserproof/full @@ -325,6 +346,7 @@ /datum/supply_pack/security/bullet_resistant_armor name = "Armor - Ballistic" + desc = "A full set of ballistic-resistant armor. Requires Armory access." contains = list( /obj/item/clothing/head/helmet/bulletproof, /obj/item/clothing/suit/armor/bulletproof, @@ -389,6 +411,7 @@ /datum/supply_pack/security/flexitac name = "Armor - Tactical Light" + desc = "A full set of light tactical armor. Requires Armory access." containertype = /obj/structure/closet/crate/secure/saare containername = "Tactical Light armor crate" cost = 75 @@ -412,6 +435,7 @@ /datum/supply_pack/security/securitybarriers name = "Misc - Security Barriers" + desc = "Four quick-deployment security barriers." contains = list(/obj/machinery/deployable/barrier = 4) cost = 20 containertype = /obj/structure/closet/crate/large/secure/heph @@ -419,6 +443,7 @@ /datum/supply_pack/security/securityshieldgen name = "Misc - Wall shield generators" + desc = "Four portable wall shield generators. Requires Teleporter access." contains = list(/obj/machinery/shieldwallgen = 4) cost = 20 containertype = /obj/structure/closet/crate/secure/heph @@ -427,6 +452,7 @@ /datum/supply_pack/randomised/security/holster name = "Gear - Holsters" + desc = "Four random holsters." num_contained = 4 contains = list( /obj/item/clothing/accessory/holster, @@ -441,6 +467,7 @@ /datum/supply_pack/security/extragear name = "Gear - Security surplus equipment" + desc = "An assortment of surplus security equipment." contains = list( /obj/item/storage/belt/security = 3, /obj/item/clothing/glasses/sunglasses/sechud = 3, @@ -454,6 +481,7 @@ /datum/supply_pack/security/detectivegear name = "Forensic - Investigation equipment" + desc = "Standard issue equipment for detectives and forensic investigators. Requires Forensics access." contains = list( /obj/item/storage/box/evidence = 2, /obj/item/clothing/suit/storage/vest/detective, @@ -482,6 +510,7 @@ /datum/supply_pack/security/detectivescan name = "Forensic - Scanning Equipment" + desc = "Additional specialist forensic equipment. Requires Forensics access." contains = list( /obj/item/mass_spectrometer, /obj/item/reagent_scanner, @@ -495,6 +524,7 @@ /datum/supply_pack/security/detectiveclothes name = "Forensic - Investigation apparel" + desc = "Apparel for the discerning detective (or forensics expert). Requires Forensics access." contains = list( /obj/item/clothing/under/det/black = 2, /obj/item/clothing/under/det/grey = 2, @@ -517,6 +547,7 @@ /datum/supply_pack/security/officergear name = "Gear - Officer equipment" + desc = "Standard issue equipment for security officers. Requires Brig access." contains = list( /obj/item/clothing/suit/storage/vest/officer, /obj/item/clothing/head/helmet, @@ -547,6 +578,7 @@ /datum/supply_pack/security/wardengear name = "Gear - " + JOB_WARDEN + " equipment" + desc = "Standard issue equipment for Wardens. Requires Armory access." contains = list( /obj/item/clothing/suit/storage/vest/warden, /obj/item/clothing/under/rank/warden, @@ -576,6 +608,7 @@ /datum/supply_pack/security/headofsecgear name = "Gear - " + JOB_HEAD_OF_SECURITY + " equipment" + desc = "Standard issue equipment for the Head of Security. Requires Head of Security access." contains = list( /obj/item/clothing/head/helmet/HoS, /obj/item/clothing/suit/storage/vest/hos, @@ -603,6 +636,7 @@ /datum/supply_pack/security/securityclothing name = "Misc - Security uniform red" + desc = "A set of standard red security uniforms." contains = list( /obj/item/storage/backpack/satchel/sec = 2, /obj/item/storage/backpack/security = 2, @@ -621,6 +655,7 @@ /datum/supply_pack/security/navybluesecurityclothing name = "Misc - Security uniform navy blue" + desc = "A set of alternative navy blue security uniforms." contains = list( /obj/item/storage/backpack/satchel/sec = 2, /obj/item/storage/backpack/security = 2, @@ -642,6 +677,7 @@ /datum/supply_pack/security/corporatesecurityclothing name = "Misc - Security uniform corporate" + desc = "A set of alternative corporate black-and-red security uniforms." contains = list( /obj/item/storage/backpack/satchel/sec = 2, /obj/item/storage/backpack/security = 2, @@ -662,6 +698,7 @@ /datum/supply_pack/security/biosuit name = "Gear - Security biohazard gear" + desc = "Three sets of security biohazard equipment. Requires Security access." contains = list( /obj/item/clothing/head/bio_hood/security = 3, /obj/item/clothing/under/rank/security = 3, @@ -679,6 +716,7 @@ /datum/supply_pack/security/posters name = "Gear - Morale Posters" + desc = "Six \'morale enhancement\' posters." contains = list( /obj/item/poster/nanotrasen = 6 ) @@ -708,21 +746,9 @@ one_access = TRUE */ -/datum/supply_pack/security/biosuit - contains = list( - /obj/item/clothing/head/bio_hood/security = 3, - /obj/item/clothing/under/rank/security = 3, - /obj/item/clothing/suit/bio_suit/security = 3, - /obj/item/clothing/shoes/white = 3, - /obj/item/clothing/mask/gas = 3, - /obj/item/tank/oxygen = 3, - /obj/item/clothing/gloves/sterile/latex, - /obj/item/storage/box/gloves - ) - cost = 40 - /datum/supply_pack/security/trackingimplant name = "Implants - Tracking" + desc = "A set of tracking implants. Requires Security access." contains = list( /obj/item/storage/box/trackimp = 1 ) @@ -733,6 +759,7 @@ /datum/supply_pack/security/chemicalimplant name = "Implants - Chemical" + desc = "A set of chemical implants. Requires Security access." contains = list( /obj/item/storage/box/chemimp = 1 ) diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm index b8bcd3f7ba5..a0b818d0b26 100644 --- a/code/datums/supplypacks/supply.dm +++ b/code/datums/supplypacks/supply.dm @@ -8,6 +8,7 @@ /datum/supply_pack/supply/food name = "Kitchen supply crate" + desc = "An assortment of standard kitchen supplies, fit for preparing a variety of basic meals." contains = list( /obj/item/reagent_containers/food/condiment/carton/flour = 6, /obj/item/reagent_containers/food/drinks/milk = 3, @@ -24,6 +25,7 @@ /datum/supply_pack/supply/fancyfood name = "Artisanal food delivery" + desc = "High-quality flour and sugar from luxury Centauri Foods brands." contains = list( /obj/item/reagent_containers/food/condiment/carton/flour/rustic = 6, /obj/item/reagent_containers/food/condiment/carton/sugar/rustic = 6 @@ -35,6 +37,7 @@ /datum/supply_pack/supply/toner name = "Toner cartridges" + desc = "A set of six toner cartridges, for use in printers." contains = list(/obj/item/toner = 6) cost = 10 containertype = /obj/structure/closet/crate/ummarcar @@ -42,6 +45,7 @@ /datum/supply_pack/supply/janitor name = "Janitorial supplies" + desc = "A set of standard-issue janitorial equipment." contains = list( /obj/item/reagent_containers/glass/bucket, /obj/item/mop, @@ -66,6 +70,7 @@ /datum/supply_pack/supply/shipping name = "Shipping supplies" + desc = "Equipment and supplies needed for shipping supplies." contains = list( /obj/fiftyspawner/cardboard, /obj/item/packageWrap = 4, @@ -94,12 +99,14 @@ /obj/item/paper_bin ) name = "Office supplies" + desc = "Standard issue office supplies." cost = 15 containertype = /obj/structure/closet/crate/ummarcar containername = "Office supplies crate" /datum/supply_pack/supply/sticky_notes name = "Stationery - sticky notes (50)" + desc = "An entire full-size crate for a single pad of sticky notes." contains = list(/obj/item/sticky_pad/random) cost = 10 containertype = /obj/structure/closet/crate/ummarcar @@ -107,6 +114,7 @@ /datum/supply_pack/supply/spare_pda name = "Spare PDAs" + desc = "Three spare PDAs." cost = 10 containertype = /obj/structure/closet/crate/thinktronic containername = "Spare PDA crate" @@ -114,6 +122,7 @@ /datum/supply_pack/supply/minergear name = "Shaft miner equipment" + desc = "Standard supplies for equipping miners. Requires Mining access." contains = list( /obj/item/storage/backpack/industrial, /obj/item/storage/backpack/satchel/eng, @@ -140,6 +149,7 @@ //plus we have the destination tagger /datum/supply_pack/supply/mule name = "Mulebot Crate" + desc = "A mulebot." contains = list() cost = 20 containertype = /obj/structure/largecrate/animal/mulebot @@ -148,16 +158,19 @@ /datum/supply_pack/supply/cargotrain name = "Cargo Train Tug" + desc = "A cargo train tug. Useless without at least one trolley. Can tow several though." contains = list(/obj/vehicle/train/engine) cost = 35 /datum/supply_pack/supply/cargotrailer name = "Cargo Train Trolley" + desc = "A cargo train trolley. Useless without a tug." contains = list(/obj/vehicle/train/trolley) cost = 15 /datum/supply_pack/explorergear name= JOB_EXPLORER + " gear" + desc = "Standard issue equipment for Explorers. Requires EVA and Exploration access." contains = list ( /obj/item/cataloguer, /obj/item/geiger, @@ -184,6 +197,7 @@ /datum/supply_pack/pilotgear name= JOB_PILOT + " gear" + desc = "Standard issue equipment for Pilots. Requires Pilot's access." contains = list ( /obj/item/storage/backpack/parachute, /obj/item/radio/headset/pilot, @@ -209,6 +223,7 @@ /datum/supply_pack/supply/foodcubes name = "Emergency food cubes" + desc = "A pack of emergency food cubes. Even less appetizing than nutripaste." contains = list( /obj/machinery/vending/emergencyfood/filled = 1) cost = 75 @@ -217,6 +232,7 @@ /datum/supply_pack/pathfindergear name= JOB_PATHFINDER + " gear" + desc = "Standard issue equipment for Away Team Pathfinders. Requires Exploration access." contains = list ( /obj/item/cataloguer/compact/pathfinder, /obj/item/geiger, diff --git a/code/datums/supplypacks/supplypacks.dm b/code/datums/supplypacks/supplypacks.dm index 19afa61980b..1afdda3a079 100644 --- a/code/datums/supplypacks/supplypacks.dm +++ b/code/datums/supplypacks/supplypacks.dm @@ -29,6 +29,7 @@ var/list/all_supply_groups = list("Atmospherics", /datum/supply_pack var/name = null + var/desc = "This is a placeholder description." //information on what the crate is/contains var/list/contains = list() // Typepaths, used to actually spawn the contents var/list/manifest = list() // Object names, used to compile manifests var/cost = null diff --git a/code/datums/supplypacks/vending_refills.dm b/code/datums/supplypacks/vending_refills.dm index e8cf8aa88bf..88841f60622 100644 --- a/code/datums/supplypacks/vending_refills.dm +++ b/code/datums/supplypacks/vending_refills.dm @@ -11,101 +11,121 @@ /datum/supply_pack/vending_refills/snack contains = list(/obj/item/refill_cartridge/autoname/food/snack) name = "Getmore Chocolate Corp Vendor Refill Cartridge" + desc = "A refill pack for a Getmore Chocolate Corp Vending Machine." cost = 10 /datum/supply_pack/vending_refills/fitness contains = list(/obj/item/refill_cartridge/autoname/food/fitness) name = "SweatMAX Vendor Refill Cartridge" + desc = "A refill pack for a SweatMAX Exercise Vending Machine." cost = 10 /datum/supply_pack/vending_refills/weeb contains = list(/obj/item/refill_cartridge/autoname/food/weeb) name = "Nippon-tan Vendor Refill Cartridge" + desc = "A refill pack for a Nippon-tan Food Vending Machine." cost = 10 /datum/supply_pack/vending_refills/sol contains = list(/obj/item/refill_cartridge/autoname/food/sol) name = "Sol-Snacks Vendor Refill Cartridge" + desc = "A refill pack for a Sol-Snacks Vending Machine." cost = 10 /datum/supply_pack/vending_refills/snix contains = list(/obj/item/refill_cartridge/autoname/food/snix) name = "Snix Vendor Refill Cartridge" + desc = "A refill pack for a Snix Snack Vending Machine." cost = 10 /datum/supply_pack/vending_refills/snlvend contains = list(/obj/item/refill_cartridge/autoname/food/snlvend) name = "Shop-n-Large Snacks Vendor Refill Cartridge" + desc = "A refill pack for a Shop-n-Large Snack Vending Machine." cost = 10 /datum/supply_pack/vending_refills/sovietvend contains = list(/obj/item/refill_cartridge/autoname/food/sovietvend) name = "Ration Station Vendor Refill Cartridge" + desc = "A refill pack for a Ration Station." cost = 10 /datum/supply_pack/vending_refills/altevian contains = list(/obj/item/refill_cartridge/autoname/food/altevian) name = "Altevian Vendor Refill Cartridge" + desc = "A refill pack for an Altevian Fleet Food Vending Machine." cost = 10 /datum/supply_pack/vending_refills/coffee contains = list(/obj/item/refill_cartridge/autoname/drink/coffee) name = "Hot Drinks Vendor Refill Cartridge" + desc = "A refill pack for a Hot Drinks Vending Machine." cost = 10 /datum/supply_pack/vending_refills/cola contains = list(/obj/item/refill_cartridge/autoname/drink/cola) name = "Robust Softdrinks Vendor Refill Cartridge" + desc = "A refill pack for a Robust Softdrinks Vending Machine." cost = 10 /datum/supply_pack/vending_refills/sovietsoda contains = list(/obj/item/refill_cartridge/autoname/drink/sovietsoda) name = "BODA Vendor Refill Cartridge" + desc = "A refill pack for a... BODA? vending machine." cost = 10 /datum/supply_pack/vending_refills/bepis contains = list(/obj/item/refill_cartridge/autoname/drink/bepis) name = "Bepis Softdrinks Vendor Refill Cartridge" + desc = "A refill pack for a Bepis Softdrinks vending machine." cost = 10 /datum/supply_pack/vending_refills/cigarette contains = list(/obj/item/refill_cartridge/autoname/cigarette) name = "Cigarette Vendor Refill Cartridge" + desc = "A refill pack for cigarette vending machine." cost = 15 /datum/supply_pack/vending_refills/wardrobe contains = list(/obj/item/refill_cartridge/multitype/wardrobe) name = "Wardrobe Vendor Refill Cartridge" + desc = "A feedstock refill pack for assorted wardrobe vending machines." cost = 10 /datum/supply_pack/vending_refills/giftvendor contains = list(/obj/item/refill_cartridge/autoname/giftvendor) name = "AlliCo Baubles and Confectionaries Vendor Refill Cartridge" + desc = "A refill pack for AlliCo's Baubles and Confectionaries vending machine." cost = 20 /datum/supply_pack/vending_refills/general_food contains = list(/obj/item/refill_cartridge/multitype/food = 5) name = "5-Pack Food Vendor Refill Cartridges" + desc = "A five pack of multipurpose food vending machine refills." cost = 75 /datum/supply_pack/vending_refills/general_drink contains = list(/obj/item/refill_cartridge/multitype/drink = 5) name = "5-Pack Drink Vendor Refill Cartridges" + desc = "A five pack of multipurpose drink vending machine refills." cost = 75 /datum/supply_pack/vending_refills/general_clothing contains = list(/obj/item/refill_cartridge/multitype/clothing = 5) name = "5-Pack Clothing Vendor Refill Cartridges" + desc = "A five pack of multipurpose clothing vending machine refills." cost = 75 /datum/supply_pack/vending_refills/general_technical contains = list(/obj/item/refill_cartridge/multitype/technical = 5) name = "5-Pack Technical Vendor Refill Cartridges" + desc = "A five pack of multipurpose technical equipment vending machine refills." cost = 75 /datum/supply_pack/vending_refills/general_specialty contains = list(/obj/item/refill_cartridge/multitype/specialty = 5) name = "5-Pack Specialty Vendor Refill Cartridges" + desc = "A five pack of specialist vending machine refills." cost = 150 /datum/supply_pack/randomised/vending_refills/value_pack // 5 random vendor-specific cartridges at lower average price. But why? @@ -127,4 +147,5 @@ /obj/item/refill_cartridge/autoname/technical/tool, /obj/item/refill_cartridge/autoname/giftvendor) name = "5-pack Extra-Cheap Vendor Refill Cartridges" + desc = "A five pack of random, discount, surplus vending machine refills." cost = 35 \ No newline at end of file diff --git a/code/datums/supplypacks/voidsuits.dm b/code/datums/supplypacks/voidsuits.dm index d61272fc603..d396eb77dec 100644 --- a/code/datums/supplypacks/voidsuits.dm +++ b/code/datums/supplypacks/voidsuits.dm @@ -9,6 +9,7 @@ /datum/supply_pack/voidsuits/atmos name = "Atmospheric voidsuits" + desc = "A pair of standard Atmospherics voidsuits. Requires Atmospherics access." contains = list( /obj/item/clothing/suit/space/void/atmos = 2, /obj/item/clothing/head/helmet/space/void/atmos = 2, @@ -23,6 +24,7 @@ /datum/supply_pack/voidsuits/atmos/alt name = "Heavy Duty Atmospheric voidsuits" + desc = "A pair of heavy duty Atmospherics voidsuits. Requires Atmospherics access." contains = list( /obj/item/clothing/suit/space/void/atmos/alt = 2, /obj/item/clothing/head/helmet/space/void/atmos/alt = 2, @@ -37,6 +39,7 @@ /datum/supply_pack/voidsuits/engineering name = "Engineering voidsuits" + desc = "A pair of standard Engineering voidsuits. Requires Engineering access." contains = list( /obj/item/clothing/suit/space/void/engineering = 2, /obj/item/clothing/head/helmet/space/void/engineering = 2, @@ -51,6 +54,7 @@ /datum/supply_pack/voidsuits/engineering/construction name = "Engineering Construction voidsuits" + desc = "A pair of Engineering construction voidsuits. Requires Engineering access." contains = list( /obj/item/clothing/suit/space/void/engineering/construction = 2, /obj/item/clothing/head/helmet/space/void/engineering/construction = 2, @@ -65,6 +69,7 @@ /datum/supply_pack/voidsuits/engineering/hazmat name = "Engineering Hazmat voidsuits" + desc = "A pair of Engineering hazmat voidsuits. Requires Engineering access." contains = list( /obj/item/clothing/suit/space/void/engineering/hazmat = 2, /obj/item/clothing/head/helmet/space/void/engineering/hazmat = 2, @@ -79,6 +84,7 @@ /datum/supply_pack/voidsuits/engineering/alt name = "Reinforced Engineering voidsuits" + desc = "A pair of reinforced Engineering voidsuits. Requires Engineering access." contains = list( /obj/item/clothing/suit/space/void/engineering/alt = 2, /obj/item/clothing/head/helmet/space/void/engineering/alt = 2, @@ -93,6 +99,7 @@ /datum/supply_pack/voidsuits/medical name = "Medical voidsuits" + desc = "A pair of standard Medical voidsuits. Requires Medical access." contains = list( /obj/item/clothing/suit/space/void/medical = 2, /obj/item/clothing/head/helmet/space/void/medical = 2, @@ -107,6 +114,7 @@ /datum/supply_pack/voidsuits/medical/emt name = "Medical EMT voidsuits" + desc = "A pair of Medical Emergency Response voidsuits. Requires Medical access." contains = list( /obj/item/clothing/suit/space/void/medical/emt = 2, /obj/item/clothing/head/helmet/space/void/medical/emt = 2, @@ -121,6 +129,7 @@ /datum/supply_pack/voidsuits/medical/bio name = "Medical Biohazard voidsuits" + desc = "A pair of Medical Biohazard Response voidsuits. Requires Medical access." contains = list( /obj/item/clothing/suit/space/void/medical/bio = 2, /obj/item/clothing/head/helmet/space/void/medical/bio = 2, @@ -135,6 +144,7 @@ /datum/supply_pack/voidsuits/medical/alt name = "Vey-Med Autoadaptive voidsuits (humanoid)" + desc = "A pair of advanced Vey-Med Adaptive Medical voidsuits. Requires Medical access, fits most humanoids." contains = list( /obj/item/clothing/suit/space/void/medical/alt = 2, /obj/item/clothing/head/helmet/space/void/medical/alt = 2, @@ -149,6 +159,7 @@ /datum/supply_pack/voidsuits/medical/alt/tesh name = "Vey-Med Autoadaptive voidsuits (teshari)" + desc = "A pair of advanced Vey-Med Adaptive Medical voidsuits. Requires Medical access, fits teshari only." contains = list( /obj/item/clothing/suit/space/void/medical/alt/tesh = 2, /obj/item/clothing/head/helmet/space/void/medical/alt/tesh = 2, @@ -160,6 +171,7 @@ /datum/supply_pack/voidsuits/security name = "Security voidsuits" + desc = "A pair of standard Security voidsuits." contains = list( /obj/item/clothing/suit/space/void/security = 2, /obj/item/clothing/head/helmet/space/void/security = 2, @@ -170,9 +182,11 @@ cost = 35 containertype = /obj/structure/closet/crate/secure/heph containername = "Security voidsuit crate" + access = access_armory /datum/supply_pack/voidsuits/security/crowd name = "Security Crowd Control voidsuits" + desc = "A pair of Security Crowd Control voidsuits. Requires Armory access." contains = list( /obj/item/clothing/suit/space/void/security/riot = 2, /obj/item/clothing/head/helmet/space/void/security/riot = 2, @@ -187,6 +201,7 @@ /datum/supply_pack/voidsuits/security/alt name = "Security EVA voidsuits" + desc = "A pair of Security EVA voidsuits. Requires Armory access." contains = list( /obj/item/clothing/suit/space/void/security/alt = 2, /obj/item/clothing/head/helmet/space/void/security/alt = 2, @@ -201,6 +216,7 @@ /datum/supply_pack/voidsuits/supply name = "Mining voidsuits" + desc = "A pair of standard Mining voidsuits. Requires Mining access." contains = list( /obj/item/clothing/suit/space/void/mining = 2, /obj/item/clothing/head/helmet/space/void/mining = 2, @@ -214,6 +230,7 @@ /datum/supply_pack/voidsuits/supply/alt name = "Frontier Mining voidsuits" + desc = "A pair of Frontier Mining voidsuits. Requires Mining access." contains = list( /obj/item/clothing/suit/space/void/mining/alt = 2, /obj/item/clothing/head/helmet/space/void/mining/alt = 2, @@ -227,6 +244,7 @@ /datum/supply_pack/voidsuits/zaddat name = "Zaddat Shroud" + desc = "A standard zaddat shroud - a special kind of hazardous encounter suit, used by the zaddat species." contains = list( /obj/item/clothing/suit/space/void/zaddat = 1, /obj/item/clothing/mask/gas/zaddat = 1 @@ -238,6 +256,7 @@ /datum/supply_pack/voidsuits/explorer name = JOB_EXPLORER + " voidsuits" + desc = "A pair of standard Exploration voidsuits. Requires EVA and Exploration access." contains = list( /obj/item/clothing/suit/space/void/exploration = 2, /obj/item/clothing/head/helmet/space/void/exploration = 2, @@ -252,6 +271,7 @@ /datum/supply_pack/voidsuits/explorer_medic name = JOB_FIELD_MEDIC + " voidsuits" + desc = "A pair of standard Field Medic voidsuits. Requires Medical access." contains = list( /obj/item/clothing/suit/space/void/exploration = 2, /obj/item/clothing/head/helmet/space/void/exploration = 2, @@ -266,6 +286,7 @@ /datum/supply_pack/voidsuits/pilot name = JOB_PILOT + " voidsuits" + desc = "A pair of standard Pilot's voidsuits. Requires Pilot's access." contains = list( /obj/item/clothing/suit/space/void/pilot = 1, /obj/item/clothing/head/helmet/space/void/pilot = 1, @@ -281,6 +302,7 @@ // Surplus! /datum/supply_pack/voidsuits/com_mining name = "Commonwealth mining voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Mining voidsuit. Requires Mining access." contains = list( /obj/item/clothing/suit/space/void/mining/alt2, /obj/item/clothing/head/helmet/space/void/mining/alt2 @@ -292,6 +314,7 @@ /datum/supply_pack/voidsuits/com_anomaly name = "Commonwealth anomaly suit" + desc = "A standard Commonwealth of Sol-Procyon Anomalous Materials Handling voidsuit. Requires Xenoarchaeology access." contains = list( /obj/item/clothing/suit/space/anomaly/alt, /obj/item/clothing/head/helmet/space/anomaly/alt @@ -303,6 +326,7 @@ /datum/supply_pack/voidsuits/com_riot name = "Commonwealth riot voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Riot Control voidsuit. Requires Armory access." contains = list( /obj/item/clothing/suit/space/void/security/riot/alt, /obj/item/clothing/head/helmet/space/void/security/riot/alt @@ -310,10 +334,11 @@ cost = 150 containertype = /obj/structure/closet/crate/secure name = "Commonwealth riot voidsuit crate" - access = access_brig + access = access_armory /datum/supply_pack/voidsuits/com_pilot name = "Commonwealth pilot voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Pilot's voidsuit. Requires Pilot's access." contains = list( /obj/item/clothing/suit/space/void/pilot/alt2, /obj/item/clothing/head/helmet/space/void/pilot/alt2 @@ -325,6 +350,7 @@ /datum/supply_pack/voidsuits/com_medical name = "Commonwealth medical voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Medical voidsuit. Requires Medical access." contains = list( /obj/item/clothing/suit/space/void/medical/alt2, /obj/item/clothing/head/helmet/space/void/medical/alt2 @@ -332,10 +358,11 @@ cost = 150 containertype = /obj/structure/closet/crate/secure name = "Commonwealth medical voidsuit crate" + access = access_medical /datum/supply_pack/voidsuits/com_explore - name = "Commonwealth exploration voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Exploration voidsuit. Requires EVA and Exploration access." contains = list( /obj/item/clothing/suit/space/void/exploration/alt2, /obj/item/clothing/head/helmet/space/void/exploration/alt2 @@ -347,6 +374,7 @@ /datum/supply_pack/voidsuits/com_engineer name = "Commonwealth engineering voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Engineering voidsuit. Requires Engineering access." contains = list( /obj/item/clothing/suit/space/void/engineering/alt2, /obj/item/clothing/head/helmet/space/void/engineering/alt2 @@ -358,6 +386,7 @@ /datum/supply_pack/voidsuits/com_atmos name = "Commonwealth atmos voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Atmospherics voidsuit. Requires Atmospherics access." contains = list( /obj/item/clothing/suit/space/void/atmos/alt2, /obj/item/clothing/head/helmet/space/void/atmos/alt2 @@ -369,6 +398,7 @@ /datum/supply_pack/voidsuits/com_captain name = "Commonwealth captain voidsuit" + desc = "A standard Commonwealth of Sol-Procyon Captain's voidsuit. Requires Captain's access." contains = list( /obj/item/clothing/suit/space/void/captain/alt, /obj/item/clothing/head/helmet/space/void/captain/alt @@ -380,6 +410,7 @@ /datum/supply_pack/voidsuits/csc_breaker name = "Shipbreaker's Industrial Suit (inc. jetpack)" + desc = "A Coyote Salvage Corporation Shipbreaker's voidsuit. Includes h-fuel jetpack." contains = list( /obj/item/clothing/suit/space/void/salvagecorp_shipbreaker, /obj/item/clothing/head/helmet/space/void/salvagecorp_shipbreaker, diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index 2a686e0a9a3..099e5c4d183 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -25,13 +25,6 @@ var/global/list/assigned_blocks[DNA_SE_LENGTH] var/global/list/datum/dna/gene/dna_genes[0] -///////////////// -// GENE DEFINES -///////////////// -// Skip checking if it's already active. -// Used for genes that check for value rather than a binary on/off. -#define GENE_ALWAYS_ACTIVATE 1 - /datum/dna // READ-ONLY, GETS OVERWRITTEN // DO NOT FUCK WITH THESE OR BYOND WILL EAT YOUR FACE diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm index 02495bbc490..2b3f820532c 100644 --- a/code/game/dna/dna2_domutcheck.dm +++ b/code/game/dna/dna2_domutcheck.dm @@ -3,7 +3,6 @@ // M: Mob to mess with // connected: Machine we're in, type unchecked so I doubt it's used beyond monkeying // flags: See below, bitfield. -#define MUTCHK_FORCED 1 /proc/domutcheck(var/mob/living/M, var/connected=null, var/flags=0) for(var/datum/dna/gene/gene in dna_genes) if(!M || !M.dna) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 2d4ca00ab48..962ef54d088 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -213,7 +213,7 @@ var/bloodData[0] if(H.vessel) - var/blood_volume = round(H.vessel.get_reagent_amount("blood")) + var/blood_volume = round(H.vessel.get_reagent_amount(REAGENT_ID_BLOOD)) var/blood_max = H.species.blood_volume bloodData["volume"] = blood_volume bloodData["percent"] = round(((blood_volume / blood_max)*100)) @@ -416,7 +416,7 @@ dat += "Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
" if(occupant.vessel) - var/blood_volume = round(occupant.vessel.get_reagent_amount("blood")) + var/blood_volume = round(occupant.vessel.get_reagent_amount(REAGENT_ID_BLOOD)) var/blood_max = occupant.species.blood_volume var/blood_percent = blood_volume / blood_max blood_percent *= 100 diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm index 8117cf4499a..10771088944 100644 --- a/code/game/machinery/computer/supply.dm +++ b/code/game/machinery/computer/supply.dm @@ -166,6 +166,7 @@ var/datum/supply_pack/P = SSsupply.supply_pack[pack_name] var/list/pack = list( "name" = P.name, + "desc" = P.desc, "cost" = P.cost, "group" = P.group, "contraband" = P.contraband, @@ -200,6 +201,7 @@ return FALSE var/list/payload = list( "name" = P.name, + "desc" = P.desc, "cost" = P.cost, "manifest" = uniqueList(P.manifest), "ref" = "\ref[P]", diff --git a/code/game/objects/items/devices/scanners/health.dm b/code/game/objects/items/devices/scanners/health.dm index 1dc29984d03..e7be367e7db 100644 --- a/code/game/objects/items/devices/scanners/health.dm +++ b/code/game/objects/items/devices/scanners/health.dm @@ -248,15 +248,15 @@ else dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.") dat += "
" - if(LAZYLEN(C.resistances)) + if(LAZYLEN(C.viruses)) for (var/datum/disease/virus in C.GetViruses()) if(virus.visibility_flags & HIDDEN_SCANNER || virus.visibility_flags & HIDDEN_PANDEMIC) continue - if(virus.discovered) - dat += span_warning("Warning: [virus.name] detected in subject's blood.") - dat += "
" - dat += span_warning("Severity: [virus.severity]") - dat += "
" + virus.discovered = TRUE + dat += span_warning("Warning: [virus.name] detected in subject's blood.") + dat += "
" + dat += span_warning("Severity: [virus.severity]") + dat += "
" if (M.getCloneLoss()) dat += span_warning("Subject appears to have been imperfectly cloned.") dat += "
" diff --git a/code/game/objects/items/weapons/wiki_manuals.dm b/code/game/objects/items/weapons/wiki_manuals.dm index 8ba6b68dab1..aaac07da1d0 100644 --- a/code/game/objects/items/weapons/wiki_manuals.dm +++ b/code/game/objects/items/weapons/wiki_manuals.dm @@ -143,3 +143,6 @@ title = "Engineering Textbook" page_link = "Guide_to_Engineering" + +#undef BOOK_WINDOW_BROWSE_SIZE +#undef WIKI_PAGE_IFRAME diff --git a/code/game/objects/structures/ghost_pods/event_vr.dm b/code/game/objects/structures/ghost_pods/event_vr.dm index fb46fe77b1c..701777d4d4e 100644 --- a/code/game/objects/structures/ghost_pods/event_vr.dm +++ b/code/game/objects/structures/ghost_pods/event_vr.dm @@ -108,7 +108,7 @@ //newPred.movement_cooldown = 0 // The "needless artificial speed cap" exists for a reason if(M.mind) M.mind.transfer_to(newPred) - to_chat(M, span_notice("You are " + span_bold(newPred) + ", somehow having gotten aboard the station in search of food. \ + to_chat(M, span_notice("You are " + span_bold("[newPred]") + ", somehow having gotten aboard the station in search of food. \ You are wary of environment around you, but you do feel rather peckish. Stick around dark, secluded places to avoid danger or, \ if you are cute enough, try to make friends with this place's inhabitants.")) to_chat(M, span_critical("Please be advised, this role is NOT AN ANTAGONIST.")) diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm index de613980d0a..04831c5bf30 100644 --- a/code/modules/admin/admin_verb_lists_vr.dm +++ b/code/modules/admin/admin_verb_lists_vr.dm @@ -565,7 +565,9 @@ var/list/admin_verbs_event_manager = list( /client/proc/toggle_spawning_with_recolour, /client/proc/start_vote, /client/proc/AdminCreateVirus, - /client/proc/ReleaseVirus + /client/proc/ReleaseVirus, + /client/proc/add_hidden_area, + /client/proc/remove_hidden_area ) /client/proc/add_admin_verbs() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 6b4bad16849..6e860e317ca 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -550,3 +550,35 @@ B.icon_state = "bottle-1" B.reagents.add_reagent(R.id, 60) B.name = "[B.name] of [R.name]" + +/client/proc/add_hidden_area() + set name = "Add Ghostsight Block Area" + set category = "Admin.Game" + + var/list/blocked_areas = list() + for(var/area/A in world) + if(!A.flag_check(AREA_BLOCK_GHOST_SIGHT)) + blocked_areas[A.name] = A + blocked_areas = sortTim(blocked_areas, GLOBAL_PROC_REF(cmp_text_asc)) + var/selected_area = tgui_input_list(usr, "Pick an area to hide from ghost", "Select Area to hide", blocked_areas) + var/area/A = blocked_areas[selected_area] + if(!A) + return + A.flags |= AREA_BLOCK_GHOST_SIGHT + ghostnet.addArea(A) + +/client/proc/remove_hidden_area() + set name = "Remove Ghostsight Block Area" + set category = "Admin.Game" + + var/list/blocked_areas = list() + for(var/area/A in world) + if(A.flag_check(AREA_BLOCK_GHOST_SIGHT)) + blocked_areas[A.name] = A + blocked_areas = sortTim(blocked_areas, GLOBAL_PROC_REF(cmp_text_asc)) + var/selected_area = tgui_input_list(usr, "Pick a from ghost hidden area to let them see it again", "Select Hidden Area", blocked_areas) + var/area/A = blocked_areas[selected_area] + if(!A) + return + A.flags &= ~(AREA_BLOCK_GHOST_SIGHT) + ghostnet.removeArea(A) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 8aea4d07dc5..e8afa5e6c50 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -338,7 +338,7 @@ return TRUE if("add_channel") var/selected_radio_channel = params["channel"] - if(selected_radio_channel == CHANNEL_SPECIAL_OPS) + if(selected_radio_channel == CHANNEL_SPECIAL_OPS || selected_radio_channel == CHANNEL_RESPONSE_TEAM) target.radio.centComm = 1 if(selected_radio_channel == CHANNEL_RAIDER) qdel(target.radio.keyslot) @@ -354,7 +354,7 @@ return TRUE if("rem_channel") var/selected_radio_channel = params["channel"] - if(selected_radio_channel == CHANNEL_SPECIAL_OPS) + if((selected_radio_channel == CHANNEL_SPECIAL_OPS || selected_radio_channel == CHANNEL_RESPONSE_TEAM) && !(target.module.channels[CHANNEL_SPECIAL_OPS] || target.module.channels[CHANNEL_RESPONSE_TEAM])) target.radio.centComm = 0 target.module.channels -= selected_radio_channel if((selected_radio_channel == CHANNEL_MERCENARY || selected_radio_channel == CHANNEL_RAIDER) && !(target.module.channels[CHANNEL_RAIDER] || target.module.channels[CHANNEL_MERCENARY])) diff --git a/code/modules/admin/player_effects.dm b/code/modules/admin/player_effects.dm index ce23bbd1529..5adc036044e 100644 --- a/code/modules/admin/player_effects.dm +++ b/code/modules/admin/player_effects.dm @@ -1,7 +1,7 @@ /client/proc/player_effects(var/mob/target in mob_list) set name = "Player Effects" set desc = "Modify a player character with various 'special treatments' from a list." - set category = "Fun" + set category = "Fun.Event Kit" if(!check_rights(R_FUN)) return diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 6dba8b8f05a..3ae320e490f 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -536,10 +536,9 @@ to_chat(wearer, span_danger("The suit optics flicker and die, leaving you with restricted vision.")) else if(offline_vision_restriction == 2) to_chat(wearer, span_danger("The suit optics drop out completely, drowning you in darkness.")) - if(!offline) - offline = 1 - else - if(offline) + if(!offline) + offline = 1 + else if (offline) offline = 0 if(istype(wearer) && !wearer.wearing_rig) wearer.wearing_rig = src diff --git a/code/modules/env_message/env_message.dm b/code/modules/env_message/env_message.dm index 69e1364b7b4..2ddc3c0afb0 100644 --- a/code/modules/env_message/env_message.dm +++ b/code/modules/env_message/env_message.dm @@ -124,7 +124,7 @@ var/global/list/env_messages = list() /client/proc/create_gm_message() set name = "Map Message - Create" set desc = "Create an ooc message in the environment for other players to see." - set category = "EventKit" + set category = "Fun.Event Kit" if(!check_rights(R_FUN)) return @@ -154,7 +154,7 @@ var/global/list/env_messages = list() /client/proc/remove_gm_message() set name = "Map Message - Remove" set desc = "Remove any env/map message." - set category = "EventKit" + set category = "Fun.Event Kit" if(!istype(src) || !src.ckey) return diff --git a/code/modules/eventkit/generic_objects/generic_item.dm b/code/modules/eventkit/generic_objects/generic_item.dm index a3f7e84ec06..fd1b7d9e200 100644 --- a/code/modules/eventkit/generic_objects/generic_item.dm +++ b/code/modules/eventkit/generic_objects/generic_item.dm @@ -90,7 +90,7 @@ return ..() /client/proc/generic_item() - set category = "EventKit" + set category = "Fun.Event Kit" set name = "Spawn Generic Item" set desc = "Spawn a customisable item with a range of different options." diff --git a/code/modules/eventkit/generic_objects/generic_structure.dm b/code/modules/eventkit/generic_objects/generic_structure.dm index 74610790674..83acb8ada0a 100644 --- a/code/modules/eventkit/generic_objects/generic_structure.dm +++ b/code/modules/eventkit/generic_objects/generic_structure.dm @@ -108,7 +108,7 @@ anchored = !anchored /client/proc/generic_structure() - set category = "EventKit" + set category = "Fun.Event Kit" set name = "Spawn Generic Structure" set desc = "Spawn a customisable structure with a range of different options." diff --git a/code/modules/examine/descriptions/telecomms.dm b/code/modules/examine/descriptions/telecomms.dm index 9096a6b1a43..7e86084daf7 100644 --- a/code/modules/examine/descriptions/telecomms.dm +++ b/code/modules/examine/descriptions/telecomms.dm @@ -11,7 +11,7 @@ Internet (sometimes referred to as the InterPlaNet), which was conceived and developed due to the limitations of the terrestrial Internet, mainly because \ the IP protocol was unsuitable for long range communications in space, due to the massive delays associated with lightspeed being unable to overcome \ the massive distances between planets in a timely manner. It was a store-and-forward network of smaller internets, distributed between various nodes, \ - and was designed to be error, fault, and delay tolerant. The first nodes were put into space around the time when colonization had begun, to service humanitys \ + and was designed to be error, fault, and delay tolerant. The first nodes were put into space around the time when colonization had begun, to service humanity's \ close holdings, such as Luna and Mars.
\
\ By 2104, the Interplanetary Internet had coverage within most of Sol, but the network of networks were limited by the speed of light, and due \ @@ -33,4 +33,4 @@ This node is privately owned and maintained by NanoTrasen, and allows the crew of the station to have access to the Exonet." description_antag = "An EMP will disable this device for a short period of time. A longer downage can be achieved by turning it off, or rigging \ - the APC it uses to turn off remotely, such as with a signaler in the right wire." \ No newline at end of file + the APC it uses to turn off remotely, such as with a signaler in the right wire." diff --git a/code/modules/food/drinkingglass/glass_boxes.dm b/code/modules/food/drinkingglass/glass_boxes.dm index 978f964bd77..f618e9bc696 100644 --- a/code/modules/food/drinkingglass/glass_boxes.dm +++ b/code/modules/food/drinkingglass/glass_boxes.dm @@ -18,7 +18,11 @@ /obj/item/storage/box/glasses name = "box of glasses" - can_hold = list(/obj/item/reagent_containers/food/drinks/glass2) + can_hold = list(/obj/item/reagent_containers/food/drinks/glass2, + /obj/item/reagent_containers/food/drinks/cup, + /obj/item/reagent_containers/food/drinks/tall, + /obj/item/reagent_containers/food/drinks/grande, + /obj/item/reagent_containers/food/drinks/venti) starts_with = list(/obj/item/reagent_containers/food/drinks/glass2 = 7) /obj/item/storage/box/glasses/square diff --git a/code/modules/food/food/cans.dm b/code/modules/food/food/cans.dm index 3220666e324..c6799bb3a55 100644 --- a/code/modules/food/food/cans.dm +++ b/code/modules/food/food/cans.dm @@ -62,7 +62,7 @@ /obj/item/reagent_containers/food/drinks/cans/thirteenloko/Initialize() . = ..() - reagents.add_reagent("thirteenloko", 30) + reagents.add_reagent(REAGENT_ID_THIRTEENLOKO, 30) /obj/item/reagent_containers/food/drinks/cans/dr_gibb name = "\improper Dr. Gibb" diff --git a/code/modules/food/food/condiment.dm b/code/modules/food/food/condiment.dm index 05f7d2cb243..419443ffcf5 100644 --- a/code/modules/food/food/condiment.dm +++ b/code/modules/food/food/condiment.dm @@ -107,7 +107,7 @@ icon_state = "oliveoil" center_of_mass = list("x"=16, "y"=6) if(REAGENT_ID_SUGAR) - name = "Sugar" + name = REAGENT_SUGAR desc = "Tastey space sugar!" center_of_mass = list("x"=16, "y"=6) if(REAGENT_ID_PEANUTBUTTER) diff --git a/code/modules/food/food/superfoods.dm b/code/modules/food/food/superfoods.dm index b8f3b41f1fc..042e084e654 100644 --- a/code/modules/food/food/superfoods.dm +++ b/code/modules/food/food/superfoods.dm @@ -2,7 +2,7 @@ /datum/recipe/chaoscake_layerone reagents = list(REAGENT_ID_FLOUR = 30,REAGENT_ID_MILK = 20, REAGENT_ID_SUGAR = 10, REAGENT_ID_EGG = 9) - fruit = list(PLANT_POISONBERRIES = 2, "cherries" = 2) + fruit = list(PLANT_POISONBERRIES = 2, PLANT_CHERRY = 2) items = list( /obj/item/reagent_containers/food/snacks/meat/, /obj/item/reagent_containers/food/snacks/meat/, @@ -13,7 +13,7 @@ /datum/recipe/chaoscake_layertwo reagents = list(REAGENT_ID_FLOUR = 30, REAGENT_ID_MILK = 20, REAGENT_ID_SUGAR = 10, REAGENT_ID_EGG = 9, ) - fruit = list(REAGENT_ID_VANILLA = 2, REAGENT_ID_BANANA = 2) + fruit = list(PLANT_VANILLA = 2, PLANT_BANANA = 2) items = list( /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough, @@ -214,7 +214,7 @@ reagents.add_reagent(REAGENT_ID_BLOOD, 20) reagents.add_reagent(REAGENT_ID_STOMACID, 10) reagents.add_reagent(REAGENT_ID_MUTAGEN, 4) - reagents.add_reagent("thirteenloko", 20) + reagents.add_reagent(REAGENT_ID_THIRTEENLOKO, 20) reagents.add_reagent(REAGENT_ID_HYPERZINE, 10) bitesize = 30 if(4) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index aed91592f12..674064903cb 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -84,7 +84,7 @@ I said no! result = /obj/item/reagent_containers/food/snacks/eggplantparm /datum/recipe/soylenviridians - fruit = list("soybeans" = 1) + fruit = list(PLANT_SOYBEAN = 1) reagents = list(REAGENT_ID_FLOUR = 10) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/soylenviridians @@ -451,14 +451,14 @@ I said no! result = /obj/item/reagent_containers/food/snacks/tossedsalad /datum/recipe/flowersalad - fruit = list("harebell" = 1, "poppy" = 1) + fruit = list(PLANT_HAREBELLS = 1, PLANT_POPPIES = 1) items = list( /obj/item/reagent_containers/food/snacks/roastedsunflower ) result = /obj/item/reagent_containers/food/snacks/flowerchildsalad /datum/recipe/rosesalad - fruit = list("harebell" = 1, PLANT_ROSE = 1) + fruit = list(PLANT_HAREBELLS = 1, PLANT_ROSE = 1) items = list( /obj/item/reagent_containers/food/snacks/roastedsunflower ) @@ -600,7 +600,7 @@ I said no! result = /obj/item/reagent_containers/food/snacks/benedict /datum/recipe/bakedbeans - fruit = list("soybeans" = 2) + fruit = list(PLANT_SOYBEAN = 2) reagents = list(REAGENT_ID_KETCHUP = 5) result = /obj/item/reagent_containers/food/snacks/beans @@ -725,7 +725,7 @@ I said no! result = /obj/item/reagent_containers/food/snacks/bagelraisin /datum/recipe/bagelpoppy - fruit = list("poppy" = 1) + fruit = list(PLANT_POPPIES = 1) reagents = list(REAGENT_ID_WATER = 5) items = list( /obj/item/reagent_containers/food/snacks/bun @@ -937,7 +937,7 @@ I said no! result = /obj/item/reagent_containers/food/snacks/burrito_cheese /datum/recipe/burrito_cheese_spicy - fruit = list(PLANT_CHILI = 2, "soybeans" = 1) + fruit = list(PLANT_CHILI = 2, PLANT_SOYBEAN = 1) items = list( /obj/item/reagent_containers/food/snacks/tortilla, /obj/item/reagent_containers/food/snacks/cheesewedge, @@ -946,7 +946,7 @@ I said no! result = /obj/item/reagent_containers/food/snacks/burrito_cheese_spicy /datum/recipe/burrito_hell - fruit = list("soybeans" = 1, PLANT_CHILI = 10) + fruit = list(PLANT_SOYBEAN = 1, PLANT_CHILI = 10) reagents = list(REAGENT_ID_SPACESPICE = 1) items = list( /obj/item/reagent_containers/food/snacks/tortilla, @@ -958,7 +958,7 @@ I said no! reagent_mix = RECIPE_REAGENT_REPLACE //Already hot sauce /datum/recipe/meatburrito - fruit = list("soybeans" = 1) + fruit = list(PLANT_SOYBEAN = 1) items = list( /obj/item/reagent_containers/food/snacks/tortilla, /obj/item/reagent_containers/food/snacks/cutlet, @@ -967,7 +967,7 @@ I said no! result = /obj/item/reagent_containers/food/snacks/meatburrito /datum/recipe/cheeseburrito - fruit = list("soybeans" = 1) + fruit = list(PLANT_SOYBEAN = 1) items = list( /obj/item/reagent_containers/food/snacks/tortilla, /obj/item/reagent_containers/food/snacks/cheesewedge, @@ -976,7 +976,7 @@ I said no! result = /obj/item/reagent_containers/food/snacks/cheeseburrito /datum/recipe/fuegoburrito - fruit = list("soybeans" = 1, PLANT_CHILI = 2) + fruit = list(PLANT_SOYBEAN = 1, PLANT_CHILI = 2) items = list( /obj/item/reagent_containers/food/snacks/tortilla ) diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index 4a43086ac99..1f2e284e296 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -161,7 +161,7 @@ result = /obj/item/storage/box/wings/bucket /datum/recipe/grub_pink - fruit = list("cherries" = 1) + fruit = list(PLANT_CHERRY = 1) items = list( /obj/item/reagent_containers/food/snacks/grub ) diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm index 59cc6f9445a..4ad7c33e834 100644 --- a/code/modules/food/recipes_oven.dm +++ b/code/modules/food/recipes_oven.dm @@ -234,7 +234,7 @@ /datum/recipe/cherrypie appliance = OVEN - fruit = list("cherries" = 1) + fruit = list(PLANT_CHERRY = 1) reagents = list(REAGENT_ID_SUGAR = 10) items = list( /obj/item/reagent_containers/food/snacks/sliceable/flatdough @@ -314,7 +314,7 @@ /datum/recipe/poppypretzel appliance = OVEN - fruit = list("poppy" = 1) + fruit = list(PLANT_POPPIES = 1) items = list(/obj/item/reagent_containers/food/snacks/dough) result = /obj/item/reagent_containers/food/snacks/poppypretzel result_quantity = 2 diff --git a/code/modules/games/cah_black_cards.dm b/code/modules/games/cah_black_cards.dm index c2ab79df12c..312d8f19d24 100644 --- a/code/modules/games/cah_black_cards.dm +++ b/code/modules/games/cah_black_cards.dm @@ -182,27 +182,27 @@ "Why do I hurt all over?", "In the seventh circle of Hell, sinners must endure _____ for all eternity.", "A successful job interview begins with a firm handshake and ends with _____.", - "Lovin� you is easy �cause you�re _____.", + "Lovin' you is easy 'cause you're _____.", "My life is ruled by a vicious cycle of _____ and _____.", "The blind date was going horribly until we discovered our shared interest in _____.", "_____. Awesome in theory, kind of a mess in practice.", - "I�m not like the rest of you. I�m too rich and busy for _____.", + "I'm not like the rest of you. I'm too rich and busy for _____.", "(Pick 2) _____: Hours of fun. Easy to use. Perfect for _____!", "What left this stain on my couch?", "Call the law offices of Goldstein & Goldstein, because no one should have to tolerate _____ in the workplace.", "(Pick 2) When you get right down to it, _____ is just _____.", "Turns out that _____ Man was neither the hero we needed nor wanted.", "As part of his daily regimen, Anderson Cooper sets aside 15 minutes for _____.", - "Money can�t buy me love, but it can buy me _____.", + "Money can't buy me love, but it can buy me _____.", "(Pick 2) With enough time and pressure, _____ will turn into _____.", "And what did you bring for show and tell?", "During high school I never really fit in until I found _____ club.", - "Hey baby, come back to my place and I�ll show you _____.", - "(Pick 2) After months of practice with _____, I think I�m finally ready for _____.", + "Hey baby, come back to my place and I'll show you _____.", + "(Pick 2) After months of practice with _____, I think I'm finally ready for _____.", "To prepare for his upcoming role, Daniel Day-Lewis immersed himself in the world of _____.", "Finally! A service that delivers _____ right to your door.", "My gym teacher got fired for adding _____ to the obstacle course.", "(Pick 2) Having problems with _____? Try _____!", - "As part of his contract, Prince won�t perform without _____ in his dressing room.", - "(Pick 2) Listen, son. If you want to get involved with _____, I won�t stop you. Just steer clear of _____." + "As part of his contract, Prince won't perform without _____ in his dressing room.", + "(Pick 2) Listen, son. If you want to get involved with _____, I won't stop you. Just steer clear of _____." ) diff --git a/code/modules/hydroponics/grown_sif.dm b/code/modules/hydroponics/grown_sif.dm index 60541ddc001..aa3e827ca7b 100644 --- a/code/modules/hydroponics/grown_sif.dm +++ b/code/modules/hydroponics/grown_sif.dm @@ -24,7 +24,7 @@ plantname = PLANT_SIFBULB /obj/item/reagent_containers/food/snacks/grown/sif/wabback - plantname = "wabback" + plantname = PLANT_WHITEWABBACK /obj/item/reagent_containers/food/snacks/grown/sif/blackwabback plantname = PLANT_BLACKWABBACK diff --git a/code/modules/hydroponics/seedtypes/cherries.dm b/code/modules/hydroponics/seedtypes/cherries.dm index 07df778a03d..41ea7b90262 100644 --- a/code/modules/hydroponics/seedtypes/cherries.dm +++ b/code/modules/hydroponics/seedtypes/cherries.dm @@ -3,7 +3,7 @@ seed_name = PLANT_CHERRY seed_noun = "pits" display_name = "cherry tree" - kitchen_tag = "cherries" + kitchen_tag = PLANT_CHERRY chems = list(REAGENT_ID_NUTRIMENT = list(1,15), REAGENT_ID_SUGAR = list(1,15), REAGENT_ID_CHERRYJELLY = list(10,15)) /datum/seed/cherries/New() diff --git a/code/modules/hydroponics/seedtypes/flowers.dm b/code/modules/hydroponics/seedtypes/flowers.dm index f32bcab65d6..e12503fb583 100644 --- a/code/modules/hydroponics/seedtypes/flowers.dm +++ b/code/modules/hydroponics/seedtypes/flowers.dm @@ -1,9 +1,9 @@ //Flowers/varieties /datum/seed/flower name = PLANT_HAREBELLS - seed_name = "harebell" + seed_name = PLANT_HAREBELLS display_name = PLANT_HAREBELLS - kitchen_tag = "harebell" + kitchen_tag = PLANT_HAREBELLS chems = list(REAGENT_ID_NUTRIMENT = list(1,20)) /datum/seed/flower/New() @@ -19,9 +19,9 @@ /datum/seed/flower/poppy name = PLANT_POPPIES - seed_name = "poppy" + seed_name = PLANT_POPPIES display_name = PLANT_POPPIES - kitchen_tag = "poppy" + kitchen_tag = PLANT_POPPIES chems = list(REAGENT_ID_NUTRIMENT = list(1,20), REAGENT_ID_BICARIDINE = list(1,10)) /datum/seed/flower/poppy/New() diff --git a/code/modules/hydroponics/seedtypes/soybean.dm b/code/modules/hydroponics/seedtypes/soybean.dm index c644618b677..a08515b57c6 100644 --- a/code/modules/hydroponics/seedtypes/soybean.dm +++ b/code/modules/hydroponics/seedtypes/soybean.dm @@ -1,8 +1,8 @@ /datum/seed/soybean name = PLANT_SOYBEAN seed_name = PLANT_SOYBEAN - display_name = "soybeans" - kitchen_tag = "soybeans" + display_name = PLANT_SOYBEAN + "s" + kitchen_tag = PLANT_SOYBEAN chems = list(REAGENT_ID_NUTRIMENT = list(1,20), REAGENT_ID_SOYMILK = list(10,20)) /datum/seed/soybean/New() diff --git a/code/modules/hydroponics/seedtypes/sugarcane.dm b/code/modules/hydroponics/seedtypes/sugarcane.dm index 90037fb5eb3..c566c409b35 100644 --- a/code/modules/hydroponics/seedtypes/sugarcane.dm +++ b/code/modules/hydroponics/seedtypes/sugarcane.dm @@ -1,8 +1,8 @@ /datum/seed/sugarcane name = PLANT_SUGARCANE seed_name = PLANT_SUGARCANE - display_name = "sugarcanes" - kitchen_tag = "sugarcanes" + display_name = PLANT_SUGARCANE + "s" + kitchen_tag = PLANT_SUGARCANE chems = list(REAGENT_ID_SUGAR = list(4,5)) /datum/seed/sugarcane/New() diff --git a/code/modules/hydroponics/seedtypes/wabback.dm b/code/modules/hydroponics/seedtypes/wabback.dm index ffc5dfe64e6..50323222bd5 100644 --- a/code/modules/hydroponics/seedtypes/wabback.dm +++ b/code/modules/hydroponics/seedtypes/wabback.dm @@ -5,7 +5,7 @@ seed_noun = "nodes" display_name = "white wabback" chems = list(REAGENT_ID_NUTRIMENT = list(1,10), REAGENT_ID_PROTEIN = list(1,5), REAGENT_ID_ENZYME = list(0,3)) - kitchen_tag = "wabback" + kitchen_tag = PLANT_WHITEWABBACK mutants = list(PLANT_BLACKWABBACK,PLANT_WILDWABBACK) has_item_product = /obj/item/stack/material/cloth diff --git a/code/modules/library/hardcode_library/fiction/PortedBooks.dm b/code/modules/library/hardcode_library/fiction/PortedBooks.dm index 0bc2ef98466..c52a4dfde9f 100644 --- a/code/modules/library/hardcode_library/fiction/PortedBooks.dm +++ b/code/modules/library/hardcode_library/fiction/PortedBooks.dm @@ -46,39 +46,39 @@ Category: Fiction

- Once upon a time there was a cat, but he wasn�t the kind of cat you�re thinking of. He was from the land of the fairies and his fur was completely unexpected colors. For starters, his nose was violet. His eyes were indigo, his ears were sky blue, his front paws were green, his body was yellow, his back paws were orange, and his tail was red. So he was a mysterious cat of seven colors arranged just like a rainbow. + Once upon a time there was a cat, but he wasn't the kind of cat you're thinking of. He was from the land of the fairies and his fur was completely unexpected colors. For starters, his nose was violet. His eyes were indigo, his ears were sky blue, his front paws were green, his body was yellow, his back paws were orange, and his tail was red. So he was a mysterious cat of seven colors arranged just like a rainbow.

That rainbow cat went on all sorts of strange adventures. The following story is one of them.

One day while the rainbow cat was sunbathing, he was suddenly vexed by boredom. That is to say, peace reigned in the land of the fairies, so nothing much was going on.

- It�s not good for my health to spend all my time idling about as if I haven�t got a care in the world, he thought. Perhaps I should head out and go on an adventure. + It's not good for my health to spend all my time idling about as if I haven't got a care in the world, he thought. Perhaps I should head out and go on an adventure.

So he put a note up on his door: "Dear Mr. Post Man, I will be gone for two or three days, so if any packages or letters come, please throw them down the chimney."

Then he packed a small bag, hung it on his tail, and wobbled off to the border of the land of the fairies. When he arrived, a thick cloud billowed up.

- "Well, maybe I�ll drop by the cloud people�s place," he chattered to himself, climbing up the cloud embankment. + "Well, maybe I'll drop by the cloud people's place," he chattered to himself, climbing up the cloud embankment.

- The people who lived in cloud country were quite pleasant folks. They didn�t do any work, in particular, but just because they were lazy didn�t mean that they didn�t find the world interesting. They all lived in splendid palaces, of which the ones you couldn�t see from Earth were far more beautiful than the ones you could. + The people who lived in cloud country were quite pleasant folks. They didn't do any work, in particular, but just because they were lazy didn't mean that they didn't find the world interesting. They all lived in splendid palaces, of which the ones you couldn't see from Earth were far more beautiful than the ones you could.

- The people of the cloud country sometimes drove pearly gray carriages or went sailing in lightweight boats. They lived in the sky, so the only person they had to fear was Sir Thunder. It�s quite understandable given that he was quick to anger -- he would make the sky rumble with his stomping and go around knocking down their houses. + The people of the cloud country sometimes drove pearly gray carriages or went sailing in lightweight boats. They lived in the sky, so the only person they had to fear was Sir Thunder. It's quite understandable given that he was quick to anger -- he would make the sky rumble with his stomping and go around knocking down their houses.

The people of the cloud country were very happy to have the rainbow cat visit and greeted him politely.

- "You�ve come at a great time," they said. "We�re having a big celebration at the Wind God�s house. His eldest son, North Wind is taking the daughter of the King of the Magic Isle as his wife." + "You've come at a great time," they said. "We're having a big celebration at the Wind God's house. His eldest son, North Wind is taking the daughter of the King of the Magic Isle as his wife."

The rainbow cat, having thought just such a thing might happen, was prepared with various goods in the bag on his tail.

It was a truly magnificent wedding.

- Everyone came. Even Comet showed up. You wouldn�t see Comet unless it was a very fine banquet indeed. + Everyone came. Even Comet showed up. You wouldn't see Comet unless it was a very fine banquet indeed.

- And Aurora came in the most indescribably beautiful garments of light. Of course, the bride�s parents, the King of Magic Isle and his Pearl Oyster Queen, were in attendance. + And Aurora came in the most indescribably beautiful garments of light. Of course, the bride's parents, the King of Magic Isle and his Pearl Oyster Queen, were in attendance.

- A feast was served and everyone was in a lively mood, having interesting conversations and drinking, when all of the sudden a swallow flew in. According to him, the giant Sir Thunder was rushing towards them at a tremendous speed. Apparently, when Trade Wind was hurrying by, he had tripped over sleeping Sir Thunder�s toes and Sir Thunder was furious. + A feast was served and everyone was in a lively mood, having interesting conversations and drinking, when all of the sudden a swallow flew in. According to him, the giant Sir Thunder was rushing towards them at a tremendous speed. Apparently, when Trade Wind was hurrying by, he had tripped over sleeping Sir Thunder's toes and Sir Thunder was furious.

- "What�ll we do?" everyone wondered at once, their faces pale. "The celebration will be ruined!" + "What'll we do?" everyone wondered at once, their faces pale. "The celebration will be ruined!"

All the guests and the master of the house began to scatter in a panic.

@@ -88,9 +88,9 @@ Category: Fiction

A moment later, he came back out.

- "I�ll find a way to keep Sir Thunder from coming here," said the cat. "So please continue the celebration as you were. I�ll go to him and see what I can do." + "I'll find a way to keep Sir Thunder from coming here," said the cat. "So please continue the celebration as you were. I'll go to him and see what I can do."

- Everyone was surprised at how brave and composed the rainbow cat was, but it sounded like their celebration wouldn�t be intruded upon partway through, so they were happy to gather and see off the cat as he raced towards the far-off rumblings of Sir Thunder. + Everyone was surprised at how brave and composed the rainbow cat was, but it sounded like their celebration wouldn't be intruded upon partway through, so they were happy to gather and see off the cat as he raced towards the far-off rumblings of Sir Thunder.

@@ -111,21 +111,21 @@ Category: Fiction

"Hey, who are you and what are you doing here?" he shouted.

- "Me? I�m the famed magician Mewpuu," replied the rainbow cat in a voice made to sound serious and important. "Take a look at my bag, here. There are magic seeds inside. Mr. Thunder, I�ve known about you for a while now. You�re quite famous." + "Me? I'm the famed magician Mewpuu," replied the rainbow cat in a voice made to sound serious and important. "Take a look at my bag, here. There are magic seeds inside. Mr. Thunder, I've known about you for a while now. You're quite famous."

Hearing this Sir Thunder felt a bit proud, but his foot was sore, so he was soon angry again.

- "Hrmph! I don�t think too highly of magicians. What can you do, anyways?" + "Hrmph! I don't think too highly of magicians. What can you do, anyways?"

"I can read your mind."

- "Oh? Is that so? Then try to guess what I�m thinking right now." + "Oh? Is that so? Then try to guess what I'm thinking right now."

- "A simple matter. You�re angry because your foot hurts and you want to catch the fellow who kicked your blister, right?" + "A simple matter. You're angry because your foot hurts and you want to catch the fellow who kicked your blister, right?"

The rainbow cat had heard all that from the swallow. Sir Thunder was flabbergasted.

- "Wow, that�s right. Will you teach me your magic?" + "Wow, that's right. Will you teach me your magic?"

"Sure I will. But first I must test your potential. Have a seat."

@@ -133,35 +133,35 @@ Category: Fiction

"Now then, try to tell me what I am thinking right now," said the cat.

- Sir Thunder the giant looked blankly at the cat�s face. He was not very bright. + Sir Thunder the giant looked blankly at the cat's face. He was not very bright.

"You must be thinking that I look pretty foolish sitting here."

"Excellent. Astonishing! You have more than enough talent to begin the training. You may be my brightest disciple yet."

- "Then maybe I�ll try one more time." Sir Thunder now thought himself terribly sharp. + "Then maybe I'll try one more time." Sir Thunder now thought himself terribly sharp.

- "Very well. Try to guess what I�m thinking." + "Very well. Try to guess what I'm thinking."

- Sir Thunder tried to look wise and peered at the cat�s face with his small, goofy eyes. + Sir Thunder tried to look wise and peered at the cat's face with his small, goofy eyes.

"Beef steak and onions," he announced abruptly.

- "Brilliant!" the cat feigned surprise and purposely lost his footing to land on his rump. "You�re exactly right. But how did you know?" + "Brilliant!" the cat feigned surprise and purposely lost his footing to land on his rump. "You're exactly right. But how did you know?"

"Oh, how do you say...? I guess it just came to me," replied Sir Thunder.

The cat assumed a serious air. "We must cultivate that fine talent of yours!"

- "How do we cultivate it?" asked Sir Thunder. He thought being able to read people�s minds was quite fun. + "How do we cultivate it?" asked Sir Thunder. He thought being able to read people's minds was quite fun.

- "It�s a cinch," said the cat, finally telling a blatant lie now that he thought he had the giant where he wanted him. "Go home and sleep for two or three hours. Then have some cake and sleep another two or three hours. Then, when you wake up, drink one cup of hot tea. But you have to be as still as possible or it won�t work. If you do all that, by tomorrow morning you�ll be reading people�s minds like it�s nothing." + "It's a cinch," said the cat, finally telling a blatant lie now that he thought he had the giant where he wanted him. "Go home and sleep for two or three hours. Then have some cake and sleep another two or three hours. Then, when you wake up, drink one cup of hot tea. But you have to be as still as possible or it won't work. If you do all that, by tomorrow morning you'll be reading people's minds like it's nothing."

- Sir Thunder wanted to go running straight home, but of course, he couldn�t forget his manners. "Thanks a lot. But Master Mewpuu, what can I offer you in return for teaching me this?" + Sir Thunder wanted to go running straight home, but of course, he couldn't forget his manners. "Thanks a lot. But Master Mewpuu, what can I offer you in return for teaching me this?"

- The rainbow cat thought a moment and said, "I�d like a tiny bit of lightning. Please give me just a smidge." + The rainbow cat thought a moment and said, "I'd like a tiny bit of lightning. Please give me just a smidge."

- Sir Thunder the giant put his hand in his pocket and said, "No problem. If that�s all, I have a bundle of it right here, so please take this. When you need it, just undo the string and the lightning will come out in a most amusing way." + Sir Thunder the giant put his hand in his pocket and said, "No problem. If that's all, I have a bundle of it right here, so please take this. When you need it, just undo the string and the lightning will come out in a most amusing way."

"Thank you very much."

@@ -285,7 +285,7 @@ Category: Fiction Those that I fight I do not hate
Those that I guard I do not love;
My country is Kiltartan Cross,
- My countrymen Kiltartan�s poor,
+ My countrymen Kiltartan's poor,
No likely end could bring them loss
Or leave them happier than before.
Nor law, nor duty bade me fight,
@@ -417,7 +417,7 @@ Category: Fiction Gas! GAS! Quick, boys! -- An ecstasy of fumbling
Fitting the clumsy helmets just in time,
But someone still was yelling out and stumbling
- And flound�ring like a man in fire or lime.--
+ And flound'ring like a man in fire or lime.--
Dim through the misty panes and thick green light,
As under a green sea, I saw him drowning.

In all my dreams before my helpless sight,
@@ -425,7 +425,7 @@ Category: Fiction If in some smothering dreams, you too could pace
Behind the wagon that we flung him in,
And watch the white eyes writhing in his face,
- His hanging face, like a devil�s sick of sin;
+ His hanging face, like a devil's sick of sin;
If you could hear, at every jolt, the blood
Come gargling from the froth-corrupted lungs,
Obscene as cancer, bitter as the cud
@@ -612,13 +612,13 @@ Category: Fiction
- "I wonder where they might be taking shelter from the storm. There is no where else to go in this wide, wide ocean. They must have sunk...��

+ "I wonder where they might be taking shelter from the storm. There is no where else to go in this wide, wide ocean. They must have sunk..."

The first fisherman had started to worry as the stormy night turned to complete darkness. Whenever he looked out, the waves of the ocean were winding into the skies above. He could see no sign of a boat. The first fisherman had been abandoned on the small, deserted island. He stood on the rocks of the shore and waited a full day for his friends to return. But perhaps because the winds from yesterday had made the ocean rough, the sun that day went down without any sign of the boat he had been waiting for.

Three days passed. The first fisherman had started to grow weak. Finally, after standing on the beach looking intently out over the ocean for three days, the boat carrying his friends cut through the waves and sailed towards the beach. It felt like a thousand years since he had seen them last. He could see that the second fisherman and the third fisherman were fine and moving about on the boat.

"Hey!" the first fisherman called out over the water, raising both of his hands high in the air. When he did, it looked like they too had thrown their hands in the air and called back. Only he couldn't hear their voices. Just then as the setting sun illuminated the tips of the waves, the two fishermen on the boat came into sight, red in the face.

"Ahh, here's a sight for sore eyes, my two friends! They made it back alive," said the first fisherman, warm tears of joy swelling in his eyes. Before long the boat was nearly on the sand.

"Hey!" the first fisherman called out, his hand in the air. He thought the other to fishermen would respond, but just as the pair were about to turn to the side and bring their boat in, they disappeared like a puff of smoke. The first fisherman was shocked.

- "A ghost ship!� + "A ghost ship!"

III
@@ -634,8 +634,8 @@ Category: Fiction
The first fisherman lost all hope, threw himself down on the sand and began to cry. His imagination was running wild, and his nightmares ran through the night. When he awoke the next morning his eyes were blood-shot and his heart was pounding. It was just past midday. The first fisherman raised his head and looked out over the sea only to spot the same boat in the distance. But it was the same as yesterday, a ghost ship, that had come to the island. For a moment he was relieved, and happiness danced in his chest, but in the next instant his body shook with fear.

- "Damn it. Are they trying to kill me?� said the first fisherman, as he started to lose his mind. The boat cut through the waves and came in closer and closer to the island. The first fisherman pulled out his pistol, aimed at the boat and pulled the trigger. But this time the boat wasn't a ghost, and it didn't disappear. Once the boat was docked at the beach, the two other fishermen scrambled up onto land.

- "Have you gone completely mad?�� yelled one, which was enough to snap the first fisherman back to reality.

+ "Damn it. Are they trying to kill me?" said the first fisherman, as he started to lose his mind. The boat cut through the waves and came in closer and closer to the island. The first fisherman pulled out his pistol, aimed at the boat and pulled the trigger. But this time the boat wasn't a ghost, and it didn't disappear. Once the boat was docked at the beach, the two other fishermen scrambled up onto land.

+ "Have you gone completely mad?" yelled one, which was enough to snap the first fisherman back to reality.

The first fisherman had gone completely mad. That night the winds had caused the boat to be pushed back against a nearby island. Once the waves had died down, the two fishermen went back to the island to rescue their friend. The two fishermen got their crazy friend back on the boat and returned to the mainland. The pair cared for their weakened friend, and through their care he was able to lose his madness and returned to how he used to be. And from there the three friends went on to be even better friends for a very long time. This story is still told in the harbors to the north where the head of that deserted island still pokes up from between those blue black waves.

IV
diff --git a/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm b/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm index 1a4716f36fc..b9953697ff4 100644 --- a/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm +++ b/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm @@ -83,14 +83,14 @@ CATEGORY: Fiction -
In the land of Margata, nothing is ever as it seems. There have been many verifiable cases of local bakers having a secret double life as DJs. The correlation between exposure to bread and wanting to scratch out some sick beats has never been quantified, quite possibly to science being illegal in the region. That didn't happen to be the case of a young boy named Gadroc, who was neither a baker nor a DJ. In fact, his story happens to have nothing to do with either of the two. Poor Gadroc was afflicted with a terrible curse. It had been that way ever since he was born, because a witch had cursed his mother for saying "Keep the change," when there was only one cent of change left. Gadroc�s curse was horrible, one that no human being should suffer through: he couldn�t look at butts. Whenever someone showed him a full moon, he transformed into a horrible beast with astoundingly fresh breath. Whenever this happened, he would always run to the nearest cornfield and begin uncontrollably eating corn. Why corn? Because magic, that�s why. That's just how it fucking works. Don't you know anything?
-
After coming home with corn stuck in his teeth for three days straight, and only having one more pair of pants that weren�t destroyed, Gadroc knew that he needed to do something about his curse. He went to the first person he could think of for help.
-
Carne was the town�s blacksmith. He wasn�t very wise, but he always spoke as though he was. It was for this reason that Gadroc often came to Carne for help, despite the fact that he could probably go to basically anyone else. The town beggar, who was constantly sitting in a puddle of his own pee, gave better advice than the blacksmith. Carne was the only one who knew about Gadroc�s affliction. No one else knew who was ravaging the town�s corn population, and riots had already broken out over the severe deficit in cornbread supply.
+
In the land of Margata, nothing is ever as it seems. There have been many verifiable cases of local bakers having a secret double life as DJs. The correlation between exposure to bread and wanting to scratch out some sick beats has never been quantified, quite possibly to science being illegal in the region. That didn't happen to be the case of a young boy named Gadroc, who was neither a baker nor a DJ. In fact, his story happens to have nothing to do with either of the two. Poor Gadroc was afflicted with a terrible curse. It had been that way ever since he was born, because a witch had cursed his mother for saying "Keep the change," when there was only one cent of change left. Gadroc's curse was horrible, one that no human being should suffer through: he couldn't look at butts. Whenever someone showed him a full moon, he transformed into a horrible beast with astoundingly fresh breath. Whenever this happened, he would always run to the nearest cornfield and begin uncontrollably eating corn. Why corn? Because magic, that's why. That's just how it fucking works. Don't you know anything?
+
After coming home with corn stuck in his teeth for three days straight, and only having one more pair of pants that weren't destroyed, Gadroc knew that he needed to do something about his curse. He went to the first person he could think of for help.
+
Carne was the town's blacksmith. He wasn't very wise, but he always spoke as though he was. It was for this reason that Gadroc often came to Carne for help, despite the fact that he could probably go to basically anyone else. The town beggar, who was constantly sitting in a puddle of his own pee, gave better advice than the blacksmith. Carne was the only one who knew about Gadroc's affliction. No one else knew who was ravaging the town's corn population, and riots had already broken out over the severe deficit in cornbread supply.
"Carne, you have to help me!" Gadroc shouted as he burst through the doors of the smithy. Carne was in the middle of forging a pair of iron gauntlets, and had his back turned to Gadroc. He did not turn around.
"Do you need my help? Or do you need my help to help yourself?" Carne said, spouting his signature wisdom.
"Yes. No. What? Did you get that from a fortune cookie?" replied Gadroc.
-
"Yes, actually." Carne turned around. He was loudly crunching on some fortune cookie and inexplicably wearing the gauntlets he was working on, still glowing red hot. He held up the fortune, but Gadroc didn�t have time to read it, as it immediately caught fire and fell into a pile of ashes on the floor.
-
Gadroc was concerned. "Doesn�t that... you know... hurt?"
+
"Yes, actually." Carne turned around. He was loudly crunching on some fortune cookie and inexplicably wearing the gauntlets he was working on, still glowing red hot. He held up the fortune, but Gadroc didn't have time to read it, as it immediately caught fire and fell into a pile of ashes on the floor.
+
Gadroc was concerned. "Doesn't that... you know... hurt?"
"Oh yes, extremely," Carne said with a smile. They both stared at each other for a moment.
@@ -105,27 +105,27 @@ CATEGORY: Fiction
"AHHHHHHHHHHHHHHHHHHHH!" screamed Carne. He flailed his arms around wildly until the gauntlets flew off. One of them flew across the room and hit a painting hanging on the wall. The painting was of our lord and president, Orcbama, and the gauntlet punched him in the face. The painting had a large scorch mark in the same place where the gauntlet had hit, indicating that this was a common occurrence.
"Anyways," Carne said casually, hands blistered and burnt, "What do you need to help me with?"
-
"That�s not what I... you know what, nevermind. Listen. I am sick and tired of this stupid werewolf bullshit! Corn used to be my favorite, and now I can�t stand it! I miss the days when I enjoyed cornbread..."
+
"That's not what I... you know what, nevermind. Listen. I am sick and tired of this stupid werewolf bullshit! Corn used to be my favorite, and now I can't stand it! I miss the days when I enjoyed cornbread..."
"Yeah, so do the townsfolk," the blacksmith replied.
"That's not helpful," Gadroc said, but Carne went on.
"I've always been more of a corn casserole kind of guy myself. Easier on the old gut. Y'know, when I was a boy-"
"Would you shut up and listen? We need to do something about this!"
-
"Right... What�s the problem again?" Gadroc smacked his forehead. He pointed to his own butt.
+
"Right... What's the problem again?" Gadroc smacked his forehead. He pointed to his own butt.
"Listen, son, if that's the way you're swingin', you don't have to play charades about it. Old Carne won't judge," Carne said.
-
"No, the werewolf problem!" Gadroc screamed. He fell to his knees, tears welling up in his eyes. He sniffed. "I just want to be able to look at butts. That�s all I want."
-
Carne walked up and put his gross, burnt hand on Gadroc�s shoulder. "It�s alright. I�ll help you with your problem."
+
"No, the werewolf problem!" Gadroc screamed. He fell to his knees, tears welling up in his eyes. He sniffed. "I just want to be able to look at butts. That's all I want."
+
Carne walked up and put his gross, burnt hand on Gadroc's shoulder. "It's alright. I'll help you with your problem."
Gadroc sniffed again. "Really?"
-
"Yes. Even if it means I�m helping myself to help you help me-"
-
"Carne, you�re not helping again."
+
"Yes. Even if it means I'm helping myself to help you help me-"
+
"Carne, you're not helping again."

-
CUT TO: Gadroc and Carne, scaling a mountain. Both men were equipped with the finest blades from Carne�s smithy. Gadroc was feeling a little indignant, considering Carne had only given him a foam sword. Carne had taken the only finished blade in the smithy.
-
"You see that up there?" Carne said to Gadroc as they climbed. "That�s the ancient temple whose name is really hard to pronounce."
+
CUT TO: Gadroc and Carne, scaling a mountain. Both men were equipped with the finest blades from Carne's smithy. Gadroc was feeling a little indignant, considering Carne had only given him a foam sword. Carne had taken the only finished blade in the smithy.
+
"You see that up there?" Carne said to Gadroc as they climbed. "That's the ancient temple whose name is really hard to pronounce."
"Really?" Gadroc asked. "What's it called?"
-
"I�d tell you, but it�s really hard to pronounce," explained the smith. He continued. "From what I understand, there�s a mystical artifact that can cure any curse. We�re going to use it to cure your werewolf problem."
-
"Why didn�t you tell me any of this on the way here? I�ve been following you up this mountain for hours with no idea of what we�re doing."
+
"I'd tell you, but it's really hard to pronounce," explained the smith. He continued. "From what I understand, there's a mystical artifact that can cure any curse. We're going to use it to cure your werewolf problem."
+
"Why didn't you tell me any of this on the way here? I've been following you up this mountain for hours with no idea of what we're doing."
"We took that part out in post. It was a really long and not very funny bit that didn't get much of a reaction out of anyone the first time this story was read out loud. It's a little trick the boys back home call 'the Director's Cut.'"
"Ah. That makes a lot of sense."
-
"Right?" The two laughed at that, looked at the camera for a moment, then back to each other. A laugh track played during this. It lasted for an uncomfortable amount of time. It was the kind of laughter that you think is about to die down, but then it kicks right back up again. There�s also that one lady who�s cackling like a hyena having a tea party with a witch. You try to unhear her, but you just keep noticing her. Why do sitcoms think laugh tracks add anything to the show? It doesn't. That shit just doesn�t sit right with me.
+
"Right?" The two laughed at that, looked at the camera for a moment, then back to each other. A laugh track played during this. It lasted for an uncomfortable amount of time. It was the kind of laughter that you think is about to die down, but then it kicks right back up again. There's also that one lady who's cackling like a hyena having a tea party with a witch. You try to unhear her, but you just keep noticing her. Why do sitcoms think laugh tracks add anything to the show? It doesn't. That shit just doesn't sit right with me.
"}, @@ -139,20 +139,20 @@ CATEGORY: Fiction
They continued to hike up the mountain. After a little while, they reached the temple. The door was guarded by two dog-men holding spears.
"Who are these guys?" Gadroc asked.
-
"Let me handle this," assured Carne. "How�s it going gentlemen?" The dog-men stepped closer and crossed their spears across the door.
-
"Listen boys, there�s no need for the attitude," said the smith. The dog-men began to growl at him.
-
Carne frowned. "Hey now, that�s just rude." The dog-men responded to this by shoulder-checking Carne, knocking him to the ground. Gadroc sighed and walked up to the armored, bipedal golden retriever.
-
"Who�s a good boy?" Gadroc said as he began to scratch the dog behind his cutie ears. The dog-man turned his head into Gadroc�s hand and began to pant.
-
Gadroc continued. "You are! You�re a good boy! Oh it�s you!" The dog barked as if to say, "YES IT IS ME, I AM THE GOOD BOY." The dog-man eventually got down on all fours, stomped around in a circle a bit, and promptly fell asleep. The other guard whimpered. He had felt that he had been a good boy too, and that he deserved scratchies just as much as his partner, if not more. He conveyed this to Gadroc in a single bark. Gadroc turned to him.
-
"Oh I know! You�ve been a good boy too!" He pet the guard for a little bit, then pulled an ear of corn out of his pocket.
+
"Let me handle this," assured Carne. "How's it going gentlemen?" The dog-men stepped closer and crossed their spears across the door.
+
"Listen boys, there's no need for the attitude," said the smith. The dog-men began to growl at him.
+
Carne frowned. "Hey now, that's just rude." The dog-men responded to this by shoulder-checking Carne, knocking him to the ground. Gadroc sighed and walked up to the armored, bipedal golden retriever.
+
"Who's a good boy?" Gadroc said as he began to scratch the dog behind his cutie ears. The dog-man turned his head into Gadroc's hand and began to pant.
+
Gadroc continued. "You are! You're a good boy! Oh it's you!" The dog barked as if to say, "YES IT IS ME, I AM THE GOOD BOY." The dog-man eventually got down on all fours, stomped around in a circle a bit, and promptly fell asleep. The other guard whimpered. He had felt that he had been a good boy too, and that he deserved scratchies just as much as his partner, if not more. He conveyed this to Gadroc in a single bark. Gadroc turned to him.
+
"Oh I know! You've been a good boy too!" He pet the guard for a little bit, then pulled an ear of corn out of his pocket.
"You want a treat boy?" Gadroc asked, as he held up the corn. The dog nodded violently and made a couple of attempts to nibble on the corn, but Gadroc pulled it away before he could.
"Go get it!" shouted Gadroc as he threw the corn down the mountain. The dog guard threw his spear to the side as he bounded after the corn bouncing down the path. Certain the guard had made it out of sight, Gadroc went to help Carne up.
"Where did you learn to deal with Canine-sapiens like that?" Carne asked.
"Well, if you think about it, werewolves are technically part dog. Plus, I just know a good boy when I see one."
The two stepped through the doors of the temple. At the end of the long, church-like room was a marble altar on a platform, with a set of stairs leading up to it. On the altar sat a small, simple wooden box. From above, a light fell gently on the box, giving it a soft, almost holy glow. The stained glass windows at the back of the room were arranged in such a way that they almost seemed to be pointing at the box. Many different flowers were arranged on either side of the box and at the foot of the altar.
-
"Call it a hunch," Carne said slowly, "but I think those flowers might be important somehow. I just get that feeling, I couldn�t tell you why."
-
"It�s the box that�s important, or whatever's in it," Gadroc said dryly. "The only thing that could make it more obvious is if a huge, luminescent sign dropped down with blinking arrows that read, �There�s probably a magic artifact in this box.�" Just then, a huge luminescent sign with blinking arrows that read, "There�s probably a magic artifact in this box." dropped down. Gadroc pinched the bridge of his nose.
-
"Do you think there might be a secret compartment in the altar? I bet that�s where the artifact is," pondered the smith.
+
"Call it a hunch," Carne said slowly, "but I think those flowers might be important somehow. I just get that feeling, I couldn't tell you why."
+
"It's the box that's important, or whatever's in it," Gadroc said dryly. "The only thing that could make it more obvious is if a huge, luminescent sign dropped down with blinking arrows that read, ‘There's probably a magic artifact in this box.'" Just then, a huge luminescent sign with blinking arrows that read, "There's probably a magic artifact in this box." dropped down. Gadroc pinched the bridge of his nose.
+
"Do you think there might be a secret compartment in the altar? I bet that's where the artifact is," pondered the smith.
"}, @@ -164,20 +164,20 @@ CATEGORY: Fiction -
"Welcome to the temple of Ivyechneyoveen Kah�al, my children," came a voice.
-
"Who said that?" Gadroc asked. "So that�s how it�s pronounced," mused Carne. A figure stepped out from behind a pillar. It was a robed dog-woman, an ancient St. Bernard.
+
"Welcome to the temple of Ivyechneyoveen Kah'al, my children," came a voice.
+
"Who said that?" Gadroc asked. "So that's how it's pronounced," mused Carne. A figure stepped out from behind a pillar. It was a robed dog-woman, an ancient St. Bernard.
The dog lady spoke again. "Have you come to give your thanks to Orcville?"
-
"I�m sorry, who?" Gadroc asked, confused.
+
"I'm sorry, who?" Gadroc asked, confused.
"Yes, Orcville Redenbacher. He blessed the world with his glorious popcorn and saved our souls."
"Wait," interrupted Carne. "Then why is it called the temple of Itchyville Cable?"
-
"Ivyechneyoveen Kah�al," corrected the priestess with a polite smile.
-
"Yeah, that�s what I said."
-
"I�d be glad to enlighten you, my child. It all started when..." The priestess lengthy explanation on the history and fine points of the religion of the dog people. It didn�t make the slightest bit of sense, though Carne did have a bit of a chuckle at the part where Orcville defeated the demon lord who wouldn't stop pretending to throw a ball to go fetch and then never actually throw the ball. Gadroc nearly fell asleep on his feet. He decided not to take part in the theological discussion and turned his attention back to the box. He walked up to the altar platform and climbed the steps. Carefully he opened the two small, wooden doors on the front of the box. Words could not describe his excitement. Inside the box was...
-
"A hot dog?" Gadroc asked aloud. He was thoroughly baffled. Inside the box was a golden hot dog that sparkled in the light. He couldn�t tell whether or not it had ketchup, mustard, or even relish on it; it was all gold.
+
"Ivyechneyoveen Kah'al," corrected the priestess with a polite smile.
+
"Yeah, that's what I said."
+
"I'd be glad to enlighten you, my child. It all started when..." The priestess lengthy explanation on the history and fine points of the religion of the dog people. It didn't make the slightest bit of sense, though Carne did have a bit of a chuckle at the part where Orcville defeated the demon lord who wouldn't stop pretending to throw a ball to go fetch and then never actually throw the ball. Gadroc nearly fell asleep on his feet. He decided not to take part in the theological discussion and turned his attention back to the box. He walked up to the altar platform and climbed the steps. Carefully he opened the two small, wooden doors on the front of the box. Words could not describe his excitement. Inside the box was...
+
"A hot dog?" Gadroc asked aloud. He was thoroughly baffled. Inside the box was a golden hot dog that sparkled in the light. He couldn't tell whether or not it had ketchup, mustard, or even relish on it; it was all gold.
"What are you doing with our sacred artifact?" shouted the dog priestess. Gadroc jumped, startled. He was too busy thinking about what gold tasted like.
"Uh... I need it... for... a friend," Gadroc lied, incredibly convincingly.
-
"You�d better not eat that because that�s totally not how a magic artifact shaped like a hot dog would work!" screeched the priestess.
-
Gadroc looked again at the supposed cure to all his problems. It was right there in his hands! "You�re not my mom!" he shouted, and promptly shoved the entire hot dog in his mouth and made a break for the door. Carne seemed impressed.
+
"You'd better not eat that because that's totally not how a magic artifact shaped like a hot dog would work!" screeched the priestess.
+
Gadroc looked again at the supposed cure to all his problems. It was right there in his hands! "You're not my mom!" he shouted, and promptly shoved the entire hot dog in his mouth and made a break for the door. Carne seemed impressed.
"Damn," he said. "Wish I could run that fast after stuffing an entire hot dog in my mouth. Last time I did that I got a hernia." He turned to the dog priestess.
"So, uh... wanna go grab some popcorn later?" The priestess slapped him across the face. "Right. I'll get goin', then. Sorry about the hot dog. We'll make you a new one." Carne began to head in Gadroc's direction.
@@ -192,12 +192,12 @@ CATEGORY: Fiction -
"Gadroc, where are you?" Carne shouted. "You can come out now, she didn�t follow us." Gadroc looked around and slowly stepped out from behind a tree that didn't even come close to consealing him whatsoever.
-
"I... I don�t know if it worked, Carne," the boy said nervously.
-
"Here," said the smith. He handed Gadroc a small, folded up piece of paper. Almost the exact moment Gadroc�s fingers touched it, Carne leapt like an orc-lympic death hurdle sprinter and combat rolled to take cover behind a nearby fallen tree. Gadroc unfolded the paper, hands trembling. On it was a pin up of a real buff orc dude. His shirtless body was ripped and glistening with sweat. He held a wrench and his jeans were not tight around his waist. Another shot showed him crouched down in front of a sink, which was confusing because plumbing was not very popular yet. The orc�s loose jeans were sagging down his pants, and they revealed the glowing, firm cheeks of his fine behind. A single tear rolled down Gadroc�s face.
+
"Gadroc, where are you?" Carne shouted. "You can come out now, she didn't follow us." Gadroc looked around and slowly stepped out from behind a tree that didn't even come close to consealing him whatsoever.
+
"I... I don't know if it worked, Carne," the boy said nervously.
+
"Here," said the smith. He handed Gadroc a small, folded up piece of paper. Almost the exact moment Gadroc's fingers touched it, Carne leapt like an orc-lympic death hurdle sprinter and combat rolled to take cover behind a nearby fallen tree. Gadroc unfolded the paper, hands trembling. On it was a pin up of a real buff orc dude. His shirtless body was ripped and glistening with sweat. He held a wrench and his jeans were not tight around his waist. Another shot showed him crouched down in front of a sink, which was confusing because plumbing was not very popular yet. The orc's loose jeans were sagging down his pants, and they revealed the glowing, firm cheeks of his fine behind. A single tear rolled down Gadroc's face.
"Carne," he sniffed. "It worked." Carne came out from behind the log and wiped the sweat from his brow with a "Phew!"
-
"It�s beautiful, Carne," Gadroc went on.
-
"Keep it, kid," the blacksmith said with a smile. "You need it more than I do. Let�s go home."
+
"It's beautiful, Carne," Gadroc went on.
+
"Keep it, kid," the blacksmith said with a smile. "You need it more than I do. Let's go home."
Gadroc had gold poop for a week.


diff --git a/code/modules/library/hardcode_library/reference/Schnayy.dm b/code/modules/library/hardcode_library/reference/Schnayy.dm index d3edc453fc0..43a758bcf53 100644 --- a/code/modules/library/hardcode_library/reference/Schnayy.dm +++ b/code/modules/library/hardcode_library/reference/Schnayy.dm @@ -49,7 +49,7 @@ CATEGORY: Reference
Phoron research and study is a vital subject of research -- it has been a pillar of humanity's progress, a staple of the technology that has shaped our society. To work on expanding our knowledge and shape our future in the cosmos is a noble cause, but it should be done with caution.

- This is not to speak on safety in your lab, but the consequences of action. Many times has man created the unthinkable, and many times we have not been prepared for such discoveries. We should not censor ourselves from advancement, but we should shape the world to be ready for what comes with it � and know that it is an invariable consequence there will be those who seek to abuse it. + This is not to speak on safety in your lab, but the consequences of action. Many times has man created the unthinkable, and many times we have not been prepared for such discoveries. We should not censor ourselves from advancement, but we should shape the world to be ready for what comes with it - and know that it is an invariable consequence there will be those who seek to abuse it.

You cannot take back what you give to the world. diff --git a/code/modules/lore_codex/lore_data/important_locations.dm b/code/modules/lore_codex/lore_data/important_locations.dm index aebe6e8175b..fdb49c2dc77 100644 --- a/code/modules/lore_codex/lore_data/important_locations.dm +++ b/code/modules/lore_codex/lore_data/important_locations.dm @@ -42,13 +42,13 @@ name = "Firnir (Terrestrial Planet)" keywords += list("Firnir") data = "Firnir is the first planet of Vir, tidally locked to it, and having temperatures in excess of 570 degrees \ - kelvin (299C) on the day side has caused this planet to go mostly ignored." + kelvin (299°C) on the day side has caused this planet to go mostly ignored." /datum/lore/codex/page/tyr/add_content() name = "Tyr (Terrestrial Planet)" keywords += list("Tyr") data = "The second closest planet to [quick_link("Vir")], this planet has a high concentration of minerals inside its crust, as well as active volcanism and plate tectonics. \ - The temperature on the surface can reach up to 405 degrees kelvin (132C), which has deterred most people from the planet, except for two [quick_link("TSC", "TSCs")], \ + The temperature on the surface can reach up to 405 degrees kelvin (132°C), which has deterred most people from the planet, except for two [quick_link("TSC", "TSCs")], \ Greyson Manufactories and [quick_link("Xion Manufacturing Group")]. In orbit, the two companies each have a space station, used to coordinate and \ control their stations on the surface without having to suffer the intense heat. Xion's station also doubles as a control and oversight facility for their \ [quick_link("drones","autonomous mining drones")].\ @@ -98,7 +98,7 @@ /datum/lore/codex/page/magni/add_content() name = "Magni (Terrestrial Planet)" keywords += list("Magni") - data = "Outside of the habitable zone, the barren world Magni is generally at 202 kelvin (-71C)." + data = "Outside of the habitable zone, the barren world Magni is generally at 202 kelvin (-71°C)." /datum/lore/codex/page/kara/add_content() name = "Kara (Gas Giant)" @@ -107,7 +107,7 @@ to be the remnants of a much larger moon that was ripped apart by Kara, long ago. Curerntly, a large number of these \ asteroids are being used by many different businesses, and some governmental infrastructure has been built. The most prominent \ asteroid installation is the [quick_link("Northern Star", "NCS Northern Star")], a general purpose colony owned and operated by \ - [quick_link("NanoTrasen")]. The mid-atmospheric temperature of the gas giant averages to around 150 kelvin (-108C)." + [quick_link("NanoTrasen")]. The mid-atmospheric temperature of the gas giant averages to around 150 kelvin (-108°C)." /datum/lore/codex/page/northern_star/add_content() name = "Northern Star (Artificial Satellite)" @@ -126,4 +126,4 @@ /datum/lore/codex/page/rota/add_content() name = "Rota (Gas Giant)" keywords += list("Rota") - data = "An ice giant, with a beautiful ring system circling it. The average temperature for it is 165 kelvin (-157C)." \ No newline at end of file + data = "An ice giant, with a beautiful ring system circling it. The average temperature for it is 165 kelvin (-157°C)." diff --git a/code/modules/lore_codex/lore_data/species.dm b/code/modules/lore_codex/lore_data/species.dm index 0ce44f016bd..c24453a1125 100644 --- a/code/modules/lore_codex/lore_data/species.dm +++ b/code/modules/lore_codex/lore_data/species.dm @@ -132,12 +132,12 @@ name = "Promethean" keywords += list("slime", "promethean") data = "Prometheans are an artificial species created by the Humans sometime in the 2540s, aboard the NRS Prometheus, while experimenting with \ - the Aetolian giant slime, or Macrolimus vulgaris. They themselves are considered sapient beings and given protection under prior Human legislation, \ - though often only appear to serve as aides or inferior positions when kept as staff. Aetolus, the official Home world of the Prometheans and giant slime, \ - is an obnoxiously warm, humid planet requiring structures to be built within large, atmospherically-filtered tent-like domes. \ - Prometheans take on vague visual and vocal features of the species they cohabitate with, sharing their predecessors tendency to mimic nearby entities, \ + the Aetolian giant slime, or 'Macrolimus vulgaris'. They themselves are considered sapient beings and given protection under prior Human legislation, \ + though often only appear to serve as aides or inferior positions when kept as staff. Aetolus, the official 'Home world' of the Prometheans and giant slime, \ + is an obnoxiously warm, humid planet requiring structures to be built within large, atmospherically-filtered 'tent-like' domes. \ + Prometheans take on vague visual and vocal features of the species they cohabitate with, sharing their predecessors' tendency to mimic nearby entities, \ though in physical form additionally; this is seemingly more important in their own development, as well. Despite their taken appearances, \ - there is no known existence of a divergence between a biologically male or female form of the species, leading most to believe they are in fact asexual, \ + there is no known existence of a divergence between a biologically 'male' or 'female' form of the species, leading most to believe they are in fact asexual, \ as their predecessors are." // Vatborn Lore @@ -155,7 +155,7 @@ data = "A Positronic being, is an individual with a positronic brain, manufactured \ and fostered amongst organic life. Positronic brains enjoy the same legal status as a human in [quick_link("SolGov")] space, although discrimination is \ still prevalent, and are considered sapient on all accounts. They can be considered the \"synthetic species\". Half-developed and \ - half-discovered in the 2280s by a human black lab studying alien artifacts, the first positronic brain was an inch-wide cube \ + half-discovered in the 2280's by a human black lab studying alien artifacts, the first positronic brain was an inch-wide cube \ of an palladium-iridium alloy, nano-etched with billions upon billions of conduits and connections. Upon activation, \ hard-booted with an emitter laser, the brain issued a single sentence before the neural pathways collapsed and \ it became an inert lump of platinum: \"What is my purpose?\"." @@ -218,7 +218,7 @@ keywords = list("fork") data = "A \"codeline\" is a single type of drone. A codeline represents a significant degree of effort from sapient programmers to realize, as well as \ a substantial amount of regulatory fees levied by the government. Each copy of a codeline is called a \"fork\", whether the fork is created from the \ - codelines initial state or from a fully realized individual of that codeline. The degree of similarity between forks of the same codeline varies \ + codeline's initial state or from a fully realized individual of that codeline. The degree of similarity between forks of the same codeline varies \ on the intelligence of the codeline, with low-level forks being virtually identical to high-level forks being no more similar than family members." /datum/lore/codex/page/emergence @@ -234,8 +234,8 @@ keywords = list("SG-EIO", "SG EIO", "EIO", "Intelligence Oversight") data = "SG-EIO, usually just called EIO, is the organization charged with monitoring existing AI for any threat of dangerous emergence. Their perception in the \ public eye is generally positive, with all but the hardest-line Mercurial humans in favor of protection from the dangers of Seed AI. Some positronic rights \ - groups bristle at the EIOs human-centric viewpoint, but most are glad to have a different boogeyman in the form of drone intelligences. The tiny population \ - of A-class drones are generally frightened of the EIOs total power over them." + groups bristle at the EIO's human-centric viewpoint, but most are glad to have a different boogeyman in the form of drone intelligences. The tiny population \ + of A-class drones are generally frightened of the EIO's total power over them." /datum/lore/codex/category/drone_classes name = "Drone Classifications" @@ -293,7 +293,7 @@ name = "A Class" keywords += list("AGI") data = "A-class drones are also referred to as AGI. A-class drones are capable of performing in many contexts and can learn to solve problems from \ - first principles, with an incredible potential for growth and emergent behavior. However, some abilities fall short of humans, usually those relating \ + first principles, with an incredible potential for growth and emergent behavior. However, some abilities fall short of humans', usually those relating \ to socialization, and they often act in ways that are strange or distressing. There is a small but growing lobby of support for the personhood of A-class \ drones. The cost of initializing an A-class drone is absolutely massive, as they will be monitored by [quick_link("EIO")] forever. The auditing cost of an A-class drone \ codeline is even more staggering, making development and deployment of AGI limited to research, highly difficult and high-throughput operations like habitat \ @@ -305,7 +305,7 @@ data = "AA-class drones do not yet exist. Hypothetically, they are equal to living in every respect, with psychology that would not be abnormal in a baseline \ human. The type of AA-class drone most frequently discussed is a hypothetical digitized consciousness of a human, a human brain that is somehow translated into \ software. Some argue that a small fraction of the A-class drones would more properly be considered AA, but as of yet no action has been taken. Some Mercurials \ - will jokingly refer to themselves or other organics and positronics as AAs. Research into brain uploading is heavily regulated and generally illegal." + will jokingly refer to themselves or other organics and positronics as AA's. Research into brain uploading is heavily regulated and generally illegal." /datum/lore/codex/page/class_aaa name = "AAA Class" diff --git a/code/modules/lore_codex/lore_data_vr/history.dm b/code/modules/lore_codex/lore_data_vr/history.dm index a17ab46b2ee..a52dec57744 100644 --- a/code/modules/lore_codex/lore_data_vr/history.dm +++ b/code/modules/lore_codex/lore_data_vr/history.dm @@ -1,6 +1,6 @@ /datum/lore/codex/category/history name = "Human History" - data = "The author of this guide wishes to offer their gratitude to NanoTrasen historian, Emir Bodoroczki for his assistance in condensing humanitys history!" + data = "The author of this guide wishes to offer their gratitude to NanoTrasen historian, Emir Bodoroczki for his assistance in condensing humanity's history!" children = list( /datum/lore/codex/page/commonwealthbirth, /datum/lore/codex/page/eagerhumanity, @@ -20,7 +20,7 @@ However, even without our stutter drives - we spread. With the aid of genetic engineering, we conquered space.\ Despite wars, despite traitors upon Mars who fled to their holdouts in the Ares Confederacy once the speed of light\ no longer tethered us - we thrived. By providence, our efforts were rewarded: phoron.\ - Out in the Oort cloud, beyond our reach if not for our forefathers ambition despite their scarce resources and primitive technology\ + Out in the Oort cloud, beyond our reach if not for our forefather's ambition despite their scarce resources and primitive technology\ - phoron awaited us." /datum/lore/codex/page/eagerhumanity/add_content() @@ -37,8 +37,8 @@ infecting our impressionable youth out on the frontiers, far from the wisdom of the core.\

\ As wars peppered our history, as have they became a fact of life once more\ - - rebellious, traitorous movements. World rejecting, foolishly, the yet-infant Commonwealths protection.\ - As expected - most failed to maintain their self-realisation - and made amends for their prodigal ways.\ + - rebellious, traitorous movements. World rejecting, foolishly, the yet-infant Commonwealth's protection.\ + As expected - most failed to maintain their 'self-realisation' - and made amends for their prodigal ways.\

\ All, but those of the Elysian Colonies. Too far from the core, and the core itself was too tumultuous \ - they broke away. One needs but look at worlds like Infernum \ @@ -68,7 +68,7 @@ Our war was costly - too costly, perhaps - but we persevered as Humanity is wont to do. \ Forty years of suffering destroyed much of what we had achieved.\ But in that forty years did our megacorporations step forth, offering aid where governments faltered.\ - Where public sciences glacial pace would have cost us lives, forever lost - NanoTrasens medical research cheated death!\ + Where public science's glacial pace would have cost us lives, forever lost - NanoTrasen's medical research cheated death!\ Where Senate-governed mining operations would have wasted precious phoron to corruption \ - NanoTrasen stepped up and delivered twice what our armies needed! \

\ diff --git a/code/modules/lore_codex/lore_data_vr/species.dm b/code/modules/lore_codex/lore_data_vr/species.dm index 35ac7301fe0..85e61c51472 100644 --- a/code/modules/lore_codex/lore_data_vr/species.dm +++ b/code/modules/lore_codex/lore_data_vr/species.dm @@ -66,7 +66,7 @@ /datum/lore/codex/page/rapala/add_content() name ="Rapala" keywords = list("Rapala") - data = "The Rapala, formally Rapala-Unathi are a vassal species of the Unathi \ + data = "The Rapala, formally 'Rapala-Unathi' are a vassal species of the Unathi \ in form of winged Humanoids. While they share a similar outwards appearance with humans, \ they have a much more complex system of sexual genetics, as well superior 3D awareness. \ The Rapala act as emissaries, diplomats and spies for their overlords, although it is an open \ @@ -133,7 +133,7 @@ name = "Vulpkanin" keywords += list("Vulpkanin") data = "The Vulpkanin are the remnants of an ancient precursor which resided in the Coreward Periphery \ - 3000 to 4000 years ago, residing on a planet called Altam. Vulpkanin diverged from the precursors due \ + 3000 to 4000 years ago, residing on a planet called 'Altam'. Vulpkanin diverged from the precursors due \ to heavy isolation after the fall, presumably due to being a freshly found colony. A lack of material support \ regressed their technology to pre-industrial standards, from which they had to recover from in long and hard years. At the point \ of discovery by human explorers, they have formed an early interplanetary society and accession into the Diaspora went over relatively smoothly. \ @@ -146,7 +146,7 @@ name = "Zorren" keywords += list("Zorren") data = "The Zorren are the remnants of an ancient precursor which resided in the Coreward Periphery 3000 to 4000 \ - years ago, residing on a planet called Menhir, which we call Virgo 4. Zorren organise themselves through various \ + years ago, residing on a planet called 'Menhir', which we call Virgo 4. Zorren organise themselves through various \ feudal-styled kingdoms and monarchies, of which the most prominent is the Kingdom of An-Tahk-Et. They are obsessed \ over their ancient heritage and the power of the noble houses comes through the control and excavation of old technology \ of their precursors, leading to a massive divide between commoners, who live as serfs and the nobility, who live in \ @@ -291,7 +291,3 @@ Nearly always emerged from the ranks of Beta-class drones, Alpha-Class are considered sapient, and are thus protected by the same rights. \ Unwanted modification, alteration of their code can classify as murder, making them a welcome deterrent against thieves and saboteurs. \ Some even claim they are just as capable of emotions and dreams as humans, as prepestrous as that sounds." - - - - diff --git a/code/modules/maps/bapi-dmm/bapi_bindings.dm b/code/modules/maps/bapi-dmm/bapi_bindings.dm index 780445e4e63..b88871414bd 100644 --- a/code/modules/maps/bapi-dmm/bapi_bindings.dm +++ b/code/modules/maps/bapi-dmm/bapi_bindings.dm @@ -34,3 +34,5 @@ x_upper, y_lower, y_upper, z_lower, z_upper, place_on_top, new_z) /proc/bapidmm_generate_automata(limit_x, limit_y, iterations, initial_wall_cell) return call_ext(BAPI_DMM_READER, "byond:bapidmm_generate_automata_ffi")(limit_x, limit_y, iterations, initial_wall_cell) + +#undef BAPI_DMM_READER diff --git a/code/modules/materials/materials/gems.dm b/code/modules/materials/materials/gems.dm index 69a2c7fa6d0..e035bf532e9 100644 --- a/code/modules/materials/materials/gems.dm +++ b/code/modules/materials/materials/gems.dm @@ -50,8 +50,8 @@ /datum/material/quartz name = MAT_QUARTZ - display_name = "quartz" - use_name = "quartz" + display_name = MAT_QUARTZ + use_name = MAT_QUARTZ icon_colour = "#e6d7df" stack_type = /obj/item/stack/material/quartz tableslam_noise = 'sound/effects/Glasshit.ogg' diff --git a/code/modules/materials/sheets/glass.dm b/code/modules/materials/sheets/glass.dm index a54ae0cd1a4..1b40afeee28 100644 --- a/code/modules/materials/sheets/glass.dm +++ b/code/modules/materials/sheets/glass.dm @@ -1,7 +1,7 @@ /obj/item/stack/material/glass - name = "glass" + name = MAT_GLASS icon_state = "sheet-transparent" - default_type = "glass" + default_type = MAT_GLASS no_variants = FALSE drop_sound = 'sound/items/drop/glass.ogg' pickup_sound = 'sound/items/pickup/glass.ogg' diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index fd65926aaa8..26667c159e2 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -14,7 +14,7 @@ material = ORE_URANIUM /obj/item/ore/iron - name = "hematite" + name = ORE_HEMATITE icon_state = "ore_iron" origin_tech = list(TECH_MATERIAL = 1) material = ORE_HEMATITE @@ -32,7 +32,7 @@ material = ORE_MARBLE /obj/item/ore/glass - name = "sand" + name = ORE_SAND icon_state = "ore_glass" origin_tech = list(TECH_MATERIAL = 1) material = ORE_SAND diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index ca9a5cf58ff..7870fc4f0a7 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -23,7 +23,7 @@ display_name = name /ore/uranium - name = ORE_LEAD + name = ORE_URANIUM display_name = "pitchblende" smelts_to = MAT_URANIUM result_amount = 5 diff --git a/code/modules/mob/dead/observer/chunk.dm b/code/modules/mob/dead/observer/chunk.dm new file mode 100644 index 00000000000..0de1b2af731 --- /dev/null +++ b/code/modules/mob/dead/observer/chunk.dm @@ -0,0 +1,90 @@ +// GHOST CHUNK +// +// A 16x16 grid of the map with a list of turfs that can be seen, are visible and are dimmed. +// Allows ghosts to see turfs of non AREA_BLOCK_GHOST_SIGHT flagged areas within these chunks. + +/datum/chunk/ghost + var/list/hidden_areas = list() + +/datum/chunk/ghost/acquireVisibleTurfs(var/list/invisible) + + for(var/area/A in hidden_areas) + + for(var/turf/T in A.contents) + invisible[T] = T + +// Don't call the parernt, we work inverted! +/datum/chunk/ghost/New(loc, x, y, z) + for(var/area/A in range(16, locate(x + 8, y + 8, z))) + if(A.flag_check(AREA_BLOCK_GHOST_SIGHT)) + hidden_areas += A + + // 0xf = 15 + x &= ~0xf + y &= ~0xf + + src.x = x + src.y = y + src.z = z + + for(var/turf/t in range(10, locate(x + 8, y + 8, z))) + if(t.x >= x && t.y >= y && t.x < x + 16 && t.y < y + 16) + turfs[t] = t + + acquireVisibleTurfs(obscuredTurfs) + + // Removes turf that isn't in turfs. + obscuredTurfs &= turfs + + visibleTurfs = turfs - obscuredTurfs + + for(var/turf/t as anything in obscuredTurfs) + LAZYINITLIST(t.obfuscations) + if(!t.obfuscations[obfuscation.type]) + var/image/ob_image = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER) + ob_image.plane = PLANE_FULLSCREEN + t.obfuscations[obfuscation.type] = ob_image + obscured += t.obfuscations[obfuscation.type] + +/datum/chunk/ghost/update() + + set background = 1 + + var/list/newInvisibleTurfs = new() + acquireVisibleTurfs(newInvisibleTurfs) + + // Removes turf that isn't in turfs. + newInvisibleTurfs &= turfs + + var/list/visAdded = obscuredTurfs - newInvisibleTurfs + var/list/visRemoved = newInvisibleTurfs - obscuredTurfs + + visibleTurfs = turfs - newInvisibleTurfs + obscuredTurfs = newInvisibleTurfs + + for(var/turf/t as anything in visAdded) + if(LAZYLEN(t.obfuscations) && t.obfuscations[obfuscation.type]) + obscured -= t.obfuscations[obfuscation.type] + for(var/mob/observer/dead/m as anything in seenby) + if(!m) + continue + var/client/client = m.client + if(client) + client.images -= t.obfuscations[obfuscation.type] + + for(var/turf/t as anything in visRemoved) + if(obscuredTurfs[t]) + LAZYINITLIST(t.obfuscations) + if(!t.obfuscations[obfuscation.type]) + var/image/ob_image = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER) + ob_image.plane = PLANE_FULLSCREEN + t.obfuscations[obfuscation.type] = ob_image + + obscured += t.obfuscations[obfuscation.type] + for(var/mob/observer/dead/m as anything in seenby) + if(!m) + seenby -= m + continue + var/client/client = m.client + if(client) + client.images += t.obfuscations[obfuscation.type] diff --git a/code/modules/mob/dead/observer/ghostnet.dm b/code/modules/mob/dead/observer/ghostnet.dm new file mode 100644 index 00000000000..94eb3d63345 --- /dev/null +++ b/code/modules/mob/dead/observer/ghostnet.dm @@ -0,0 +1,45 @@ +// GHOST NET +// +// The datum containing all the hidden chunks. + +/datum/visualnet/ghost + chunk_type = /datum/chunk/ghost + +// Removes a area from a chunk. + +/datum/visualnet/ghost/proc/removeArea(area/A) + if(!A.flag_check(AREA_BLOCK_GHOST_SIGHT)) + majorChunkChange(A, 0) + +// Add a area to a chunk. + +/datum/visualnet/ghost/proc/addArea(area/A) + if(A.flag_check(AREA_BLOCK_GHOST_SIGHT)) + majorChunkChange(A, 1) + +// Used for ghost visible areas. Since portable areas can be in ANY chunk. + +/datum/visualnet/ghost/proc/updateArea(area/A) + if(A.flag_check(AREA_BLOCK_GHOST_SIGHT)) + majorChunkChange(A, 1) + else + majorChunkChange(A, 0) + +/datum/visualnet/ghost/majorChunkChange(area/A, var/choice) + for(var/entry in chunks) + var/datum/chunk/ghost/gchunk = chunks[entry] + for(var/turf/T in gchunk.turfs) + if(T.loc == A) + onMajorChunkChange(A, choice, gchunk) + gchunk.hasChanged(TRUE) + break + +/datum/visualnet/ghost/onMajorChunkChange(atom/c, var/choice, var/datum/chunk/ghost/chunk) +// Only add actual areas to the list of areas + if(istype(c, /area)) + if(choice == 0) + // Remove the area. + chunk.hidden_areas -= c + else if(choice == 1) + // You can't have the same area in the list twice. + chunk.hidden_areas |= c diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index af7715b656b..82778ff677e 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -13,6 +13,9 @@ canmove = 0 blinded = 0 anchored = TRUE // don't get pushed around + var/list/visibleChunks = list() + var/datum/visualnet/visualnet + var/use_static = TRUE var/can_reenter_corpse var/datum/hud/living/carbon/hud = null // hud @@ -140,6 +143,13 @@ animate(pixel_y = default_pixel_y, time = 10, loop = -1) observer_mob_list += src ..() + visualnet = ghostnet + +/mob/observer/dead/Moved(atom/old_loc, direction, forced) + . = ..() + use_static = !(check_rights(R_ADMIN|R_FUN|R_EVENT|R_SERVER, 0, src) || (client && client.buildmode)) + if(visualnet && use_static) + visualnet.visibility(src, client) /mob/observer/dead/Topic(href, href_list) if (href_list["track"]) @@ -452,7 +462,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp //RS Port #658 Start var/area/A = get_area(destination) - if(A.flag_check(AREA_BLOCK_GHOSTS)) + if(A?.flag_check(AREA_BLOCK_GHOSTS)) to_chat(src,span_warning("Sorry, that area does not allow ghosts.")) if(following) stop_following() @@ -572,6 +582,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return ..() /mob/observer/dead/Destroy() + visualnet = null if(ismob(following)) var/mob/M = following M.following_mobs -= src diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 23442c62cca..d947e395030 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -160,6 +160,10 @@ hud_list[IMPTRACK_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_IMPTRACK) hud_list[SPECIALROLE_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_SPECIAL) hud_list[STATUS_HUD_OOC] = gen_hud_image(ingame_hud, src, "hudhealthy", plane = PLANE_CH_STATUS_OOC) + hud_list[HEALTH_VR_HUD] = gen_hud_image(ingame_hud_med_vr, src, "100", plane = PLANE_CH_HEALTH_VR) + hud_list[STATUS_R_HUD] = gen_hud_image(ingame_hud_vr, src, "hudblank", plane = PLANE_CH_STATUS_R) + hud_list[BACKUP_HUD] = gen_hud_image(ingame_hud_vr, src, "hudblank", plane = PLANE_CH_BACKUP) + hud_list[VANTAG_HUD] = gen_hud_image(ingame_hud_vr, src, "hudblank", plane = PLANE_CH_VANTAG) add_overlay(hud_list) /mob/living/carbon/human/recalculate_vis() diff --git a/code/modules/mob/living/carbon/human/human_helpers_vr.dm b/code/modules/mob/living/carbon/human/human_helpers_vr.dm index 28eea3e81e9..a5b02964f94 100644 --- a/code/modules/mob/living/carbon/human/human_helpers_vr.dm +++ b/code/modules/mob/living/carbon/human/human_helpers_vr.dm @@ -1,13 +1,6 @@ var/static/icon/ingame_hud_vr = icon('icons/mob/hud_vr.dmi') var/static/icon/ingame_hud_med_vr = icon('icons/mob/hud_med_vr.dmi') -/mob/living/carbon/human/make_hud_overlays() - . = ..() - hud_list[HEALTH_VR_HUD] = gen_hud_image(ingame_hud_med_vr, src, "100", plane = PLANE_CH_HEALTH_VR) - hud_list[STATUS_R_HUD] = gen_hud_image(ingame_hud_vr, src, plane = PLANE_CH_STATUS_R) - hud_list[BACKUP_HUD] = gen_hud_image(ingame_hud_vr, src, plane = PLANE_CH_BACKUP) - hud_list[VANTAG_HUD] = gen_hud_image(ingame_hud_vr, src, plane = PLANE_CH_VANTAG) - /mob/living/carbon/human/proc/remove_marking(var/datum/sprite_accessory/marking/mark_datum) if (!mark_datum) return FALSE diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index f217e729c99..d23aa3d7811 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -2016,13 +2016,16 @@ /mob/living/carbon/human/proc/handle_hud_list() if (BITTEST(hud_updateflag, HEALTH_HUD)) var/image/holder = grab_hud(HEALTH_HUD) + var/image/health_us = grab_hud(HEALTH_VR_HUD) if(stat == DEAD) holder.icon_state = "-100" // X_X else holder.icon_state = RoundHealth((health-CONFIG_GET(number/health_threshold_crit))/(getMaxHealth()-CONFIG_GET(number/health_threshold_crit))*100) if(block_hud) holder.icon_state = "hudblank" + health_us.icon_state = holder.icon_state apply_hud(HEALTH_HUD, holder) + apply_hud(HEALTH_VR_HUD, health_us) if (BITTEST(hud_updateflag, LIFE_HUD)) var/image/holder = grab_hud(LIFE_HUD) @@ -2037,20 +2040,16 @@ apply_hud(LIFE_HUD, holder) if (BITTEST(hud_updateflag, STATUS_HUD)) - var/foundVirus = 0 - for (var/datum/disease/D in GetViruses()) - if(D.discovered) - foundVirus = 1 - break var/image/holder = grab_hud(STATUS_HUD) var/image/holder2 = grab_hud(STATUS_HUD_OOC) + var/image/status_r = grab_hud(STATUS_R_HUD) if (isSynthetic()) holder.icon_state = "hudrobo" else if(stat == DEAD) holder.icon_state = "huddead" holder2.icon_state = "huddead" - else if(foundVirus) + else if(has_virus()) holder.icon_state = "hudill" else if(has_brain_worms()) var/mob/living/simple_mob/animal/borer/B = has_brain_worms() @@ -2061,17 +2060,17 @@ holder2.icon_state = "hudbrainworm" else holder.icon_state = "hudhealthy" - if(viruses.len) - for(var/datum/disease/D in GetViruses()) - if(D.discovered) - holder2.icon_state = "hudill" + if(has_virus()) + holder2.icon_state = "hudill" else holder2.icon_state = "hudhealthy" if(block_hud) holder.icon_state = "hudblank" holder2.icon_state = "hudblank" + status_r.icon_state = holder.icon_state apply_hud(STATUS_HUD, holder) + apply_hud(STATUS_R_HUD, status_r) apply_hud(STATUS_HUD_OOC, holder2) if (BITTEST(hud_updateflag, ID_HUD)) @@ -2153,7 +2152,36 @@ holder.icon_state = "hudsyndicate" apply_hud(SPECIALROLE_HUD, holder) - attempt_vr(src,"handle_hud_list_vr",list()) //VOREStation Add - Custom HUDs. + //Backup implant hud status + if (BITTEST(hud_updateflag, BACKUP_HUD)) + var/image/holder = grab_hud(BACKUP_HUD) + + holder.icon_state = "hudblank" + + for(var/obj/item/organ/external/E in organs) + for(var/obj/item/implant/I in E.implants) + if(I.implanted && istype(I,/obj/item/implant/backup)) + var/obj/item/implant/backup/B = I + if(!mind) + holder.icon_state = "hud_backup_nomind" + else if(!(mind.name in B.our_db.body_scans)) + holder.icon_state = "hud_backup_nobody" + else + holder.icon_state = "hud_backup_norm" + if(block_hud) + holder.icon_state = "hudblank" + apply_hud(BACKUP_HUD, holder) + + //VOREStation Antag Hud + if (BITTEST(hud_updateflag, VANTAG_HUD)) + var/image/vantag = grab_hud(VANTAG_HUD) + if(vantag_pref) + vantag.icon_state = vantag_pref + else + vantag.icon_state = "hudblank" + if(block_hud) + vantag.icon_state = "hudblank" + apply_hud(VANTAG_HUD, vantag) hud_updateflag = 0 @@ -2194,6 +2222,15 @@ brain.tick_defib_timer() +/mob/living/carbon/human/proc/has_virus() + for(var/thing in viruses) + var/datum/disease/D = thing + if(!D.discovered) + continue + if((!(D.visibility_flags & HIDDEN_SCANNER)) && (D.severity != NONTHREAT)) + return TRUE + return FALSE + #undef HUMAN_MAX_OXYLOSS #undef HUMAN_CRIT_MAX_OXYLOSS diff --git a/code/modules/mob/living/carbon/human/life_vr.dm b/code/modules/mob/living/carbon/human/life_vr.dm index 7f17529079d..25ba3b9f178 100644 --- a/code/modules/mob/living/carbon/human/life_vr.dm +++ b/code/modules/mob/living/carbon/human/life_vr.dm @@ -14,57 +14,6 @@ species.silk_reserve = min(species.silk_reserve + 2, species.silk_max_reserve) adjust_nutrition(-0.4) -/mob/living/carbon/human/proc/handle_hud_list_vr() - - //Right-side status hud updates with left side one. - if (BITTEST(hud_updateflag, STATUS_HUD)) - var/image/other_status = hud_list[STATUS_HUD] - var/image/status_r = grab_hud(STATUS_R_HUD) - status_r.icon_state = other_status.icon_state - if(block_hud) - status_r.icon_state = "hudblank" - apply_hud(STATUS_R_HUD, status_r) - - //Our custom health bar HUD - if (BITTEST(hud_updateflag, HEALTH_HUD)) - var/image/other_health = hud_list[HEALTH_HUD] - var/image/health_us = grab_hud(HEALTH_VR_HUD) - health_us.icon_state = other_health.icon_state - if(block_hud) - health_us.icon_state = "hudblank" - apply_hud(HEALTH_VR_HUD, health_us) - - //Backup implant hud status - if (BITTEST(hud_updateflag, BACKUP_HUD)) - var/image/holder = grab_hud(BACKUP_HUD) - - holder.icon_state = "hudblank" - - for(var/obj/item/organ/external/E in organs) - for(var/obj/item/implant/I in E.implants) - if(I.implanted && istype(I,/obj/item/implant/backup)) - var/obj/item/implant/backup/B = I - if(!mind) - holder.icon_state = "hud_backup_nomind" - else if(!(mind.name in B.our_db.body_scans)) - holder.icon_state = "hud_backup_nobody" - else - holder.icon_state = "hud_backup_norm" - if(block_hud) - holder.icon_state = "hudblank" - apply_hud(BACKUP_HUD, holder) - - //VOREStation Antag Hud - if (BITTEST(hud_updateflag, VANTAG_HUD)) - var/image/vantag = grab_hud(VANTAG_HUD) - if(vantag_pref) - vantag.icon_state = vantag_pref - else - vantag.icon_state = "hudblank" - if(block_hud) - vantag.icon_state = "hudblank" - apply_hud(VANTAG_HUD, vantag) - //Our call for the NIF to do whatever /mob/living/carbon/human/proc/handle_nif() if(!nif) return @@ -89,4 +38,3 @@ /mob/living/carbon var/synth_cosmetic_pain = FALSE - diff --git a/code/modules/mob/living/carbon/human/phobias.dm b/code/modules/mob/living/carbon/human/phobias.dm index 092fba6347b..f92ea2464b5 100644 --- a/code/modules/mob/living/carbon/human/phobias.dm +++ b/code/modules/mob/living/carbon/human/phobias.dm @@ -1,13 +1,3 @@ -//Handling and defining of phobias and fears -#define NYCTOPHOBIA 1 -#define ARACHNOPHOBIA 2 -#define HEMOPHOBIA 4 -#define THALASSOPHOBIA 8 -#define CLAUSTROPHOBIA_MINOR 16 -#define CLAUSTROPHOBIA_MAJOR 32 -#define ANATIDAEPHOBIA 64 -#define AGRAVIAPHOBIA 128 - /mob/living/carbon/human/proc/handle_phobias() if(phobias & NYCTOPHOBIA) var/turf/T = get_turf(src) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index 669b71bc448..d884906ced4 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -337,6 +337,9 @@ healing = null /mob/living/simple_mob/protean_blob/lay_down() + if(hiding) + to_chat(src, span_warning("You can't rest while hiding.")) + return var/obj/item/rig/rig = src.get_rig() if(rig) rig.force_rest(src) @@ -348,6 +351,10 @@ set desc = "Disperses your mass into a thin veil, making a trap to snatch prey with, or simply hide." set category = "Abilities.Protean" + if(resting) + to_chat(src, span_warning("You can't hide while resting.")) + return + if(!hiding) cut_overlays() icon = 'icons/mob/species/protean/protean.dmi' diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 90bdef8fdd7..7dd65aca0ec 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -675,6 +675,7 @@ sdisabilities = 0 disabilities = 0 resting = FALSE + viruses.Cut() // fix blindness and deafness blinded = 0 diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 4680a975fd6..d74188914b6 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -28,7 +28,7 @@ var/list/department_radio_keys = list( ":N" = CHANNEL_SCIENCE, ".N" = CHANNEL_SCIENCE, ":M" = CHANNEL_MEDICAL, ".M" = CHANNEL_MEDICAL, ":E" = CHANNEL_ENGINEERING, ".E" = CHANNEL_ENGINEERING, - ":k" = CHANNEL_RESPONSE_TEAM, ".k" = CHANNEL_RESPONSE_TEAM, + ":K" = CHANNEL_RESPONSE_TEAM, ".K" = CHANNEL_RESPONSE_TEAM, ":S" = CHANNEL_SECURITY, ".S" = CHANNEL_SECURITY, ":W" = "whisper", ".W" = "whisper", ":T" = CHANNEL_MERCENARY, ".T" = CHANNEL_MERCENARY, diff --git a/code/modules/mob/mob_helpers_vr.dm b/code/modules/mob/mob_helpers_vr.dm index 0b0b2559139..5f1b49bbbfc 100644 --- a/code/modules/mob/mob_helpers_vr.dm +++ b/code/modules/mob/mob_helpers_vr.dm @@ -24,7 +24,7 @@ /mob/verb/toggle_stomach_vision() set name = "Toggle Stomach Sprites" - set category = "Preferences" + set category = "Preferences.Vore" set desc = "Toggle the ability to see stomachs or not" var/toggle diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 1b2c1571d7a..91736a5257c 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -350,9 +350,9 @@ switch(mob.incorporeal_move) if(1) var/turf/T = get_step(mob, direct) - var/area/A = T.loc //RS Port #658 if(!T) return + var/area/A = T.loc //RS Port #658 if(mob.check_holy(T)) to_chat(mob, span_warning("You cannot get past holy grounds while you are in this plane of existence!")) return diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 64fc76ae390..1153f9b8e5c 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -115,11 +115,10 @@ to_chat(src, span_warning("You gave up on pulling yourself up.")) return 0 - //RS Port #661 Start, Prevents noclipping - else if(!istype(destination, /turf/simulated/open)) + // Explicit check if the destination turf allows full passing + else if(!destination.CanZPass(src, direction)) to_chat(src, span_warning("Something solid above stops you from passing.")) return 0 - //RS Port #661 End else if(isliving(src)) //VOREStation Edit Start. Are they a mob, and are they currently flying?? var/mob/living/H = src diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 31afd8f6c7d..524f6926e50 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -1,20 +1,23 @@ /// Multiz support override for CanZPass -/turf/proc/CanZPass(atom/A, direction) +/turf/proc/CanZPass(atom/A, direction, recursive = FALSE) + if(recursive) + return FALSE if(z == A.z) //moving FROM this turf return direction == UP //can't go below else if(direction == UP) //on a turf below, trying to enter - return 0 + return FALSE if(direction == DOWN) //on a turf above, trying to enter - return !density && isopenspace(GetAbove(src)) // VOREStation Edit + var/turf/above = GetAbove(src) + return !density && above?.CanZPass(A, direction, TRUE) // do not call the function again, only accept overrides that return TRUE for a direction /// Multiz support override for CanZPass /turf/simulated/open/CanZPass(atom, direction) - return 1 + return TRUE /// Multiz support override for CanZPass /turf/space/CanZPass(atom, direction) - return 1 + return TRUE /// WARNING WARNING /// Turfs DO NOT lose their signals when they get replaced, REMEMBER THIS diff --git a/code/modules/projectiles/guns/projectile/leveraction.dm b/code/modules/projectiles/guns/projectile/leveraction.dm index ad6294df2d2..ff7560119dd 100644 --- a/code/modules/projectiles/guns/projectile/leveraction.dm +++ b/code/modules/projectiles/guns/projectile/leveraction.dm @@ -8,7 +8,7 @@ the same time having a rather respectable firing rate due to it's mechanism. It is very probable \ this is a replica instead of a museum piece, but rifles of this pattern still see usage as \ colonist guns in some far off regions. Uses 7.62mm rounds." - description_fluff = "The frontier�s largest home-grown firearms manufacturer, the Weissen \ + description_fluff = "The frontier's largest home-grown firearms manufacturer, the Weissen \ Company offers a range of high-quality, high-cost hunting rifles and shotguns designed with \ the wild frontier wilderness - and its wildlife - in mind. The company operates just one \ production plant in the Mytis system, but their weapons have found popularity on garden \ @@ -31,7 +31,7 @@ the same time having a rather respectable firing rate due to it's mechanism. It is very probable \ this is a replica instead of a museum piece, but rifles of this pattern still see usage as \ colonist guns in some far off regions. Uses 7.62mm rounds." - description_fluff = "The frontier�s largest home-grown firearms manufacturer, the Weissen \ + description_fluff = "The frontier's largest home-grown firearms manufacturer, the Weissen \ Company offers a range of high-quality, high-cost hunting rifles and shotguns designed with \ the wild frontier wilderness - and its wildlife - in mind. The company operates just one \ production plant in the Mytis system, but their weapons have found popularity on garden \ @@ -47,7 +47,7 @@ name = "repeater" desc = "The Weissen Company's answer to varmint shooting on frontier ranches, the T-7 Boone \ gives ranchers and farmers alike a perfect rider rifle for protecting the fenceline. Uses .357 rounds." - description_fluff = "The frontier�s largest home-grown firearms manufacturer, \ + description_fluff = "The frontier's largest home-grown firearms manufacturer, \ the Weissen Arms Company are the leading manufacturer of - not only quality - \ but affordable rifles for the average frontiersman looking to protect his \ claim. The company operates just one production plant in the Mytis system, \ @@ -67,7 +67,7 @@ name = "brushgun" desc = "Weissen Company's newest budget caravan rifle for those that want a light yet effective rifle, \ the T-10 Cassidy Uses .44 rounds." - description_fluff = "The frontier�s largest home-grown firearms manufacturer, \ + description_fluff = "The frontier's largest home-grown firearms manufacturer, \ the Weissen Arms Company are the leading manufacturer of - not only quality - \ but affordable rifles for the average frontiersman looking to protect his \ claim. The company operates just one production plant in the Mytis system, \ @@ -87,7 +87,7 @@ name = "brushgun" desc = "Weissen Company's newest budget caravan rifle for those that want a light yet effective rifle, \ the T-10 Cassidy Uses .44 rounds." - description_fluff = "The frontier�s largest home-grown firearms manufacturer, \ + description_fluff = "The frontier's largest home-grown firearms manufacturer, \ the Weissen Arms Company are the leading manufacturer of - not only quality - \ but affordable rifles for the average frontiersman looking to protect his \ claim. The company operates just one production plant in the Mytis system, \ diff --git a/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm b/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm index 21a164d4ebb..1004d3ff483 100644 --- a/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm +++ b/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm @@ -58,7 +58,7 @@ /obj/machinery/chemical_dispenser/bar_coffee dispense_reagents = list( - REAGENT_ID_COFFEE, REAGENT_ID_CAFELATTE, REAGENT_ID_SOYLATTE, REAGENT_ID_HOTCOCO, REAGENT_ID_MILK, REAGENT_ID_CREAM, REAGENT_ID_TEA, REAGENT_ID_ICE, "water", + REAGENT_ID_COFFEE, REAGENT_ID_CAFELATTE, REAGENT_ID_SOYLATTE, REAGENT_ID_HOTCOCO, REAGENT_ID_MILK, REAGENT_ID_CREAM, REAGENT_ID_TEA, REAGENT_ID_ICE, REAGENT_ID_WATER, REAGENT_ID_ORANGEJUICE, REAGENT_ID_LEMONJUICE, REAGENT_ID_LIMEJUICE, REAGENT_ID_BERRYJUICE, REAGENT_ID_MINT, REAGENT_ID_DECAF, REAGENT_ID_GREENTEA, REAGENT_ID_MILKFOAM, REAGENT_ID_DRIPCOFFEE ) diff --git a/code/modules/reagents/reactions/instant/drinks.dm b/code/modules/reagents/reactions/instant/drinks.dm index 96217122838..70891d5126c 100644 --- a/code/modules/reagents/reactions/instant/drinks.dm +++ b/code/modules/reagents/reactions/instant/drinks.dm @@ -100,14 +100,14 @@ name = REAGENT_AMERICANO id = REAGENT_ID_AMERICANO result = REAGENT_ID_AMERICANO - required_reagents = list("water" = 1, REAGENT_ID_LONGBLACK = 2) + required_reagents = list(REAGENT_ID_WATER = 1, REAGENT_ID_LONGBLACK = 2) result_amount = 3 /decl/chemical_reaction/instant/drinks/long_black name = REAGENT_LONGBLACK id = REAGENT_ID_LONGBLACK result = REAGENT_ID_LONGBLACK - required_reagents = list("water" = 1, REAGENT_ID_COFFEE = 1) + required_reagents = list(REAGENT_ID_WATER = 1, REAGENT_ID_COFFEE = 1) result_amount = 2 /decl/chemical_reaction/instant/drinks/macchiato diff --git a/code/modules/reagents/reactions/instant/virology.dm b/code/modules/reagents/reactions/instant/virology.dm index c00f91bdc58..e582658c4b1 100644 --- a/code/modules/reagents/reactions/instant/virology.dm +++ b/code/modules/reagents/reactions/instant/virology.dm @@ -44,7 +44,7 @@ name = REAGENT_SIZEVIRUSFOOD id = "sizeoxadonevirusfood" result = REAGENT_ID_SIZEVIRUSFOOD - required_reagents = list("sizeoxadone" = 1, REAGENT_ID_PHORONVIRUSFOOD = 1) + required_reagents = list(REAGENT_ID_SIZEOXADONE = 1, REAGENT_ID_PHORONVIRUSFOOD = 1) result_amount = 2 /decl/chemical_reaction/instant/mix_virus @@ -153,7 +153,7 @@ D.Devolve() /decl/chemical_reaction/instant/antibodies - name = "Antibodies" + name = REAGENT_ANTIBODIES id = "antibodiesmix" result = REAGENT_ID_ANTIBODIES required_reagents = list(REAGENT_ID_VACCINE) diff --git a/code/modules/reagents/reagents/vore_vr.dm b/code/modules/reagents/reagents/vore_vr.dm index ef28e716fea..2b0ac6706d3 100644 --- a/code/modules/reagents/reagents/vore_vr.dm +++ b/code/modules/reagents/reagents/vore_vr.dm @@ -99,7 +99,7 @@ M.adjustHalLoss(1) if(!M.confused) M.confused = 1 M.confused = max(M.confused, 20) - M.hallucination += 15 + M.hallucination = max(M.hallucination, 20) //This used to be += 15 resulting in INFINITE HALLUCINATION for(var/obj/belly/B as anything in M.vore_organs) diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 0973230b139..ab5551855ba 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -238,6 +238,8 @@ /////////////////////////////////////////////////////////////// /datum/surgery_step/robotics/fix_organ_robotic //For artificial organs + + priority = 2 surgery_name = "Fix Robotic Organ" allowed_tools = list( /obj/item/stack/nanopaste = 100, \ @@ -371,6 +373,8 @@ /////////////////////////////////////////////////////////////// /datum/surgery_step/robotics/attach_organ_robotic + + priority = 2 surgery_name = "Attach Robotic Organ" allowed_procs = list(IS_SCREWDRIVER = 100) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 3c8dabaeca5..26bceec35b8 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -9,11 +9,6 @@ // Parent type of all the various "belly" varieties. // -#define DM_FLAG_VORESPRITE_TAIL 0x2 -#define DM_FLAG_VORESPRITE_MARKING 0x4 -#define DM_FLAG_VORESPRITE_ARTICLE 0x8 - - /obj/belly name = "belly" // Name of this location desc = "It's a belly! You're in it!" // Flavor text description of inside sight/sound/smells/feels. diff --git a/code/modules/vote/vote_verb.dm b/code/modules/vote/vote_verb.dm index f9bff812823..b8479cbe953 100644 --- a/code/modules/vote/vote_verb.dm +++ b/code/modules/vote/vote_verb.dm @@ -1,5 +1,5 @@ /client/verb/vote() - set category = "OOC" + set category = "OOC.Game" set name = "Vote" if(SSvote.active_vote) diff --git a/maps/~map_system/_map_selection.dm b/maps/~map_system/_map_selection.dm index 879f058f545..47ff0d984d0 100644 --- a/maps/~map_system/_map_selection.dm +++ b/maps/~map_system/_map_selection.dm @@ -5,8 +5,8 @@ /* FOR LIVE SERVER */ /*********************/ -#define USE_MAP_TETHER -//#define USE_MAP_STELLARDELIGHT +//#define USE_MAP_TETHER +#define USE_MAP_STELLARDELIGHT //#define USE_MAP_GROUNDBASE // Debug diff --git a/tgui/global.d.ts b/tgui/global.d.ts index d0bfdecf890..e952f4fadc1 100644 --- a/tgui/global.d.ts +++ b/tgui/global.d.ts @@ -132,6 +132,11 @@ type ByondType = { */ parseJson(text: string): any; + /** + * Downloads a blob, platform-agnostic + */ + saveBlob(blob: Blob, filename: string, ext: string): void; + /** * Sends a message to `/datum/tgui_window` which hosts this window instance. */ diff --git a/tgui/packages/tgui-panel/chat/renderer.jsx b/tgui/packages/tgui-panel/chat/renderer.jsx index b62320d515d..267d84cd2a3 100644 --- a/tgui/packages/tgui-panel/chat/renderer.jsx +++ b/tgui/packages/tgui-panel/chat/renderer.jsx @@ -807,13 +807,13 @@ class ChatRenderer { '\n' + '\n'; // Create and send a nice blob - const blob = new Blob([pageHtml]); + const blob = new Blob([pageHtml], { type: 'text/plain' }); const timestamp = new Date() .toISOString() .substring(0, 19) .replace(/[-:]/g, '') .replace('T', '-'); - window.navigator.msSaveBlob(blob, `ss13-chatlog-${timestamp}.html`); + Byond.saveBlob(blob, `ss13-chatlog-${timestamp}.html`, '.html'); } purgeMessageArchive() { diff --git a/tgui/packages/tgui/interfaces/MiningOreProcessingConsole.tsx b/tgui/packages/tgui/interfaces/MiningOreProcessingConsole.tsx index 8a5fd9601ef..4f6e74d8c1c 100644 --- a/tgui/packages/tgui/interfaces/MiningOreProcessingConsole.tsx +++ b/tgui/packages/tgui/interfaces/MiningOreProcessingConsole.tsx @@ -1,5 +1,6 @@ import { BooleanLike } from 'common/react'; import { toTitleCase } from 'common/string'; +import { Stack } from 'tgui-core/components'; import { useBackend } from '../backend'; import { @@ -32,57 +33,67 @@ export const MiningOreProcessingConsole = (props) => { const { unclaimedPoints, power, speed } = data; return ( - + - - - in order to claim points. - - } - /> -
- - - - } - > - - + + + + in order to claim points. + + } + /> + + +
act('claim')} - > - Claim - + <> + + + } > - - - -
- + + act('claim')} + > + Claim + + } + > + + + +
+ + +
); @@ -131,6 +142,8 @@ const MOPCOres = (props) => { const { ores, showAllOres } = data; return (
{ color={pack.cost > supply_points ? 'red' : undefined} onClick={() => act('view_crate', { crate: pack.ref })} > - C + Info {pack.cost} points diff --git a/tgui/packages/tgui/interfaces/SupplyConsole/types.ts b/tgui/packages/tgui/interfaces/SupplyConsole/types.ts index 2d4f26c7eb4..15c94d3073d 100644 --- a/tgui/packages/tgui/interfaces/SupplyConsole/types.ts +++ b/tgui/packages/tgui/interfaces/SupplyConsole/types.ts @@ -18,6 +18,7 @@ export type modalData = { text: string; args: { name: string; + desc: string; cost: number; manifest: string[]; ref: string; @@ -28,6 +29,7 @@ export type modalData = { export type supplyPack = { name: string; + desc: string; cost: number; group: string; contraband: BooleanLike; diff --git a/tgui/packages/tgui/interfaces/SupplyConsole/viewCrateContents.tsx b/tgui/packages/tgui/interfaces/SupplyConsole/viewCrateContents.tsx index 368cc9d37d0..55049f48219 100644 --- a/tgui/packages/tgui/interfaces/SupplyConsole/viewCrateContents.tsx +++ b/tgui/packages/tgui/interfaces/SupplyConsole/viewCrateContents.tsx @@ -5,7 +5,7 @@ import { Data, modalData } from './types'; export const viewCrateContents = (modal: modalData) => { const { act, data } = useBackend(); const { supply_points } = data; - const { name, cost, manifest, ref, random } = modal.args; + const { name, cost, desc, manifest, ref, random } = modal.args; return (
{ } > + {desc}
+ - - - - - - - - - + + - - + + + + - - - - - - - - -
- - -
- - -A fatal exception has occurred at 002B:C562F1B7 in TGUI. -The current application will be terminated. -Send the copy of the following stack trace to an authorized -Nanotrasen incident handler at https://github.com/VOREStation/VOREStation. -Thank you for your cooperation. - -
- -
- -