Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cargo Updated #2

Merged
merged 18 commits into from
Feb 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@
#define TRAIT_INCAPACITATED "incapacitated"
#define HANDCUFFED_TRAIT "handcuffed"
#define TRAIT_BLIND "blind"
#define HYPNOCHAIR_TRAIT "hypnochair" //dripstation edit
#define TRAIT_ECHOLOCATION_RECEIVER "echolocation_receiver"
#define TRAIT_MUTE "mute"
#define TRAIT_EMOTEMUTE "emotemute"
Expand Down Expand Up @@ -242,6 +243,7 @@
#define TRAIT_QUICK_CARRY "quick-carry"
#define TRAIT_QUICKER_CARRY "quicker-carry"
#define TRAIT_QUICKEST_CARRY "quickest-carry"
#define TRAIT_QUICK_BUILD "quick-build" //dripstation edit
#define TRAIT_STRONG_GRIP "strong-grip"
#define TRAIT_UNINTELLIGIBLE_SPEECH "unintelligible-speech"
#define TRAIT_UNSTABLE "unstable"
Expand Down Expand Up @@ -343,6 +345,7 @@
#define TRAIT_ANXIOUS "anxious"
#define TRAIT_SEE_REAGENTS "see_reagents"
#define TRAIT_STARGAZED "stargazed"
#define TRAIT_TRANSFORM_ACTIVE "active_transform" //dripstation edit

// common trait sources
#define TRAIT_GENERIC "generic"
Expand Down
9 changes: 9 additions & 0 deletions code/__DEFINES/{dripstation_defines}/blackmarket.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

// Shipping methods

// The BEST way of shipping items: accurate, "undetectable"
#define SHIPPING_METHOD_LTSRBT "LTSRBT"
// Picks a random area to teleport the item to and gives you a minute to get there before it is sent.
#define SHIPPING_METHOD_TELEPORT "Teleport"
// Throws the item from somewhere at the station.
#define SHIPPING_METHOD_LAUNCH "Launch"
2 changes: 2 additions & 0 deletions code/__DEFINES/{dripstation_defines}/cargo.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/// Defining standart crate value for blackmarket, some events will change this shit some day
#define CARGO_CRATE_VALUE 200
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// /datum/component/transforming signals

/// From /datum/component/transforming/proc/on_attack_self(obj/item/source, mob/user): (obj/item/source, mob/user, active)
#define COMSIG_TRANSFORMING_PRE_TRANSFORM "transforming_pre_transform"
/// Return COMPONENT_BLOCK_TRANSFORM to prevent the item from transforming.
#define COMPONENT_BLOCK_TRANSFORM (1<<0)
/// From /datum/component/transforming/proc/do_transform(obj/item/source, mob/user): (obj/item/source, mob/user, active)
#define COMSIG_TRANSFORMING_ON_TRANSFORM "transforming_on_transform"
/// Return COMPONENT_NO_DEFAULT_MESSAGE to prevent the transforming component from displaying the default transform message / sound.
#define COMPONENT_NO_DEFAULT_MESSAGE (1<<0)
3 changes: 3 additions & 0 deletions code/controllers/subsystem/research.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ SUBSYSTEM_DEF(research)
var/list/techweb_categories = list() //category name = list(node.id = TRUE)
var/list/techweb_boost_items = list() //associative double-layer path = list(id = list(point_type = point_discount))
var/list/techweb_nodes_hidden = list() //Node ids that should be hidden by default.
var/list/techweb_nodes_experimental = list()//Node ids that are exclusive to the BEPIS. dripstation edit
var/list/techweb_point_items = list( //path = list(point type = value)
/obj/item/assembly/signaler/anomaly = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
)
Expand Down Expand Up @@ -256,6 +257,8 @@ SUBSYSTEM_DEF(research)
D.unlocked_by += node.id
if(node.hidden)
techweb_nodes_hidden[node.id] = TRUE
if(node.experimental) //dripstation edit
techweb_nodes_experimental[node.id] = TRUE //dripstation edit
CHECK_TICK
generate_techweb_unlock_linking()

Expand Down
4 changes: 2 additions & 2 deletions code/datums/components/chasm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
STOP_PROCESSING(SSobj, src)

/datum/component/chasm/proc/is_safe()
//if anything matching this typecache is found in the chasm, we don't drop things
var/static/list/chasm_safeties_typecache = typecacheof(list(/obj/structure/lattice/catwalk, /obj/structure/stone_tile))
//if anything matching this typecache is found in the chasm, we don't drop things, dripstation edit
var/static/list/chasm_safeties_typecache = typecacheof(list(/obj/structure/lattice/catwalk, /obj/structure/lattice/lava, /obj/structure/stone_tile))

var/atom/parent = src.parent
var/list/found_safeties = typecache_filter_list(parent.contents, chasm_safeties_typecache)
Expand Down
4 changes: 2 additions & 2 deletions code/datums/components/storage/concrete/pockets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
/datum/component/storage/concrete/pockets/shoes/Initialize()
. = ..()
set_holdable(list(
/obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen,
/obj/item/kitchen/knife, /obj/item/boxcutter, /obj/item/switchblade, /obj/item/pen, //boxcutter dripstation edit
/obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector,
/obj/item/reagent_containers/autoinjector/medipen, /obj/item/reagent_containers/dropper,
/obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini,
Expand All @@ -56,7 +56,7 @@
/datum/component/storage/concrete/pockets/shoes/clown/Initialize()
. = ..()
set_holdable(list(
/obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen,
/obj/item/kitchen/knife, /obj/item/boxcutter, /obj/item/switchblade, /obj/item/pen, //boxcutter dripstation edit
/obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector,
/obj/item/reagent_containers/autoinjector/medipen, /obj/item/reagent_containers/dropper,
/obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini,
Expand Down
2 changes: 2 additions & 0 deletions code/game/atoms_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,8 @@
return FALSE
if(force < (move_resist * MOVE_FORCE_PULL_RATIO))
return FALSE
if(SEND_SIGNAL(src, COMSIG_ATOM_CAN_BE_PULLED, user) & COMSIG_ATOM_CANT_PULL) //dripstation edit
return FALSE //dripstation edit
return TRUE

/// Called when mob changes from a standing position into a prone while lacking the ability to stand up at the moment.
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/dynamic/dynamic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
/// Antags rolled by rules so far, to keep track of and discourage scaling past a certain ratio of crew/antags especially on lowpop.
var/antags_rolled = 0
/// CRATE DISCOUNT
var/discountedcrates = list( /datum/supply_pack/security/laser,
var/discountedcrates = list( /datum/supply_pack/security/armory/laser, //dripstation edit
/datum/supply_pack/security/vending/security,
/datum/supply_pack/service/party)

Expand Down
1 change: 1 addition & 0 deletions code/game/machinery/recharger.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

var/static/list/allowed_devices = typecacheof(list(
/obj/item/gun/energy,
/obj/item/cargo_teleporter, //dripstation edit
/obj/item/melee/baton,
/obj/item/ammo_box/magazine/recharge,
/obj/item/ammo_box/magazine/m308/laser,
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/stacks/sheets/sheet_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \
new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \
null, \
new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 40, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 40, one_per_turf = TRUE, on_floor = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75), \
null, \
new/datum/stack_recipe("computer frame", /obj/structure/frame/computer, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \
Expand Down
10 changes: 8 additions & 2 deletions code/game/objects/items/stacks/stack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -456,9 +456,13 @@
var/on_floor = FALSE
var/window_checks = FALSE
var/placement_checks = FALSE
/// What trait, if any, boosts the construction speed of this item dripstation
var/trait_booster
/// How much the trait above, if supplied, boosts the construct speed of this item dripstation
var/trait_modifier = 1

/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1,time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE )

/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1,time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE, trait_booster, trait_modifier = 1)
//dripstation edit

src.title = title
src.result_type = result_type
Expand All @@ -470,6 +474,8 @@
src.on_floor = on_floor
src.window_checks = window_checks
src.placement_checks = placement_checks
src.trait_booster = trait_booster //dripstation edit
src.trait_modifier = trait_modifier //dripstation edit
/*
* Recipe list datum
*/
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/storage/belt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
/obj/item/shuttle_creator, //Yogs: Added this here cause I felt it fits
/obj/item/barrier_taperoll/engineering,
/obj/item/storage/bag/sheetsnatcher,
/obj/item/boxcutter, //dripstation edit
/obj/item/holotool,
))

Expand Down
8 changes: 7 additions & 1 deletion code/game/objects/structures/crates_lockers/closets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ GLOBAL_LIST_EMPTY(lockers)
var/door_anim_angle = 136
var/door_hinge_x = -6.5
var/door_anim_time = 2.5 // set to 0 to make the door not animate at all
/// true whenever someone with the strong pull component (or magnet modsuit module) is dragging this, preventing opening
var/strong_grab = FALSE //dripstation edit

/obj/structure/closet/Initialize(mapload)
. = ..()
Expand Down Expand Up @@ -171,7 +173,11 @@ GLOBAL_LIST_EMPTY(lockers)

/obj/structure/closet/proc/can_open(mob/living/user)
if(welded || locked)
return FALSE
to_chat(user, span_danger("[src] locked or welded to be opened.")) //dripstation edit
return FALSE //dripstation edit
if(strong_grab) //dripstation edit
to_chat(user, span_danger("[pulledby] has an incredibly strong grip on [src], preventing it from opening.")) //dripstation edit
return FALSE //dripstation edit

var/turf/T = get_turf(src)
for(var/mob/living/L in T)
Expand Down
11 changes: 9 additions & 2 deletions code/game/objects/structures/girders.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
max_integrity = 200
flags_1 = RAD_PROTECT_CONTENTS_1 | RAD_NO_CONTAMINATE_1
rad_insulation = RAD_VERY_LIGHT_INSULATION
var/next_beep = 0 //Prevents spamming of the construction sound, dripstation edit

/obj/structure/girder/examine(mob/user)
. = ..()
Expand All @@ -27,6 +28,12 @@
. += span_notice("[src] is disassembled! You probably shouldn't be able to see this examine message.")

/obj/structure/girder/attackby(obj/item/W, mob/user, params)
var/platingmodifier = 1 //dripstation edit start
if(HAS_TRAIT(user, TRAIT_QUICK_BUILD))
platingmodifier = 0.7
if(next_beep <= world.time)
next_beep = world.time + 10
playsound(src, 'sound/machines/clockcult/integration_cog_install.ogg', 50, TRUE) //dripstation edit end
add_fingerprint(user)

if(istype(W, /obj/item/gun/energy/plasmacutter))
Expand Down Expand Up @@ -55,7 +62,7 @@
to_chat(user, span_warning("You need at least two rods to create a false wall!"))
return
to_chat(user, span_notice("You start building a reinforced false wall..."))
if(do_after(user, 2 SECONDS, src))
if(do_after(user, 20*platingmodifier, src)) //dripstation edit
if(S.get_amount() < 2)
return
S.use(2)
Expand All @@ -68,7 +75,7 @@
to_chat(user, span_warning("You need at least five rods to add plating!"))
return
to_chat(user, span_notice("You start adding plating..."))
if(do_after(user, 4 SECONDS, src))
if(do_after(user, 40*platingmodifier, src)) //dripstation edit
if(S.get_amount() < 5)
return
S.use(5)
Expand Down
5 changes: 4 additions & 1 deletion code/game/turfs/simulated/chasm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@
to_chat(user, span_notice("You construct a lattice."))
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
// Create a lattice, without reverting to our baseturf
new /obj/structure/lattice(src)
if(istype(R, /obj/item/stack/rods/lava)) //dripstation edit start
new /obj/structure/lattice/lava(src)
else
new /obj/structure/lattice(src) //dripstation edit end
else
to_chat(user, span_warning("You need one rod to build a lattice."))
return
Expand Down
29 changes: 28 additions & 1 deletion code/modules/cargo/console.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
or homing beacons. Additionally, remove any privately ordered crates from the shuttle."
var/blockade_warning = "Bluespace instability detected. Shuttle movement impossible."
var/self_paid = FALSE
req_access = list(ACCESS_CARGO) //dripstation edit

/obj/machinery/computer/cargo/request
name = "supply request console"
Expand All @@ -25,6 +26,7 @@
requestonly = TRUE
can_send = FALSE
can_approve_requests = FALSE
req_access = list() //dripstation edit

/obj/machinery/computer/cargo/Initialize(mapload)
. = ..()
Expand All @@ -50,6 +52,7 @@

obj_flags |= EMAGGED
contraband = TRUE
do_sparks(8, FALSE, loc) //dripstation edit

// This also permamently sets this on the circuit board
var/obj/item/circuitboard/computer/cargo/board = circuit
Expand Down Expand Up @@ -133,6 +136,9 @@
/obj/machinery/computer/cargo/ui_act(action, params, datum/tgui/ui)
if(..())
return
if(!allowed(usr) && can_approve_requests) //dripstation edit
say("Access denied.") //dripstation edit
return //dripstation edit
switch(action)
if("send")
if(!SSshuttle.supply.canMove())
Expand All @@ -148,7 +154,7 @@
investigate_log("[key_name(usr)] sent the supply shuttle away.", INVESTIGATE_CARGO)
else
investigate_log("[key_name(usr)] called the supply shuttle.", INVESTIGATE_CARGO)
say("The supply shuttle has been called and will arrive in [SSshuttle.supply.timeLeft(600)] minutes.")
say("The supply shuttle has been called and will arrive in [SSshuttle.supply.timeLeft(10)] seconds.") //dripstation edit
SSshuttle.moveShuttle("supply", "supply_home", TRUE)
. = TRUE
if("loan")
Expand All @@ -171,6 +177,12 @@
var/datum/supply_pack/pack = SSshuttle.supply_packs[id]
if(!istype(pack))
return
if(pack.times_ordered >= pack.order_limit && pack.order_limit != -1) //If the crate has reached the limit, do not allow it to be ordered.
say("[pack.name] is out of stock and can no longer be ordered.")
return
if(pack.times_ordered_in_one_order >= pack.order_limit_in_one_order && pack.order_limit_in_one_order != -1)
say("[pack.name] is out of stock for now and can no longer be ordered in this package. Try again later.")
return
if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.contraband && !contraband) || pack.DropPodOnly)
return

Expand Down Expand Up @@ -210,6 +222,8 @@
SSshuttle.requestlist += SO
else
SSshuttle.shoppinglist += SO
SO.pack.times_ordered += 1 //dripstation edit
SO.pack.times_ordered_in_one_order += 1 //dripstation edit
if(self_paid)
say("Order processed. The price will be charged to [account.account_holder]'s bank account on delivery.")
. = TRUE
Expand All @@ -218,17 +232,30 @@
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
if(SO.id == id)
SSshuttle.shoppinglist -= SO
SO.pack.times_ordered -= 1 //dripstation edit
SO.pack.times_ordered_in_one_order -= 1 //dripstation edit
. = TRUE
break
if("clear")
for(var/datum/supply_order/SO in SSshuttle.shoppinglist) //dripstation edit
SO.pack.times_ordered -= 1 //dripstation edit
SO.pack.times_ordered_in_one_order = 0 //dripstation edit
SSshuttle.shoppinglist.Cut()
. = TRUE
if("approve")
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.requestlist)
if(SO.id == id)
if(SO.pack.times_ordered >= SO.pack.order_limit && SO.pack.order_limit != -1) //If the crate has reached the limit, do not allow it to be ordered. dripstation edit start
say("[SO.pack.name] is out of stock and can no longer be ordered.")
return
if(SO.pack.times_ordered_in_one_order >= SO.pack.order_limit_in_one_order && SO.pack.order_limit_in_one_order != -1)
say("[SO.pack.name] is out of stock for now and can no longer be ordered in this package. Try again later.")
return //dripstation edit end
SSshuttle.requestlist -= SO
SSshuttle.shoppinglist += SO
SO.pack.times_ordered += 1 //dripstation edit
SO.pack.times_ordered_in_one_order += 1 //dripstation edit
. = TRUE
break
if("deny")
Expand Down
2 changes: 1 addition & 1 deletion code/modules/cargo/order.dm
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@
if(paying_account)
account_holder = paying_account.account_holder
else
account_holder = "Cargo"
account_holder = "Cargo Budget" //dripstation edit
var/obj/structure/closet/crate/C = pack.generate(A, paying_account)
generateManifest(C, account_holder, pack)
return C
Expand Down
4 changes: 2 additions & 2 deletions code/modules/cargo/packs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@
/obj/item/toy/crayon/white,
/obj/item/clothing/head/fedora/det_hat)
crate_name = "forensics crate"

/*
/datum/supply_pack/security/laser
name = "Lasers Crate"
desc = "Contains three lethal, high-energy laser guns. Requires Security access to open."
Expand All @@ -326,7 +326,7 @@
/obj/item/gun/energy/laser,
/obj/item/gun/energy/laser)
crate_name = "laser crate"

*/
/datum/supply_pack/security/secfiringpins
name = "Mindshield Firing Pins Crate"
desc = "Upgrade your arsenal with 10 mindshield firing pins. Requires Security access to open."
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/carbon/carbon_defense.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/mob/living/carbon/get_eye_protection()
. = ..()
if(HAS_TRAIT(src, TRAIT_BLIND))
return INFINITY //Can't get flashed if you cant see
if(is_blind() && !HAS_TRAIT_FROM(src, TRAIT_BLIND, UNCONSCIOUS_TRAIT) && !HAS_TRAIT_FROM(src, TRAIT_BLIND, HYPNOCHAIR_TRAIT)) //dripstation edit
return INFINITY //For all my homies that can not see in the world
var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES)
if(!E)
return INFINITY //Can't get flashed without eyes
Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/living.dm
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@

pulling = AM
AM.set_pulledby(src)
SEND_SIGNAL(src, COMSIG_LIVING_START_PULL, AM, state, force) //dripstation edit
if(!supress_message)
var/sound_to_play = 'sound/weapons/thudswoosh.ogg'
if(ishuman(src))
Expand Down
3 changes: 3 additions & 0 deletions code/modules/research/rdconsole.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1090,6 +1090,9 @@ Nothing else in the console has ID requirements.
stored_research.add_design(D, TRUE)
else
stored_research.add_design(d_disk.blueprints[n], TRUE)

say("Uploading blueprints from disk.") //dripstation edit
d_disk.on_upload(stored_research) //dripstation edit

updateUsrDialog()

Expand Down
Loading
Loading