Date: Tue, 2 Apr 2024 01:15:07 +0000
Subject: [PATCH 03/11] Automatic changelog compile [ci skip]
---
html/changelogs/AutoChangeLog-pr-1521.yml | 6 ------
html/changelogs/AutoChangeLog-pr-1551.yml | 10 ----------
html/changelogs/AutoChangeLog-pr-1552.yml | 4 ----
html/changelogs/archive/2024-04.yml | 18 ++++++++++++++++++
4 files changed, 18 insertions(+), 20 deletions(-)
delete mode 100644 html/changelogs/AutoChangeLog-pr-1521.yml
delete mode 100644 html/changelogs/AutoChangeLog-pr-1551.yml
delete mode 100644 html/changelogs/AutoChangeLog-pr-1552.yml
diff --git a/html/changelogs/AutoChangeLog-pr-1521.yml b/html/changelogs/AutoChangeLog-pr-1521.yml
deleted file mode 100644
index ed1414093f08..000000000000
--- a/html/changelogs/AutoChangeLog-pr-1521.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "JohnFulpWillard"
-delete-after: True
-changes:
- - bugfix: "The TEG now works again (still unobtainable by regular means though)."
- - bugfix: "the TEG and its circulators can now be rotated counterclockwise again."
- - refactor: "The TEG now uses a TGUI interface rather than the old HTML one."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-1551.yml b/html/changelogs/AutoChangeLog-pr-1551.yml
deleted file mode 100644
index 8f0937919b33..000000000000
--- a/html/changelogs/AutoChangeLog-pr-1551.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-author: "Absolucy"
-delete-after: True
-changes:
- - bugfix: "(JohnFulpWillard) Time on servers hosted outside of the UK should now properly have their timezone offset."
- - bugfix: "(FlufflesTheDog) Certain areas are now properly protected against grid check. Namely the supermatter should consistently be protected."
- - bugfix: "(Ghommie) Fixes the sparring contract. You can now spar with no stakes and just for fun."
- - bugfix: "(ChungusGamer666) Exotic blood types no longer persist through species change if the new species does not have an exotic blood type."
- - bugfix: "(mc-oofert) You are now made a ghost faster if you get gibbed."
- - bugfix: "(AnturK) Fixes bioscramble picking the (unimplemented) base wing type."
- - bugfix: "(AnturK) Fixes setting prebuilt shutter ids with the multitool."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-1552.yml b/html/changelogs/AutoChangeLog-pr-1552.yml
deleted file mode 100644
index 94f301a76524..000000000000
--- a/html/changelogs/AutoChangeLog-pr-1552.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Absolucy"
-delete-after: True
-changes:
- - bugfix: "Fixed revolutionaries winning resulting in ATTENTION [x ∞]"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml
index c7b2cc8d9f46..7e7e64a7c947 100644
--- a/html/changelogs/archive/2024-04.yml
+++ b/html/changelogs/archive/2024-04.yml
@@ -30,3 +30,21 @@
- bugfix: added combat mode/harm intent support for the previous pr
- balance: Blind people don't get alerted when someone in a cardboard box pops out
nearby
+2024-04-02:
+ Absolucy:
+ - bugfix: (JohnFulpWillard) Time on servers hosted outside of the UK should now
+ properly have their timezone offset.
+ - bugfix: (FlufflesTheDog) Certain areas are now properly protected against grid
+ check. Namely the supermatter should consistently be protected.
+ - bugfix: (Ghommie) Fixes the sparring contract. You can now spar with no stakes
+ and just for fun.
+ - bugfix: (ChungusGamer666) Exotic blood types no longer persist through species
+ change if the new species does not have an exotic blood type.
+ - bugfix: (mc-oofert) You are now made a ghost faster if you get gibbed.
+ - bugfix: (AnturK) Fixes bioscramble picking the (unimplemented) base wing type.
+ - bugfix: (AnturK) Fixes setting prebuilt shutter ids with the multitool.
+ - bugfix: "Fixed revolutionaries winning resulting in ATTENTION [x \u221E]"
+ JohnFulpWillard:
+ - bugfix: The TEG now works again (still unobtainable by regular means though).
+ - bugfix: the TEG and its circulators can now be rotated counterclockwise again.
+ - refactor: The TEG now uses a TGUI interface rather than the old HTML one.
From d96cd1c0fde549d2c3051cac96fddec2bef47918 Mon Sep 17 00:00:00 2001
From: Tractor Mann <69653259+Noot-Toot@users.noreply.github.com>
Date: Tue, 2 Apr 2024 03:12:14 +0000
Subject: [PATCH 04/11] Refactor Jukebox Beacons (#1548)
* Refactor Jukebox Beacons
Yeah so my last implementation... it was bad. This version entirely foregoes frankensteining code from everywhere and is just a slight modification of Roulette Beacon code. which is MUCH nicer. I also gave it its own custom icon!
* Further Destinkification
2/3 of the requested changes were also originated from roulette beacon code, so that should probably get a quick refactor too someday.
* return
---
.../crates_lockers/closets/secure/bar.dm | 2 +-
.../code/game/objects/items/choice_beacon.dm | 10 --------
.../code/game/objects/items/jukebox_beacon.dm | 23 ++++++++++++++++++
.../code/modules/cargo/crates/service.dm | 2 +-
monkestation/icons/obj/items_and_weapons.dmi | Bin 5669 -> 6026 bytes
tgstation.dme | 1 +
6 files changed, 26 insertions(+), 12 deletions(-)
create mode 100644 monkestation/code/game/objects/items/jukebox_beacon.dm
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
index 8aa23966eb08..f2b700ec622d 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
@@ -18,4 +18,4 @@
new /obj/item/roulette_wheel_beacon(src)
new /obj/item/storage/fancy/candle_box(src)
new /obj/item/storage/fancy/candle_box(src)
- new /obj/item/choice_beacon/jukebox(src) //this line is a monkestation edit!
+ new /obj/item/jukebox_beacon(src) //monkestation edit
diff --git a/monkestation/code/game/objects/items/choice_beacon.dm b/monkestation/code/game/objects/items/choice_beacon.dm
index fe00d08e0b2c..b6ce1e948893 100644
--- a/monkestation/code/game/objects/items/choice_beacon.dm
+++ b/monkestation/code/game/objects/items/choice_beacon.dm
@@ -92,13 +92,3 @@
return
to_chat(user, span_notice("[uses] use[uses > 1 ? "s" : ""] remain[uses > 1 ? "" : "s"] on [src]."))
-
-/obj/item/choice_beacon/jukebox //this is probably a terrible way to do this, but its the first that worked.
- name = "jukebox beacon"
- desc = "Deploys a jukebox! Also comes wrenched down to the floor for you on delivery! How convenient!"
-/obj/item/choice_beacon/jukebox/interact(mob/user)
- to_chat(user, span_hear("You hear a crackle before a message plays through [src]: \"Thank you for picking Dave's Instant Jukebox Shipping! This beacon will now self destruct.\""))
- new /obj/machinery/media/jukebox(get_turf(user))
- playsound(src, 'sound/weapons/emitter2.ogg', 50, extrarange = SILENCED_SOUND_EXTRARANGE)
- do_sparks(3, source = src)
- qdel(src)
diff --git a/monkestation/code/game/objects/items/jukebox_beacon.dm b/monkestation/code/game/objects/items/jukebox_beacon.dm
new file mode 100644
index 000000000000..de9650818f58
--- /dev/null
+++ b/monkestation/code/game/objects/items/jukebox_beacon.dm
@@ -0,0 +1,23 @@
+/obj/item/jukebox_beacon
+ name = "jukebox beacon"
+ desc = "N.T. jukebox beacon, toss it down and you will have a complementary jukebox delivered to you. It comes with a free wrench to move it after deployment."
+ icon = 'monkestation/icons/obj/items_and_weapons.dmi'
+ icon_state = "music_beacon"
+ var/used = FALSE
+
+/obj/item/jukebox_beacon/attack_self()
+ if(used)
+ return
+ loc.visible_message(span_warning("\The [src] begins to beep loudly!"))
+ used = TRUE
+ addtimer(CALLBACK(src, PROC_REF(launch_payload)), 4 SECONDS)
+
+/obj/item/jukebox_beacon/proc/launch_payload()
+ if(QDELETED(src))
+ return
+ podspawn(list(
+ "target" = get_turf(src),
+ "spawn" = list(/obj/item/wrench, /obj/machinery/media/jukebox),
+ "style" = STYLE_CENTCOM
+ ))
+ qdel(src)
diff --git a/monkestation/code/modules/cargo/crates/service.dm b/monkestation/code/modules/cargo/crates/service.dm
index 0dc8a9492410..66077f9c5147 100644
--- a/monkestation/code/modules/cargo/crates/service.dm
+++ b/monkestation/code/modules/cargo/crates/service.dm
@@ -33,7 +33,7 @@
name = "Jukebox Beacon Crate"
desc = "Last one stolen? Broken? Burnt down in an insurance scam? then this crate is for you. Contains one Jukebox Beacon."
cost = CARGO_CRATE_VALUE * 20 //the crew shouldnt be able to just buy 15 jukeboxes all playing among us at the same time
- contains = list(/obj/item/choice_beacon/jukebox)
+ contains = list(/obj/item/jukebox_beacon)
crate_name = "jukebox beacon crate"
/datum/supply_pack/service/cassettes
diff --git a/monkestation/icons/obj/items_and_weapons.dmi b/monkestation/icons/obj/items_and_weapons.dmi
index 919998aba182e0c904f550e87067373f1c963de9..549e16e92b1594bb95a36b10a14cfd739fb1d5b8 100644
GIT binary patch
literal 6026
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
z%0D~v;;Ax&*E&?&)82fgP8j9BIoyA0T-=}{ir0HSNlf*MKo3KGO;eFJmlxCf5{I3y
zrUGDUX77gbe#&io#S
z_F990?cDKRhBxFW_Pu;!Q2^L>H2VKTMuh3+^VDgWhv<>t*n!R+1C1&*hp7JpDW-;f
literal 5669
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
O0$S?&YE>%sQU3=w@AF>(
diff --git a/tgstation.dme b/tgstation.dme
index 6eca3c3f05b4..7eb25b22df2c 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -5741,6 +5741,7 @@
#include "monkestation\code\game\objects\items\choice_beacon.dm"
#include "monkestation\code\game\objects\items\cirno_plush.dm"
#include "monkestation\code\game\objects\items\gravity_gun.dm"
+#include "monkestation\code\game\objects\items\jukebox_beacon.dm"
#include "monkestation\code\game\objects\items\miningweapons.dm"
#include "monkestation\code\game\objects\items\mothlet_grenade.dm"
#include "monkestation\code\game\objects\items\plushies.dm"
From 031fa63470f26c9811a3e4788edf5d6d4e838213 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 2 Apr 2024 03:12:34 +0000
Subject: [PATCH 05/11] Automatic changelog for PR #1548 [ci skip]
---
html/changelogs/AutoChangeLog-pr-1548.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-1548.yml
diff --git a/html/changelogs/AutoChangeLog-pr-1548.yml b/html/changelogs/AutoChangeLog-pr-1548.yml
new file mode 100644
index 000000000000..1593e2c819d8
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-1548.yml
@@ -0,0 +1,4 @@
+author: "Tractor Mann"
+delete-after: True
+changes:
+ - refactor: "Jukebox Beacon Code has been refactored, changes to note is that jukeboxes no longer deploy instantly and now come with a wrench."
\ No newline at end of file
From 73f06c203c8873bd7885b99e6f8691506fe947d7 Mon Sep 17 00:00:00 2001
From: MilkForever
Date: Tue, 2 Apr 2024 19:29:18 -0400
Subject: [PATCH 06/11] Waffles's Personal Modsuit (#1520)
* Waffles' modsuit
Adds an admin only modsuit to the game.
* I hate byond
Hopefully this fixes linters
---
monkestation/code/modules/mod/mod_control.dm | 63 ++++++++++++++++++
monkestation/code/modules/mod/mod_types.dm | 17 +++++
.../icons/mob/clothing/worn_modsuit.dmi | Bin 1829 -> 3506 bytes
.../icons/obj/clothing/modsuits/modsuit.dmi | Bin 1230 -> 2144 bytes
tgstation.dme | 2 +
5 files changed, 82 insertions(+)
create mode 100644 monkestation/code/modules/mod/mod_types.dm
diff --git a/monkestation/code/modules/mod/mod_control.dm b/monkestation/code/modules/mod/mod_control.dm
index e69de29bb2d1..4f686fcb552a 100644
--- a/monkestation/code/modules/mod/mod_control.dm
+++ b/monkestation/code/modules/mod/mod_control.dm
@@ -0,0 +1,63 @@
+/datum/mod_theme/waffles
+ name = "Waffles' corporate"
+ desc = "A heavily modified suit created by Waffles to distinguish himself from other CentCom Officers. If you are not Waffles you shouldn't be wearing this!"
+ default_skin = "waffles"
+ resistance_flags = INDESTRUCTIBLE|LAVA_PROOF|FIRE_PROOF|UNACIDABLE|ACID_PROOF
+ atom_flags = PREVENT_CONTENTS_EXPLOSION_1
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ complexity_max = 50
+ armor_type= /datum/armor/mod_theme_waffles
+ charge_drain = DEFAULT_CHARGE_DRAIN * 0
+ siemens_coefficient = 0
+ slowdown_inactive = 0
+ slowdown_active = 0
+ ui_theme = "wizard"
+ inbuilt_modules = list(/obj/item/mod/module/anti_magic/wizard)
+ allowed_suit_storage = list(
+ /obj/item/ammo_box,
+ /obj/item/ammo_casing,
+ /obj/item/restraints/handcuffs,
+ /obj/item/assembly/flash,
+ /obj/item/melee/baton,
+ /obj/item/gun,
+ )
+ skins = list(
+ "waffles" = list(
+ MOD_ICON_OVERRIDE = 'monkestation/icons/obj/clothing/modsuits/modsuit.dmi',
+ MOD_WORN_ICON_OVERRIDE = 'monkestation/icons/mob/clothing/worn_modsuit.dmi',
+ HELMET_FLAGS = list(
+ UNSEALED_LAYER = NECK_LAYER,
+ UNSEALED_CLOTHING = SNUG_FIT,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|HEADINTERNALS,
+ UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
+ SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
+ SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF,
+ ),
+ CHESTPLATE_FLAGS = list(
+ UNSEALED_CLOTHING = THICKMATERIAL,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_INVISIBILITY = HIDEJUMPSUIT,
+ ),
+ GAUNTLETS_FLAGS = list(
+ UNSEALED_CLOTHING = THICKMATERIAL,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ CAN_OVERSLOT = TRUE,
+ ),
+ BOOTS_FLAGS = list(
+ UNSEALED_CLOTHING = THICKMATERIAL,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ CAN_OVERSLOT = TRUE,
+ ),
+ ),
+ )
+
+/datum/armor/mod_theme_waffles
+ melee = 50
+ bullet = 60
+ laser = 50
+ energy = 50
+ bomb = 100
+ bio = 100
+ fire = 100
+ acid = 100
+ wound = 30
diff --git a/monkestation/code/modules/mod/mod_types.dm b/monkestation/code/modules/mod/mod_types.dm
new file mode 100644
index 000000000000..fbe768321cab
--- /dev/null
+++ b/monkestation/code/modules/mod/mod_types.dm
@@ -0,0 +1,17 @@
+/obj/item/mod/control/pre_equipped/waffles
+ theme = /datum/mod_theme/waffles
+ applied_core = /obj/item/mod/core/infinite
+ applied_modules = list(
+ /obj/item/mod/module/storage/bluespace,
+ /obj/item/mod/module/emp_shield/advanced,
+ /obj/item/mod/module/welding,
+ /obj/item/mod/module/stealth/ninja,
+ /obj/item/mod/module/magnetic_harness,
+ /obj/item/mod/module/jetpack/advanced,
+ /obj/item/mod/module/noslip,
+ /obj/item/mod/module/dna_lock/reinforced,
+ )
+ default_pins = list(
+ /obj/item/mod/module/stealth/ninja,
+ /obj/item/mod/module/jetpack/advanced,
+ )
diff --git a/monkestation/icons/mob/clothing/worn_modsuit.dmi b/monkestation/icons/mob/clothing/worn_modsuit.dmi
index 5bb12b10c05eed0fb2704ef1da23401bed1c9829..900e2c30e61e52e73a469c366c3824a7b8b1847e 100644
GIT binary patch
literal 3506
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
literal 1829
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
so&Vt9Zx(RFO
Date: Tue, 2 Apr 2024 23:29:37 +0000
Subject: [PATCH 07/11] Automatic changelog for PR #1520 [ci skip]
---
html/changelogs/AutoChangeLog-pr-1520.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-1520.yml
diff --git a/html/changelogs/AutoChangeLog-pr-1520.yml b/html/changelogs/AutoChangeLog-pr-1520.yml
new file mode 100644
index 000000000000..fd021f08c7e0
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-1520.yml
@@ -0,0 +1,4 @@
+author: "MilkForever"
+delete-after: True
+changes:
+ - rscadd: "Added the admin-only Waffles corporate MODsuit."
\ No newline at end of file
From fd2f8c7c82793e5dc46500c4b08ec36cedcaf0de Mon Sep 17 00:00:00 2001
From: Changelogs
Date: Wed, 3 Apr 2024 01:11:19 +0000
Subject: [PATCH 08/11] Automatic changelog compile [ci skip]
---
html/changelogs/AutoChangeLog-pr-1520.yml | 4 ----
html/changelogs/AutoChangeLog-pr-1548.yml | 4 ----
html/changelogs/archive/2024-04.yml | 6 ++++++
3 files changed, 6 insertions(+), 8 deletions(-)
delete mode 100644 html/changelogs/AutoChangeLog-pr-1520.yml
delete mode 100644 html/changelogs/AutoChangeLog-pr-1548.yml
diff --git a/html/changelogs/AutoChangeLog-pr-1520.yml b/html/changelogs/AutoChangeLog-pr-1520.yml
deleted file mode 100644
index fd021f08c7e0..000000000000
--- a/html/changelogs/AutoChangeLog-pr-1520.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "MilkForever"
-delete-after: True
-changes:
- - rscadd: "Added the admin-only Waffles corporate MODsuit."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-1548.yml b/html/changelogs/AutoChangeLog-pr-1548.yml
deleted file mode 100644
index 1593e2c819d8..000000000000
--- a/html/changelogs/AutoChangeLog-pr-1548.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Tractor Mann"
-delete-after: True
-changes:
- - refactor: "Jukebox Beacon Code has been refactored, changes to note is that jukeboxes no longer deploy instantly and now come with a wrench."
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml
index 7e7e64a7c947..f8e2e70a91bb 100644
--- a/html/changelogs/archive/2024-04.yml
+++ b/html/changelogs/archive/2024-04.yml
@@ -48,3 +48,9 @@
- bugfix: The TEG now works again (still unobtainable by regular means though).
- bugfix: the TEG and its circulators can now be rotated counterclockwise again.
- refactor: The TEG now uses a TGUI interface rather than the old HTML one.
+2024-04-03:
+ MilkForever:
+ - rscadd: Added the admin-only Waffles corporate MODsuit.
+ Tractor Mann:
+ - refactor: Jukebox Beacon Code has been refactored, changes to note is that jukeboxes
+ no longer deploy instantly and now come with a wrench.
From 708edfe895347c8aa1a00889180d8e12e1bb8c15 Mon Sep 17 00:00:00 2001
From: Lucy
Date: Wed, 3 Apr 2024 00:03:26 -0400
Subject: [PATCH 09/11] Revert "Levelup ability for Bloodsuckers (#1469)"
(#1567)
This reverts commit fd82acb7d4aa48e1d84da116ea5053199ec3dcc2.
---
.../bloodsuckers/powers/force_level.dm | 43 -------------------
tgstation.dme | 1 -
2 files changed, 44 deletions(-)
delete mode 100644 monkestation/code/modules/bloodsuckers/powers/force_level.dm
diff --git a/monkestation/code/modules/bloodsuckers/powers/force_level.dm b/monkestation/code/modules/bloodsuckers/powers/force_level.dm
deleted file mode 100644
index b896ed2d5917..000000000000
--- a/monkestation/code/modules/bloodsuckers/powers/force_level.dm
+++ /dev/null
@@ -1,43 +0,0 @@
-/* PROC TO MANAGE LEVELLING UP THIS WAY */
-/datum/antagonist/bloodsucker/proc/ForcedRankUp() //I hate this.
- set waitfor = FALSE
- if(!owner || !owner.current)
- return
- bloodsucker_level_unspent ++
- // Spend Rank Immediately?
- if(istype(owner.current.loc, /obj/structure/closet/crate/coffin)) //Hacky workaround.
- SpendRank()
- else
- to_chat(owner, span_notice("You have forced your powers to further through the power of blood; Sleep within your lair to claim your boon."))
- if(bloodsucker_level_unspent >= 2)
- to_chat(owner, span_notice("Bloodsucker Tip: If you cannot find or steal a coffin to use, you can build one from wooden planks."))
-
-/datum/action/cooldown/bloodsucker/levelup
- name = "Forced Evolution"
- desc = "Spend the lovely sanguine running through your veins; aging you at an accelerated rate."
- button_icon_state = "power_feed"
- var/total_uses = 1
- bloodcost = 50
- cooldown_time = 50
- power_flags = BP_AM_STATIC_COOLDOWN
- check_flags = BP_CANT_USE_WHILE_STAKED|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS
- purchase_flags = BLOODSUCKER_CAN_BUY|BLOODSUCKER_DEFAULT_POWER
-
-/datum/action/cooldown/bloodsucker/levelup/ActivatePower()
- if(total_uses >= 10)
- to_chat(owner, span_bolddanger("The power of blood simply isn't enough to advance further... Age must suffice, from now on."))
- return
- var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(/datum/antagonist/bloodsucker)
- if(istype(bloodsuckerdatum))
- bloodsuckerdatum.ForcedRankUp() // Rank up! Must still be in a coffin to level!
- total_uses++
- bloodcost = total_uses * 20 //By default, it's 50 blood, then 100, etc etc.
- if(total_uses == 4)
- to_chat(owner, span_revenbignotice("With the next use; you can't help but feel your true nature will become visible to all that gaze upon your visage! OOC: This will costitute a breach of the Masquerade and show you're a vampire!"))
- if(total_uses == 5) //you're fucked.
- bloodsuckerdatum.owner.current.remove_traits(TRAIT_DISFIGURED, BLOODSUCKER_TRAIT) //Disfigures them.
- bloodsuckerdatum.break_masquerade() //Killing people to get this far should break the masquerade.
- to_chat(owner, span_danger("You've broken the Masquerade, and revealed yourself for the blood-theiving, murdering parasite you are! Vampires and Crew will attempt to hunt you... But isn't that what you want? Fresh blood for your fangs..."))
- for(var/datum/action/cooldown/bloodsucker/power as anything in bloodsuckerdatum.powers)
- if(istype(power, /datum/action/cooldown/bloodsucker/masquerade) || istype(power, /datum/action/cooldown/bloodsucker/veil))
- bloodsuckerdatum.RemovePower(power)
diff --git a/tgstation.dme b/tgstation.dme
index 9808b909b6b2..10096cbb5b28 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -6053,7 +6053,6 @@
#include "monkestation\code\modules\bloodsuckers\powers\_base_power.dm"
#include "monkestation\code\modules\bloodsuckers\powers\cloak.dm"
#include "monkestation\code\modules\bloodsuckers\powers\feed.dm"
-#include "monkestation\code\modules\bloodsuckers\powers\force_level.dm"
#include "monkestation\code\modules\bloodsuckers\powers\fortitude.dm"
#include "monkestation\code\modules\bloodsuckers\powers\go_home.dm"
#include "monkestation\code\modules\bloodsuckers\powers\masquerade.dm"
From 4131716646dd82b51b9d838372791f0509064fbf Mon Sep 17 00:00:00 2001
From: Lucy
Date: Wed, 3 Apr 2024 18:51:37 -0400
Subject: [PATCH 10/11] Allow airlock helpers to work with windoors (#1568)
* Allow airlock helpers to work with windoors
* fix that
* whoops
---
.../RandomBars/Tram/tram_bar_beachside.dmm | 11 +++-----
code/modules/mapping/mapping_helpers.dm | 2 ++
.../code/modules/mapping/access_helpers.dm | 15 +++++++++++
.../code/modules/mapping/mapping_helpers.dm | 27 +++++++++++++++++++
4 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/_maps/~monkestation/RandomBars/Tram/tram_bar_beachside.dmm b/_maps/~monkestation/RandomBars/Tram/tram_bar_beachside.dmm
index 65031b8a08fa..041c608df6f3 100644
--- a/_maps/~monkestation/RandomBars/Tram/tram_bar_beachside.dmm
+++ b/_maps/~monkestation/RandomBars/Tram/tram_bar_beachside.dmm
@@ -426,8 +426,7 @@
"nN" = (
/obj/structure/ladder,
/obj/machinery/door/window/left/directional/north{
- name = "Bar Backroom Access";
- req_one_access = list("bar")
+ name = "Bar Backroom Access"
},
/obj/structure/window/reinforced/spawner/directional/west,
/obj/structure/window/reinforced/spawner/directional/east,
@@ -605,8 +604,7 @@
name = "Kitchen Counter Shutters"
},
/obj/machinery/door/window/left/directional/west{
- name = "Kitchen";
- req_one_access = list("kitchen")
+ name = "Kitchen"
},
/obj/effect/mapping_helpers/airlock/access/all/service/kitchen,
/turf/open/floor/wood,
@@ -820,7 +818,6 @@
/area/station/commons/lounge)
"zo" = (
/obj/machinery/door/window/left/directional/south{
- req_one_access = list("kitchen");
name = "Kitchen"
},
/obj/effect/turf_decal/siding/wood,
@@ -877,8 +874,7 @@
/area/station/commons/lounge)
"AC" = (
/obj/machinery/door/window/left/directional/east{
- name = "Bar";
- req_one_access = list("bar")
+ name = "Bar"
},
/obj/effect/turf_decal/siding/wood{
dir = 4
@@ -1558,7 +1554,6 @@
/area/station/commons/lounge)
"TG" = (
/obj/machinery/door/window/left/directional/south{
- req_one_access = list("kitchen");
name = "Kitchen Coldroom Access"
},
/obj/effect/turf_decal/siding/wood{
diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm
index b7697b3cb75c..3d1065149d63 100644
--- a/code/modules/mapping/mapping_helpers.dm
+++ b/code/modules/mapping/mapping_helpers.dm
@@ -110,6 +110,7 @@
layer = DOOR_HELPER_LAYER
late = TRUE
+/* replaced in monkestation\code\modules\mapping\mapping_helpers.dm
/obj/effect/mapping_helpers/airlock/Initialize(mapload)
. = ..()
if(!mapload)
@@ -121,6 +122,7 @@
log_mapping("[src] failed to find an airlock at [AREACOORD(src)]")
else
payload(airlock)
+*/
/obj/effect/mapping_helpers/airlock/LateInitialize()
. = ..()
diff --git a/monkestation/code/modules/mapping/access_helpers.dm b/monkestation/code/modules/mapping/access_helpers.dm
index e1f00e361b73..6a7dac901dfa 100644
--- a/monkestation/code/modules/mapping/access_helpers.dm
+++ b/monkestation/code/modules/mapping/access_helpers.dm
@@ -1,3 +1,18 @@
+/obj/effect/mapping_helpers/airlock/access/any/payload_windoor(obj/machinery/door/window/windoor)
+ if(windoor.req_access != null)
+ log_mapping("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!")
+ else
+ var/list/access_list = get_access()
+ windoor.req_one_access += access_list
+
+/obj/effect/mapping_helpers/airlock/access/all/payload_windoor(obj/machinery/door/window/windoor)
+ if(windoor.req_one_access != null)
+ log_mapping("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!")
+ else
+ var/list/access_list = get_access()
+ windoor.req_access += access_list
+
+
/obj/effect/mapping_helpers/airlock/access/all/service/kitchen/east_offset
offset_dir = EAST
diff --git a/monkestation/code/modules/mapping/mapping_helpers.dm b/monkestation/code/modules/mapping/mapping_helpers.dm
index 0b464f77a218..0cf47616d4d5 100644
--- a/monkestation/code/modules/mapping/mapping_helpers.dm
+++ b/monkestation/code/modules/mapping/mapping_helpers.dm
@@ -50,3 +50,30 @@
/obj/effect/area_power_helper/requires_power
set_state = TRUE
+
+/obj/effect/mapping_helpers/airlock/Initialize(mapload)
+ . = ..()
+ if(!mapload)
+ log_mapping("[src] spawned outside of mapload!")
+ return
+
+ var/turf/spot = (offset_dir ? get_step(src, offset_dir) : loc)
+ if(!try_for_airlock(spot) && !try_for_windoor(spot))
+ log_mapping("[src] failed to find an airlock at [AREACOORD(src)]")
+
+/obj/effect/mapping_helpers/airlock/proc/try_for_airlock(turf/spot)
+ . = FALSE
+ var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in spot
+ if(!QDELETED(airlock))
+ payload(airlock)
+ return TRUE
+
+/obj/effect/mapping_helpers/airlock/proc/try_for_windoor(turf/spot)
+ . = FALSE
+ var/obj/machinery/door/window/windoor = locate(/obj/machinery/door/window) in spot
+ if(!QDELETED(windoor))
+ payload_windoor(windoor)
+ return TRUE
+
+/obj/effect/mapping_helpers/airlock/proc/payload_windoor(obj/machinery/door/window/windoor)
+ return
From 494c5b06a808d4e7b3efcc5ba9494424b9e64eb5 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 3 Apr 2024 22:51:56 +0000
Subject: [PATCH 11/11] Automatic changelog for PR #1568 [ci skip]
---
html/changelogs/AutoChangeLog-pr-1568.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-1568.yml
diff --git a/html/changelogs/AutoChangeLog-pr-1568.yml b/html/changelogs/AutoChangeLog-pr-1568.yml
new file mode 100644
index 000000000000..63fafa969dac
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-1568.yml
@@ -0,0 +1,4 @@
+author: "Absolucy"
+delete-after: True
+changes:
+ - bugfix: "Airlock mapping helpers now work with windoors."
\ No newline at end of file