Merge pull request #607 from ArchieBeepBoop/becomemodular

Oh boy, it's another one of Archie's mini packs. - Energy Harvester, HoS Pet Port and a micro carp buff.
This commit is contained in:
Dahlular
2020-10-23 16:25:53 -06:00
committed by GitHub
4 changed files with 117 additions and 0 deletions
+9
View File
@@ -1003,6 +1003,15 @@
contains = list(/obj/item/circuitboard/computer/sat_control)
crate_name= "shield control board crate"
/datum/supply_pack/engine/energy_harvester
name = "Energy Harvesting Module"
desc = "A Device which upon connection to a node, will harvest the energy and send it to engineerless stations in return for credits, derived from a syndicate powersink model."
cost = 7500
access = ACCESS_CE
contains = list(/obj/item/energy_harvester)
crate_name = "energy harvesting module crate"
crate_type = /obj/structure/closet/crate/secure/engineering
//////////////////////////////////////////////////////////////////////////////
//////////////////////// Engine Construction /////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
@@ -106,5 +106,24 @@
obj_damage = 70
melee_damage_lower = 15
melee_damage_upper = 18
var/held_icon = "carp"
/mob/living/simple_animal/hostile/carp/cayenne/ComponentInitialize()
. = ..()
AddElement(/datum/element/wuv, "bloops happily!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "gnashes!", EMOTE_AUDIBLE)
AddElement(/datum/element/mob_holder, held_icon)
/mob/living/simple_animal/hostile/carp/cayenne/lia
name = "Lia"
real_name = "Lia"
desc = "A failed experiment of Nanotrasen to create weaponised carp technology, now acquired by Kinaris. This less than intimidating carp now serves as the Head of Security's pet."
faction = list("neutral", "carp")
health = 200
icon_dead = "magicarp_dead"
icon_gib = "magicarp_gib"
icon_living = "magicarp"
icon_state = "magicarp"
maxHealth = 200
held_icon = "magicarp"
#undef REGENERATION_DELAY
+1
View File
@@ -3214,4 +3214,5 @@
#include "modular_citadel\code\modules\vore\eating\voreitems.dm"
#include "modular_citadel\code\modules\vore\eating\vorepanel_vr.dm"
#include "modular_citadel\interface\skin.dmf"
#include "yogstation\code\modules\power\energyharvester.dm"
// END_INCLUDE
@@ -0,0 +1,88 @@
/obj/item/energy_harvester
desc = "A Device which upon connection to a node, will harvest the energy and send it to engineerless stations in return for credits, derived from a syndicate powersink model."
name = "Energy Harvesting Module"
icon_state = "powersink0"
icon = 'icons/obj/device.dmi'
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
w_class= WEIGHT_CLASS_BULKY
flags_1 = CONDUCT_1
throwforce = 1
throw_speed = 1
throw_range = 1
materials = list(MAT_METAL=750)
var/drain_rate = 100000000
var/power_drained = 0
var/obj/structure/cable/attached
var/datum/looping_sound/generator/soundloop
var/active = 0
var/lastprocessed = 0
/obj/item/energy_harvester/attackby(obj/item/I, mob/user, params)
if(I.tool_behaviour == TOOL_SCREWDRIVER)
if(!anchored)
var/turf/T = loc
if(isturf(T) && !T.intact)
attached = locate() in T
if(!attached)
to_chat(user, "<span class='warning'>This device must be placed over an exposed, powered cable node!</span>")
else
I.play_tool_sound(src)
START_PROCESSING(SSobj, src)
anchored = 1
density = 1
user.visible_message( \
"[user] attaches \the [src] to the cable.", \
"<span class='notice'>You attach \the [src] to the cable.</span>",
"<span class='italics'>You hear some wires being connected to something.</span>")
else
to_chat(user, "<span class='warning'>This device must be placed over an exposed, powered cable node!</span>")
else
I.play_tool_sound(src)
STOP_PROCESSING(SSobj, src)
anchored = 0
density = 0
user.visible_message( \
"[user] detaches \the [src] from the cable.", \
"<span class='notice'>You detach \the [src] from the cable.</span>",
"<span class='italics'>You hear some wires being disconnected from something.</span>")
/obj/item/energy_harvester/process()
if(!attached || !anchored)
return PROCESS_KILL
var/datum/powernet/PN = attached.powernet
if(PN)
set_light(1,1,LIGHT_COLOR_ORANGE)
var/power_avaliable = PN.netexcess
if(power_avaliable <= 0)
soundloop.stop()
active = 0
return
soundloop.start()
active = 1
power_avaliable = min(power_avaliable, drain_rate)
attached.add_delayedload(power_avaliable)
lastprocessed = (power_avaliable * 0.00001)
SSshuttle.points += lastprocessed
/obj/item/energy_harvester/Initialize()
. = ..()
new /obj/item/gps/internal/energy_harvester(src)
soundloop = new(list(src), FALSE)
/obj/item/energy_harvester/Destroy()
QDEL_NULL(soundloop)
return ..()
/obj/item/energy_harvester/examine(mob/user)
. = ..()
if(active)
. += "<span class='notice'>The [src]'s display states that it is processing approximately <b>[lastprocessed*60]</b> credits per minute.</span>"
else
. += "<span class='notice'><b>The [src]'s display is currently offline.</b></span>"
/obj/item/gps/internal/energy_harvester
gpstag = "Energy Harvester"