mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Added Spacevines to the random events. Added a spawn space-vines option to the secrets panel.
Fixes issue 250 (borg door bug) Fixed silicon interactions with engineering equipment. Fixed access lists for radiation collectors, so locking them actually serves a purpose. Fixed using crowbars on them. Borgs can name themselves upon module selection (unless a roboticist has named them previously by using a pen) To avoid Borgs griefing and then changing their name by selecting a module, borgs are now unable to move independently until they choose a module. New sprites for spacevines are on the way. So you'll have to tolerate my crappy stand-ins for a bit until he is finished with them. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3128 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -1626,6 +1626,11 @@
|
||||
else
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||
return
|
||||
if("spacevines")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","K")
|
||||
spacevine_infestation()
|
||||
message_admins("[key_name_admin(usr)] has spawned spacevines", 1)
|
||||
if (usr)
|
||||
log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]")
|
||||
if (ok)
|
||||
@@ -2047,6 +2052,7 @@
|
||||
<A href='?src=\ref[src];secretsfun=immovable'>Spawn an Immovable Rod</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=lightsout'>Toggle a "lights out" event</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=ionstorm'>Spawn an Ion Storm</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=spacevines'>Spawn Space-Vines</A><BR>
|
||||
<BR>
|
||||
<B>Fun Secrets</B><BR>
|
||||
<BR>
|
||||
@@ -2529,7 +2535,6 @@
|
||||
|
||||
log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])")
|
||||
|
||||
|
||||
else
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
||||
return
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**********************Mineral processing unit console**************************/
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console
|
||||
name = "Produciton machine console"
|
||||
name = "production machine console"
|
||||
icon = 'mining_machines.dmi'
|
||||
icon_state = "console"
|
||||
density = 1
|
||||
@@ -189,7 +189,7 @@
|
||||
|
||||
|
||||
/obj/machinery/mineral/processing_unit
|
||||
name = "Furnace"
|
||||
name = "furnace"
|
||||
icon = 'mining_machines.dmi'
|
||||
icon_state = "furnace"
|
||||
density = 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**********************Mineral stacking unit console**************************/
|
||||
|
||||
/obj/machinery/mineral/stacking_unit_console
|
||||
name = "Stacking machine console"
|
||||
name = "stacking machine console"
|
||||
icon = 'mining_machines.dmi'
|
||||
icon_state = "console"
|
||||
density = 1
|
||||
@@ -132,7 +132,7 @@
|
||||
|
||||
|
||||
/obj/machinery/mineral/stacking_machine
|
||||
name = "Stacking machine"
|
||||
name = "stacking machine"
|
||||
icon = 'mining_machines.dmi'
|
||||
icon_state = "stacker"
|
||||
density = 1
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
/obj/machinery/mineral/unloading_machine
|
||||
name = "Unloading machine"
|
||||
name = "unloading machine"
|
||||
icon = 'mining_machines.dmi'
|
||||
icon_state = "unloader"
|
||||
density = 1
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
use_power()
|
||||
process_killswitch()
|
||||
process_locks()
|
||||
update_canmove()
|
||||
if(modtype != "robot") //only update canmove if we've selected a module
|
||||
update_canmove()
|
||||
|
||||
update_mind()
|
||||
|
||||
|
||||
@@ -8,10 +8,6 @@
|
||||
src.client.perspective = EYE_PERSPECTIVE
|
||||
if (src.stat == 2)
|
||||
src.verbs += /mob/proc/ghost
|
||||
if(src.real_name == "Cyborg")
|
||||
src.real_name += " "
|
||||
src.real_name += "-[rand(1, 999)]"
|
||||
src.name = src.real_name
|
||||
if(!src.connected_ai)
|
||||
for(var/mob/living/silicon/ai/A in world)
|
||||
src.connected_ai = A
|
||||
|
||||
@@ -9,9 +9,6 @@
|
||||
modtype = "robot"
|
||||
updateicon()
|
||||
// syndicate = syndie
|
||||
if(real_name == "Cyborg")
|
||||
real_name += " [pick(rand(1, 999))]"
|
||||
name = real_name
|
||||
spawn (4)
|
||||
if (client)
|
||||
connected_ai = activeais()
|
||||
@@ -67,6 +64,7 @@
|
||||
return
|
||||
switch(mod)
|
||||
if("Standard")
|
||||
updatename("Cy")
|
||||
module = new /obj/item/weapon/robot_module/standard(src)
|
||||
hands.icon_state = "standard"
|
||||
icon_state = "robot"
|
||||
@@ -74,6 +72,7 @@
|
||||
feedback_inc("cyborg_standard",1)
|
||||
|
||||
if("Service")
|
||||
updatename("Servi")
|
||||
module = new /obj/item/weapon/robot_module/butler(src)
|
||||
hands.icon_state = "service"
|
||||
var/icontype = input("Select an icon!", "Robot", null, null) in list("Waitress", "Bro", "Butler", "Kent", "Rich")
|
||||
@@ -91,6 +90,7 @@
|
||||
feedback_inc("cyborg_service",1)
|
||||
|
||||
if("Miner")
|
||||
updatename("Digger")
|
||||
module = new /obj/item/weapon/robot_module/miner(src)
|
||||
hands.icon_state = "miner"
|
||||
icon_state = "Miner"
|
||||
@@ -98,6 +98,7 @@
|
||||
feedback_inc("cyborg_miner",1)
|
||||
|
||||
if("Medical")
|
||||
updatename("Medi")
|
||||
module = new /obj/item/weapon/robot_module/medical(src)
|
||||
hands.icon_state = "medical"
|
||||
icon_state = "surgeon"
|
||||
@@ -106,6 +107,7 @@
|
||||
feedback_inc("cyborg_medical",1)
|
||||
|
||||
if("Security")
|
||||
updatename("Securi")
|
||||
module = new /obj/item/weapon/robot_module/security(src)
|
||||
hands.icon_state = "security"
|
||||
icon_state = "bloodhound"
|
||||
@@ -113,6 +115,7 @@
|
||||
feedback_inc("cyborg_security",1)
|
||||
|
||||
if("Engineering")
|
||||
updatename("Engi")
|
||||
module = new /obj/item/weapon/robot_module/engineering(src)
|
||||
hands.icon_state = "engineer"
|
||||
icon_state = "landmate"
|
||||
@@ -120,6 +123,7 @@
|
||||
feedback_inc("cyborg_engineering",1)
|
||||
|
||||
if("Janitor")
|
||||
updatename("Jani")
|
||||
module = new /obj/item/weapon/robot_module/janitor(src)
|
||||
hands.icon_state = "janitor"
|
||||
icon_state = "mopgearrex"
|
||||
@@ -129,6 +133,18 @@
|
||||
overlays -= "eyes" //Takes off the eyes that it started with
|
||||
updateicon()
|
||||
|
||||
/mob/living/silicon/robot/verb/updatename(var/prefix as text)
|
||||
if(real_name == "Cyborg")
|
||||
var/defaultname = "[prefix]borg -[rand(1,999)]"
|
||||
var/newname = input("Please input a name", "Name selection", defaultname, null)
|
||||
newname = copytext(sanitize(newname), 1, MAX_MESSAGE_LEN) //Sanitize the name
|
||||
|
||||
if(!newname)
|
||||
newname = "[defaultname]"
|
||||
|
||||
real_name = newname
|
||||
name = real_name
|
||||
|
||||
/mob/living/silicon/robot/verb/cmd_robot_alerts()
|
||||
set category = "Robot Commands"
|
||||
set name = "Show Alerts"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
anchored = 0
|
||||
density = 1
|
||||
directwired = 1
|
||||
req_access = list(access_engine)
|
||||
// use_power = 0
|
||||
var
|
||||
obj/item/weapon/tank/plasma/P = null
|
||||
@@ -26,15 +27,14 @@
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
if(anchored)
|
||||
if(!src.locked || istype(user, /mob/living/silicon))
|
||||
if(!src.locked)
|
||||
toggle_power()
|
||||
user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \
|
||||
"You turn the [src.name] [active? "on":"off"].")
|
||||
return
|
||||
else
|
||||
if(src.locked)
|
||||
user << "\red The controls are locked."
|
||||
return
|
||||
user << "\red The controls are locked!"
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -44,10 +44,10 @@
|
||||
return 1
|
||||
else if(istype(W, /obj/item/weapon/tank/plasma))
|
||||
if(!src.anchored)
|
||||
user << "The [src] needs to be secured to the floor first."
|
||||
user << "\red The [src] needs to be secured to the floor first."
|
||||
return 1
|
||||
if(src.P)
|
||||
user << "\red There appears to already be a plasma tank loaded!"
|
||||
user << "\red There's already a plasma tank loaded."
|
||||
return 1
|
||||
src.P = W
|
||||
W.loc = src
|
||||
@@ -56,28 +56,32 @@
|
||||
user.u_equip(W)
|
||||
updateicon()
|
||||
else if(istype(W, /obj/item/weapon/crowbar))
|
||||
if(P)
|
||||
if(P && !src.locked)
|
||||
eject()
|
||||
return 1
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
if(P)
|
||||
user << "\red Remove the plasma tank first."
|
||||
user << "\blue Remove the plasma tank first."
|
||||
return 1
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
src.anchored = !src.anchored
|
||||
user.visible_message("[user.name] [anchored? "secures":"unsecures"] the [src.name].", \
|
||||
"You [anchored? "secure":"undo"] the external bolts.", \
|
||||
"You hear ratchet")
|
||||
"You hear a ratchet")
|
||||
if(anchored)
|
||||
connect_to_network()
|
||||
else
|
||||
disconnect_from_network()
|
||||
else if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
|
||||
if (src.allowed(user))
|
||||
src.locked = !src.locked
|
||||
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
|
||||
if(active)
|
||||
src.locked = !src.locked
|
||||
user << "The controls are now [src.locked ? "locked." : "unlocked."]"
|
||||
else
|
||||
src.locked = 0 //just in case it somehow gets locked
|
||||
user << "\red The controls can only be locked when the [src] is active"
|
||||
else
|
||||
user << "\red Access denied."
|
||||
user << "\red Access denied!"
|
||||
return 1
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(state == 2)
|
||||
if(!src.locked || istype(user, /mob/living/silicon))
|
||||
if(!src.locked)
|
||||
if(src.active==1)
|
||||
src.active = 0
|
||||
user << "You turn off the [src]."
|
||||
@@ -60,9 +60,9 @@
|
||||
src.use_power = 2
|
||||
update_icon()
|
||||
else
|
||||
user << "The controls are locked!"
|
||||
user << "\red The controls are locked!"
|
||||
else
|
||||
user << "The [src] needs to be firmly secured to the floor first."
|
||||
user << "\red The [src] needs to be firmly secured to the floor first."
|
||||
return 1
|
||||
|
||||
|
||||
@@ -90,8 +90,7 @@
|
||||
src.fire_delay = rand(20,100)
|
||||
src.shot_number = 0
|
||||
use_power(1000)
|
||||
var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc )
|
||||
A.icon_state = "emitter"
|
||||
var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc )
|
||||
playsound(src.loc, 'emitter.ogg', 25, 1)
|
||||
if(prob(35))
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
@@ -128,14 +127,14 @@
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
||||
"You secure the external reinforcing bolts to the floor.", \
|
||||
"You hear ratchet")
|
||||
"You hear a ratchet")
|
||||
src.anchored = 1
|
||||
if(1)
|
||||
state = 0
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
|
||||
"You undo the external reinforcing bolts.", \
|
||||
"You hear ratchet")
|
||||
"You hear a ratchet")
|
||||
src.anchored = 0
|
||||
if(2)
|
||||
user << "\red The [src.name] needs to be unwelded from the floor."
|
||||
@@ -160,7 +159,7 @@
|
||||
user << "You weld the [src] to the floor."
|
||||
W:welding = 1
|
||||
else
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
user << "\red You need more welding fuel to complete this task."
|
||||
if(2)
|
||||
if (W:remove_fuel(0,user))
|
||||
W:welding = 2
|
||||
@@ -173,16 +172,20 @@
|
||||
user << "You cut the [src] free from the floor."
|
||||
W:welding = 1
|
||||
else
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
user << "\red You need more welding fuel to complete this task."
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/card/id))//The slot is too small for PDAs
|
||||
if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
|
||||
if(emagged)
|
||||
user << "\red The lock seems to be broken"
|
||||
return
|
||||
if(src.allowed(user))
|
||||
src.locked = !src.locked
|
||||
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
|
||||
if(active)
|
||||
src.locked = !src.locked
|
||||
user << "The controls are now [src.locked ? "locked." : "unlocked."]"
|
||||
else
|
||||
src.locked = 0 //just in case it somehow gets locked
|
||||
user << "\red The controls can only be locked when the [src] is online"
|
||||
else
|
||||
user << "\red Access denied."
|
||||
return
|
||||
|
||||
@@ -190,7 +190,6 @@ field_generator power level display
|
||||
src.cleanup()
|
||||
update_icon()
|
||||
|
||||
|
||||
turn_on()
|
||||
active = 1
|
||||
warming_up = 1
|
||||
@@ -342,3 +341,15 @@ field_generator power level display
|
||||
connected_gens.Remove(FG)
|
||||
connected_gens = list()
|
||||
clean_up = 0
|
||||
|
||||
//This is here to help fight the "hurr durr, release singulo cos nobody will notice before the
|
||||
//singulo eats the evidence". It's not fool-proof but better than nothing.
|
||||
//I want to avoid using global variables.
|
||||
spawn(1)
|
||||
var/temp = 1 //stops spam
|
||||
for(var/obj/machinery/singularity/O in world)
|
||||
if(O.last_warning && temp)
|
||||
if((world.time - O.last_warning) > 50) //to stop message-spam
|
||||
temp = 0
|
||||
message_admins("A singulo exists and a containment field has failed.",1)
|
||||
O.last_warning = world.time
|
||||
|
||||
@@ -42,11 +42,11 @@
|
||||
if(anchored)
|
||||
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
||||
"You secure the [src.name] to the floor.", \
|
||||
"You hear ratchet")
|
||||
"You hear a ratchet")
|
||||
else
|
||||
user.visible_message("[user.name] unsecures [src.name] from the floor.", \
|
||||
"You unsecure the [src.name] from the floor.", \
|
||||
"You hear ratchet")
|
||||
"You hear a ratchet")
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -29,8 +29,17 @@ var/global/list/uneatable = list(
|
||||
target = null //its target. moves towards the target if it has one
|
||||
last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing
|
||||
teleport_del = 0
|
||||
last_warning
|
||||
|
||||
New(loc, var/starting_energy = 50, var/temp = 0)
|
||||
//CARN: admin-alert for chuckle-fuckery.
|
||||
last_warning = world.time
|
||||
var/count = 0
|
||||
for(var/obj/machinery/containment_field/CF in world)
|
||||
count = 1
|
||||
break
|
||||
if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
|
||||
|
||||
src.energy = starting_energy
|
||||
if(temp)
|
||||
spawn(temp)
|
||||
|
||||
@@ -34,6 +34,9 @@
|
||||
icon_state = "heavylaser"
|
||||
damage = 60
|
||||
|
||||
/obj/item/projectile/beam/emitter
|
||||
name = "emitter beam"
|
||||
icon_state = "emitter"
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user