Skip to content

Commit

Permalink
[MIRROR] Remove the Prybar from the RCF, Introduce the F.O.C.K. to ha…
Browse files Browse the repository at this point in the history
…ck doors, air alarms and APC's instead. (#5144)

* Remove the Prybar from the RCF, Introduce the F.O.C.K. to hack doors, air alarms and APC's instead. (#4491)

* Initial Commit

* Makes the Fock not try to hack if the door is welded or bolted

* Apply suggestions from code review

* Update modular_nova/modules/modular_items/code/fock.dm

---------

Co-authored-by: Bloop <[email protected]>

* [MIRROR] Remove the Prybar from the RCF, Introduce the F.O.C.K. to hack doors, air alarms and APC's instead.

* Fix conflict

---------

Co-authored-by: OrbisAnima <[email protected]>
Co-authored-by: Bloop <[email protected]>
Co-authored-by: StealsThePRs <[email protected]>
Co-authored-by: Feenie <[email protected]>
  • Loading branch information
5 people authored Nov 2, 2024
1 parent 6797223 commit 96448b7
Show file tree
Hide file tree
Showing 5 changed files with 131 additions and 14 deletions.
20 changes: 8 additions & 12 deletions modular_nova/modules/colony_fabricator/code/design_datums/tools.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
description = "Contains all of the colony fabricator's tool designs."
design_ids = list(
"colony_power_drive",
// "colony_prybar", // FLUFFY FRONTIER REMOVAL
"colony_crowbar",
"colony_arc_welder",
"colony_compact_drill",
)
Expand All @@ -30,24 +30,20 @@
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED,
)

// Crowbar that is completely normal except it can force doors
// FLUFFY FRONTIER REMOVAL BEGIN - No public door openers
/*
/datum/design/colony_door_crowbar
name = "Prybar"
id = "colony_prybar"
// A large crowbar which has more force and 30% more speed but its size normal instead of small

/datum/design/colony_crowbar
name = "Large Crowbar"
id = "colony_crowbar"
build_type = COLONY_FABRICATOR
build_path = /obj/item/crowbar/large/doorforcer
build_path = /obj/item/crowbar/large
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.75,
/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/iron = SMALL_MATERIAL_AMOUNT*0.7,
)
category = list(
RND_CATEGORY_INITIAL,
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED,
)
*/
// FLUFFY FRONTIER REMOVAL END

// Welder that takes no fuel or power to run but is quite slow, at least it sounds cool as hell

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
subcategory = "Hand-Held Equipment"
cost = PAYCHECK_COMMAND

/datum/armament_entry/company_import/akh_frontier/basic/fock
item_type = /obj/item/multitool/fock
cost = PAYCHECK_COMMAND * 4
contraband = TRUE

/datum/armament_entry/company_import/akh_frontier/basic/omni_drill
item_type = /obj/item/screwdriver/omni_drill

Expand All @@ -24,8 +29,7 @@

/datum/armament_entry/company_import/akh_frontier/deployables_fab/rapid_construction_fabricator
item_type = /obj/item/flatpacked_machine
cost = CARGO_CRATE_VALUE * 8
restricted = TRUE
cost = CARGO_CRATE_VALUE * 6

/datum/armament_entry/company_import/akh_frontier/deployables_fab/foodricator
item_type = /obj/item/flatpacked_machine/organics_ration_printer
Expand Down
105 changes: 105 additions & 0 deletions modular_nova/modules/modular_items/code/fock.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
/// Upper and lower bounds for the randomized damage dealt to doors
#define FOCK_DOOR_DAMAGE_LOWER 45
#define FOCK_DOOR_DAMAGE_UPPER 90
/// Upper and lower bounds for the randomized damage dealt to apcs
#define FOCK_APC_DAMAGE_LOWER 20
#define FOCK_APC_DAMAGE_UPPER 50
/// Upper and lower bounds for the jacking speed
#define FOCK_JACKING_SPEED_LOWER 12
#define FOCK_JACKING_SPEED_UPPER 18

/obj/item/multitool //we make the multitool cheaper on vending machines as this thing depreciates its price
custom_premium_price = PAYCHECK_COMMAND * 2 //originally 300, becomes 200 credits.

// So, this is a multitool that it's whole deal is that it lets people unlock doors like a PAI, and unlock (or relock!) apc's and air alarms, but doing so causes damage to it, unless the apc or air alarm are being locked, then no damage.

/obj/item/multitool/fock
name = "full override control kit"
desc = parent_type::desc + " The F.O.C.K. additionally allows the user to engage the emergency protocols of doors, apc's and air alarms."
special_desc = "Made by a disgruntled inventor that got into an argument with the FTU over their colonial prybars, the Full Override Control Kit \
is marketed as a solution to emergency situations where the integrity of machinery is of less concern than the lives at stake of their users. \
Sadly, some unsavory types had been known to be using the F.O.C.K. to do the exact kind of activities that the inventor wanted to stop. "
icon = 'icons/obj/devices/tool.dmi'
icon_state = "multitool"
inhand_icon_state = "multitool"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_premium_price = PAYCHECK_COMMAND * 3

/obj/item/multitool/fock/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(istype(interacting_with, /obj/machinery/door))
hack_door(interacting_with, user)
return ITEM_INTERACT_SUCCESS
if(istype(interacting_with, /obj/machinery/airalarm))
hack_air_alarm(interacting_with, user)
return ITEM_INTERACT_SUCCESS
if(istype(interacting_with, /obj/machinery/power/apc))
hack_apc(interacting_with, user)
return ITEM_INTERACT_SUCCESS
return ..()

/obj/item/multitool/fock/proc/hack_door(obj/machinery/door/door, mob/living/user) //stolen from Pai hacking
playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 50, TRUE)
balloon_alert(user, "overriding...")
do_sparks(4, TRUE, door)
visible_message(span_warning("Sparks fly out of [door]!"))
if(door.locked)
to_chat(user, span_warning("The [door]'s bolts prevent it from being forced!"))
balloon_alert(user, "failed!")
return FALSE
if(door.welded)
to_chat(user, span_warning("It's welded, it won't budge!"))
balloon_alert(user, "failed!")
return FALSE
if(!do_after(user, rand(FOCK_JACKING_SPEED_LOWER, FOCK_JACKING_SPEED_UPPER) SECONDS, door, timed_action_flags = NONE, progress = TRUE))
balloon_alert(user, "failed!")
do_sparks(2, TRUE, door)
return FALSE
balloon_alert(user, "success")
door.open()
door.take_damage(rand(FOCK_DOOR_DAMAGE_LOWER, FOCK_DOOR_DAMAGE_UPPER), BRUTE)
do_sparks(4, FALSE, door)
return TRUE

/obj/item/multitool/fock/proc/hack_air_alarm(obj/machinery/airalarm/airalarm, mob/living/user)
playsound(src, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(user, "overriding...")
do_sparks(2, TRUE, airalarm)
visible_message(span_warning("Sparks fly out of [airalarm]!"))
if(!do_after(user, rand(FOCK_JACKING_SPEED_LOWER, FOCK_JACKING_SPEED_UPPER) SECONDS, airalarm, timed_action_flags = NONE, progress = TRUE))
balloon_alert(user, "failed!")
do_sparks(1, TRUE, airalarm)
return FALSE
balloon_alert(user, "success")
airalarm.locked = !airalarm.locked
airalarm.update_appearance()
if(!airalarm.locked)
airalarm.ui_interact(user)
airalarm.take_damage(rand(FOCK_APC_DAMAGE_LOWER, FOCK_APC_DAMAGE_UPPER), BRUTE)
do_sparks(3, FALSE, airalarm)
return TRUE

/obj/item/multitool/fock/proc/hack_apc(obj/machinery/power/apc/apc, mob/living/user)
playsound(src, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(user, "overriding...")
do_sparks(2, TRUE, apc)
visible_message(span_warning("Sparks fly out of [apc]!"))
if(!do_after(user, rand(FOCK_JACKING_SPEED_LOWER, FOCK_JACKING_SPEED_UPPER) SECONDS, apc, timed_action_flags = NONE, progress = TRUE))
balloon_alert(user, "failed!")
do_sparks(1, TRUE, apc)
return FALSE
balloon_alert(user, "success")
apc.locked = !apc.locked
apc.update_appearance()
if(!apc.locked)
apc.ui_interact(user)
apc.take_damage(rand(FOCK_APC_DAMAGE_LOWER, FOCK_APC_DAMAGE_UPPER), BRUTE)
do_sparks(3, FALSE, apc)
return TRUE

#undef FOCK_DOOR_DAMAGE_LOWER
#undef FOCK_DOOR_DAMAGE_UPPER
#undef FOCK_APC_DAMAGE_LOWER
#undef FOCK_APC_DAMAGE_UPPER
#undef FOCK_JACKING_SPEED_LOWER
#undef FOCK_JACKING_SPEED_UPPER
10 changes: 10 additions & 0 deletions modular_nova/modules/modular_vending/code/tool.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/obj/machinery/vending/tool
premium_nova = list(
/obj/item/multitool/fock = 2,
/obj/item/screwdriver/omni_drill = 1,
/obj/item/weldingtool/electric/arc_welder = 1,
/obj/item/pickaxe/drill/compact = 1,
)
contraband_nova = list(
/obj/item/crowbar/large/doorforcer = 2,
)
2 changes: 2 additions & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -8075,6 +8075,7 @@
#include "modular_nova\modules\modular_items\code\ciggies.dm"
#include "modular_nova\modules\modular_items\code\cross.dm"
#include "modular_nova\modules\modular_items\code\designs.dm"
#include "modular_nova\modules\modular_items\code\fock.dm"
#include "modular_nova\modules\modular_items\code\makeshift.dm"
#include "modular_nova\modules\modular_items\code\modular_glasses.dm"
#include "modular_nova\modules\modular_items\code\necklace.dm"
Expand Down Expand Up @@ -8198,6 +8199,7 @@
#include "modular_nova\modules\modular_vending\code\medical.dm"
#include "modular_nova\modules\modular_vending\code\megaseed.dm"
#include "modular_nova\modules\modular_vending\code\security.dm"
#include "modular_nova\modules\modular_vending\code\tool.dm"
#include "modular_nova\modules\modular_vending\code\vending.dm"
#include "modular_nova\modules\modular_vending\code\wardrobes.dm"
#include "modular_nova\modules\modular_weapons\code\conversion_kits.dm"
Expand Down

0 comments on commit 96448b7

Please sign in to comment.