New WIP TK system added. To activate your TK click the throw button with an empty hand. This will bring up a tkgrab item. Click on a non-anchored (currently) non mob Object to select it as your "focus". Once a focus is selected so long as you are in range of the focus you can now click somewhere to throw the focus at the target. To quit using TK just drop the tkgrab item.
The captains laser, aegun, and xbow recharge a bit slower now, they recharged so fast that you almost never had to stop shooting. Cleaned up the cyborg_modules file Medical and Security borgs have a hud item. Medical bots bottles hold 60 of their chemical (up from 30). Medical bots now have three syringes that are labeled "Syringe-(Inaprovaline)", "Syringe-(Anti-Toxin)", and "Syringe-(Mixed)". Medical bots now have two kelotane/dexalin pills (up from 1/ea). Engineering bots got a new RCD thats just like the old one but the code is cleaner and meant for borgs only. Husks brains can no longer be cut out. Healing hands code has been removed till whoever wants to finish it adds it to a place that is NOT the base click procs. Added veyveyr's nuke team weapon. Its more or less the Uzi with a new icon. Nuke teams also got a bit of extra ammo and a few more pinpointers/eguns in their locker. Glass doors will not set opacity to 1 after they close. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2431 316c924e-a436-60f5-8080-3fe189b3f50e
@@ -12,7 +12,7 @@
|
|||||||
var/operating = 0
|
var/operating = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
var/autoclose = 0
|
var/autoclose = 0
|
||||||
|
var/glass = 0
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/door/firedoor
|
/obj/machinery/door/firedoor
|
||||||
|
|||||||
@@ -28,9 +28,10 @@
|
|||||||
/proc/in_range(source, user)
|
/proc/in_range(source, user)
|
||||||
if(get_dist(source, user) <= 1)
|
if(get_dist(source, user) <= 1)
|
||||||
return 1
|
return 1
|
||||||
|
/*
|
||||||
else//TK TODO: remove this
|
else//TK TODO: remove this
|
||||||
if(istype(user, /mob/living/carbon))
|
if(istype(user, /mob/living/carbon))
|
||||||
if(user:mutations & PORTALS && get_dist(source, user) <= 7)
|
if(user:mutations & TK && get_dist(source, user) <= 7)
|
||||||
if(user:equipped()) return 0
|
if(user:equipped()) return 0
|
||||||
var/X = source:x
|
var/X = source:x
|
||||||
var/Y = source:y
|
var/Y = source:y
|
||||||
@@ -48,9 +49,7 @@
|
|||||||
flick("empdisable",O)
|
flick("empdisable",O)
|
||||||
spawn(5)
|
spawn(5)
|
||||||
del(O)
|
del(O)
|
||||||
|
return 1*/
|
||||||
|
|
||||||
return 1
|
|
||||||
|
|
||||||
return 0 //not in range and not telekinetic
|
return 0 //not in range and not telekinetic
|
||||||
|
|
||||||
|
|||||||
@@ -579,7 +579,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
|||||||
else
|
else
|
||||||
return
|
return
|
||||||
|
|
||||||
// ------- 1 TILE AWAY OR TELEKINETIC -------
|
// ------- 1 TILE AWAY -------
|
||||||
var/t5 = in_range(src, usr) || src.loc == usr
|
var/t5 = in_range(src, usr) || src.loc == usr
|
||||||
|
|
||||||
// ------- AI CAN CLICK ANYTHING -------
|
// ------- AI CAN CLICK ANYTHING -------
|
||||||
@@ -729,64 +729,6 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
|||||||
// ------- YOU DO NOT HAVE AN ITEM IN YOUR HAND -------
|
// ------- YOU DO NOT HAVE AN ITEM IN YOUR HAND -------
|
||||||
if (istype(usr, /mob/living/carbon/human))
|
if (istype(usr, /mob/living/carbon/human))
|
||||||
// ------- YOU ARE HUMAN -------
|
// ------- YOU ARE HUMAN -------
|
||||||
if (usr:a_intent == "help")
|
|
||||||
// ------- YOU HAVE THE HELP INTENT SELECTED -------
|
|
||||||
if(istype(src, /mob/living/carbon))
|
|
||||||
// ------- YOUR TARGET IS LIVING CARBON CREATURE (NOT AI OR CYBORG OR SIMPLE ANIMAL) -------
|
|
||||||
var/mob/living/carbon/C = src
|
|
||||||
if(usr:mutations & HEAL)
|
|
||||||
// ------- YOU ARE HUMAN, WITH THE HELP INTENT TARGETING A HUMAN AND HAVE THE 'HEAT' GENETIC MUTATION -------
|
|
||||||
|
|
||||||
if(C.stat != 2)
|
|
||||||
// ------- THE PERSON YOU'RE TOUCHING IS NOT DEAD -------
|
|
||||||
|
|
||||||
var/t_him = "it"
|
|
||||||
if (src.gender == MALE)
|
|
||||||
t_him = "his"
|
|
||||||
else if (src.gender == FEMALE)
|
|
||||||
t_him = "her"
|
|
||||||
var/u_him = "it"
|
|
||||||
if (usr.gender == MALE)
|
|
||||||
t_him = "him"
|
|
||||||
else if (usr.gender == FEMALE)
|
|
||||||
t_him = "her"
|
|
||||||
|
|
||||||
if(src != usr)
|
|
||||||
usr.visible_message( \
|
|
||||||
"\blue <i>[usr] places [u_him] palms on [src], healing [t_him]!</i>", \
|
|
||||||
"\blue You place your palms on [src] and heal [t_him].", \
|
|
||||||
)
|
|
||||||
else
|
|
||||||
usr.visible_message( \
|
|
||||||
"\blue <i>[usr] places [u_him] palms on [u_him]self and heals.</i>", \
|
|
||||||
"\blue You place your palms on yourself and heal.", \
|
|
||||||
)
|
|
||||||
|
|
||||||
C.oxyloss = max(0, C.oxyloss-25)
|
|
||||||
C.toxloss = max(0, C.toxloss-25)
|
|
||||||
|
|
||||||
if(istype(C, /mob/living/carbon/human))
|
|
||||||
// ------- YOUR TARGET IS HUMAN -------
|
|
||||||
var/mob/living/carbon/human/H = C
|
|
||||||
var/datum/organ/external/affecting = H.get_organ(check_zone(usr:zone_sel:selecting))
|
|
||||||
if(affecting && affecting.heal_damage(25, 25))
|
|
||||||
H.UpdateDamageIcon()
|
|
||||||
else
|
|
||||||
C.heal_organ_damage(25, 25)
|
|
||||||
C.cloneloss = max(0, C.cloneloss-25)
|
|
||||||
C.stunned = max(0, C.stunned-5)
|
|
||||||
C.paralysis = max(0, C.paralysis-5)
|
|
||||||
C.stuttering = max(0, C.stuttering-5)
|
|
||||||
C.drowsyness = max(0, C.drowsyness-5)
|
|
||||||
C.weakened = max(0, C.weakened-5)
|
|
||||||
usr:nutrition -= rand(1,10)
|
|
||||||
usr.next_move = world.time + 6
|
|
||||||
else
|
|
||||||
// ------- PERSON YOU'RE TOUCHING IS ALREADY DEAD -------
|
|
||||||
usr << "\red [src] is dead and can't be healed."
|
|
||||||
return
|
|
||||||
|
|
||||||
// ------- IF YOU DON'T HAVE THE SILLY ABILITY ABOVE OR FAIL ON ANY OTHER CHECK, THEN YOU'RE CLICKING ON SOMETHING WITH AN EMPTY HAND. ATTACK_HAND IT IS THEN -------
|
|
||||||
src.attack_hand(usr, usr.hand)
|
src.attack_hand(usr, usr.hand)
|
||||||
else
|
else
|
||||||
// ------- YOU ARE NOT HUMAN. WHAT ARE YOU - DETERMINED HERE AND PROPER ATTACK_MOBTYPE CALLED -------
|
// ------- YOU ARE NOT HUMAN. WHAT ARE YOU - DETERMINED HERE AND PROPER ATTACK_MOBTYPE CALLED -------
|
||||||
@@ -906,3 +848,69 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
|||||||
/obj/proc/process()
|
/obj/proc/process()
|
||||||
processing_objects.Remove(src)
|
processing_objects.Remove(src)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
/*Really why was this in the click proc of all the places you could put it
|
||||||
|
if (usr:a_intent == "help")
|
||||||
|
// ------- YOU HAVE THE HELP INTENT SELECTED -------
|
||||||
|
if(istype(src, /mob/living/carbon))
|
||||||
|
// ------- YOUR TARGET IS LIVING CARBON CREATURE (NOT AI OR CYBORG OR SIMPLE ANIMAL) -------
|
||||||
|
var/mob/living/carbon/C = src
|
||||||
|
if(usr:mutations & HEAL)
|
||||||
|
// ------- YOU ARE HUMAN, WITH THE HELP INTENT TARGETING A HUMAN AND HAVE THE 'HEAT' GENETIC MUTATION -------
|
||||||
|
|
||||||
|
if(C.stat != 2)
|
||||||
|
// ------- THE PERSON YOU'RE TOUCHING IS NOT DEAD -------
|
||||||
|
|
||||||
|
var/t_him = "it"
|
||||||
|
if (src.gender == MALE)
|
||||||
|
t_him = "his"
|
||||||
|
else if (src.gender == FEMALE)
|
||||||
|
t_him = "her"
|
||||||
|
var/u_him = "it"
|
||||||
|
if (usr.gender == MALE)
|
||||||
|
t_him = "him"
|
||||||
|
else if (usr.gender == FEMALE)
|
||||||
|
t_him = "her"
|
||||||
|
|
||||||
|
if(src != usr)
|
||||||
|
usr.visible_message( \
|
||||||
|
"\blue <i>[usr] places [u_him] palms on [src], healing [t_him]!</i>", \
|
||||||
|
"\blue You place your palms on [src] and heal [t_him].", \
|
||||||
|
)
|
||||||
|
else
|
||||||
|
usr.visible_message( \
|
||||||
|
"\blue <i>[usr] places [u_him] palms on [u_him]self and heals.</i>", \
|
||||||
|
"\blue You place your palms on yourself and heal.", \
|
||||||
|
)
|
||||||
|
|
||||||
|
C.oxyloss = max(0, C.oxyloss-25)
|
||||||
|
C.toxloss = max(0, C.toxloss-25)
|
||||||
|
|
||||||
|
if(istype(C, /mob/living/carbon/human))
|
||||||
|
// ------- YOUR TARGET IS HUMAN -------
|
||||||
|
var/mob/living/carbon/human/H = C
|
||||||
|
var/datum/organ/external/affecting = H.get_organ(check_zone(usr:zone_sel:selecting))
|
||||||
|
if(affecting && affecting.heal_damage(25, 25))
|
||||||
|
H.UpdateDamageIcon()
|
||||||
|
else
|
||||||
|
C.heal_organ_damage(25, 25)
|
||||||
|
C.cloneloss = max(0, C.cloneloss-25)
|
||||||
|
C.stunned = max(0, C.stunned-5)
|
||||||
|
C.paralysis = max(0, C.paralysis-5)
|
||||||
|
C.stuttering = max(0, C.stuttering-5)
|
||||||
|
C.drowsyness = max(0, C.drowsyness-5)
|
||||||
|
C.weakened = max(0, C.weakened-5)
|
||||||
|
usr:nutrition -= rand(1,10)
|
||||||
|
usr.next_move = world.time + 6
|
||||||
|
else
|
||||||
|
// ------- PERSON YOU'RE TOUCHING IS ALREADY DEAD -------
|
||||||
|
usr << "\red [src] is dead and can't be healed."
|
||||||
|
return
|
||||||
|
|
||||||
|
// ------- IF YOU DON'T HAVE THE SILLY ABILITY ABOVE OR FAIL ON ANY OTHER CHECK, THEN YOU'RE CLICKING ON SOMETHING WITH AN EMPTY HAND. ATTACK_HAND IT IS THEN -------
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -357,7 +357,7 @@
|
|||||||
if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),12))
|
if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),12))
|
||||||
if(inj || prob(15))
|
if(inj || prob(15))
|
||||||
M << "\blue You feel smarter."
|
M << "\blue You feel smarter."
|
||||||
M.mutations |= PORTALS
|
M.mutations |= TK
|
||||||
if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),13))
|
if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),13))
|
||||||
M.sdisabilities |= 4
|
M.sdisabilities |= 4
|
||||||
M.ear_deaf = 1
|
M.ear_deaf = 1
|
||||||
|
|||||||
@@ -221,9 +221,10 @@
|
|||||||
synd_mob.equip_if_possible(new /obj/item/clothing/head/helmet/swat(synd_mob), synd_mob.slot_head)
|
synd_mob.equip_if_possible(new /obj/item/clothing/head/helmet/swat(synd_mob), synd_mob.slot_head)
|
||||||
synd_mob.equip_if_possible(new /obj/item/weapon/card/id/syndicate(synd_mob), synd_mob.slot_wear_id)
|
synd_mob.equip_if_possible(new /obj/item/weapon/card/id/syndicate(synd_mob), synd_mob.slot_wear_id)
|
||||||
synd_mob.equip_if_possible(new /obj/item/weapon/storage/backpack(synd_mob), synd_mob.slot_back)
|
synd_mob.equip_if_possible(new /obj/item/weapon/storage/backpack(synd_mob), synd_mob.slot_back)
|
||||||
synd_mob.equip_if_possible(new /obj/item/ammo_magazine/c45(synd_mob), synd_mob.slot_in_backpack)
|
synd_mob.equip_if_possible(new /obj/item/ammo_magazine/a12mm(synd_mob), synd_mob.slot_in_backpack)
|
||||||
|
synd_mob.equip_if_possible(new /obj/item/ammo_magazine/a12mm(synd_mob), synd_mob.slot_in_backpack)
|
||||||
synd_mob.equip_if_possible(new /obj/item/weapon/reagent_containers/pill/cyanide(synd_mob), synd_mob.slot_in_backpack)
|
synd_mob.equip_if_possible(new /obj/item/weapon/reagent_containers/pill/cyanide(synd_mob), synd_mob.slot_in_backpack)
|
||||||
synd_mob.equip_if_possible(new /obj/item/weapon/gun/projectile/automatic/mini_uzi(synd_mob), synd_mob.slot_belt)
|
synd_mob.equip_if_possible(new /obj/item/weapon/gun/projectile/automatic/c20r(synd_mob), synd_mob.slot_belt)
|
||||||
var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(synd_mob)
|
var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(synd_mob)
|
||||||
E.imp_in = synd_mob
|
E.imp_in = synd_mob
|
||||||
E.implanted = 1
|
E.implanted = 1
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
|||||||
icon = 'Doorglass.dmi'
|
icon = 'Doorglass.dmi'
|
||||||
opacity = 0
|
opacity = 0
|
||||||
doortype = 7
|
doortype = 7
|
||||||
|
glass = 1
|
||||||
|
|
||||||
/obj/machinery/door/airlock/centcom
|
/obj/machinery/door/airlock/centcom
|
||||||
name = "Airlock"
|
name = "Airlock"
|
||||||
@@ -132,6 +133,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
|||||||
icon = 'Door2x1glassfull.dmi'
|
icon = 'Door2x1glassfull.dmi'
|
||||||
opacity = 0
|
opacity = 0
|
||||||
doortype = 10
|
doortype = 10
|
||||||
|
glass = 1
|
||||||
|
|
||||||
/obj/machinery/door/airlock/freezer
|
/obj/machinery/door/airlock/freezer
|
||||||
name = "Freezer Airlock"
|
name = "Freezer Airlock"
|
||||||
@@ -156,24 +158,28 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
|||||||
icon = 'Doorcomglass.dmi'
|
icon = 'Doorcomglass.dmi'
|
||||||
opacity = 0
|
opacity = 0
|
||||||
doortype = 14
|
doortype = 14
|
||||||
|
glass = 1
|
||||||
|
|
||||||
/obj/machinery/door/airlock/glass_engineering
|
/obj/machinery/door/airlock/glass_engineering
|
||||||
name = "Maintenance Hatch"
|
name = "Maintenance Hatch"
|
||||||
icon = 'Doorengglass.dmi'
|
icon = 'Doorengglass.dmi'
|
||||||
opacity = 0
|
opacity = 0
|
||||||
doortype = 15
|
doortype = 15
|
||||||
|
glass = 1
|
||||||
|
|
||||||
/obj/machinery/door/airlock/glass_security
|
/obj/machinery/door/airlock/glass_security
|
||||||
name = "Maintenance Hatch"
|
name = "Maintenance Hatch"
|
||||||
icon = 'Doorsecglass.dmi'
|
icon = 'Doorsecglass.dmi'
|
||||||
opacity = 0
|
opacity = 0
|
||||||
doortype = 16
|
doortype = 16
|
||||||
|
glass = 1
|
||||||
|
|
||||||
/obj/machinery/door/airlock/glass_medical
|
/obj/machinery/door/airlock/glass_medical
|
||||||
name = "Maintenance Hatch"
|
name = "Maintenance Hatch"
|
||||||
icon = 'doormedglass.dmi'
|
icon = 'doormedglass.dmi'
|
||||||
opacity = 0
|
opacity = 0
|
||||||
doortype = 17
|
doortype = 17
|
||||||
|
glass = 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
About the new airlock wires panel:
|
About the new airlock wires panel:
|
||||||
|
|||||||
@@ -299,7 +299,7 @@
|
|||||||
sleep(10)
|
sleep(10)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
if (src.visible && (!istype(src, /obj/machinery/door/airlock/glass)))
|
if(src.visible && (!src.glass))
|
||||||
src.sd_SetOpacity(1)
|
src.sd_SetOpacity(1)
|
||||||
if(operating == 1)
|
if(operating == 1)
|
||||||
operating = 0
|
operating = 0
|
||||||
|
|||||||
@@ -82,9 +82,6 @@
|
|||||||
// ^ makes sinle list of active (R.contents) and inactive modules (R.module.modules)
|
// ^ makes sinle list of active (R.contents) and inactive modules (R.module.modules)
|
||||||
for(var/obj/O in um)
|
for(var/obj/O in um)
|
||||||
// Engineering
|
// Engineering
|
||||||
if(istype(O,/obj/item/weapon/rcd))
|
|
||||||
if(O:matter < 30)
|
|
||||||
O:matter += 1
|
|
||||||
if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/weapon/cable_coil))
|
if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/weapon/cable_coil))
|
||||||
if(O:amount < 50)
|
if(O:amount < 50)
|
||||||
O:amount += 1
|
O:amount += 1
|
||||||
@@ -104,12 +101,10 @@
|
|||||||
if(O.reagents.get_reagent_amount("enzyme") < 50)
|
if(O.reagents.get_reagent_amount("enzyme") < 50)
|
||||||
O.reagents.add_reagent("enzyme", 1)
|
O.reagents.add_reagent("enzyme", 1)
|
||||||
//Medical
|
//Medical
|
||||||
if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline))
|
if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/robot))
|
||||||
if(O.reagents.get_reagent_amount("inaprovaline") < 30)
|
var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O
|
||||||
O.reagents.add_reagent("inaprovaline", 1)
|
if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume))
|
||||||
if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin))
|
B.reagents.add_reagent(B.reagent, 2)
|
||||||
if(O.reagents.get_reagent_amount("anti_toxin") < 30)
|
|
||||||
O.reagents.add_reagent("anti_toxin", 1)
|
|
||||||
|
|
||||||
if(R)
|
if(R)
|
||||||
if(R.module)
|
if(R.module)
|
||||||
|
|||||||
@@ -1,14 +1,20 @@
|
|||||||
/obj/structure/closet/syndicate/nuclear/New()
|
/obj/structure/closet/syndicate/nuclear/New()
|
||||||
..()
|
..()
|
||||||
sleep(2)
|
sleep(2)
|
||||||
new /obj/item/ammo_magazine/c45( src )
|
new /obj/item/ammo_magazine/a12mm(src)
|
||||||
new /obj/item/ammo_magazine/c45( src )
|
new /obj/item/ammo_magazine/a12mm(src)
|
||||||
new /obj/item/ammo_magazine/c45( src )
|
new /obj/item/ammo_magazine/a12mm(src)
|
||||||
|
new /obj/item/ammo_magazine/a12mm(src)
|
||||||
|
new /obj/item/ammo_magazine/a12mm(src)
|
||||||
new /obj/item/weapon/storage/handcuff_kit(src)
|
new /obj/item/weapon/storage/handcuff_kit(src)
|
||||||
new /obj/item/weapon/storage/flashbang_kit(src)
|
new /obj/item/weapon/storage/flashbang_kit(src)
|
||||||
new /obj/item/weapon/gun/energy/gun(src)
|
new /obj/item/weapon/gun/energy/gun(src)
|
||||||
new /obj/item/weapon/gun/energy/gun(src)
|
new /obj/item/weapon/gun/energy/gun(src)
|
||||||
new /obj/item/weapon/gun/energy/gun(src)
|
new /obj/item/weapon/gun/energy/gun(src)
|
||||||
|
new /obj/item/weapon/gun/energy/gun(src)
|
||||||
|
new /obj/item/weapon/gun/energy/gun(src)
|
||||||
|
new /obj/item/weapon/pinpointer(src)
|
||||||
|
new /obj/item/weapon/pinpointer(src)
|
||||||
new /obj/item/weapon/pinpointer(src)
|
new /obj/item/weapon/pinpointer(src)
|
||||||
new /obj/item/weapon/pinpointer(src)
|
new /obj/item/weapon/pinpointer(src)
|
||||||
new /obj/item/weapon/pinpointer(src)
|
new /obj/item/weapon/pinpointer(src)
|
||||||
|
|||||||
294
code/game/objects/items/robot_items.dm
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
/**********************************************************************
|
||||||
|
Cyborg Spec Items
|
||||||
|
***********************************************************************/
|
||||||
|
//Might want to move this into several files later but for now it works here
|
||||||
|
/obj/item/borg/stun
|
||||||
|
name = "Electrified Arm"
|
||||||
|
icon = 'decals.dmi'
|
||||||
|
icon_state = "shock"
|
||||||
|
|
||||||
|
attack(mob/M as mob, mob/living/silicon/robot/user as mob)
|
||||||
|
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||||
|
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
HUD/SIGHT things
|
||||||
|
***********************************************************************/
|
||||||
|
/obj/item/borg/sight
|
||||||
|
icon = 'decals.dmi'
|
||||||
|
icon_state = "securearea"
|
||||||
|
var/sight_mode = null
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/borg/sight/xray
|
||||||
|
name = "X-ray Vision"
|
||||||
|
sight_mode = BORGXRAY
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/borg/sight/thermal
|
||||||
|
name = "Thermal Vision"
|
||||||
|
sight_mode = BORGTHERM
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/borg/sight/meson
|
||||||
|
name = "Meson Vision"
|
||||||
|
sight_mode = BORGMESON
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/borg/sight/hud
|
||||||
|
name = "Hud"
|
||||||
|
var/obj/item/clothing/glasses/hud/hud = null
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/borg/sight/hud/med
|
||||||
|
name = "Medical Hud"
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
hud = new /obj/item/clothing/glasses/hud/health(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/borg/sight/hud/sec
|
||||||
|
name = "Security Hud"
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
hud = new /obj/item/clothing/glasses/hud/security(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
Chemical things
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/robot
|
||||||
|
amount_per_transfer_from_this = 10
|
||||||
|
possible_transfer_amounts = list(5,10,15)
|
||||||
|
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
||||||
|
volume = 60
|
||||||
|
var
|
||||||
|
reagent = ""
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/robot/inaprovaline
|
||||||
|
name = "internal inaprovaline bottle"
|
||||||
|
desc = "A small bottle. Contains inaprovaline - used to stabilize patients."
|
||||||
|
icon = 'chemical.dmi'
|
||||||
|
icon_state = "bottle16"
|
||||||
|
reagent = "inaprovaline"
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
reagents.add_reagent("inaprovaline", 60)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin
|
||||||
|
name = "internal anti-toxin bottle"
|
||||||
|
desc = "A small bottle of Anti-toxins. Counters poisons, and repairs damage, a wonder drug."
|
||||||
|
icon = 'chemical.dmi'
|
||||||
|
icon_state = "bottle17"
|
||||||
|
reagent = "anti_toxin"
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
reagents.add_reagent("anti_toxin", 60)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/robodropper
|
||||||
|
name = "Industrial Dropper"
|
||||||
|
desc = "A larger dropper. Transfers 10 units."
|
||||||
|
icon = 'chemical.dmi'
|
||||||
|
icon_state = "dropper0"
|
||||||
|
amount_per_transfer_from_this = 10
|
||||||
|
possible_transfer_amounts = list(1,2,3,4,5,6,7,8,9,10)
|
||||||
|
volume = 10
|
||||||
|
var/filled = 0
|
||||||
|
|
||||||
|
afterattack(obj/target, mob/user , flag)
|
||||||
|
if(!target.reagents) return
|
||||||
|
|
||||||
|
if(filled)
|
||||||
|
|
||||||
|
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||||
|
user << "\red [target] is full."
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food)) //You can inject humans and food but you cant remove the shit.
|
||||||
|
user << "\red You cannot directly fill this object."
|
||||||
|
return
|
||||||
|
|
||||||
|
if(ismob(target))
|
||||||
|
for(var/mob/O in viewers(world.view, user))
|
||||||
|
O.show_message(text("\red <B>[] drips something onto []!</B>", user, target), 1)
|
||||||
|
src.reagents.reaction(target, TOUCH)
|
||||||
|
|
||||||
|
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||||
|
user << "\blue You transfer [trans] units of the solution."
|
||||||
|
if (src.reagents.total_volume<=0)
|
||||||
|
filled = 0
|
||||||
|
icon_state = "dropper[filled]"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
|
||||||
|
user << "\red You cannot directly remove reagents from [target]."
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!target.reagents.total_volume)
|
||||||
|
user << "\red [target] is empty."
|
||||||
|
return
|
||||||
|
|
||||||
|
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||||
|
|
||||||
|
user << "\blue You fill the dropper with [trans] units of the solution."
|
||||||
|
|
||||||
|
filled = 1
|
||||||
|
icon_state = "dropper[filled]"
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
Chemical things
|
||||||
|
***********************************************************************/
|
||||||
|
/obj/item/borg/rcd
|
||||||
|
name = "robotic rapid-construction-device"
|
||||||
|
desc = "A device used to rapidly build walls/floor."
|
||||||
|
icon = 'items.dmi'
|
||||||
|
icon_state = "rcd"
|
||||||
|
flags = FPRINT | TABLEPASS| CONDUCT
|
||||||
|
force = 5.0
|
||||||
|
w_class = 3.0
|
||||||
|
var
|
||||||
|
datum/effect/effect/system/spark_spread/spark_system
|
||||||
|
working = 0
|
||||||
|
mode = 1
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
|
src.spark_system = new /datum/effect/effect/system/spark_spread
|
||||||
|
spark_system.set_up(5, 0, src)
|
||||||
|
spark_system.attach(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
proc/activate()
|
||||||
|
spark_system.set_up(5, 0, src)
|
||||||
|
src.spark_system.start()
|
||||||
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
|
|
||||||
|
|
||||||
|
attack_self(mob/user as mob)
|
||||||
|
//Change the mode
|
||||||
|
playsound(src.loc, 'pop.ogg', 50, 0)
|
||||||
|
if(mode == 1)
|
||||||
|
mode = 2
|
||||||
|
user << "Changed mode to 'Airlock'"
|
||||||
|
src.spark_system.start()
|
||||||
|
return
|
||||||
|
if(mode == 2)
|
||||||
|
mode = 3
|
||||||
|
user << "Changed mode to 'Deconstruct'"
|
||||||
|
src.spark_system.start()
|
||||||
|
return
|
||||||
|
if(mode == 3)
|
||||||
|
mode = 1
|
||||||
|
user << "Changed mode to 'Floor & Walls'"
|
||||||
|
src.spark_system.start()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
afterattack(atom/A, mob/user as mob)
|
||||||
|
if(!isrobot(user)) return
|
||||||
|
if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock))) return
|
||||||
|
|
||||||
|
var/mob/living/silicon/robot/R = user
|
||||||
|
var/obj/item/weapon/cell/cell = R.cell
|
||||||
|
if(!cell) return
|
||||||
|
|
||||||
|
if(istype(A, /turf))
|
||||||
|
switch(mode)
|
||||||
|
if(1)
|
||||||
|
if(istype(A, /turf/space))
|
||||||
|
if(!cell.use(30)) return
|
||||||
|
user << "Building Floor..."
|
||||||
|
activate()
|
||||||
|
A:ReplaceWithFloor()
|
||||||
|
return
|
||||||
|
|
||||||
|
if(istype(A, /turf/simulated/floor))
|
||||||
|
if(!cell.use(90)) return
|
||||||
|
user << "Building Wall (3)..."
|
||||||
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
|
if(do_after(user, 20))
|
||||||
|
activate()
|
||||||
|
A:ReplaceWithWall()
|
||||||
|
return
|
||||||
|
|
||||||
|
if(2)
|
||||||
|
if(istype(A, /turf/simulated/floor))
|
||||||
|
if(!cell.use(300)) return
|
||||||
|
user << "Building Airlock..."
|
||||||
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
|
if(do_after(user, 50))
|
||||||
|
activate()
|
||||||
|
if(locate(/obj/machinery/door) in get_turf(src)) return
|
||||||
|
var/obj/machinery/door/airlock/T = new /obj/machinery/door/airlock( A )
|
||||||
|
T.autoclose = 1
|
||||||
|
return
|
||||||
|
|
||||||
|
if(3)
|
||||||
|
if(istype(A, /turf/simulated/wall))
|
||||||
|
if(!cell.use(150)) return
|
||||||
|
user << "Deconstructing Wall..."
|
||||||
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
|
if(do_after(user, 40))
|
||||||
|
activate()
|
||||||
|
A:ReplaceWithFloor()
|
||||||
|
return
|
||||||
|
|
||||||
|
if(istype(A, /turf/simulated/wall/r_wall))
|
||||||
|
if(!cell.use(300)) return
|
||||||
|
user << "Deconstructing RWall..."
|
||||||
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
|
if(do_after(user, 60))
|
||||||
|
activate()
|
||||||
|
A:ReplaceWithWall()
|
||||||
|
return
|
||||||
|
|
||||||
|
if(istype(A, /turf/simulated/floor))
|
||||||
|
user << "Deconstructing Floor..."
|
||||||
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
|
if(do_after(user, 50))
|
||||||
|
activate()
|
||||||
|
A:ReplaceWithSpace()
|
||||||
|
return
|
||||||
|
|
||||||
|
if(istype(A, /obj/machinery/door/airlock))
|
||||||
|
user << "Deconstructing Airlock..."
|
||||||
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
|
if(do_after(user, 50))
|
||||||
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
|
del(A)
|
||||||
|
return
|
||||||
|
return
|
||||||
|
|
||||||
88
code/game/objects/items/tk_grab.dm
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
/obj/item/tk_grab
|
||||||
|
name = "Telekinetic Grab"
|
||||||
|
icon = 'magic.dmi'//Needs sprites
|
||||||
|
icon_state = "2"
|
||||||
|
flags = USEDELAY
|
||||||
|
//item_state = null
|
||||||
|
w_class = 10.0
|
||||||
|
layer = 20
|
||||||
|
|
||||||
|
var
|
||||||
|
last_throw = 0
|
||||||
|
obj/focus = null
|
||||||
|
mob/living/host = null
|
||||||
|
|
||||||
|
|
||||||
|
dropped(mob/user as mob)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
equipped(var/mob/user, var/slot)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)//TODO: go over this
|
||||||
|
if(!target || !user) return
|
||||||
|
if(last_throw+4 > world.time) return
|
||||||
|
if(!host)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
if(!host.mutations & TK)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
if(!focus)
|
||||||
|
focus_object(target)
|
||||||
|
return
|
||||||
|
|
||||||
|
if((get_dist(target, user) <= 16) && (get_dist(focus, user) <= 10))
|
||||||
|
apply_focus_overlay()
|
||||||
|
focus.throw_at(target, 10, 1)
|
||||||
|
last_throw = world.time
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
proc/focus_object(var/obj/target)
|
||||||
|
if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later
|
||||||
|
if(target.anchored) return//No throwing anchored things
|
||||||
|
focus = target
|
||||||
|
update_icon()
|
||||||
|
apply_focus_overlay()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
proc/apply_focus_overlay()
|
||||||
|
if(!focus) return
|
||||||
|
var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z))
|
||||||
|
O.name = "sparkles"
|
||||||
|
O.anchored = 1
|
||||||
|
O.density = 0
|
||||||
|
O.layer = FLY_LAYER
|
||||||
|
O.dir = pick(cardinal)
|
||||||
|
O.icon = 'effects.dmi'
|
||||||
|
O.icon_state = "nothing"
|
||||||
|
flick("empdisable",O)
|
||||||
|
spawn(5)
|
||||||
|
del(O)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
update_icon()
|
||||||
|
overlays = null
|
||||||
|
if(focus)
|
||||||
|
overlays += "[focus.icon_state]"
|
||||||
|
return
|
||||||
|
|
||||||
|
//equip_if_possible(obj/item/W, slot, del_on_fail = 1)
|
||||||
|
/*
|
||||||
|
if(istype(user, /mob/living/carbon))
|
||||||
|
if(user:mutations & TK && get_dist(source, user) <= 7)
|
||||||
|
if(user:equipped()) return 0
|
||||||
|
var/X = source:x
|
||||||
|
var/Y = source:y
|
||||||
|
var/Z = source:z
|
||||||
|
spawn(0)
|
||||||
|
//I really shouldnt put this here but i dont have a better idea
|
||||||
|
|
||||||
|
*/
|
||||||
@@ -75,16 +75,11 @@ RCD
|
|||||||
if(istype(A, /turf) && mode == 1)
|
if(istype(A, /turf) && mode == 1)
|
||||||
if(istype(A, /turf/space) && matter >= 1)
|
if(istype(A, /turf/space) && matter >= 1)
|
||||||
user << "Building Floor (1)..."
|
user << "Building Floor (1)..."
|
||||||
if (!disabled)
|
if(!disabled && matter >= 1)
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
spark_system.set_up(5, 0, src)
|
spark_system.set_up(5, 0, src)
|
||||||
src.spark_system.start()
|
src.spark_system.start()
|
||||||
A:ReplaceWithFloor()
|
A:ReplaceWithFloor()
|
||||||
if (isrobot(user))
|
|
||||||
var/mob/living/silicon/robot/engy = user
|
|
||||||
engy.cell.charge -= 30
|
|
||||||
else
|
|
||||||
if(!matter >= 1) return
|
|
||||||
matter--
|
matter--
|
||||||
user << "The RCD now holds [matter]/30 matter-units."
|
user << "The RCD now holds [matter]/30 matter-units."
|
||||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||||
@@ -93,16 +88,11 @@ RCD
|
|||||||
user << "Building Wall (3)..."
|
user << "Building Wall (3)..."
|
||||||
playsound(src.loc, 'click.ogg', 50, 1)
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
if(do_after(user, 20))
|
if(do_after(user, 20))
|
||||||
if (!disabled)
|
if(!disabled && matter >= 3)
|
||||||
spark_system.set_up(5, 0, src)
|
spark_system.set_up(5, 0, src)
|
||||||
src.spark_system.start()
|
src.spark_system.start()
|
||||||
A:ReplaceWithWall()
|
A:ReplaceWithWall()
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
if (isrobot(user))
|
|
||||||
var/mob/living/silicon/robot/engy = user
|
|
||||||
engy.cell.charge -= 90
|
|
||||||
else
|
|
||||||
if(!matter >= 3) return
|
|
||||||
matter -= 3
|
matter -= 3
|
||||||
user << "The RCD now holds [matter]/30 matter-units."
|
user << "The RCD now holds [matter]/30 matter-units."
|
||||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||||
@@ -111,7 +101,7 @@ RCD
|
|||||||
user << "Building Airlock (10)..."
|
user << "Building Airlock (10)..."
|
||||||
playsound(src.loc, 'click.ogg', 50, 1)
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
if(do_after(user, 50))
|
if(do_after(user, 50))
|
||||||
if (!disabled)
|
if(!disabled && matter >= 10)
|
||||||
spark_system.set_up(5, 0, src)
|
spark_system.set_up(5, 0, src)
|
||||||
src.spark_system.start()
|
src.spark_system.start()
|
||||||
if(locate(/obj/machinery/door) in get_turf(src)) return
|
if(locate(/obj/machinery/door) in get_turf(src)) return
|
||||||
@@ -122,50 +112,34 @@ RCD
|
|||||||
T.autoclose = 1
|
T.autoclose = 1
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
playsound(src.loc, 'sparks2.ogg', 50, 1)
|
playsound(src.loc, 'sparks2.ogg', 50, 1)
|
||||||
if (isrobot(user))
|
|
||||||
var/mob/living/silicon/robot/engy = user
|
|
||||||
engy.cell.charge -= 300
|
|
||||||
else
|
|
||||||
if(!matter >= 10) return
|
|
||||||
matter -= 10
|
matter -= 10
|
||||||
user << "The RCD now holds [matter]/30 matter-units."
|
user << "The RCD now holds [matter]/30 matter-units."
|
||||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||||
|
|
||||||
return
|
return
|
||||||
else if(mode == 3 && (istype(A, /turf) || istype(A, /obj/machinery/door/airlock) ) )
|
else if(mode == 3 && (istype(A, /turf) || istype(A, /obj/machinery/door/airlock) ) )
|
||||||
if (istype(A, /turf/simulated/wall) && matter >= 5)
|
if(istype(A, /turf/simulated/wall) && matter >= 4)
|
||||||
user << "Deconstructing Wall (5)..."
|
user << "Deconstructing Wall (4)..."
|
||||||
playsound(src.loc, 'click.ogg', 50, 1)
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
if(do_after(user, 50))
|
if(do_after(user, 40))
|
||||||
if (!disabled)
|
if(!disabled && matter >= 4)
|
||||||
spark_system.set_up(5, 0, src)
|
spark_system.set_up(5, 0, src)
|
||||||
src.spark_system.start()
|
src.spark_system.start()
|
||||||
A:ReplaceWithFloor()
|
A:ReplaceWithFloor()
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
if (isrobot(user))
|
matter -= 4
|
||||||
var/mob/living/silicon/robot/engy = user
|
|
||||||
engy.cell.charge -= 150
|
|
||||||
else
|
|
||||||
if(!matter >= 5) return
|
|
||||||
matter -= 5
|
|
||||||
user << "The RCD now holds [matter]/30 matter-units."
|
user << "The RCD now holds [matter]/30 matter-units."
|
||||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||||
return
|
return
|
||||||
if (istype(A, /turf/simulated/wall/r_wall) && matter >= 5)
|
if(istype(A, /turf/simulated/wall/r_wall) && matter >= 8)
|
||||||
user << "Deconstructing RWall (5)..."
|
user << "Deconstructing RWall (8)..."
|
||||||
playsound(src.loc, 'click.ogg', 50, 1)
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
if(do_after(user, 50))
|
if(do_after(user, 60))
|
||||||
if (!disabled)
|
if(!disabled && matter >= 8)
|
||||||
spark_system.set_up(5, 0, src)
|
spark_system.set_up(5, 0, src)
|
||||||
src.spark_system.start()
|
src.spark_system.start()
|
||||||
A:ReplaceWithWall()
|
A:ReplaceWithWall()
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
if (isrobot(user))
|
matter -= 8
|
||||||
var/mob/living/silicon/robot/engy = user
|
|
||||||
engy.cell.charge -= 150
|
|
||||||
else
|
|
||||||
if(!matter >= 5) return
|
|
||||||
matter -= 5
|
|
||||||
user << "The RCD now holds [matter]/30 matter-units."
|
user << "The RCD now holds [matter]/30 matter-units."
|
||||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||||
return
|
return
|
||||||
@@ -173,16 +147,11 @@ RCD
|
|||||||
user << "Deconstructing Floor (5)..."
|
user << "Deconstructing Floor (5)..."
|
||||||
playsound(src.loc, 'click.ogg', 50, 1)
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
if(do_after(user, 50))
|
if(do_after(user, 50))
|
||||||
if (!disabled)
|
if(!disabled && matter >= 5)
|
||||||
spark_system.set_up(5, 0, src)
|
spark_system.set_up(5, 0, src)
|
||||||
src.spark_system.start()
|
src.spark_system.start()
|
||||||
A:ReplaceWithSpace()
|
A:ReplaceWithSpace()
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
if (isrobot(user))
|
|
||||||
var/mob/living/silicon/robot/engy = user
|
|
||||||
engy.cell.charge -= 150
|
|
||||||
else
|
|
||||||
if(!matter >= 5) return
|
|
||||||
matter -= 5
|
matter -= 5
|
||||||
user << "The RCD now holds [matter]/30 matter-units."
|
user << "The RCD now holds [matter]/30 matter-units."
|
||||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||||
@@ -191,16 +160,11 @@ RCD
|
|||||||
user << "Deconstructing Airlock (10)..."
|
user << "Deconstructing Airlock (10)..."
|
||||||
playsound(src.loc, 'click.ogg', 50, 1)
|
playsound(src.loc, 'click.ogg', 50, 1)
|
||||||
if(do_after(user, 50))
|
if(do_after(user, 50))
|
||||||
if (!disabled)
|
if(!disabled && matter >= 10)
|
||||||
spark_system.set_up(5, 0, src)
|
spark_system.set_up(5, 0, src)
|
||||||
src.spark_system.start()
|
src.spark_system.start()
|
||||||
del(A)
|
del(A)
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
if (isrobot(user))
|
|
||||||
var/mob/living/silicon/robot/engy = user
|
|
||||||
engy.cell.charge -= 300
|
|
||||||
else
|
|
||||||
if(!matter >= 10) return
|
|
||||||
matter -= 10
|
matter -= 10
|
||||||
user << "The RCD now holds [matter]/30 matter-units."
|
user << "The RCD now holds [matter]/30 matter-units."
|
||||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||||
|
|||||||
@@ -253,6 +253,8 @@ CIRCULAR SAW
|
|||||||
if(!istype(M))
|
if(!istype(M))
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
if(M.mutations & HUSK) return ..()
|
||||||
|
|
||||||
if((user.mutations & CLUMSY) && prob(50))
|
if((user.mutations & CLUMSY) && prob(50))
|
||||||
M = user
|
M = user
|
||||||
return eyestab(M,user)
|
return eyestab(M,user)
|
||||||
|
|||||||
@@ -82,8 +82,7 @@
|
|||||||
var/col_num = 0
|
var/col_num = 0
|
||||||
var/row_count = min(7,storage_slots) -1 //For belts, the meanings of the two variables are inverted, so we don't have to declare new ones
|
var/row_count = min(7,storage_slots) -1 //For belts, the meanings of the two variables are inverted, so we don't have to declare new ones
|
||||||
if (contents.len > 7)
|
if (contents.len > 7)
|
||||||
if(contents.len % 7) //So having 14 items keeps them in 2 wors instead of 3
|
col_num = round((contents.len-1) / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
|
||||||
col_num = round(contents.len / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
|
|
||||||
if (src == user.l_hand)
|
if (src == user.l_hand)
|
||||||
src.orient_objs(3-col_num, 3+row_count, 3, 3)
|
src.orient_objs(3-col_num, 3+row_count, 3, 3)
|
||||||
else if(src == user.r_hand)
|
else if(src == user.r_hand)
|
||||||
@@ -148,7 +147,7 @@
|
|||||||
sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it.
|
sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it.
|
||||||
|
|
||||||
if(sum_w_class > max_combined_w_class)
|
if(sum_w_class > max_combined_w_class)
|
||||||
user << "\red The [W] cannot fit in the [src]. Remove some items or add a smaller one.."
|
user << "\red The [src] is full, make some space."
|
||||||
return
|
return
|
||||||
|
|
||||||
if ( W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
|
if ( W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
|
||||||
@@ -172,8 +171,7 @@
|
|||||||
var/col_num = 0
|
var/col_num = 0
|
||||||
var/row_count = min(7,storage_slots) -1
|
var/row_count = min(7,storage_slots) -1
|
||||||
if (contents.len > 7)
|
if (contents.len > 7)
|
||||||
if(contents.len % 7)
|
col_num = round((contents.len-1) / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
|
||||||
col_num = round(contents.len / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
|
|
||||||
src.orient_objs(5, 10+col_num, 5 + row_count, 10)
|
src.orient_objs(5, 10+col_num, 5 + row_count, 10)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
/mob/living/carbon/proc/toggle_throw_mode()
|
/mob/living/carbon/proc/toggle_throw_mode()
|
||||||
|
if(!equipped())//Not holding anything
|
||||||
|
if(mutations & TK)
|
||||||
|
if (hand)
|
||||||
|
l_hand = new/obj/item/tk_grab(src)
|
||||||
|
l_hand:host = src
|
||||||
|
else
|
||||||
|
r_hand = new/obj/item/tk_grab(src)
|
||||||
|
r_hand:host = src
|
||||||
|
return
|
||||||
|
|
||||||
if (src.in_throw_mode)
|
if (src.in_throw_mode)
|
||||||
throw_mode_off()
|
throw_mode_off()
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#define TOUCH 1
|
var/const
|
||||||
#define INGEST 2
|
TOUCH = 1
|
||||||
|
INGEST = 2
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|||||||
@@ -734,59 +734,6 @@
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/robodropper
|
|
||||||
name = "Industrial Dropper"
|
|
||||||
desc = "A larger dropper. Transfers 10 units."
|
|
||||||
icon = 'chemical.dmi'
|
|
||||||
icon_state = "dropper0"
|
|
||||||
amount_per_transfer_from_this = 10
|
|
||||||
possible_transfer_amounts = list(1,2,3,4,5,6,7,8,9,10)
|
|
||||||
volume = 10
|
|
||||||
var/filled = 0
|
|
||||||
|
|
||||||
afterattack(obj/target, mob/user , flag)
|
|
||||||
if(!target.reagents) return
|
|
||||||
|
|
||||||
if(filled)
|
|
||||||
|
|
||||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
|
||||||
user << "\red [target] is full."
|
|
||||||
return
|
|
||||||
|
|
||||||
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food)) //You can inject humans and food but you cant remove the shit.
|
|
||||||
user << "\red You cannot directly fill this object."
|
|
||||||
return
|
|
||||||
|
|
||||||
if(ismob(target))
|
|
||||||
for(var/mob/O in viewers(world.view, user))
|
|
||||||
O.show_message(text("\red <B>[] drips something onto []!</B>", user, target), 1)
|
|
||||||
src.reagents.reaction(target, TOUCH)
|
|
||||||
|
|
||||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
|
||||||
user << "\blue You transfer [trans] units of the solution."
|
|
||||||
if (src.reagents.total_volume<=0)
|
|
||||||
filled = 0
|
|
||||||
icon_state = "dropper[filled]"
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
|
|
||||||
user << "\red You cannot directly remove reagents from [target]."
|
|
||||||
return
|
|
||||||
|
|
||||||
if(!target.reagents.total_volume)
|
|
||||||
user << "\red [target] is empty."
|
|
||||||
return
|
|
||||||
|
|
||||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
|
||||||
|
|
||||||
user << "\blue You fill the dropper with [trans] units of the solution."
|
|
||||||
|
|
||||||
filled = 1
|
|
||||||
icon_state = "dropper[filled]"
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// Droppers. END
|
/// Droppers. END
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -733,7 +733,7 @@
|
|||||||
if (mutations & COLD_RESISTANCE)
|
if (mutations & COLD_RESISTANCE)
|
||||||
overlays += image("icon" = 'genetics.dmi', "icon_state" = "fire[fat][!lying ? "_s" : "_l"]")
|
overlays += image("icon" = 'genetics.dmi', "icon_state" = "fire[fat][!lying ? "_s" : "_l"]")
|
||||||
|
|
||||||
if (mutations & PORTALS)
|
if (mutations & TK)
|
||||||
overlays += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead[fat][!lying ? "_s" : "_l"]")
|
overlays += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead[fat][!lying ? "_s" : "_l"]")
|
||||||
|
|
||||||
if (mutations & LASER)
|
if (mutations & LASER)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
if(check_shields(0, M.name))
|
if((M != src) && check_shields(0, M.name))
|
||||||
visible_message("\red <B>[M] attempted to touch [src]!</B>")
|
visible_message("\red <B>[M] attempted to touch [src]!</B>")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ emp_act
|
|||||||
|
|
||||||
visible_message("\red <B>[src] has been attacked in the [hit_area] with [I.name] by [user]!</B>")
|
visible_message("\red <B>[src] has been attacked in the [hit_area] with [I.name] by [user]!</B>")
|
||||||
|
|
||||||
if(check_shields(I.force, "the [I.name]"))
|
if((user != src) && check_shields(I.force, "the [I.name]"))
|
||||||
return 0
|
return 0
|
||||||
var/armor = run_armor_check(affecting, "melee", "Your armor has protected you from a hit to the [hit_area].", "Your armor has softened hit to your [hit_area].")
|
var/armor = run_armor_check(affecting, "melee", "Your armor has protected you from a hit to the [hit_area].", "Your armor has softened hit to your [hit_area].")
|
||||||
if(armor >= 2) return 0
|
if(armor >= 2) return 0
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
stunned = max(min(stunned, 30),0)
|
stunned = max(min(stunned, 30),0)
|
||||||
paralysis = max(min(paralysis, 30), 0)
|
paralysis = max(min(paralysis, 30), 0)
|
||||||
weakened = max(min(weakened, 20), 0)
|
weakened = max(min(weakened, 20), 0)
|
||||||
sleeping = max(min(sleeping, 5), 0)
|
sleeping = 0
|
||||||
bruteloss = max(bruteloss, 0)
|
bruteloss = max(bruteloss, 0)
|
||||||
toxloss = max(toxloss, 0)
|
toxloss = max(toxloss, 0)
|
||||||
oxyloss = max(oxyloss, 0)
|
oxyloss = max(oxyloss, 0)
|
||||||
@@ -177,6 +177,10 @@
|
|||||||
src.see_in_dark = 8
|
src.see_in_dark = 8
|
||||||
src.see_invisible = 2
|
src.see_invisible = 2
|
||||||
|
|
||||||
|
var/obj/item/borg/sight/hud/hud = (locate(/obj/item/borg/sight/hud) in src)
|
||||||
|
if(hud && hud.hud) hud.hud.process_hud(src)
|
||||||
|
|
||||||
|
|
||||||
if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping)
|
if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping)
|
||||||
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
||||||
|
|
||||||
|
|||||||
@@ -736,19 +736,19 @@
|
|||||||
module_state_1 = O
|
module_state_1 = O
|
||||||
O.layer = 20
|
O.layer = 20
|
||||||
contents += O
|
contents += O
|
||||||
if(istype(module_state_1,/obj/item/weapon/borg/sight))
|
if(istype(module_state_1,/obj/item/borg/sight))
|
||||||
sight_mode |= module_state_1:sight_mode
|
sight_mode |= module_state_1:sight_mode
|
||||||
else if(!module_state_2)
|
else if(!module_state_2)
|
||||||
module_state_2 = O
|
module_state_2 = O
|
||||||
O.layer = 20
|
O.layer = 20
|
||||||
contents += O
|
contents += O
|
||||||
if(istype(module_state_2,/obj/item/weapon/borg/sight))
|
if(istype(module_state_2,/obj/item/borg/sight))
|
||||||
sight_mode |= module_state_2:sight_mode
|
sight_mode |= module_state_2:sight_mode
|
||||||
else if(!module_state_3)
|
else if(!module_state_3)
|
||||||
module_state_3 = O
|
module_state_3 = O
|
||||||
O.layer = 20
|
O.layer = 20
|
||||||
contents += O
|
contents += O
|
||||||
if(istype(module_state_3,/obj/item/weapon/borg/sight))
|
if(istype(module_state_3,/obj/item/borg/sight))
|
||||||
sight_mode |= module_state_3:sight_mode
|
sight_mode |= module_state_3:sight_mode
|
||||||
else
|
else
|
||||||
src << "You need to disable a module first!"
|
src << "You need to disable a module first!"
|
||||||
@@ -777,7 +777,7 @@
|
|||||||
if(isnull(module_active))
|
if(isnull(module_active))
|
||||||
return
|
return
|
||||||
if(module_state_1 == module_active)
|
if(module_state_1 == module_active)
|
||||||
if(istype(module_state_1,/obj/item/weapon/borg/sight))
|
if(istype(module_state_1,/obj/item/borg/sight))
|
||||||
sight_mode &= ~module_state_1:sight_mode
|
sight_mode &= ~module_state_1:sight_mode
|
||||||
if (client)
|
if (client)
|
||||||
client.screen -= module_state_1
|
client.screen -= module_state_1
|
||||||
@@ -786,7 +786,7 @@
|
|||||||
module_state_1 = null
|
module_state_1 = null
|
||||||
inv1.icon_state = "inv1"
|
inv1.icon_state = "inv1"
|
||||||
else if(module_state_2 == module_active)
|
else if(module_state_2 == module_active)
|
||||||
if(istype(module_state_2,/obj/item/weapon/borg/sight))
|
if(istype(module_state_2,/obj/item/borg/sight))
|
||||||
sight_mode &= ~module_state_2:sight_mode
|
sight_mode &= ~module_state_2:sight_mode
|
||||||
if (client)
|
if (client)
|
||||||
client.screen -= module_state_2
|
client.screen -= module_state_2
|
||||||
@@ -795,7 +795,7 @@
|
|||||||
module_state_2 = null
|
module_state_2 = null
|
||||||
inv2.icon_state = "inv2"
|
inv2.icon_state = "inv2"
|
||||||
else if(module_state_3 == module_active)
|
else if(module_state_3 == module_active)
|
||||||
if(istype(module_state_3,/obj/item/weapon/borg/sight))
|
if(istype(module_state_3,/obj/item/borg/sight))
|
||||||
sight_mode &= ~module_state_3:sight_mode
|
sight_mode &= ~module_state_3:sight_mode
|
||||||
if (client)
|
if (client)
|
||||||
client.screen -= module_state_3
|
client.screen -= module_state_3
|
||||||
@@ -808,7 +808,7 @@
|
|||||||
module_active = null
|
module_active = null
|
||||||
|
|
||||||
if(module_state_1)
|
if(module_state_1)
|
||||||
if(istype(module_state_1,/obj/item/weapon/borg/sight))
|
if(istype(module_state_1,/obj/item/borg/sight))
|
||||||
sight_mode &= ~module_state_1:sight_mode
|
sight_mode &= ~module_state_1:sight_mode
|
||||||
if (client)
|
if (client)
|
||||||
client.screen -= module_state_1
|
client.screen -= module_state_1
|
||||||
@@ -816,7 +816,7 @@
|
|||||||
module_state_1 = null
|
module_state_1 = null
|
||||||
inv1.icon_state = "inv1"
|
inv1.icon_state = "inv1"
|
||||||
if(module_state_2)
|
if(module_state_2)
|
||||||
if(istype(module_state_2,/obj/item/weapon/borg/sight))
|
if(istype(module_state_2,/obj/item/borg/sight))
|
||||||
sight_mode &= ~module_state_2:sight_mode
|
sight_mode &= ~module_state_2:sight_mode
|
||||||
if (client)
|
if (client)
|
||||||
client.screen -= module_state_2
|
client.screen -= module_state_2
|
||||||
@@ -824,7 +824,7 @@
|
|||||||
module_state_2 = null
|
module_state_2 = null
|
||||||
inv2.icon_state = "inv2"
|
inv2.icon_state = "inv2"
|
||||||
if(module_state_3)
|
if(module_state_3)
|
||||||
if(istype(module_state_3,/obj/item/weapon/borg/sight))
|
if(istype(module_state_3,/obj/item/borg/sight))
|
||||||
sight_mode &= ~module_state_3:sight_mode
|
sight_mode &= ~module_state_3:sight_mode
|
||||||
if (client)
|
if (client)
|
||||||
client.screen -= module_state_3
|
client.screen -= module_state_3
|
||||||
|
|||||||
@@ -2,11 +2,13 @@
|
|||||||
name = "robot module"
|
name = "robot module"
|
||||||
icon = 'module.dmi'
|
icon = 'module.dmi'
|
||||||
icon_state = "std_module"
|
icon_state = "std_module"
|
||||||
w_class = 2.0
|
w_class = 100.0
|
||||||
item_state = "electronic"
|
item_state = "electronic"
|
||||||
flags = FPRINT|TABLEPASS | CONDUCT
|
flags = FPRINT|TABLEPASS | CONDUCT
|
||||||
var/list/modules = list()
|
var
|
||||||
var/obj/item/emag
|
list/modules = list()
|
||||||
|
obj/item/emag = null
|
||||||
|
|
||||||
|
|
||||||
emp_act(severity)
|
emp_act(severity)
|
||||||
if(modules)
|
if(modules)
|
||||||
@@ -15,48 +17,26 @@
|
|||||||
if(emag)
|
if(emag)
|
||||||
emag.emp_act(severity)
|
emag.emp_act(severity)
|
||||||
..()
|
..()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
|
src.modules += new /obj/item/device/flash(src)
|
||||||
|
src.emag = new /obj/item/toy/sword(src)
|
||||||
|
src.emag.name = "Placeholder Emag Item"
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
proc/respawn_consumable(var/mob/living/silicon/robot/R)
|
proc/respawn_consumable(var/mob/living/silicon/robot/R)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/standard
|
/obj/item/weapon/robot_module/standard
|
||||||
name = "standard robot module"
|
name = "standard robot module"
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/hydroborg
|
|
||||||
name = "hydroponics robot module"
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/medical
|
New()
|
||||||
name = "medical robot module"
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/engineering
|
|
||||||
name = "engineering robot module"
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/security
|
|
||||||
name = "security robot module"
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/janitor
|
|
||||||
name = "janitorial robot module"
|
|
||||||
|
|
||||||
/*
|
|
||||||
/obj/item/weapon/robot_module/brobot
|
|
||||||
name = "brobot robot module"
|
|
||||||
*/
|
|
||||||
/obj/item/weapon/robot_module/butler
|
|
||||||
name = "service robot module"
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/miner
|
|
||||||
name = "miner robot module"
|
|
||||||
|
|
||||||
obj/item/weapon/robot_module/syndicate
|
|
||||||
name = "syndicate robot module"
|
|
||||||
|
|
||||||
/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()
|
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/weapon/melee/baton(src)
|
src.modules += new /obj/item/weapon/melee/baton(src)
|
||||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||||
@@ -64,19 +44,64 @@ obj/item/weapon/robot_module/syndicate
|
|||||||
src.modules += new /obj/item/weapon/crowbar(src)
|
src.modules += new /obj/item/weapon/crowbar(src)
|
||||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||||
src.emag = new /obj/item/weapon/melee/energy/sword(src)
|
src.emag = new /obj/item/weapon/melee/energy/sword(src)
|
||||||
/*
|
return
|
||||||
/obj/item/weapon/robot_module/hydroborg/New()
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/medical
|
||||||
|
name = "medical robot module"
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/weapon/minihoe(src)
|
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||||
src.modules += new /obj/item/weapon/pestspray(src)
|
for(var/i = 1 to 3)
|
||||||
src.modules += new /obj/item/weapon/plantbgone(src)
|
var/obj/item/weapon/reagent_containers/syringe/S = new /obj/item/weapon/reagent_containers/syringe(src)
|
||||||
src.modules += new /obj/item/nutrient/rh(src)
|
switch(i)
|
||||||
src.modules += new /obj/item/nutrient/l4z(src)
|
if(1) S.name = "Syringe-(Inaprovaline)"
|
||||||
src.modules += new /obj/item/weapon/rsp(src)
|
if(2) S.name = "Syringe-(Anti-Toxin)"
|
||||||
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
|
if(3) S.name = "Syringe-(Mixed)"
|
||||||
src.emag = new /obj/item/weapon/grown/deathnettle(src)
|
src.modules += S
|
||||||
*/
|
|
||||||
/obj/item/weapon/robot_module/engineering/New()
|
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/glass/bottle/robot/inaprovaline(src)
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin(src)
|
||||||
|
for(var/i = 1 to 2)
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/pill/kelotane(src)
|
||||||
|
for(var/i = 1 to 2)
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/pill/dexalin(src)
|
||||||
|
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker(src)
|
||||||
|
src.modules += new /obj/item/borg/sight/hud/med(src)
|
||||||
|
src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
respawn_consumable(var/mob/living/silicon/robot/R)
|
||||||
|
var/list/what = list (
|
||||||
|
/obj/item/weapon/reagent_containers/pill/kelotane,
|
||||||
|
/obj/item/weapon/reagent_containers/pill/kelotane,
|
||||||
|
/obj/item/weapon/reagent_containers/pill/dexalin,
|
||||||
|
/obj/item/weapon/reagent_containers/pill/dexalin
|
||||||
|
)
|
||||||
|
for (var/T in what)
|
||||||
|
if (!(locate(T) in src.modules))
|
||||||
|
src.modules -= null
|
||||||
|
var/O = new T(src)
|
||||||
|
src.modules += O
|
||||||
|
if (R.emagged && !src.emag) //thanks to cyborg-900 for uncovering this
|
||||||
|
src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/engineering
|
||||||
|
name = "engineering robot module"
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||||
@@ -84,11 +109,7 @@ obj/item/weapon/robot_module/syndicate
|
|||||||
src.modules += new /obj/item/weapon/wrench(src)
|
src.modules += new /obj/item/weapon/wrench(src)
|
||||||
src.modules += new /obj/item/device/analyzer(src)
|
src.modules += new /obj/item/device/analyzer(src)
|
||||||
src.modules += new /obj/item/device/flashlight(src)
|
src.modules += new /obj/item/device/flashlight(src)
|
||||||
|
src.modules += new /obj/item/borg/rcd(src)
|
||||||
var/obj/item/weapon/rcd/R = new /obj/item/weapon/rcd(src)
|
|
||||||
R.matter = 30
|
|
||||||
src.modules += R
|
|
||||||
|
|
||||||
src.modules += new /obj/item/device/t_scanner(src)
|
src.modules += new /obj/item/device/t_scanner(src)
|
||||||
src.modules += new /obj/item/weapon/crowbar(src)
|
src.modules += new /obj/item/weapon/crowbar(src)
|
||||||
src.modules += new /obj/item/weapon/wirecutters(src)
|
src.modules += new /obj/item/weapon/wirecutters(src)
|
||||||
@@ -105,12 +126,13 @@ obj/item/weapon/robot_module/syndicate
|
|||||||
var/obj/item/weapon/cable_coil/W = new /obj/item/weapon/cable_coil(src)
|
var/obj/item/weapon/cable_coil/W = new /obj/item/weapon/cable_coil(src)
|
||||||
W.amount = 50
|
W.amount = 50
|
||||||
src.modules += W
|
src.modules += W
|
||||||
src.modules += new /obj/item/weapon/borg/sight/meson(src)
|
|
||||||
|
|
||||||
src.emag = new /obj/item/weapon/borg/stun(src)
|
src.modules += new /obj/item/borg/sight/meson(src)
|
||||||
|
src.emag = new /obj/item/borg/stun(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/engineering/respawn_consumable(var/mob/living/silicon/robot/R)
|
respawn_consumable(var/mob/living/silicon/robot/R)
|
||||||
var/list/what = list (
|
var/list/what = list (
|
||||||
/obj/item/stack/sheet/metal,
|
/obj/item/stack/sheet/metal,
|
||||||
/obj/item/stack/sheet/rglass,
|
/obj/item/stack/sheet/rglass,
|
||||||
@@ -122,76 +144,30 @@ obj/item/weapon/robot_module/syndicate
|
|||||||
var/O = new T(src)
|
var/O = new T(src)
|
||||||
src.modules += O
|
src.modules += O
|
||||||
O:amount = 1
|
O:amount = 1
|
||||||
|
return
|
||||||
/obj/item/weapon/robot_module/medical/respawn_consumable(var/mob/living/silicon/robot/R)
|
|
||||||
var/list/what = list (
|
|
||||||
/obj/item/weapon/reagent_containers/pill/kelotane,
|
|
||||||
/obj/item/weapon/reagent_containers/pill/dexalin,
|
|
||||||
)
|
|
||||||
for (var/T in what)
|
|
||||||
if (!(locate(T) in src.modules))
|
|
||||||
src.modules -= null
|
|
||||||
var/O = new T(src)
|
|
||||||
src.modules += O
|
|
||||||
if (R.emagged && !src.emag) //thanks to cyborg-900 for uncovering this
|
|
||||||
src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/medical/New()
|
/obj/item/weapon/robot_module/security
|
||||||
..()
|
name = "security robot module"
|
||||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/glass/bottle/inaprovaline(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/glass/bottle/antitoxin(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/pill/kelotane(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/pill/dexalin(src)
|
|
||||||
//commented out due to law 1
|
|
||||||
//src.modules += new /obj/item/weapon/scalpel(src)
|
|
||||||
//src.modules += new /obj/item/weapon/circular_saw(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker(src)
|
|
||||||
|
|
||||||
|
|
||||||
src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
|
New()
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/butler/New()
|
|
||||||
..()
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src)
|
|
||||||
src.modules += new /obj/item/weapon/pen(src)
|
|
||||||
|
|
||||||
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
|
|
||||||
M.matter = 30
|
|
||||||
src.modules += M
|
|
||||||
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
|
|
||||||
|
|
||||||
var/obj/item/weapon/zippo/L = new /obj/item/weapon/zippo(src)
|
|
||||||
L.lit = 1
|
|
||||||
src.modules += L
|
|
||||||
|
|
||||||
src.modules += new /obj/item/weapon/tray(src)
|
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/shaker(src)
|
|
||||||
// src.emag = new /obj/item/weapon/reagent_containers/food/snacks/roburgerbig(src)
|
|
||||||
// src.emag.name = "Last Meal"
|
|
||||||
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("beer2", 50)
|
|
||||||
src.emag.name = "Mickey Finn's Special Brew"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/security/New()
|
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/weapon/melee/baton(src)
|
src.modules += new /obj/item/weapon/melee/baton(src)
|
||||||
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
|
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
|
||||||
src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src)
|
src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src)
|
||||||
|
src.modules += new /obj/item/borg/sight/hud/sec(src)
|
||||||
src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
|
src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/janitor/New()
|
|
||||||
|
/obj/item/weapon/robot_module/janitor
|
||||||
|
name = "janitorial robot module"
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/weapon/cleaner(src)
|
src.modules += new /obj/item/weapon/cleaner(src)
|
||||||
src.modules += new /obj/item/weapon/mop(src)
|
src.modules += new /obj/item/weapon/mop(src)
|
||||||
@@ -202,66 +178,59 @@ obj/item/weapon/robot_module/syndicate
|
|||||||
R.my_atom = src.emag
|
R.my_atom = src.emag
|
||||||
R.add_reagent("lube", 1000)
|
R.add_reagent("lube", 1000)
|
||||||
src.emag.name = "Lube spray"
|
src.emag.name = "Lube spray"
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/miner/New()
|
|
||||||
..()
|
|
||||||
src.modules += new /obj/item/weapon/pickaxe/jackhammer(src)
|
|
||||||
src.modules += new /obj/item/weapon/shovel(src)
|
|
||||||
src.modules += new /obj/item/weapon/satchel(src)
|
|
||||||
src.modules += new /obj/item/weapon/borg/sight/meson(src)
|
|
||||||
src.emag = new /obj/item/weapon/borg/stun(src)
|
|
||||||
|
|
||||||
/* /obj/item/weapon/robot_module/brobot/New()
|
/obj/item/weapon/robot_module/butler
|
||||||
|
name = "service robot module"
|
||||||
|
|
||||||
|
|
||||||
|
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/condiment/enzyme(src)
|
||||||
src.modules += new /obj/item/weapon/spacecash(src)
|
src.modules += new /obj/item/weapon/pen(src)
|
||||||
|
|
||||||
|
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
|
||||||
|
M.matter = 30
|
||||||
|
src.modules += M
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
|
||||||
|
|
||||||
|
var/obj/item/weapon/zippo/L = new /obj/item/weapon/zippo(src)
|
||||||
|
L.lit = 1
|
||||||
|
src.modules += L
|
||||||
|
|
||||||
|
src.modules += new /obj/item/weapon/tray(src)
|
||||||
|
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/shaker(src)
|
||||||
src.emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
|
src.emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
|
||||||
var/datum/reagents/R = new/datum/reagents(50)
|
var/datum/reagents/R = new/datum/reagents(50)
|
||||||
src.emag.reagents = R
|
src.emag.reagents = R
|
||||||
R.my_atom = src.emag
|
R.my_atom = src.emag
|
||||||
R.add_reagent("beer2", 50)
|
R.add_reagent("beer2", 50)
|
||||||
src.emag.name = "Mickey Finn's Special Brew"
|
src.emag.name = "Mickey Finn's Special Brew"
|
||||||
*/ //Merged with Service borg, not a death, just a transformation
|
return
|
||||||
|
|
||||||
obj/item/weapon/robot_module/syndicate/New()
|
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/miner
|
||||||
|
name = "miner robot module"
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
src.modules += new /obj/item/weapon/pickaxe/jackhammer(src)
|
||||||
|
src.modules += new /obj/item/weapon/shovel(src)
|
||||||
|
src.modules += new /obj/item/weapon/satchel(src)
|
||||||
|
src.modules += new /obj/item/borg/sight/meson(src)
|
||||||
|
src.emag = new /obj/item/borg/stun(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/syndicate
|
||||||
|
name = "syndicate robot module"
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
src.modules += new /obj/item/weapon/card/emag(src)
|
src.modules += new /obj/item/weapon/card/emag(src)
|
||||||
|
return
|
||||||
|
|
||||||
/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)
|
|
||||||
|
|
||||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
|
||||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
|
||||||
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)
|
|
||||||
|
|
||||||
/obj/item/weapon/borg/sight
|
|
||||||
icon = 'decals.dmi'
|
|
||||||
icon_state = "securearea"
|
|
||||||
var/sight_mode
|
|
||||||
|
|
||||||
/obj/item/weapon/borg/sight/xray
|
|
||||||
name = "X-ray Vision"
|
|
||||||
sight_mode = BORGXRAY
|
|
||||||
|
|
||||||
/obj/item/weapon/borg/sight/thermal
|
|
||||||
name = "Thermal Vision"
|
|
||||||
sight_mode = BORGTHERM
|
|
||||||
|
|
||||||
/obj/item/weapon/borg/sight/meson
|
|
||||||
name = "Meson Vision"
|
|
||||||
sight_mode = BORGMESON
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
/obj/item/ammo_magazine/c9mm
|
/obj/item/ammo_magazine/c9mm
|
||||||
name = "Ammunition Box (9mm)"
|
name = "Ammunition Box (9mm)"
|
||||||
icon_state = "9mm"
|
icon_state = "9mm"
|
||||||
origin_tech = "combat=3;materials=2"
|
origin_tech = "combat=2"
|
||||||
ammo_type = "/obj/item/ammo_casing/c9mm"
|
ammo_type = "/obj/item/ammo_casing/c9mm"
|
||||||
max_ammo = 30
|
max_ammo = 30
|
||||||
|
|
||||||
@@ -55,6 +55,24 @@
|
|||||||
/obj/item/ammo_magazine/c45
|
/obj/item/ammo_magazine/c45
|
||||||
name = "Ammunition Box (.45)"
|
name = "Ammunition Box (.45)"
|
||||||
icon_state = "9mm"
|
icon_state = "9mm"
|
||||||
origin_tech = "combat=3;materials=2"
|
origin_tech = "combat=2"
|
||||||
ammo_type = "/obj/item/ammo_casing/c45"
|
ammo_type = "/obj/item/ammo_casing/c45"
|
||||||
max_ammo = 30
|
max_ammo = 30
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/ammo_magazine/a12mm
|
||||||
|
name = "magazine (12mm)"
|
||||||
|
icon_state = "12mm"
|
||||||
|
origin_tech = "combat=2"
|
||||||
|
ammo_type = "/obj/item/ammo_casing/a12mm"
|
||||||
|
max_ammo = 20
|
||||||
|
multiple_sprites = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/ammo_magazine/a12mm/empty
|
||||||
|
name = "magazine (12mm)"
|
||||||
|
icon_state = "12mm"
|
||||||
|
ammo_type = "/obj/item/ammo_casing/12mm"
|
||||||
|
max_ammo = 0
|
||||||
@@ -40,6 +40,12 @@
|
|||||||
projectile_type = "/obj/item/projectile/bullet/midbullet"
|
projectile_type = "/obj/item/projectile/bullet/midbullet"
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/ammo_casing/a12mm
|
||||||
|
desc = "A 12mm bullet casing."
|
||||||
|
caliber = "12mm"
|
||||||
|
projectile_type = "/obj/item/projectile/bullet/midbullet"
|
||||||
|
|
||||||
|
|
||||||
/obj/item/ammo_casing/shotgun
|
/obj/item/ammo_casing/shotgun
|
||||||
name = "shotgun shell"
|
name = "shotgun shell"
|
||||||
desc = "A 12 gauge shell."
|
desc = "A 12 gauge shell."
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/laser/captain
|
/obj/item/weapon/gun/energy/laser/captain
|
||||||
icon_state = "caplaser"
|
icon_state = "caplaser"
|
||||||
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
|
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
|
||||||
@@ -30,7 +29,7 @@
|
|||||||
|
|
||||||
process()
|
process()
|
||||||
charge_tick++
|
charge_tick++
|
||||||
if(!charge_tick >= 5) return 0
|
if(!charge_tick >= 10) return 0
|
||||||
charge_tick = 0
|
charge_tick = 0
|
||||||
if(!power_supply) return 0
|
if(!power_supply) return 0
|
||||||
power_supply.give(100)
|
power_supply.give(100)
|
||||||
@@ -38,12 +37,13 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/laser/cyborg/load_into_chamber()
|
/obj/item/weapon/gun/energy/laser/cyborg/load_into_chamber()
|
||||||
if(in_chamber) return 1
|
if(in_chamber) return 1
|
||||||
if(isrobot(src.loc))
|
if(isrobot(src.loc))
|
||||||
var/mob/living/silicon/robot/R = src.loc
|
var/mob/living/silicon/robot/R = src.loc
|
||||||
if(R && R.cell)
|
if(R && R.cell)
|
||||||
R.cell.use(40)
|
R.cell.use(100)
|
||||||
in_chamber = new/obj/item/projectile/beam(src)
|
in_chamber = new/obj/item/projectile/beam(src)
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
process()
|
process()
|
||||||
charge_tick++
|
charge_tick++
|
||||||
if(!charge_tick >= 5) return 0
|
if(!charge_tick >= 10) return 0
|
||||||
charge_tick = 0
|
charge_tick = 0
|
||||||
if(!power_supply) return 0
|
if(!power_supply) return 0
|
||||||
if(!failcheck()) return 0
|
if(!failcheck()) return 0
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
process()
|
process()
|
||||||
charge_tick++
|
charge_tick++
|
||||||
if(!charge_tick >= 5) return 0
|
if(!charge_tick >= 10) return 0
|
||||||
charge_tick = 0
|
charge_tick = 0
|
||||||
if(!power_supply) return 0
|
if(!power_supply) return 0
|
||||||
power_supply.give(100)
|
power_supply.give(100)
|
||||||
|
|||||||
@@ -11,13 +11,16 @@
|
|||||||
ammo_type = "/obj/item/ammo_casing/a357"
|
ammo_type = "/obj/item/ammo_casing/a357"
|
||||||
list/loaded = list()
|
list/loaded = list()
|
||||||
max_shells = 7
|
max_shells = 7
|
||||||
load_method = 0 //0 = Single shells or quick loader, 1 = magazine
|
load_method = 0 //0 = Single shells or quick loader, 1 = box, 2 = magazine
|
||||||
|
obj/item/ammo_magazine/empty_mag = null
|
||||||
|
|
||||||
|
|
||||||
New()
|
New()
|
||||||
|
..()
|
||||||
for(var/i = 1, i <= max_shells, i++)
|
for(var/i = 1, i <= max_shells, i++)
|
||||||
loaded += new ammo_type(src)
|
loaded += new ammo_type(src)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
load_into_chamber()
|
load_into_chamber()
|
||||||
@@ -37,6 +40,7 @@
|
|||||||
attackby(var/obj/item/A as obj, mob/user as mob)
|
attackby(var/obj/item/A as obj, mob/user as mob)
|
||||||
var/num_loaded = 0
|
var/num_loaded = 0
|
||||||
if(istype(A, /obj/item/ammo_magazine))
|
if(istype(A, /obj/item/ammo_magazine))
|
||||||
|
if((load_method == 2) && loaded.len) return
|
||||||
var/obj/item/ammo_magazine/AM = A
|
var/obj/item/ammo_magazine/AM = A
|
||||||
for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
|
for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
|
||||||
if(loaded.len >= max_shells)
|
if(loaded.len >= max_shells)
|
||||||
@@ -46,7 +50,11 @@
|
|||||||
AM.stored_ammo -= AC
|
AM.stored_ammo -= AC
|
||||||
loaded += AC
|
loaded += AC
|
||||||
num_loaded++
|
num_loaded++
|
||||||
else if(istype(A, /obj/item/ammo_casing) && !load_method)
|
if(load_method == 2)
|
||||||
|
user.remove_from_mob(AM)
|
||||||
|
empty_mag = AM
|
||||||
|
empty_mag.loc = src
|
||||||
|
if(istype(A, /obj/item/ammo_casing) && !load_method)
|
||||||
var/obj/item/ammo_casing/AC = A
|
var/obj/item/ammo_casing/AC = A
|
||||||
if(AC.caliber == caliber && loaded.len < max_shells)
|
if(AC.caliber == caliber && loaded.len < max_shells)
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
@@ -56,8 +64,11 @@
|
|||||||
if(num_loaded)
|
if(num_loaded)
|
||||||
user << text("\blue You load [] shell\s into the gun!", num_loaded)
|
user << text("\blue You load [] shell\s into the gun!", num_loaded)
|
||||||
A.update_icon()
|
A.update_icon()
|
||||||
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
desc = initial(desc) + text(" Has [] rounds remaining.", loaded.len)
|
desc = initial(desc) + text(" Has [] rounds remaining.", loaded.len)
|
||||||
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/mini_uzi
|
/obj/item/weapon/gun/projectile/automatic/mini_uzi
|
||||||
name = "Mini-Uzi"
|
name = "Mini-Uzi"
|
||||||
desc = "A lightweight, fast firing gun, for when you REALLY need someone dead. Uses .45 rounds."
|
desc = "A lightweight, fast firing gun, for when you want someone dead. Uses .45 rounds."
|
||||||
icon_state = "mini-uzi"
|
icon_state = "mini-uzi"
|
||||||
w_class = 3.0
|
w_class = 3.0
|
||||||
max_shells = 20
|
max_shells = 20
|
||||||
@@ -20,3 +20,51 @@
|
|||||||
origin_tech = "combat=5;materials=2;syndicate=8"
|
origin_tech = "combat=5;materials=2;syndicate=8"
|
||||||
ammo_type = "/obj/item/ammo_casing/c45"
|
ammo_type = "/obj/item/ammo_casing/c45"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/c20r
|
||||||
|
name = "C-20r SMG"
|
||||||
|
desc = "A lightweight, fast firing gun, for when you REALLY need someone dead. Uses .12mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp"
|
||||||
|
icon_state = "c20r"
|
||||||
|
item_state = "c20r"
|
||||||
|
w_class = 3.0
|
||||||
|
max_shells = 20
|
||||||
|
caliber = "12mm"
|
||||||
|
origin_tech = "combat=5;materials=2;syndicate=8"
|
||||||
|
ammo_type = "/obj/item/ammo_casing/a12mm"
|
||||||
|
fire_sound = 'Gunshot_smg.ogg'
|
||||||
|
load_method = 2
|
||||||
|
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
empty_mag = new /obj/item/ammo_magazine/a12mm/empty(src)
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
|
||||||
|
..()
|
||||||
|
if(!loaded.len && empty_mag)
|
||||||
|
empty_mag.loc = get_turf(src.loc)
|
||||||
|
empty_mag = null
|
||||||
|
playsound(user, 'smg_empty_alarm.ogg', 40, 1)
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
update_icon()
|
||||||
|
..()
|
||||||
|
overlays = null
|
||||||
|
if(empty_mag)
|
||||||
|
overlays += "c20r-[round(loaded.len,4)]"
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
/obj/item/projectile/bullet
|
/obj/item/projectile/bullet
|
||||||
name = "bullet"
|
name = "bullet"
|
||||||
icon_state = "bullet"
|
icon_state = "bullet"
|
||||||
|
|
||||||
damage = 60
|
damage = 60
|
||||||
damage_type = BRUTE
|
damage_type = BRUTE
|
||||||
nodamage = 0
|
nodamage = 0
|
||||||
|
|||||||
@@ -149,18 +149,25 @@
|
|||||||
#define FULL_BODY 2047
|
#define FULL_BODY 2047
|
||||||
|
|
||||||
//bitflags for mutations
|
//bitflags for mutations
|
||||||
#define PORTALS 1
|
var/const
|
||||||
#define COLD_RESISTANCE 2
|
TK =(1<<0)
|
||||||
#define XRAY 4
|
COLD_RESISTANCE =(1<<1)
|
||||||
#define HULK 8
|
XRAY =(1<<2)
|
||||||
#define CLUMSY 16
|
HULK =(1<<3)
|
||||||
#define FAT 32
|
CLUMSY =(1<<4)
|
||||||
#define HUSK 64 //changeling-drained
|
FAT =(1<<5)
|
||||||
#define LASER 128
|
HUSK =(1<<6)
|
||||||
#define HEAL 256
|
LASER =(1<<7)
|
||||||
|
HEAL =(1<<8)
|
||||||
|
|
||||||
|
|
||||||
|
//mob/var/stat things
|
||||||
|
var/const
|
||||||
|
CONSCIOUS = 0
|
||||||
|
UNCONSCIOUS = 1
|
||||||
|
DEAD = 2
|
||||||
|
|
||||||
// channel numbers for power
|
// channel numbers for power
|
||||||
|
|
||||||
#define EQUIP 1
|
#define EQUIP 1
|
||||||
#define LIGHT 2
|
#define LIGHT 2
|
||||||
#define ENVIRON 3
|
#define ENVIRON 3
|
||||||
|
|||||||
@@ -54,6 +54,15 @@ Stuff which is in development and not yet visible to players or just code relate
|
|||||||
(ie. code improvements for expandability, etc.) should not be listed here. They
|
(ie. code improvements for expandability, etc.) should not be listed here. They
|
||||||
should be listed in the changelog upon commit tho. Thanks. -->
|
should be listed in the changelog upon commit tho. Thanks. -->
|
||||||
|
|
||||||
|
<b><font color='blue'>27 October 2011</font><b>
|
||||||
|
<ul>
|
||||||
|
<li><b>Mport updated:</b>
|
||||||
|
<ul>
|
||||||
|
<li>New WIP TK system added. To activate your TK click the throw button with an empty hand. This will bring up a tkgrab item. Click on a non-anchored (currently) non mob Object to select it as your "focus". Once a focus is selected so long as you are in range of the focus you can now click somewhere to throw the focus at the target. To quit using TK just drop the tkgrab item.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<b><font color='blue'>21 October 2011, Tuesday:</font><b>
|
<b><font color='blue'>21 October 2011, Tuesday:</font><b>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Errorage updated:</b>
|
<li><b>Errorage updated:</b>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 35 KiB |
BIN
sound/weapons/Gunshot_smg.ogg
Normal file
BIN
sound/weapons/smg_empty_alarm.ogg
Normal file
@@ -599,8 +599,10 @@
|
|||||||
#include "code\game\objects\items\food.dm"
|
#include "code\game\objects\items\food.dm"
|
||||||
#include "code\game\objects\items\helper_procs.dm"
|
#include "code\game\objects\items\helper_procs.dm"
|
||||||
#include "code\game\objects\items\item.dm"
|
#include "code\game\objects\items\item.dm"
|
||||||
|
#include "code\game\objects\items\robot_items.dm"
|
||||||
#include "code\game\objects\items\robot_parts.dm"
|
#include "code\game\objects\items\robot_parts.dm"
|
||||||
#include "code\game\objects\items\shock_kit.dm"
|
#include "code\game\objects\items\shock_kit.dm"
|
||||||
|
#include "code\game\objects\items\tk_grab.dm"
|
||||||
#include "code\game\objects\items\trash.dm"
|
#include "code\game\objects\items\trash.dm"
|
||||||
#include "code\game\objects\items\clothing\powerarmor.dm"
|
#include "code\game\objects\items\clothing\powerarmor.dm"
|
||||||
#include "code\game\objects\items\clothing\powerarmorcomponents.dm"
|
#include "code\game\objects\items\clothing\powerarmorcomponents.dm"
|
||||||
|
|||||||