Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master220' into request_consol…
Browse files Browse the repository at this point in the history
…e_in_pda
  • Loading branch information
Vladisvell committed Dec 1, 2024
2 parents c29bf04 + c0a5319 commit 9481ccb
Show file tree
Hide file tree
Showing 42 changed files with 273 additions and 153 deletions.
8 changes: 4 additions & 4 deletions code/__DEFINES/borer.dm
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#define REPRODUCTIONS_TO_MATURE 3
#define REPRODUCTIONS_TO_ADULT 6
#define REPRODUCTIONS_TO_ELDER 10
#define HEAD_FOCUS_COST 9
#define TORSO_FOCUS_COST 15
#define HANDS_FOCUS_COST 5
#define LEGS_FOCUS_COST 10
#define HEAD_FOCUS_COST 4.5
#define TORSO_FOCUS_COST 7.5
#define HANDS_FOCUS_COST 2.5
#define LEGS_FOCUS_COST 5
#define SCALING_MAX_CHEM 355
#define SCALING_CHEM_GAIN 15
#define BORER_RANK_YOUNG /datum/borer_rank/young
Expand Down
7 changes: 7 additions & 0 deletions code/datums/supplypacks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -577,6 +577,13 @@ GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY
cost = 25 //По 6 за один блокиратор
containername = "sibyl attachments crate"

/datum/supply_packs/security/armory/fastpouch
name = "Fast Pouch Crate"
contains = list(/obj/item/storage/pouch/fast,
/obj/item/storage/pouch/fast)
cost = 100
containername = "fast pouch crate"

/////// Weapons: Specialist

/datum/supply_packs/security/armory/ballistic
Expand Down
56 changes: 28 additions & 28 deletions code/game/machinery/computer/HolodeckControl.dm
Original file line number Diff line number Diff line change
Expand Up @@ -515,54 +515,54 @@
icon_state = "hoop"
anchored = TRUE
density = TRUE
pass_flags = LETPASSTHROW
pass_flags_self = LETPASSTHROW
damage_deflection = 7 // You can't just break it with da foking glass ashtray.


/obj/structure/holohoop/grab_attack(mob/living/grabber, atom/movable/grabbed_thing)
. = TRUE

if(!isliving(grabbed_thing))
return .
var/mob/living/target = grabbed_thing
return

if(grabber.grab_state < GRAB_NECK)
to_chat(grabber, span_warning("You need a better grip to do that!"))
return .
return

var/mob/living/target = grabbed_thing

visible_message(span_warning("[grabber] dunks [target] into [src]!"))
target.forceMove(loc)
target.forceMove(get_turf(src))
target.Weaken(10 SECONDS)


/obj/structure/holohoop/attackby(obj/item/I, mob/user, params)
if(user.drop_transfer_item_to_loc(I, src))
visible_message(span_notice("[user] dunks [I] into [src]!"))
return ATTACK_CHAIN_BLOCKED
if(user.a_intent == INTENT_HARM) // Players may use (DISARM|GRAB) intent for pushing each other.
return ..()

if(user.drop_transfer_item_to_loc(I, get_turf(src)))
visible_message(span_notice("[user] dunks [I] into [src]!"))

/obj/structure/holohoop/has_prints()
return FALSE
return ATTACK_CHAIN_BLOCKED


/obj/structure/holohoop/CanAllowThrough(atom/movable/mover, border_dir)
. = ..()
if((isitem(mover) && !isprojectile(mover)) && mover.throwing && mover.pass_flags != PASSEVERYTHING)
if(prob(50))
mover.forceMove(loc)
visible_message(span_notice("Swish! [mover] lands in [src]."))
else
visible_message(span_alert("[mover] bounces off of [src]'s rim!"))
return FALSE
if(!isitem(mover) || isprojectile(mover))
return ..()

if((mover.throwing && mover.throwing.thrower && HAS_TRAIT(mover.throwing.thrower, TRAIT_BADASS)) || prob(50))
mover.forceMove(get_turf(src))
visible_message(span_notice("Swish! [mover] lands in [src]."))

/obj/structure/holohoop/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
if(isitem(AM) && !isprojectile(AM))
if(prob(50) || (throwingdatum && throwingdatum.thrower && HAS_TRAIT(throwingdatum.thrower, TRAIT_BADASS)))
AM.forceMove(get_turf(src))
visible_message(span_warning("Swish! [AM] lands in [src]."))
return
else
visible_message(span_danger("[AM] bounces off of [src]'s rim!"))
return ..()
else
return ..()
visible_message(span_alert("[mover] bounces off of [src]'s rim!"))

return FALSE


/obj/structure/holohoop/has_prints()
return FALSE


/obj/machinery/readybutton
name = "Ready Declaration Device"
Expand Down
140 changes: 78 additions & 62 deletions code/game/machinery/computer/buildandrepair.dm
Original file line number Diff line number Diff line change
Expand Up @@ -462,12 +462,15 @@
build_path = /obj/machinery/computer/turbine_computer
origin_tech = "programming=4;engineering=4;powerstorage=4"


/obj/item/circuitboard/HONKputer
board_name = "HONKputer"
build_path = /obj/machinery/computer/HONKputer
origin_tech = "programming=2"
icon = 'icons/obj/machines/HONKputer.dmi'
icon_state = "bananium_board"
board_type = "HONKputer"


/obj/item/circuitboard/broken
board_name = "Broken curcuit"
Expand Down Expand Up @@ -549,6 +552,14 @@
var/obj/item/circuitboard/circuit = null


/obj/structure/computerframe/Initialize(mapload, obj/item/circuitboard/circuit)
. = ..()

if(circuit)
src.circuit = new circuit(src)
state = STATE_GLASS // Spawned during completed computer Init, so it's completed.


/obj/structure/computerframe/examine(mob/user)
. = ..()
. += span_notice("It is [anchored ? "<b>bolted</b> to the floor" : "<b>unbolted</b>"].")
Expand All @@ -569,10 +580,33 @@

/obj/structure/computerframe/deconstruct(disassembled = TRUE)
if(!(obj_flags & NODECONSTRUCT))
drop_computer_parts()
var/location = drop_location()
drop_computer_materials(location)

if(circuit)
circuit.forceMove(location)

if(state >= STATE_WIRES)
new /obj/item/stack/cable_coil(location, 5)

if(state == STATE_GLASS)
new /obj/item/stack/sheet/glass(location, 2)

state = STATE_EMPTY
circuit = null

return ..() // will qdel the frame


/obj/structure/computerframe/Destroy()
if(istype(circuit))
qdel(circuit)

circuit = null

return ..()


/obj/structure/computerframe/AltClick(mob/user)
if(!Adjacent(user))
return
Expand All @@ -588,16 +622,9 @@
/obj/structure/computerframe/obj_break(damage_flag)
deconstruct()

/obj/structure/computerframe/proc/drop_computer_parts()
var/location = drop_location()

/obj/structure/computerframe/proc/drop_computer_materials(location)
new /obj/item/stack/sheet/metal(location, 5)
if(circuit)
circuit.forceMove(location)
circuit = null
if(state >= STATE_WIRES)
new /obj/item/stack/cable_coil(location, 5)
if(state == STATE_GLASS)
new /obj/item/stack/sheet/glass(location, 2)


/obj/structure/computerframe/update_icon_state()
Expand Down Expand Up @@ -651,27 +678,30 @@
/obj/structure/computerframe/screwdriver_act(mob/living/user, obj/item/I)
if(state != STATE_CIRCUIT && state != STATE_NOWIRES && state != STATE_GLASS)
return FALSE

. = TRUE

if(!I.use_tool(src, user, volume = I.tool_volume))
return .
return

switch(state)
if(STATE_CIRCUIT)
to_chat(user, span_notice("You screw the circuit board into place."))
state = STATE_NOWIRES
update_icon(UPDATE_ICON_STATE)

if(STATE_NOWIRES)
to_chat(user, span_notice("You unfasten the circuit board."))
state = STATE_CIRCUIT
update_icon(UPDATE_ICON_STATE)

if(STATE_GLASS)
if(!anchored)
to_chat(user, span_warning("Monitor can't be properly connected to the unfastened frame!"))
return

to_chat(user, span_notice("You connect the monitor."))
var/B = new circuit.build_path(loc)
if(istype(circuit, /obj/item/circuitboard/supplycomp))
var/obj/machinery/computer/supplycomp/SC = B
var/obj/item/circuitboard/supplycomp/C = circuit
SC.can_order_contraband = C.contraband_enabled
qdel(src)
new circuit.build_path(get_turf(src), src)


/obj/structure/computerframe/wirecutter_act(mob/living/user, obj/item/I)
Expand All @@ -694,16 +724,17 @@
if(STATE_EMPTY)
if(!istype(I, /obj/item/circuitboard))
return ..()

add_fingerprint(user)
if(istype(I, /obj/item/circuitboard/HONKputer) && !istype(src, /obj/structure/computerframe/HONKputer))
to_chat(user, span_warning("[src] does not accept circuit boards of this type!"))
return ATTACK_CHAIN_PROCEED
var/obj/item/circuitboard/new_circuit = I
if(new_circuit.board_type != "computer")

if(!circuit_compatibility_check(I))
to_chat(user, span_warning("[src] does not accept circuit boards of this type!"))
return ATTACK_CHAIN_PROCEED
if(!user.drop_transfer_item_to_loc(new_circuit, src))

if(!user.drop_transfer_item_to_loc(I, src))
return ..()

var/obj/item/circuitboard/new_circuit = I
new_circuit.play_tool_sound(src)
to_chat(user, span_notice("You place [new_circuit] inside [src]."))
name += " ([new_circuit.board_name])"
Expand Down Expand Up @@ -755,11 +786,27 @@
return ..()


/obj/structure/computerframe/proc/on_construction(obj/machinery/computer/computer)
forceMove(computer)


/obj/structure/computerframe/proc/circuit_compatibility_check(obj/item/circuitboard/circuit)
return circuit.board_type == "computer"


/obj/structure/computerframe/HONKputer
name = "Bananium Computer-frame"
icon = 'icons/obj/machines/HONKputer.dmi'


/obj/structure/computerframe/HONKputer/drop_computer_materials(location)
new /obj/item/stack/sheet/mineral/bananium(location, 20)


/obj/structure/computerframe/HONKputer/circuit_compatibility_check(obj/item/circuitboard/circuit)
return circuit.board_type == "HONKputer"


/obj/structure/computerframe/abductor
icon_state = "comp_frame_alien1"

Expand All @@ -768,47 +815,16 @@
icon_state = "comp_frame_alien[state]"


/obj/structure/computerframe/abductor/screwdriver_act(mob/living/user, obj/item/I)
. = TRUE
if(!I.use_tool(src, user))
return
/obj/structure/computerframe/abductor/on_construction(obj/machinery/computer/computer)
..()
computer.abductor = TRUE
computer.max_integrity = 400
computer.obj_integrity = 400

switch(state)
if(STATE_CIRCUIT)
to_chat(user, span_notice("You screw the circuit board into place."))
state = STATE_NOWIRES
I.play_tool_sound(src)
update_icon(UPDATE_ICON_STATE)
if(STATE_NOWIRES)
to_chat(user, span_notice("You unfasten the circuit board."))
state = STATE_CIRCUIT
I.play_tool_sound(src)
update_icon(UPDATE_ICON_STATE)
if(STATE_GLASS)
to_chat(user, span_notice("You connect the monitor."))
I.play_tool_sound(src)
var/obj/machinery/computer/computer = new circuit.build_path(loc)
computer.abductor = TRUE
computer.update_icon()
computer.max_integrity = 400
computer.obj_integrity = 400
computer.update_icon()
if(istype(circuit, /obj/item/circuitboard/supplycomp))
var/obj/machinery/computer/supplycomp/supply_comp = computer
var/obj/item/circuitboard/supplycomp/supply_circuit = circuit
supply_comp.can_order_contraband = supply_circuit.contraband_enabled
qdel(src)

/obj/structure/computerframe/abductor/drop_computer_parts()
var/location = drop_location()

/obj/structure/computerframe/abductor/drop_computer_materials(location)
new /obj/item/stack/sheet/mineral/abductor(location, 4)
if(circuit)
circuit.forceMove(location)
circuit = null
if(state >= STATE_WIRES)
new /obj/item/stack/cable_coil(location, 5)
if(state == STATE_GLASS)
new /obj/item/stack/sheet/glass(location, 2)


#undef STATE_EMPTY
#undef STATE_CIRCUIT
Expand Down
Loading

0 comments on commit 9481ccb

Please sign in to comment.