Adds the Aut'akh unathi (#5919)

* Base work for the unathi robot subspecies.

* Adds metabolism species, kidney vars, and the robot unathi organs.

* Moves some action buttons to organs, pretty much a bay port right now. Todo: the unathi and alien stuff should also go here.

* First autakh implant power.

* Fixes the organs action button this time.

* Finishes more implants, and interactions with flashs and vaurca.

* Prepare for great changes.

* Drops the real bomb, boss.

* He who fights with monsters.

* Far more work into augments and limb removing powers.

* Limb verbs should be good now.

* A LOT of work into the assited organ, allowing it to bleed and etc, as well adding a new chem that will stop bleeding in their case.

* Probably the last work on implants.

* Some extra touches.

* Some tweaks to the species.

* More fixes and adds kyre's sprites.

* More runtime fixes.

* Fixes the species name too.

* Fixes travis.

* Updates this file too to work with the new tools procs.

* Adds changelog

* Fixed changelog.

* Unathi hair and lore description.

* Some tweaks to this too.

* Locks away them for now, they will be released after we got all the events and etc done.

* Changes this chemical.

* Fixes an airlock runtime.

* Adds the non scan flag to the autakh, mostly due to some bizzare interactions with changelings and cloning.

* Organs removal changes; can't take out the organ if it is too damage.

* Restricts them back again.

* Robotic organs now have the proper icons and names.

* Adds sprites for their organs and some extra tweaks.

* Fixes this missing icon.

* emp should also now hurt assited organs.

* Tweaks more organ related things.

* Fixes the head not being properly set as well.

* Fixes their flags.

* fixes the flag for real this time.

* Poze's review.

* Changes the au'takh organ buttons to don't be animated.

* Helps with adminbus or something.

* Fowl's requested changes.

* Fixes a typo.

* Robotic limb's brute and burn mods are now controlled by the limb model.

* Fowl's changes once more.

* Stops some spam.

* More grammar.

* No eal.

* Skull's review.
This commit is contained in:
Alberyk
2019-01-23 16:27:44 -02:00
committed by Werner
parent b1742dd3f1
commit 76b743a986
280 changed files with 1651 additions and 874 deletions

View File

@@ -139,14 +139,14 @@
/obj/machinery/power/am_control_unit/update_icon()
if(active)
icon_state = "control_[icon_mod]"
else
else
icon_state = "control"
//No other icons for it atm
/obj/machinery/power/am_control_unit/attackby(obj/item/W, mob/user)
if(!istype(W) || !user)
return
if(iswrench(W))
if(W.iswrench())
if(!anchored)
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 75, 1)
user.visible_message("[user.name] secures the [src.name] to the floor.", \

View File

@@ -236,7 +236,7 @@ proc/cardinalrange(var/center)
throw_range = 2
/obj/item/device/am_shielding_container/attackby(var/obj/item/I, var/mob/user)
if(ismultitool(I) && isturf(loc))
if(I.ismultitool() && isturf(loc))
if(locate(/obj/machinery/am_shielding/) in loc)
to_chat(user, "<span class='warning'>\icon[src]There is already an antimatter reactor section there.</span>")
return

View File

@@ -440,7 +440,7 @@
if (istype(user, /mob/living/silicon) && get_dist(src,user)>1)
return src.attack_hand(user)
src.add_fingerprint(user)
if (iscrowbar(W) && opened)
if (W.iscrowbar() && opened)
if (has_electronics==1)
if (terminal)
user << "<span class='warning'>Disconnect wires first.</span>"
@@ -465,7 +465,7 @@
panel_open = 0
opened = 0
update_icon()
else if (iscrowbar(W) && !((stat & BROKEN) || hacker) )
else if (W.iscrowbar() && !((stat & BROKEN) || hacker) )
if(coverlocked && !(stat & MAINT))
user << "<span class='warning'>The cover is locked and cannot be opened.</span>"
return
@@ -504,7 +504,7 @@
"<span class='notice'>You insert \the [cell].</span>")
chargecount = 0
update_icon()
else if (isscrewdriver(W)) // haxing
else if (W.isscrewdriver()) // haxing
if(opened)
if (cell)
user << "<span class='warning'>Close the APC first.</span>" //Less hints more mystery!
@@ -547,7 +547,7 @@
update_icon()
else
user << "<span class='warning'>Access denied.</span>"
else if (iscoil(W) && !terminal && opened && has_electronics!=2)
else if (W.iscoil() && !terminal && opened && has_electronics!=2)
var/turf/T = loc
if(istype(T) && !T.is_plating())
user << "<span class='warning'>You must remove the floor plating in front of the APC first.</span>"
@@ -572,7 +572,7 @@
"You add cables to the APC frame.")
make_terminal()
terminal.connect_to_network()
else if (iswirecutter(W) && terminal && opened && has_electronics!=2)
else if (W.iswirecutter() && terminal && opened && has_electronics!=2)
var/turf/T = loc
if(istype(T) && !T.is_plating())
user << "<span class='warning'>You must remove the floor plating in front of the APC first.</span>"
@@ -601,7 +601,7 @@
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN)))
user << "<span class='warning'>You cannot put the board inside, the frame is damaged.</span>"
return
else if (iswelder(W) && opened && has_electronics==0 && !terminal)
else if (W.iswelder() && opened && has_electronics==0 && !terminal)
var/obj/item/weapon/weldingtool/WT = W
if (!WT.isOn()) return
if (WT.get_fuel() < 3)
@@ -687,7 +687,7 @@
else
if ((stat & BROKEN) \
&& !opened \
&& iswelder(W) )
&& W.iswelder() )
var/obj/item/weapon/weldingtool/WT = W
if (!WT.isOn()) return
if (WT.get_fuel() <1)
@@ -719,8 +719,8 @@
if (istype(user, /mob/living/silicon))
return src.attack_hand(user)
if (!opened && wiresexposed && \
(ismultitool(W) || \
iswirecutter(W) || istype(W, /obj/item/device/assembly/signaler)))
W.ismultitool() || \
W.iswirecutter() || istype(W, /obj/item/device/assembly/signaler))
return src.attack_hand(user)
user.visible_message("<span class='danger'>The [src.name] has been hit with the [W.name] by [user.name]!</span>", \
"<span class='danger'>You hit the [src.name] with your [W.name]!</span>", \

View File

@@ -38,7 +38,7 @@
/obj/machinery/power/smes/batteryrack/update_icon()
cut_overlays()
if(stat & BROKEN) return
if (output_attempt)
add_overlay("gsmes_outputting")
if(inputting)
@@ -55,7 +55,7 @@
/obj/machinery/power/smes/batteryrack/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) //these can only be moved by being reconstructed, solves having to remake the powernet.
..() //SMES attackby for now handles screwdriver, cable coils and wirecutters, no need to repeat that here
if(open_hatch)
if(iscrowbar(W))
if(W.iscrowbar())
if (charge < (capacity / 100))
if (!output_attempt && !input_attempt)
playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)

View File

@@ -35,7 +35,7 @@
// Enabled on server startup. Used in substations to keep them in bypass mode.
/obj/machinery/power/breakerbox/activated/Initialize()
. = ..()
set_state(1)
set_state(1)
/obj/machinery/power/breakerbox/examine(mob/user)
..()
@@ -89,7 +89,7 @@
busy = 0
/obj/machinery/power/breakerbox/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(ismultitool(W))
if(W.ismultitool())
var/newtag = input(user, "Enter new RCON tag. Use \"NO_TAG\" to disable RCON or leave empty to cancel.", "SMES RCON system") as text
if(newtag)
RCon_tag = newtag

View File

@@ -132,7 +132,7 @@ var/list/possible_cable_coil_colours = list(
if(!T.can_have_cabling())
return
if(iswirecutter(W))
if(W.iswirecutter())
if(d1 == 12 || d2 == 12)
user << "<span class='warning'>You must cut this cable from above.</span>"
return
@@ -165,14 +165,14 @@ var/list/possible_cable_coil_colours = list(
return
else if(iscoil(W))
else if(W.iscoil())
var/obj/item/stack/cable_coil/coil = W
if (coil.get_amount() < 1)
user << "Not enough cable"
return
coil.cable_join(src, user)
else if(ismultitool(W))
else if(W.ismultitool())
if(powernet && (powernet.avail > 0)) // is it powered?
user << "<span class='warning'>[powernet.avail]W in power network.</span>"
@@ -475,6 +475,9 @@ obj/structure/cable/proc/cableColor(var/colorC)
attack_verb = list("whipped", "lashed", "disciplined", "flogged")
stacktype = /obj/item/stack/cable_coil
/obj/item/stack/cable_coil/iscoil()
return TRUE
/obj/item/stack/cable_coil/cyborg
name = "cable coil synthesizer"
desc = "A device that makes cable."
@@ -506,7 +509,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
if (!S) return
if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP)
if(!(S.status & ORGAN_ASSISTED) || user.a_intent != I_HELP)
return ..()
if(M.isSynthetic() && M == user)
@@ -918,7 +921,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
var/ticks = 0
/obj/structure/noose/attackby(obj/item/W, mob/user, params)
if(iswirecutter(W))
if(W.iswirecutter())
user.visible_message("[user] cuts the noose.", "<span class='notice'>You cut the noose.</span>")
if(buckled_mob)
buckled_mob.visible_message("<span class='danger'>[buckled_mob] falls over and hits the ground!</span>",\

View File

@@ -15,10 +15,10 @@
if(!T.is_plating())
return
if(iswirecutter(W))
if(W.iswirecutter())
usr << "<span class='notice'>These cables are too tough to be cut with those [W.name].</span>"
return
else if(iscoil(W))
else if(W.iscoil())
usr << "<span class='notice'>You will need heavier cables to connect to these.</span>"
return
else

View File

@@ -145,7 +145,7 @@
attack_hand(user)
/obj/machinery/power/generator/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(iswrench(W))
if(W.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
anchored = !anchored
user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the bolts holding [src.name] to the floor.", \

View File

@@ -198,12 +198,12 @@
var/old_broken_state = broken_state
switch(broken_state)
if(GRAV_NEEDS_SCREWDRIVER)
if(isscrewdriver(I))
if(I.isscrewdriver())
user << "<span class='notice'>You secure the screws of the framework.</span>"
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
broken_state++
if(GRAV_NEEDS_WELDING)
if(iswelder(I))
if(I.iswelder())
var/obj/item/weapon/weldingtool/WT = I
if(WT.remove_fuel(1, user))
user << "<span class='notice'>You mend the damaged framework.</span>"
@@ -220,13 +220,13 @@
else
user << "<span class='notice'>You need 10 sheets of plasteel.</span>"
if(GRAV_NEEDS_WRENCH)
if(iswrench(I))
if(I.iswrench())
user << "<span class='notice'>You secure the plating to the framework.</span>"
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
set_fix()
else
..()
if(iscrowbar(I))
if(I.iscrowbar())
if(backpanelopen)
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
user << "<span class='notice'>You replace the back panel.</span>"

View File

@@ -44,7 +44,7 @@
/obj/machinery/light_construct/attackby(obj/item/weapon/W as obj, mob/user as mob)
add_fingerprint(user)
if (iswrench(W))
if (W.iswrench())
if (src.stage == 1)
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
usr << "You begin deconstructing [src]."
@@ -68,7 +68,7 @@
usr << "You have to unscrew the case first."
return
if(iswirecutter(W))
if(W.iswirecutter())
if (src.stage != 2) return
src.stage = 1
switch(fixture_type)
@@ -79,13 +79,13 @@
new /obj/item/stack/cable_coil(get_turf(src.loc), 1, "red")
user.visible_message(
"[user] removes the wiring from [src].",
"You remove the wiring from [src].",
"You remove the wiring from [src].",
"You hear something being cut."
)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
return
if(iscoil(W))
if(W.iscoil())
if (src.stage != 1) return
var/obj/item/stack/cable_coil/coil = W
if (coil.use(1))
@@ -101,7 +101,7 @@
)
return
if(isscrewdriver(W))
if(W.isscrewdriver())
if (stage == 2)
switch(fixture_type)
if("tube")
@@ -156,7 +156,7 @@
add_fingerprint(user)
return
if (iscrowbar(W))
if (W.iscrowbar())
if (!cell_connectors)
to_chat(user, "<span class='notice'>[src] does not have a power cell connector.</span>")
return

View File

@@ -340,7 +340,7 @@
// attempt to stick weapon into light socket
else if(status == LIGHT_EMPTY)
if(isscrewdriver(W)) //If it's a screwdriver open it.
if(W.isscrewdriver()) //If it's a screwdriver open it.
playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1)
user.visible_message("[user.name] opens [src]'s casing.", \
"You open [src]'s casing.", "You hear a noise.")

View File

@@ -75,7 +75,7 @@
user.drop_from_inventory(O,src)
user << "<span class='notice'>You add the phoron tank to the generator.</span>"
else if(!active)
if(iswrench(O))
if(O.iswrench())
anchored = !anchored
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(anchored)
@@ -83,14 +83,14 @@
else
user << "<span class='notice'>You unsecure the generator from the floor.</span>"
SSmachinery.powernet_update_queued = TRUE
else if(isscrewdriver(O))
else if(O.isscrewdriver())
open = !open
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(open)
user << "<span class='notice'>You open the access panel.</span>"
else
user << "<span class='notice'>You close the access panel.</span>"
else if(iscrowbar(O) && !open)
else if(O.iscrowbar() && !open)
var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc)
for(var/obj/item/I in component_parts)
I.forceMove(src.loc)
@@ -163,7 +163,7 @@
usr << browse(null, "window=port_gen")
usr.machine = null
/obj/machinery/power/port_gen/pacman2/emag_act(var/remaining_uses, var/mob/user)
/obj/machinery/power/port_gen/pacman2/emag_act(var/remaining_uses, var/mob/user)
emagged = 1
emp_act(1)
return 1

View File

@@ -267,7 +267,7 @@
updateUsrDialog()
return
else if(!active)
if(iswrench(O))
if(O.iswrench())
if(!anchored)
connect_to_network()
@@ -279,14 +279,14 @@
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
anchored = !anchored
else if(isscrewdriver(O))
else if(O.isscrewdriver())
open = !open
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(open)
user << "<span class='notice'>You open the access panel.</span>"
else
user << "<span class='notice'>You close the access panel.</span>"
else if(iscrowbar(O) && open)
else if(O.iscrowbar() && open)
var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc)
for(var/obj/item/I in component_parts)
I.forceMove(src.loc)

View File

@@ -122,7 +122,7 @@
//almost never called, overwritten by all power machines but terminal and generator
/obj/machinery/power/attackby(obj/item/weapon/W, mob/user)
if(iscoil(W))
if(W.iscoil())
var/obj/item/stack/cable_coil/coil = W

View File

@@ -66,11 +66,11 @@ var/global/list/rad_collectors = list()
src.P = W
update_icons()
return 1
else if(iscrowbar(W))
else if(W.iscrowbar())
if(P && !src.locked)
eject()
return 1
else if(iswrench(W))
else if(W.iswrench())
if(P)
user << "<span class='notice'>Remove the phoron tank first.</span>"
return 1

View File

@@ -151,7 +151,7 @@
/obj/machinery/power/emitter/attackby(obj/item/W, mob/user)
if(iswrench(W))
if(W.iswrench())
if(active)
user << "Turn off [src] first."
return
@@ -174,7 +174,7 @@
user << "<span class='warning'>\The [src] needs to be unwelded from the floor.</span>"
return
if(iswelder(W))
if(W.iswelder())
var/obj/item/weapon/weldingtool/WT = W
if(active)
user << "Turn off [src] first."

View File

@@ -93,7 +93,7 @@ field_generator power level display
if(active)
user << "The [src] needs to be off."
return
else if(iswrench(W))
else if(W.iswrench())
switch(state)
if(0)
state = 1
@@ -112,7 +112,7 @@ field_generator power level display
if(2)
user << "<span class='warning'>The [src.name] needs to be unwelded from the floor.</span>"
return
else if(iswelder(W))
else if(W.iswelder())
var/obj/item/weapon/weldingtool/WT = W
switch(state)
if(0)

View File

@@ -17,7 +17,7 @@
if(src) qdel(src)
/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user)
if(iswrench(W))
if(W.iswrench())
anchored = !anchored
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
if(anchored)

View File

@@ -201,35 +201,35 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps
if(0)
if(iswrench(O))
if(O.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
src.anchored = 1
user.visible_message("[user.name] secures the [src.name] to the floor.", \
"You secure the external bolts.")
temp_state++
if(1)
if(iswrench(O))
if(O.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
src.anchored = 0
user.visible_message("[user.name] detaches the [src.name] from the floor.", \
"You remove the external bolts.")
temp_state--
else if(iscoil(O))
else if(O.iscoil())
if(O:use(1,user))
user.visible_message("[user.name] adds wires to the [src.name].", \
"You add some wires.")
temp_state++
if(2)
if(iswirecutter(O))//TODO:Shock user if its on?
if(O.iswirecutter())//TODO:Shock user if its on?
user.visible_message("[user.name] removes some wires from the [src.name].", \
"You remove some wires.")
temp_state--
else if(isscrewdriver(O))
else if(O.isscrewdriver())
user.visible_message("[user.name] closes the [src.name]'s access panel.", \
"You close the access panel.")
temp_state++
if(3)
if(isscrewdriver(O))
if(O.isscrewdriver())
user.visible_message("[user.name] opens the [src.name]'s access panel.", \
"You open the access panel.")
temp_state--
@@ -340,35 +340,35 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
var/temp_state = src.construction_state
switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps
if(0)
if(iswrench(O))
if(O.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
src.anchored = 1
user.visible_message("[user.name] secures the [src.name] to the floor.", \
"You secure the external bolts.")
temp_state++
if(1)
if(iswrench(O))
if(O.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
src.anchored = 0
user.visible_message("[user.name] detaches the [src.name] from the floor.", \
"You remove the external bolts.")
temp_state--
else if(iscoil(O))
else if(O.iscoil())
if(O:use(1))
user.visible_message("[user.name] adds wires to the [src.name].", \
"You add some wires.")
temp_state++
if(2)
if(iswirecutter(O))//TODO:Shock user if its on?
if(O.iswirecutter())//TODO:Shock user if its on?
user.visible_message("[user.name] removes some wires from the [src.name].", \
"You remove some wires.")
temp_state--
else if(isscrewdriver(O))
else if(O.isscrewdriver())
user.visible_message("[user.name] closes the [src.name]'s access panel.", \
"You close the access panel.")
temp_state++
if(3)
if(isscrewdriver(O))
if(O.isscrewdriver())
user.visible_message("[user.name] opens the [src.name]'s access panel.", \
"You open the access panel.")
temp_state--

View File

@@ -293,7 +293,7 @@
/obj/machinery/power/smes/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(isscrewdriver(W))
if(W.isscrewdriver())
if(!open_hatch)
open_hatch = 1
user << "<span class='notice'>You open the maintenance hatch of [src].</span>"
@@ -307,7 +307,7 @@
user << "<span class='warning'>You need to open access hatch on [src] first!</span>"
return 0
if(iscoil(W) && !terminal && !building_terminal)
if(W.iscoil() && !terminal && !building_terminal)
building_terminal = 1
var/obj/item/stack/cable_coil/CC = W
if (CC.get_amount() <= 10)
@@ -326,7 +326,7 @@
stat = 0
return 0
else if(iswirecutter(W) && terminal && !building_terminal)
else if(W.iswirecutter() && terminal && !building_terminal)
building_terminal = 1
var/turf/tempTDir = terminal.loc
if (istype(tempTDir))

View File

@@ -311,7 +311,7 @@
if (..())
// Multitool - change RCON tag
if(ismultitool(W))
if(W.ismultitool())
var/newtag = input(user, "Enter new RCON tag. Use \"NO_TAG\" to disable RCON or leave empty to cancel.", "SMES RCON system") as text
if(newtag)
RCon_tag = newtag
@@ -335,7 +335,7 @@
failure_probability = 0
// Crowbar - Disassemble the SMES.
if(iscrowbar(W))
if(W.iscrowbar())
if (terminal)
user << "<span class='warning'>You have to disassemble the terminal first!</span>"
return

View File

@@ -59,7 +59,7 @@
/obj/machinery/power/solar/attackby(obj/item/weapon/W, mob/user)
if(iscrowbar(W))
if(W.iscrowbar())
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
user.visible_message("<span class='notice'>[user] begins to take the glass off the solar panel.</span>")
if(do_after(user, 50))
@@ -224,13 +224,13 @@
/obj/item/solar_assembly/attackby(var/obj/item/weapon/W, var/mob/user)
if(!anchored && isturf(loc))
if(iswrench(W))
if(W.iswrench())
anchored = 1
user.visible_message("<span class='notice'>[user] wrenches the solar assembly into place.</span>")
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
return 1
else
if(iswrench(W))
if(W.iswrench())
anchored = 0
user.visible_message("<span class='notice'>[user] unwrenches the solar assembly from it's place.</span>")
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
@@ -259,7 +259,7 @@
user.visible_message("<span class='notice'>[user] inserts the electronics into the solar assembly.</span>")
return 1
else
if(iscrowbar(W))
if(W.iscrowbar())
new /obj/item/weapon/tracker_electronics(src.loc)
tracker = 0
user.visible_message("<span class='notice'>[user] takes out the electronics from the solar assembly.</span>")
@@ -397,8 +397,8 @@
return
/obj/machinery/power/solar_control/attackby(I as obj, user as mob)
if(isscrewdriver(I))
/obj/machinery/power/solar_control/attackby(var/obj/I, user as mob)
if(I.isscrewdriver())
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
if (src.stat & BROKEN)

View File

@@ -28,7 +28,7 @@
if(default_part_replacement(user, W))
return
if(iswrench(W))
if(W.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "<span class='notice'>You [anchored ? "unfasten" : "fasten"] [src] to the flooring.</span>"
anchored = !anchored
@@ -74,7 +74,7 @@
if(default_part_replacement(user, W))
return
if(iswrench(W))
if(W.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "<span class='notice'>You [anchored ? "unfasten" : "fasten"] [src] to the flooring.</span>"
anchored = !anchored

View File

@@ -59,7 +59,7 @@
/obj/machinery/power/tracker/attackby(var/obj/item/weapon/W, var/mob/user)
if(iscrowbar(W))
if(W.iscrowbar())
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
user.visible_message("<span class='notice'>[user] begins to take the glass off the solar tracker.</span>")
if(do_after(user, 50))

View File

@@ -226,41 +226,6 @@
if(P.id == id)
doors += P
/*
/obj/machinery/computer/turbine_computer/attackby(I as obj, user as mob)
if(isscrewdriver(I))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
if (src.stat & BROKEN)
user << "\blue The broken glass falls out."
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/turbine_control/M = new /obj/item/weapon/circuitboard/turbine_control( A )
for (var/obj/C in src)
C.forceMove(src.loc)
M.id = src.id
A.circuit = M
A.state = 3
A.icon_state = "3"
A.anchored = 1
qdel(src)
else
user << "\blue You disconnect the monitor."
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
var/obj/item/weapon/circuitboard/turbine_control/M = new /obj/item/weapon/circuitboard/turbine_control( A )
for (var/obj/C in src)
C.forceMove(src.loc)
M.id = src.id
A.circuit = M
A.state = 4
A.icon_state = "4"
A.anchored = 1
qdel(src)
else
src.attack_hand(user)
return
*/
/obj/machinery/computer/turbine_computer/attack_hand(var/mob/user as mob)
user.machine = src
var/dat