mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Fix conflicts with OOP solars, fix exploit with shard welding, add TG unlocking borgs with PDA, robotizing fixed to prevent getting stuck within objects, number of DNA blocks increased to 54 to match number of genes, fix numerous problems with solar construction and deconstruction.
Changelog
This commit is contained in:
@@ -89,8 +89,8 @@
|
||||
A.anchored = 1
|
||||
qdel(src)
|
||||
else
|
||||
visible_message("<span class='notice'>[user] disconnects [src]'s monitor.</span>", \
|
||||
"<span class='notice'>You disconnect [src]'s monitor.</span>")
|
||||
visible_message("[user] begins to unscrew \the [src]'s monitor.",
|
||||
"You begin to unscrew the monitor...")
|
||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe(src.loc)
|
||||
var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control(A)
|
||||
for (var/obj/C in src)
|
||||
@@ -118,7 +118,7 @@
|
||||
return
|
||||
|
||||
if ((get_dist(src, user) > 1))
|
||||
if (!istype(user, /mob/living/silicon/ai))
|
||||
if (!issilicon(user)&&!isobserver(user))
|
||||
user.unset_machine()
|
||||
user << browse(null, "window=solcon")
|
||||
return
|
||||
@@ -195,7 +195,7 @@ Manual Tracking Direction:"}
|
||||
track = text2num(href_list["track"])
|
||||
|
||||
if(track == 2)
|
||||
for(var/obj/machinery/power/solar/tracker/T in getPowernetNodes())
|
||||
for(var/obj/machinery/power/solar/panel/tracker/T in getPowernetNodes())
|
||||
cdir = T.sun_angle
|
||||
break
|
||||
|
||||
@@ -245,4 +245,4 @@ Manual Tracking Direction:"}
|
||||
/obj/machinery/power/solar/control/blob_act()
|
||||
if(prob(75))
|
||||
broken()
|
||||
density = 0
|
||||
density = 0
|
||||
@@ -9,34 +9,48 @@
|
||||
var/ndir = SOUTH
|
||||
var/turn_angle = 0
|
||||
var/glass_quality_factor = 1 //Rglass is average. Glass is shite. Tinted glass is "Are you even trying ?" tier if anyone ever makes a sheet version
|
||||
var/tracker = 0
|
||||
var/obj/machinery/power/solar/control/control
|
||||
var/obj/machinery/power/solar_assembly/solar_assembly
|
||||
|
||||
/obj/machinery/power/solar/panel/New(loc)
|
||||
/obj/machinery/power/solar/panel/New(loc, var/obj/machinery/power/solar_assembly/S)
|
||||
..(loc)
|
||||
make()
|
||||
make(S)
|
||||
|
||||
/obj/machinery/power/solar/panel/proc/make()
|
||||
if(!solar_assembly)
|
||||
/obj/machinery/power/solar/panel/proc/make(var/obj/machinery/power/solar_assembly/S)
|
||||
if(!S)
|
||||
solar_assembly = new /obj/machinery/power/solar_assembly()
|
||||
solar_assembly.glass_type = /obj/item/stack/sheet/rglass
|
||||
solar_assembly.glass_type = /obj/item/stack/sheet/glass/rglass
|
||||
solar_assembly.anchored = 1
|
||||
|
||||
solar_assembly.density = 1
|
||||
solar_assembly.tracker = tracker
|
||||
else
|
||||
solar_assembly = S
|
||||
var/obj/item/stack/sheet/glass/G = solar_assembly.glass_type //This is how you call up variables from an object without making one
|
||||
src.glass_quality_factor = initial(G.glass_quality) //Don't use istype checks kids
|
||||
src.maxhealth = initial(G.shealth)
|
||||
src.health = initial(G.shealth)
|
||||
solar_assembly.loc = src
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/solar/panel/attackby(obj/item/weapon/W, mob/user)
|
||||
if(iscrowbar(W))
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/item/stack/sheet/glass/G = solar_assembly.glass_type
|
||||
user << "<span class='notice'>You begin taking the [initial(G.name)] off the [src].</span>"
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50))
|
||||
if(solar_assembly)
|
||||
solar_assembly.loc = T
|
||||
solar_assembly.give_glass()
|
||||
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
user.visible_message("<span class='notice'>[user] takes the glass off the solar panel.</span>")
|
||||
user.visible_message("<span class='notice'>[user] takes the [initial(G.name)] off the [src].</span>",\
|
||||
"<span class='notice'>You takes the [initial(G.name)] off the [src].</span>")
|
||||
qdel(src)
|
||||
else if(W)
|
||||
add_fingerprint(user)
|
||||
health -= W.force
|
||||
healthcheck()
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/power/solar/panel/blob_act()
|
||||
@@ -52,37 +66,25 @@
|
||||
if(!(stat & BROKEN))
|
||||
broken()
|
||||
else
|
||||
var/obj/item/stack/sheet/glass/G = solar_assembly.glass_type
|
||||
var/shard = initial(G.shard_type)
|
||||
solar_assembly.glass_type = null //The glass you're looking for is below pal
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
solar_assembly.loc = get_turf(src)
|
||||
getFromPool(shard, loc)
|
||||
getFromPool(shard, loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/power/solar/panel/update_icon()
|
||||
..()
|
||||
|
||||
overlays.len = 0
|
||||
|
||||
if(stat & BROKEN)
|
||||
if(solar_assembly.glass_type == /obj/item/stack/sheet/glass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel-b", layer = FLY_LAYER)
|
||||
else if(solar_assembly.glass_type == /obj/item/stack/sheet/rglass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel_ref-b", layer = FLY_LAYER)
|
||||
else if(solar_assembly.glass_type == /obj/item/stack/sheet/glass/plasmaglass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel_plasma-b", layer = FLY_LAYER)
|
||||
else if(solar_assembly.glass_type == /obj/item/stack/sheet/rglass/plasmarglass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel_plasma_ref-b", layer = FLY_LAYER)
|
||||
else if(solar_assembly.glass_type == /obj/item/stack/sheet/glass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel", layer = FLY_LAYER)
|
||||
src.dir = angle2dir(adir)
|
||||
else if(solar_assembly.glass_type == /obj/item/stack/sheet/rglass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel_ref", layer = FLY_LAYER)
|
||||
src.dir = angle2dir(adir)
|
||||
else if(solar_assembly.glass_type == /obj/item/stack/sheet/glass/plasmaglass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel_plasma", layer = FLY_LAYER)
|
||||
src.dir = angle2dir(adir)
|
||||
else if(solar_assembly.glass_type == /obj/item/stack/sheet/rglass/plasmarglass)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel_plasma_ref", layer = FLY_LAYER)
|
||||
if(!tracker)
|
||||
overlays.len = 0
|
||||
var/obj/item/stack/sheet/glass/G = solar_assembly.glass_type
|
||||
var/icon = "solar_panel_" + initial(G.sname)
|
||||
if(stat & BROKEN)
|
||||
icon += "-b"
|
||||
overlays += image('icons/obj/power.dmi', icon_state = icon, layer = FLY_LAYER)
|
||||
src.dir = angle2dir(adir)
|
||||
return
|
||||
|
||||
/obj/machinery/power/solar/panel/proc/update_solar_exposure()
|
||||
if(!sun)
|
||||
@@ -160,4 +162,4 @@
|
||||
. = ..()
|
||||
|
||||
if(.)
|
||||
control = null
|
||||
control = null
|
||||
@@ -1,23 +1,12 @@
|
||||
/obj/machinery/power/solar/tracker
|
||||
/obj/machinery/power/solar/panel/tracker
|
||||
name = "solar tracker"
|
||||
desc = "A solar directional tracker."
|
||||
icon_state = "tracker"
|
||||
|
||||
var/sun_angle = 0 // sun angle as set by sun datum
|
||||
|
||||
/obj/machinery/power/solar/tracker/New(loc, obj/machinery/power/solar_assembly/S)
|
||||
..(loc)
|
||||
|
||||
if(!S)
|
||||
S = new(src)
|
||||
S.glass_type = /obj/item/stack/sheet/rglass
|
||||
S.tracker = 1
|
||||
S.anchored = 1
|
||||
|
||||
S.loc = src
|
||||
tracker = 1
|
||||
|
||||
// called by datum/sun/calc_position() as sun's angle changes
|
||||
/obj/machinery/power/solar/tracker/proc/set_angle(angle)
|
||||
/obj/machinery/power/solar/panel/tracker/proc/set_angle(angle)
|
||||
sun_angle = angle
|
||||
|
||||
//Set icon dir to show sun illumination
|
||||
@@ -34,22 +23,8 @@
|
||||
if(get_dist(C, src) < SOLAR_MAX_DIST)
|
||||
C.tracker_update(angle)
|
||||
|
||||
/obj/machinery/power/solar/tracker/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
if(iscrowbar(W))
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50))
|
||||
var/obj/machinery/power/solar_assembly/S = locate() in src
|
||||
if(S)
|
||||
S.loc = src.loc
|
||||
S.give_glass()
|
||||
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
user.visible_message("<span class='notice'>[user] takes the glass off the tracker.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
// make sure we can draw power from the powernet
|
||||
/obj/machinery/power/solar/tracker/process()
|
||||
/obj/machinery/power/solar/panel/tracker/process()
|
||||
var/avail = surplus()
|
||||
|
||||
if(avail > 500)
|
||||
@@ -63,4 +38,4 @@
|
||||
name = "tracker electronics"
|
||||
icon = 'icons/obj/doors/door_assembly.dmi'
|
||||
icon_state = "door_electronics"
|
||||
w_class = 2.0
|
||||
w_class = 2.0
|
||||
Reference in New Issue
Block a user