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:
elly1989@rocketmail.com
2012-02-14 20:29:58 +00:00
parent 8619772bd8
commit 0a80f91f2c
22 changed files with 194 additions and 89 deletions
+6 -1
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+19 -3
View File
@@ -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"
+16 -12
View File
@@ -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
..()
+15 -12
View File
@@ -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
+2 -2
View File
@@ -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"