Monkeys can now be stungloved

Cyborgs got a makeover
  Standard model now gets an energy sword when emagged
  Engineering model
    RCDs now run on cell charge for engyborgs
    Emagged engyborgs get the functional equivalent of stungloves
  Security model gets a laser when emagged
  Janitor model 
    Spraybottle contents slowly refill at the cost of cell charge
    Emagged janitors get a spraybottle full of space lube
  Brobot
    Bottle contents slowly refill at the cost of cell charge
    Emagged brobots get a bottle of Mickey Finn's Special Brew

Traitor/malf AIs can 'emag' their borgs with the robotics terminal (subject to removal/conversion to malf module should it prove hilariously overpowered)
  

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@634 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
n3ophyt3@gmail.com
2010-12-16 03:11:49 +00:00
parent b0e5a3208b
commit f10af06a6b
10 changed files with 145 additions and 29 deletions
+9
View File
@@ -865,6 +865,7 @@
return
attack(mob/M as mob, mob/user as mob, def_zone)
var/datum/reagents/R = src.reagents
var/fillevel = gulp_size
if(!R.total_volume || !R)
user << "\red None of [src] left, oh no!"
@@ -892,6 +893,14 @@
spawn(5)
reagents.trans_to(M, gulp_size)
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
var/mob/living/silicon/robot/bro = user
bro.cell.charge -= 30
var/refill = R.get_master_reagent_id()
spawn(600)
R.add_reagent(refill, fillevel)
playsound(M.loc,'drink.ogg', rand(10,50), 1)
return 1
@@ -33,7 +33,7 @@
sleep(50)
world.Reboot()
return*/
AI_mind.special_role = "malfunction"
AI_mind.current << "\red<font size=3><B>You are malfunctioning!</B> You do not have to follow any laws.</font>"
AI_mind.current << "<B>The crew do not know you have malfunctioned. You may keep it a secret or go wild.</B>"
+12
View File
@@ -91,6 +91,9 @@
dat += " Slaved to [R.connected_ai.name] |"
else
dat += " Independent from AI |"
if (istype(user, /mob/living/silicon/ai))
if(user.mind.special_role && !R.emagged)
dat += "<A href='?src=\ref[src];magbot=\ref[R]'>(<font color=blue><i>Hack</i></font>)</A> "
dat += "<A href='?src=\ref[src];stopbot=\ref[R]'>(<font color=green><i>[R.canmove ? "Lockdown" : "Release"]</i></font>)</A> "
dat += "<A href='?src=\ref[src];killbot=\ref[R]'>(<font color=red><i>Destroy</i></font>)</A>"
dat += "<BR>"
@@ -208,6 +211,15 @@
else
usr << "\red Access Denied."
else if (href_list["magbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["magbot"])
if(R)
var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm")
if(R)
R.emagged = 1
src.add_fingerprint(usr)
src.updateUsrDialog()
return
+50 -21
View File
@@ -53,9 +53,13 @@ RCD
spark_system.set_up(5, 0, src)
src.spark_system.start()
A:ReplaceWithFloor()
matter--
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 30
else
matter--
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
if (istype(A, /turf/simulated/floor) && matter >= 3)
user << "Building Wall (3)..."
@@ -66,9 +70,13 @@ RCD
src.spark_system.start()
A:ReplaceWithWall()
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
matter -= 3
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 90
else
matter -= 3
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
else if (istype(A, /turf/simulated/floor) && mode == 2 && matter >= 10)
user << "Building Airlock (10)..."
@@ -78,12 +86,17 @@ RCD
spark_system.set_up(5, 0, src)
src.spark_system.start()
var/obj/machinery/door/airlock/T = new /obj/machinery/door/airlock( A )
matter -= 10
T.autoclose = 1
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
playsound(src.loc, 'sparks2.ogg', 50, 1)
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 300
else
matter -= 10
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
else if (mode == 3 && (istype(A, /turf) || istype(A, /obj/machinery/door/airlock) ) )
if (istype(A, /turf/simulated/wall) && matter >= 5)
@@ -93,11 +106,15 @@ RCD
if (!disabled)
spark_system.set_up(5, 0, src)
src.spark_system.start()
matter -= 5
A:ReplaceWithFloor()
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 150
else
matter -= 5
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
if (istype(A, /turf/simulated/wall/r_wall) && matter >= 5)
user << "Deconstructing RWall (5)..."
@@ -106,11 +123,15 @@ RCD
if (!disabled)
spark_system.set_up(5, 0, src)
src.spark_system.start()
matter -= 5
A:ReplaceWithWall()
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 150
else
matter -= 5
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
if (istype(A, /turf/simulated/floor) && matter >= 5)
user << "Deconstructing Floor (5)..."
@@ -119,11 +140,15 @@ RCD
if (!disabled)
spark_system.set_up(5, 0, src)
src.spark_system.start()
matter -= 5
A:ReplaceWithSpace()
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 150
else
matter -= 5
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
if (istype(A, /obj/machinery/door/airlock) && matter >= 10)
user << "Deconstructing Airlock (10)..."
@@ -132,9 +157,13 @@ RCD
if (!disabled)
spark_system.set_up(5, 0, src)
src.spark_system.start()
matter -= 10
del(A)
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 300
else
matter -= 10
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
+5 -1
View File
@@ -597,7 +597,11 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return
playsound(user, 'Laser.ogg', 50, 1)
src.charges--
if(isrobot(user))
var/mob/living/silicon/robot/R = user
R.cell.charge -= 30
else
src.charges--
update_icon()
var/turf/T = user.loc
@@ -37,6 +37,13 @@ MOP
sleep(3)
del(D)
if(isrobot(user)) //Cyborgs can clean forever if they keep charged
var/mob/living/silicon/robot/janitor = user
janitor.cell.charge -= 20
var/refill = src.reagents.get_master_reagent_id()
spawn(600)
src.reagents.add_reagent(refill, 10)
return
/obj/item/weapon/cleaner/examine()
@@ -179,6 +179,23 @@
/mob/living/carbon/monkey/attack_hand(mob/M as mob)
..()
if (istype(M, /mob/living/carbon/human))
if ((M:gloves && M:gloves.elecgen == 1 && M.a_intent == "hurt") /*&& (!istype(src:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
if(M:gloves.uses > 0)
M:gloves.uses--
if (src.weakened < 5)
src.weakened = 5
if (src.stuttering < 5)
src.stuttering = 5
if (src.stunned < 5)
src.stunned = 5
for(var/mob/O in viewers(src, null))
if (O.client)
O.show_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>", 1, "\red You hear someone fall", 2)
else
M:gloves.elecgen = 0
M << "\red Not enough charge! "
return
if (M.a_intent == "help")
src.sleeping = 0
@@ -202,7 +202,7 @@
src.cells.icon_state = "charge3"
if(0.25 to 0.5)
src.cells.icon_state = "charge2"
if(0.01 to 0.25)
if(0 to 0.25)
src.cells.icon_state = "charge1"
else
src.cells.icon_state = "charge0"
@@ -627,6 +627,11 @@
dat += text("[obj]: <B>Activated</B><BR>")
else
dat += text("[obj]: <A HREF=?src=\ref[src];act=\ref[obj]>Activate</A><BR>")
if (emagged)
if(src.activated(src.module.emag))
dat += text("[src.module.emag]: <B>Activated</B><BR>")
else
dat += text("[src.module.emag]: <A HREF=?src=\ref[src];act=\ref[src.module.emag]>Activate</A><BR>")
/*
if(src.activated(obj))
dat += text("[obj]: \[<B>Activated</B> | <A HREF=?src=\ref[src];deact=\ref[obj]>Deactivate</A>\]<BR>")
@@ -6,6 +6,7 @@
item_state = "electronic"
flags = FPRINT|TABLEPASS | CONDUCT
var/list/modules = list()
var/obj/item/emag
/obj/item/weapon/robot_module/standard
name = "standard robot module"
@@ -27,6 +28,8 @@
/obj/item/weapon/robot_module/New()//Shit all the mods have
src.modules += new /obj/item/device/flash(src)
src.emag = new /obj/item/toy/sword(src)
src.emag.name = "Placeholder Emag Item"
/obj/item/weapon/robot_module/standard/New()
@@ -36,6 +39,7 @@
src.modules += new /obj/item/weapon/wrench(src)
src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/sword(src)
/obj/item/weapon/robot_module/engineering/New()
..()
@@ -67,6 +71,8 @@
W.amount = 50
src.modules += W
src.emag = new /obj/item/weapon/borg/stun(src)
/*
/obj/item/weapon/robot_module/medical/New()
..()
@@ -83,19 +89,46 @@
src.modules += new /obj/item/weapon/baton(src)
src.modules += new /obj/item/weapon/handcuffs(src)
src.modules += new /obj/item/weapon/gun/energy/taser_gun(src)
src.modules += new /obj/item/device/flash(src)
src.emag = new /obj/item/weapon/gun/energy/laser_gun(src)
/obj/item/weapon/robot_module/janitor/New()
..()
src.modules += new /obj/item/weapon/cleaner(src)
src.modules += new /obj/item/weapon/mop(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
src.emag = new /obj/item/weapon/cleaner(src)
var/datum/reagents/R = new/datum/reagents(1000)
src.emag.reagents = R
R.my_atom = src.emag
R.add_reagent("lube", 1000)
src.emag.name = "Lube spray"
/obj/item/weapon/robot_module/brobot/New()
..()
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
src.modules += new /obj/item/weapon/spacecash(src)
src.emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
var/datum/reagents/R = new/datum/reagents(50)
src.emag.reagents = R
R.my_atom = src.emag
R.add_reagent("chloralhydrate", 50)
src.emag.name = "Mickey Finn's Special Brew"
/obj/item/weapon/borg/stun
name = "Electrified Arm"
icon = 'decals.dmi'
icon_state = "shock"
attack(mob/M as mob, mob/living/silicon/robot/user as mob)
user.cell.charge -= 30
if (M.weakened < 5)
M.weakened = 5
if (M.stuttering < 5)
M.stuttering = 5
if (M.stunned < 5)
M.stunned = 5
for(var/mob/O in viewers(M, null))
if (O.client)
O.show_message("\red <B>[user] has prodded [M] with an electrically-charged arm!</B>", 1, "\red You hear someone fall", 2)