From 807bd35e67cffcaeb71871c51d002d4ab51ff73a Mon Sep 17 00:00:00 2001 From: Casey Date: Sat, 19 Mar 2022 00:38:41 -0400 Subject: [PATCH 1/2] Merge pull request #12452 from Very-Soft/wheel D-Type REG engine --- .../mob/living/carbon/human/human_movement.dm | 5 + code/modules/power/port_gen_vr.dm | 117 ++++++++++++++++++ icons/obj/power_vrx96.dmi | Bin 0 -> 15288 bytes 3 files changed, 122 insertions(+) create mode 100644 icons/obj/power_vrx96.dmi diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index d62f723fed..af03a0d96d 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -126,6 +126,11 @@ if(!buckled && shoes) // Shoes can make you go faster. . += shoes.slowdown + //VOREStation Addition Start + if(buckled && istype(buckled, /obj/machinery/power/rtg/d_type_reg)) + . += shoes.slowdown + //VOREStation Addition End + // Loop through some slots, and add up their slowdowns. // Includes slots which can provide armor, the back slot, and suit storage. for(var/obj/item/I in list(wear_suit, w_uniform, back, gloves, head, s_store)) diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm index 263a19639d..10697ea264 100644 --- a/code/modules/power/port_gen_vr.dm +++ b/code/modules/power/port_gen_vr.dm @@ -281,3 +281,120 @@ if(istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) && Proj.damage >= 20) log_and_message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered a kugelblitz core explosion at [x],[y],[z] via projectile.") asplod() + +/obj/machinery/power/rtg/d_type_reg + name = "d-type rotary electric generator" + desc = "It looks kind of like a large hamster wheel." + icon = 'icons/obj/power_vrx96.dmi' + icon_state = "reg" + circuit = /obj/item/weapon/circuitboard/machine/reg + irradiate = FALSE + power_gen = 0 //It's big but it gets adjusted based on what you put into it!!! + var/default_power_gen = 1000000 + var/part_mult = 0 + pixel_x = -32 + plane = ABOVE_MOB_PLANE + layer = ABOVE_MOB_LAYER + buckle_dir = EAST + interact_offline = TRUE + density = FALSE + +/obj/machinery/power/rtg/d_type_reg/Initialize() + . = ..() + pixel_x = -32 + +/obj/machinery/power/rtg/d_type_reg/Destroy() + . = ..() + +/obj/machinery/power/rtg/d_type_reg/user_buckle_mob(mob/living/M, mob/user, var/forced = FALSE, var/silent = TRUE) + . = ..() + M.pixel_y = 8 + M.visible_message("\The [M], hops up onto \the [src] and begins running!") + +/obj/machinery/power/rtg/d_type_reg/unbuckle_mob(mob/living/buckled_mob, force = FALSE) + . = ..() + buckled_mob.pixel_y = initial(buckled_mob.pixel_y) + +/obj/machinery/power/rtg/d_type_reg/RefreshParts() + var/n = 0 + for(var/obj/item/weapon/stock_parts/SP in component_parts) + n += SP.rating + part_mult = n + +/obj/machinery/power/rtg/d_type_reg/attackby(obj/item/I, mob/user, params) + if(default_deconstruction_screwdriver(user, I)) + return + else if(default_deconstruction_crowbar(user, I)) + return + return ..() + +/obj/machinery/power/rtg/d_type_reg/update_icon() + if(panel_open) + icon_state = "reg-o" + else if(buckled_mobs && buckled_mobs.len > 0) + icon_state = "reg-a" + else + icon_state = "reg" + +/obj/machinery/power/rtg/d_type_reg/process() + ..() + if(buckled_mobs && buckled_mobs.len > 0) + for(var/mob/living/L in buckled_mobs) + runner_process(L) + else + power_gen = 0 + update_icon() + +/obj/machinery/power/rtg/d_type_reg/proc/runner_process(var/mob/living/runner) + if(runner.stat != CONSCIOUS) + unbuckle_mob(runner) + runner.visible_message("\The [runner], topples off of \the [src]!") + return + var/cool_rotations + if(ishuman(runner)) + var/mob/living/carbon/human/R = runner + cool_rotations = R.movement_delay() + else if (isanimal(runner)) + var/mob/living/simple_mob/R = runner + cool_rotations = R.movement_delay() + log_and_message_admins("I got [cool_rotations] from [runner]") + if(cool_rotations <= 0) + cool_rotations = 0.5 + log_and_message_admins("That's less than 1 so let's make it [cool_rotations]") + cool_rotations = default_power_gen / cool_rotations + log_and_message_admins("I am dividing [default_power_gen] by that much.") + switch(runner.nutrition) + if(1000 to INFINITY) //VERY WELL FED, ZOOM!!!! + cool_rotations *= (runner.nutrition * 0.001) + log_and_message_admins("[runner] is over fed so we are producing over 100%") + if(500 to 1000) //Well fed! + cool_rotations = cool_rotations + if(400 to 500) + cool_rotations *= 0.9 + if(300 to 400) + cool_rotations *= 0.75 + if(200 to 300) + cool_rotations *= 0.5 + if(100 to 200) + cool_rotations *= 0.25 + else //TOO HUNGY IT TIME TO STOP!!! + unbuckle_mob(runner) + runner.visible_message("\The [runner], panting and exhausted hops off of \the [src]!") + if(part_mult > 1) + cool_rotations += (cool_rotations * (part_mult - 1)) / 4 + log_and_message_admins("The part multiplier is [part_mult].") + power_gen = cool_rotations + log_and_message_admins("We are outputting [cool_rotations].") + runner.nutrition -- + +/obj/machinery/power/rtg/d_type_reg/emp_act(severity) + return + +/obj/item/weapon/circuitboard/machine/reg + name = T_BOARD("REG") + build_path = /obj/machinery/power/rtg/d_type_reg + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_DATA = 2, TECH_POWER = 4, TECH_ENGINEERING = 4) + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor = 1) \ No newline at end of file diff --git a/icons/obj/power_vrx96.dmi b/icons/obj/power_vrx96.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ce0baf94598ea3742a9cce44d3ba2794d6861fd0 GIT binary patch literal 15288 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 gH@@3S5l^7YF~02V^ff02e2NR*QPxx{R