From 08255584308e3d04bd6d36472d38c7f65652aacf Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 16 Dec 2024 05:44:03 +0100 Subject: [PATCH] enable define sanity (#16707) * enable define sanity * . * . * fix unicode * fix broken unicode * more * . * even more * more * more * . * . * . * . * . * . * eh not sure if we even have over 1000 * defines * - * . * uranium --- .github/workflows/ci.yml | 2 + .gitignore | 3 + code/__defines/belly_modes_vr.dm | 6 + code/__defines/dna.dm | 6 + code/__defines/phobias.dm | 9 ++ code/datums/locations/qerrvallis.dm | 32 +++--- code/datums/locations/vir.dm | 12 +- code/game/dna/dna2.dm | 7 -- code/game/dna/dna2_domutcheck.dm | 1 - .../objects/items/weapons/wiki_manuals.dm | 3 + .../modules/examine/descriptions/telecomms.dm | 4 +- code/modules/games/cah_black_cards.dm | 14 +-- .../hardcode_library/fiction/PortedBooks.dm | 68 +++++------ .../fiction/battlefieldcommander.dm | 78 ++++++------- .../hardcode_library/reference/Schnayy.dm | 2 +- .../lore_data/important_locations.dm | 10 +- code/modules/lore_codex/lore_data/species.dm | 22 ++-- .../lore_codex/lore_data_vr/history.dm | 10 +- .../lore_codex/lore_data_vr/species.dm | 10 +- code/modules/maps/bapi-dmm/bapi_bindings.dm | 2 + code/modules/mining/ore_datum.dm | 2 +- .../mob/living/carbon/human/phobias.dm | 10 -- .../guns/projectile/leveraction.dm | 10 +- code/modules/vore/eating/belly_obj_vr.dm | 5 - tools/define_sanity/check.py | 106 ++++++++++++++++++ vorestation.dme | 1 + 26 files changed, 273 insertions(+), 162 deletions(-) create mode 100644 code/__defines/phobias.dm create mode 100644 tools/define_sanity/check.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c499e3d2dc..2e60daf63b 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 d87340a7fa..dae7acc003 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/__defines/belly_modes_vr.dm b/code/__defines/belly_modes_vr.dm index b0e7976dbd..266d2f583a 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 10fe4d729b..b958466201 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/phobias.dm b/code/__defines/phobias.dm new file mode 100644 index 0000000000..0bf2fc1613 --- /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/datums/locations/qerrvallis.dm b/code/datums/locations/qerrvallis.dm index 79efa37c9a..a3cc2468ba 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 377ecc9b03..3a407f1dc8 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/game/dna/dna2.dm b/code/game/dna/dna2.dm index 2a686e0a9a..099e5c4d18 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 02495bbc49..2b3f820532 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/objects/items/weapons/wiki_manuals.dm b/code/game/objects/items/weapons/wiki_manuals.dm index 8ba6b68dab..aaac07da1d 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/modules/examine/descriptions/telecomms.dm b/code/modules/examine/descriptions/telecomms.dm index 9096a6b1a4..7e86084daf 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/games/cah_black_cards.dm b/code/modules/games/cah_black_cards.dm index c2ab79df12..312d8f19d2 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/library/hardcode_library/fiction/PortedBooks.dm b/code/modules/library/hardcode_library/fiction/PortedBooks.dm index 0bc2ef9846..c52a4dfde9 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 1a4716f36f..b9953697ff 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 d3edc453fc..43a758bcf5 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 aebe6e8175..fdb49c2dc7 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 0ce44f016b..c24453a112 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 a17ab46b2e..a52dec5774 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 35ac7301fe..85e61c5147 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 780445e4e6..b88871414b 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/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index ca9a5cf58f..7870fc4f0a 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/living/carbon/human/phobias.dm b/code/modules/mob/living/carbon/human/phobias.dm index 092fba6347..f92ea2464b 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/projectiles/guns/projectile/leveraction.dm b/code/modules/projectiles/guns/projectile/leveraction.dm index ad6294df2d..ff7560119d 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/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 3c8dabaeca..26bceec35b 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/tools/define_sanity/check.py b/tools/define_sanity/check.py new file mode 100644 index 0000000000..fef59d28db --- /dev/null +++ b/tools/define_sanity/check.py @@ -0,0 +1,106 @@ +import fnmatch +import glob +import os +import re +import sys + +parent_directory = "code/**/*.dm" + +output_file_name = "define_sanity_output.txt" +how_to_fix_message = "Please #undef the above defines or remake them as global defines in the code/__DEFINES directory." + +def green(text): + return "\033[32m" + str(text) + "\033[0m" + +def red(text): + return "\033[31m" + str(text) + "\033[0m" + +def blue(text): + return "\033[34m" + str(text) + "\033[0m" + +def post_error(define_name, file, github_error_style): + if github_error_style: + print(f"::error file={file},title=Define Sanity::{define_name} is defined locally in {file} but not undefined locally!") + else: + print(red(f"- Failure: {define_name} is defined locally in {file} but not undefined locally!")) + +# simple way to check if we're running on github actions, or on a local machine +on_github = os.getenv("GITHUB_ACTIONS") == "true" + +# This files/directories are expected to have "global" defines, so they must be exempt from this check. +# Add directories as string here to automatically be exempt in case you have a non-complaint file name. +excluded_files = [ + # Wildcard directories, all files are expected to be exempt. + "code/__defines/*.dm", + "code/_helpers/*.dm", + "code/_global_vars/*.dm", + # TGS files come from another repository so lets not worry about them. + "code/modules/tgs/**/*.dm", +] + +define_regex = re.compile(r"([ \t]+)?#define\s?([A-Z0-9_]+)\(?(.+)\)?") + +files_to_scan = [] + +number_of_defines = 0 +number_of_files = 0 + +if not on_github: + print(blue(f"Running define sanity check outside of Github Actions.\nFor assistance, a '{output_file_name}' file will be generated at the root of your directory if any errors are detected.")) + +for code_file in glob.glob(parent_directory, recursive=True): + exempt_file = False + for exempt_directory in excluded_files: + if fnmatch.fnmatch(code_file, exempt_directory): + exempt_file = True + break + + if exempt_file: + continue + + # If the "base path" of the file starts with an underscore, it's assumed to be an encapsulated file holding references to the other files in its folder and is exempt from the checks. + if os.path.basename(code_file)[0] == "_": + continue + + files_to_scan.append(code_file) + +located_error_tuples = [] + +for applicable_file in files_to_scan: + with open(applicable_file, encoding="utf8") as file: + number_of_files += 1 + file_contents = file.read() + for define in define_regex.finditer(file_contents): + number_of_defines += 1 + define_name = define.group(2) + if not re.search("#undef\s" + define_name, file_contents): + located_error_tuples.append((define_name, applicable_file)) + +if number_of_defines == 0: + print(red("No defines found! This is likely an error.")) + sys.exit(1) + +if number_of_defines <= 900: + print(red(f"Only found {number_of_defines} defines in {number_of_files} files! Something has likely gone wrong as the number of local defines should not be this low.")) + sys.exit(1) + +if len(located_error_tuples): + + string_list = [] + for error in located_error_tuples: + if not on_github: + post_error(error[0], error[1], False) + string_list.append(f"{error[0]} is defined locally in {error[1]} but not undefined locally!") + else: + post_error(error[0], error[1], True) + + if len(string_list): + with open(output_file_name, "w") as output_file: + output_file.write("\n".join(string_list)) + output_file.write("\n\n" + how_to_fix_message) + + print(red(how_to_fix_message)) + sys.exit(1) + +else: + print(green(f"No unhandled local defines found (found {number_of_defines} defines).")) diff --git a/vorestation.dme b/vorestation.dme index ac4036b697..39493a0a48 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -103,6 +103,7 @@ #include "code\__defines\paicard.dm" #include "code\__defines\pda.dm" #include "code\__defines\persistence.dm" +#include "code\__defines\phobias.dm" #include "code\__defines\planets.dm" #include "code\__defines\planets_vr.dm" #include "code\__defines\plants.dm"