Skip to content
Open
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
5 changes: 0 additions & 5 deletions _maps/RandomRuins/SpaceRuins/syndicate_depot.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -3349,11 +3349,6 @@
/obj/item/circuitboard/machine/quantumpad,
/obj/item/storage/toolbox/electrical,
/obj/item/circuitboard/machine/spaceship_navigation_beacon,
/obj/item/manipulator_filter,
/obj/item/manipulator_filter,
/obj/item/manipulator_filter,
/obj/item/manipulator_filter/cargo,
/obj/item/manipulator_filter/cargo,
/obj/item/circuitboard/machine/big_manipulator,
/obj/item/circuitboard/machine/big_manipulator,
/obj/item/circuitboard/machine/big_manipulator,
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/wires.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@
#define WIRE_DENY "Scan Fail"
#define WIRE_DISABLE "Disable"
#define WIRE_DISARM "Disarm"
#define WIRE_ON "On"
#define WIRE_DROP "Drop"
#define WIRE_ITEM_TYPE "Item Type"
#define WIRE_CHANGE_MODE "Change Mode"
#define WIRE_ONE_PRIORITY_BUTTON "One Priority Button"
#define WIRE_THROW_RANGE "Throw Range"
#define WIRE_DUD_PREFIX "__dud"
#define WIRE_HACK "Hack"
#define WIRE_IDSCAN "ID Scan"
Expand Down
4 changes: 4 additions & 0 deletions code/__HELPERS/matrices.dm
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,10 @@ c f 1
/matrix/proc/get_y_shift()
. = f

///The angle of this matrix
/matrix/proc/get_angle()
. = -ATAN2(a,d)

/////////////////////
// COLOUR MATRICES //
/////////////////////
Expand Down
6 changes: 0 additions & 6 deletions code/datums/elements/deliver_first.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved))
RegisterSignal(target, COMSIG_ATOM_EMAG_ACT, PROC_REF(on_emag))
RegisterSignal(target, COMSIG_CLOSET_POST_OPEN, PROC_REF(on_post_open))
RegisterSignal(target, COMSIG_FILTER_CHECK, PROC_REF(on_filter_check))
ADD_TRAIT(target, TRAIT_BANNED_FROM_CARGO_SHUTTLE, REF(src))
//registers pre_open when appropriate
area_check(target)
Expand Down Expand Up @@ -103,9 +102,4 @@
playsound(src, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
target.RemoveElement(/datum/element/deliver_first, goal_area_type, payment)

/datum/element/deliver_first/proc/on_filter_check(obj/structure/closet/target, list/filter_locations)
var/name = departmental_destination_to_tag(goal_area_type)
if(name in filter_locations)
return TRUE
return FALSE
#undef DENY_SOUND_COOLDOWN
20 changes: 10 additions & 10 deletions code/datums/greyscale/config_types/greyscale_configs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1258,16 +1258,6 @@
icon_file = 'monkestation/icons/mob/clothing/head_32x48.dmi'
json_config = 'code/datums/greyscale/json_configs/playbunny_ears_worn.json'

/datum/greyscale_config/big_manipulator
name = "Big Manipulator"
icon_file = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi'
json_config = 'code/datums/greyscale/json_configs/big_manipulator.json'

/datum/greyscale_config/manipulator_hand
name = "Manipulator Hand"
icon_file = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi'
json_config = 'code/datums/greyscale/json_configs/manipulator_hand.json'

/datum/greyscale_config/linjacket
name = "Tassled Jacket"
icon_file = 'monkestation/icons/obj/clothing/necks.dmi'
Expand Down Expand Up @@ -1332,3 +1322,13 @@
name = "green_jester_shoes"
icon_file = 'monkestation/icons/mob/clothing/feet.dmi'
json_config = 'code/datums/greyscale/json_configs/green_jester_shoes_worn.json'

/datum/greyscale_config/big_manipulator
name = "Big Manipulator"
icon_file = 'icons/obj/machines/big_manipulator_parts/big_manipulator_core.dmi'
json_config = 'code/datums/greyscale/json_configs/big_manipulator.json'

/datum/greyscale_config/manipulator_arm
name = "Manipulator Arm"
icon_file = 'icons/obj/machines/big_manipulator_parts/big_manipulator_hand.dmi'
json_config = 'code/datums/greyscale/json_configs/manipulator_arm.json'
15 changes: 15 additions & 0 deletions code/datums/greyscale/json_configs/manipulator_arm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"hand": [
{
"type": "icon_state",
"icon_state": "hand",
"blend_mode": "overlay"
},
{
"type": "icon_state",
"icon_state": "hand_colour",
"blend_mode": "overlay",
"color_ids": [1]
}
]
}
43 changes: 43 additions & 0 deletions code/datums/wires/big_manipulator.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/datum/wires/big_manipulator
holder_type = /obj/machinery/big_manipulator
proper_name = "Big_Manipulator"

/datum/wires/big_manipulator/New(atom/holder)
wires = list(
WIRE_ON,
WIRE_DROP,
WIRE_ITEM_TYPE,
WIRE_CHANGE_MODE,
WIRE_ONE_PRIORITY_BUTTON,
WIRE_THROW_RANGE
)
return ..()

/datum/wires/big_manipulator/interactable(mob/user)
var/obj/machinery/big_manipulator/holder_manipulator = holder

return holder_manipulator.panel_open ? ..() : FALSE

/datum/wires/big_manipulator/get_status()
var/obj/machinery/big_manipulator/holder_manipulator = holder
var/list/status = list()
status += "The big light bulb [holder_manipulator.power_access_wire_cut ? "is off" : "is glowing [holder_manipulator.on ? "green" : "red"]"]."
status += "The small light bulb [holder_manipulator.held_object ? "is glowing bright green" : "is off"]."
status += "The number on the display shows [length(holder_manipulator.tasks)]."
return status

/datum/wires/big_manipulator/on_pulse(wire)
var/obj/machinery/big_manipulator/holder_manipulator = holder
switch(wire)
if(WIRE_ON)
holder_manipulator.try_press_on(usr)
if(WIRE_DROP)
holder_manipulator.drop_held_atom()

/datum/wires/big_manipulator/on_cut(wire, mend, source)
var/obj/machinery/big_manipulator/holder_manipulator = holder
if(wire == WIRE_ON)
if(mend)
holder_manipulator.power_access_wire_cut = FALSE
return
holder_manipulator.power_access_wire_cut = TRUE
62 changes: 62 additions & 0 deletions code/game/machinery/big_manipulator/_defines.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// How should the manipulator interact with the point
#define INTERACT_DROP "DROP"
#define INTERACT_USE "USE"
#define INTERACT_THROW "THROW"

// What should be picked up from the point
#define TAKE_ITEMS 1
#define TAKE_CLOSETS 2
#define TAKE_HUMANS 3

#define MIN_SPEED_MULTIPLIER_TIER_1 0.5
#define MIN_SPEED_MULTIPLIER_TIER_2 0.4
#define MIN_SPEED_MULTIPLIER_TIER_3 0.3
#define MIN_SPEED_MULTIPLIER_TIER_4 0.1

#define MAX_SPEED_MULTIPLIER_TIER_1 2
#define MAX_SPEED_MULTIPLIER_TIER_2 3
#define MAX_SPEED_MULTIPLIER_TIER_3 5
#define MAX_SPEED_MULTIPLIER_TIER_4 6

#define MAX_TASKS_TIER_1 6
#define MAX_TASKS_TIER_2 12
#define MAX_TASKS_TIER_3 24
#define MAX_TASKS_TIER_4 32


// How should the worker interact with the point
#define WORKER_SINGLE_USE "SINGLE TIME"
#define WORKER_EMPTY_USE "EMPTY HAND"
#define WORKER_NORMAL_USE "NORMAL"

#define BASE_POWER_USAGE 0.2
#define BASE_INTERACTION_TIME 0.3 SECONDS

/// How long will the manipulator wait if there's nothing to do
#define CYCLE_SKIP_TIMEOUT 1 SECONDS

// How should overflow should be handled
#define POINT_OVERFLOW_ALLOWED "ALLOW"
#define POINT_OVERFLOW_FILTERS "TO FILTERS"
#define POINT_OVERFLOW_HELD "TO HELD"
#define POINT_OVERFLOW_FORBIDDEN "FORBID"

// What should the manipulator do after there's nothing else to interact with on this point anymore
#define POST_INTERACTION_DROP_AT_POINT "AT DROPOFF"
#define POST_INTERACTION_DROP_AT_MACHINE "AT MACHINE"
#define POST_INTERACTION_DROP_NEXT_FITTING "AT ANY FITTING"
#define POST_INTERACTION_WAIT "CONTINUE"


#define PICKUP_EAGER "Always Pick Up"
#define PICKUP_CAN_WAIT "Wait For Suiting"

#define TASK_TYPE_PICKUP "pickup"
#define TASK_TYPE_DROP "drop"
#define TASK_TYPE_THROW "throw"
#define TASK_TYPE_USE "use"
#define TASK_TYPE_INTERACT "interact"
#define TASK_TYPE_WAIT "wait"

#define TASKING_SEQUENTIAL "Sequential"
#define TASKING_STRICT "Strict order"
Loading
Loading