mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
-Added a new, and admin spawnable only, machine which can turn humans into Cyborgs. Probably can be used for Robot Uprising events. The human has to be lying down and alive to be Borged. When spawned a conveyor belt will spawn on the left and right side too.
-Reduced the duration of the flare. I think putting it in process() made it last longer. -Added some null checks in camera chunks. -Large NarSie now force calls the shuttle and displays a threatening warning message. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4915 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
54
code/game/machinery/transformer.dm
Normal file
54
code/game/machinery/transformer.dm
Normal file
@@ -0,0 +1,54 @@
|
||||
/obj/machinery/transformer
|
||||
name = "Automatic Robotic Factory 5000"
|
||||
desc = "A large metalic machine with an entrance and an exit. A sign on the side reads, 'human go in, robot come out', human must be lying down and alive."
|
||||
icon = 'icons/obj/recycling.dmi'
|
||||
icon_state = "separator-AO1"
|
||||
layer = MOB_LAYER+1 // Overhead
|
||||
anchored = 1
|
||||
density = 1
|
||||
var/transform_dead = 0
|
||||
|
||||
/obj/machinery/transformer/New()
|
||||
..()
|
||||
var/turf/T = loc
|
||||
if(T)
|
||||
// Spawn Conveyour Belts
|
||||
|
||||
//East
|
||||
var/turf/east = locate(T.x + 1, T.y, T.z)
|
||||
if(istype(east, /turf/simulated/floor))
|
||||
new /obj/machinery/conveyor(east, WEST, 1)
|
||||
|
||||
// West
|
||||
var/turf/west = locate(T.x - 1, T.y, T.z)
|
||||
if(istype(west, /turf/simulated/floor))
|
||||
new /obj/machinery/conveyor(west, WEST, 1)
|
||||
|
||||
// On us
|
||||
new /obj/machinery/conveyor(T, WEST, 1)
|
||||
|
||||
/obj/machinery/transformer/Bumped(var/atom/movable/AM)
|
||||
// HasEntered didn't like people lying down.
|
||||
world << "BUMP!"
|
||||
if(ishuman(AM))
|
||||
// Only humans can enter from the west side, while lying down.
|
||||
var/move_dir = get_dir(loc, AM.loc)
|
||||
var/mob/living/carbon/human/H = AM
|
||||
if(H.lying && move_dir == EAST)// || move_dir == WEST)
|
||||
AM.loc = src.loc
|
||||
transform(AM)
|
||||
|
||||
/obj/machinery/transformer/proc/transform(var/mob/living/carbon/human/H)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
if(!transform_dead && H.stat == DEAD)
|
||||
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
return
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
|
||||
use_power(5000) // Use a lot of power.
|
||||
var/mob/living/silicon/robot = H.Robotize()
|
||||
robot.lying = 1
|
||||
spawn(50) // So he can't jump out the gate right away.
|
||||
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
if(robot)
|
||||
robot.lying = 0
|
||||
@@ -152,12 +152,9 @@
|
||||
var/produce_heat = 1500
|
||||
|
||||
/obj/item/device/flashlight/flare/New()
|
||||
fuel = rand(6000, 9000) // Last 10 to 15 minutes.
|
||||
fuel = rand(3000, 4500) // Last 10 to 15 minutes.
|
||||
..()
|
||||
|
||||
/obj/item/device/flashlight/flare/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
..(M, user, 0)
|
||||
|
||||
/obj/item/device/flashlight/flare/process()
|
||||
var/turf/pos = get_turf(src)
|
||||
pos.hotspot_expose(produce_heat, 5)
|
||||
|
||||
@@ -75,6 +75,9 @@
|
||||
for(var/camera in cameras)
|
||||
var/obj/machinery/camera/c = camera
|
||||
|
||||
if(!c)
|
||||
continue
|
||||
|
||||
if(!c.can_use())
|
||||
continue
|
||||
|
||||
@@ -142,6 +145,9 @@
|
||||
|
||||
for(var/camera in cameras)
|
||||
var/obj/machinery/camera/c = camera
|
||||
if(!c)
|
||||
continue
|
||||
|
||||
if(!c.can_use())
|
||||
continue
|
||||
|
||||
|
||||
@@ -65,8 +65,6 @@
|
||||
updatename("Default")
|
||||
updateicon()
|
||||
|
||||
playsound(src, 'sound/voice/liveagain.ogg', 75, 1)
|
||||
|
||||
if(!cell)
|
||||
cell = new /obj/item/weapon/cell(src)
|
||||
cell.maxcharge = 7500
|
||||
@@ -101,6 +99,9 @@
|
||||
camera.status = 0
|
||||
..()
|
||||
|
||||
playsound(loc, 'sound/voice/liveagain.ogg', 75, 1)
|
||||
|
||||
|
||||
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
|
||||
//Improved /N
|
||||
/mob/living/silicon/robot/Del()
|
||||
|
||||
@@ -473,9 +473,14 @@ var/global/list/uneatable = list(
|
||||
pixel_y = -256
|
||||
current_size = 12
|
||||
move_self = 1 //Do we move on our own?
|
||||
grav_pull = 13 //How many tiles out do we pull?
|
||||
consume_range = 12 //How many tiles out do we eat
|
||||
|
||||
/obj/machinery/singularity/narsie/large/New()
|
||||
..()
|
||||
world << "<font size='28' color='red'><b>NAR-SIE HAS RISEN</b></font>"
|
||||
if(emergency_shuttle)
|
||||
emergency_shuttle.incall(0.5) // Cannot recall
|
||||
|
||||
/obj/machinery/singularity/narsie/process()
|
||||
eat()
|
||||
if(!target || prob(5))
|
||||
|
||||
@@ -20,8 +20,10 @@
|
||||
id = "round_end_belt"
|
||||
|
||||
// create a conveyor
|
||||
/obj/machinery/conveyor/New()
|
||||
..()
|
||||
/obj/machinery/conveyor/New(loc, newdir, on = 0)
|
||||
..(loc)
|
||||
if(newdir)
|
||||
dir = newdir
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
forwards = NORTH
|
||||
@@ -47,6 +49,9 @@
|
||||
if(SOUTHWEST)
|
||||
forwards = WEST
|
||||
backwards = NORTH
|
||||
if(on)
|
||||
operating = 1
|
||||
setmove()
|
||||
|
||||
/obj/machinery/conveyor/proc/setmove()
|
||||
if(operating == 1)
|
||||
|
||||
@@ -759,6 +759,7 @@
|
||||
#include "code\game\machinery\suit_storage_unit.dm"
|
||||
#include "code\game\machinery\syndicatebeacon.dm"
|
||||
#include "code\game\machinery\teleporter.dm"
|
||||
#include "code\game\machinery\transformer.dm"
|
||||
#include "code\game\machinery\turrets.dm"
|
||||
#include "code\game\machinery\vending.dm"
|
||||
#include "code\game\machinery\washing_machine.dm"
|
||||
|
||||
Reference in New Issue
Block a user