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
This commit is contained in:
mport2004@gmail.com
2011-10-27 08:37:40 +00:00
parent a2557781f4
commit 9ca449bf7a
40 changed files with 884 additions and 492 deletions

View File

@@ -12,7 +12,7 @@
var/operating = 0
anchored = 1
var/autoclose = 0
var/glass = 0
/obj/machinery/door/firedoor

View File

@@ -28,9 +28,10 @@
/proc/in_range(source, user)
if(get_dist(source, user) <= 1)
return 1
/*
else//TK TODO: remove this
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
var/X = source:x
var/Y = source:y
@@ -48,9 +49,7 @@
flick("empdisable",O)
spawn(5)
del(O)
return 1
return 1*/
return 0 //not in range and not telekinetic

View File

@@ -579,7 +579,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
else
return
// ------- 1 TILE AWAY OR TELEKINETIC -------
// ------- 1 TILE AWAY -------
var/t5 = in_range(src, usr) || src.loc == usr
// ------- 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 -------
if (istype(usr, /mob/living/carbon/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)
else
// ------- 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()
processing_objects.Remove(src)
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 -------
*/

View File

@@ -357,7 +357,7 @@
if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),12))
if(inj || prob(15))
M << "\blue You feel smarter."
M.mutations |= PORTALS
M.mutations |= TK
if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),13))
M.sdisabilities |= 4
M.ear_deaf = 1

View File

@@ -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/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/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/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)
E.imp_in = synd_mob
E.implanted = 1

View File

@@ -114,6 +114,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
icon = 'Doorglass.dmi'
opacity = 0
doortype = 7
glass = 1
/obj/machinery/door/airlock/centcom
name = "Airlock"
@@ -132,6 +133,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
icon = 'Door2x1glassfull.dmi'
opacity = 0
doortype = 10
glass = 1
/obj/machinery/door/airlock/freezer
name = "Freezer Airlock"
@@ -156,24 +158,28 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
icon = 'Doorcomglass.dmi'
opacity = 0
doortype = 14
glass = 1
/obj/machinery/door/airlock/glass_engineering
name = "Maintenance Hatch"
icon = 'Doorengglass.dmi'
opacity = 0
doortype = 15
glass = 1
/obj/machinery/door/airlock/glass_security
name = "Maintenance Hatch"
icon = 'Doorsecglass.dmi'
opacity = 0
doortype = 16
glass = 1
/obj/machinery/door/airlock/glass_medical
name = "Maintenance Hatch"
icon = 'doormedglass.dmi'
opacity = 0
doortype = 17
glass = 1
/*
About the new airlock wires panel:

View File

@@ -299,7 +299,7 @@
sleep(10)
update_icon()
if (src.visible && (!istype(src, /obj/machinery/door/airlock/glass)))
if(src.visible && (!src.glass))
src.sd_SetOpacity(1)
if(operating == 1)
operating = 0

View File

@@ -82,9 +82,6 @@
// ^ makes sinle list of active (R.contents) and inactive modules (R.module.modules)
for(var/obj/O in um)
// 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(O:amount < 50)
O:amount += 1
@@ -104,12 +101,10 @@
if(O.reagents.get_reagent_amount("enzyme") < 50)
O.reagents.add_reagent("enzyme", 1)
//Medical
if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline))
if(O.reagents.get_reagent_amount("inaprovaline") < 30)
O.reagents.add_reagent("inaprovaline", 1)
if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin))
if(O.reagents.get_reagent_amount("anti_toxin") < 30)
O.reagents.add_reagent("anti_toxin", 1)
if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/robot))
var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O
if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume))
B.reagents.add_reagent(B.reagent, 2)
if(R)
if(R.module)

View File

@@ -1,14 +1,20 @@
/obj/structure/closet/syndicate/nuclear/New()
..()
sleep(2)
new /obj/item/ammo_magazine/c45( src )
new /obj/item/ammo_magazine/c45( 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/ammo_magazine/a12mm(src)
new /obj/item/ammo_magazine/a12mm(src)
new /obj/item/weapon/storage/handcuff_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/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)

View 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

View 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
*/

View File

@@ -75,16 +75,11 @@ RCD
if(istype(A, /turf) && mode == 1)
if(istype(A, /turf/space) && matter >= 1)
user << "Building Floor (1)..."
if (!disabled)
if(!disabled && matter >= 1)
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
spark_system.set_up(5, 0, src)
src.spark_system.start()
A:ReplaceWithFloor()
if (isrobot(user))
var/mob/living/silicon/robot/engy = user
engy.cell.charge -= 30
else
if(!matter >= 1) return
matter--
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
@@ -93,16 +88,11 @@ RCD
user << "Building Wall (3)..."
playsound(src.loc, 'click.ogg', 50, 1)
if(do_after(user, 20))
if (!disabled)
if(!disabled && matter >= 3)
spark_system.set_up(5, 0, src)
src.spark_system.start()
A:ReplaceWithWall()
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
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
@@ -111,7 +101,7 @@ RCD
user << "Building Airlock (10)..."
playsound(src.loc, 'click.ogg', 50, 1)
if(do_after(user, 50))
if (!disabled)
if(!disabled && matter >= 10)
spark_system.set_up(5, 0, src)
src.spark_system.start()
if(locate(/obj/machinery/door) in get_turf(src)) return
@@ -122,50 +112,34 @@ RCD
T.autoclose = 1
playsound(src.loc, 'Deconstruct.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
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)
user << "Deconstructing Wall (5)..."
if(istype(A, /turf/simulated/wall) && matter >= 4)
user << "Deconstructing Wall (4)..."
playsound(src.loc, 'click.ogg', 50, 1)
if(do_after(user, 50))
if (!disabled)
if(do_after(user, 40))
if(!disabled && matter >= 4)
spark_system.set_up(5, 0, src)
src.spark_system.start()
A:ReplaceWithFloor()
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 -= 4
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)..."
if(istype(A, /turf/simulated/wall/r_wall) && matter >= 8)
user << "Deconstructing RWall (8)..."
playsound(src.loc, 'click.ogg', 50, 1)
if(do_after(user, 50))
if (!disabled)
if(do_after(user, 60))
if(!disabled && matter >= 8)
spark_system.set_up(5, 0, src)
src.spark_system.start()
A:ReplaceWithWall()
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 -= 8
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
return
@@ -173,16 +147,11 @@ RCD
user << "Deconstructing Floor (5)..."
playsound(src.loc, 'click.ogg', 50, 1)
if(do_after(user, 50))
if (!disabled)
if(!disabled && matter >= 5)
spark_system.set_up(5, 0, src)
src.spark_system.start()
A:ReplaceWithSpace()
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
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."
@@ -191,16 +160,11 @@ RCD
user << "Deconstructing Airlock (10)..."
playsound(src.loc, 'click.ogg', 50, 1)
if(do_after(user, 50))
if (!disabled)
if(!disabled && matter >= 10)
spark_system.set_up(5, 0, src)
src.spark_system.start()
del(A)
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
user << "The RCD now holds [matter]/30 matter-units."
desc = "A RCD. It currently holds [matter]/30 matter-units."

View File

@@ -253,6 +253,8 @@ CIRCULAR SAW
if(!istype(M))
return ..()
if(M.mutations & HUSK) return ..()
if((user.mutations & CLUMSY) && prob(50))
M = user
return eyestab(M,user)

View File

@@ -82,8 +82,7 @@
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
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 / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
col_num = round((contents.len-1) / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
if (src == user.l_hand)
src.orient_objs(3-col_num, 3+row_count, 3, 3)
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.
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
if ( W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
@@ -172,8 +171,7 @@
var/col_num = 0
var/row_count = min(7,storage_slots) -1
if (contents.len > 7)
if(contents.len % 7)
col_num = round(contents.len / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
col_num = round((contents.len-1) / 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)
return

View File

@@ -1,4 +1,14 @@
/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)
throw_mode_off()
else

View File

@@ -1,5 +1,6 @@
#define TOUCH 1
#define INGEST 2
var/const
TOUCH = 1
INGEST = 2
///////////////////////////////////////////////////////////////////////////////////

View File

@@ -734,59 +734,6 @@
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
////////////////////////////////////////////////////////////////////////////////

View File

@@ -733,7 +733,7 @@
if (mutations & COLD_RESISTANCE)
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"]")
if (mutations & LASER)

View File

@@ -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>")
return 0

View File

@@ -75,7 +75,7 @@ emp_act
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
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

View File

@@ -33,7 +33,7 @@
stunned = max(min(stunned, 30),0)
paralysis = max(min(paralysis, 30), 0)
weakened = max(min(weakened, 20), 0)
sleeping = max(min(sleeping, 5), 0)
sleeping = 0
bruteloss = max(bruteloss, 0)
toxloss = max(toxloss, 0)
oxyloss = max(oxyloss, 0)
@@ -177,6 +177,10 @@
src.see_in_dark = 8
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.rest) src.rest.icon_state = text("rest[]", src.resting)

View File

@@ -736,19 +736,19 @@
module_state_1 = O
O.layer = 20
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
else if(!module_state_2)
module_state_2 = O
O.layer = 20
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
else if(!module_state_3)
module_state_3 = O
O.layer = 20
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
else
src << "You need to disable a module first!"
@@ -777,7 +777,7 @@
if(isnull(module_active))
return
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
if (client)
client.screen -= module_state_1
@@ -786,7 +786,7 @@
module_state_1 = null
inv1.icon_state = "inv1"
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
if (client)
client.screen -= module_state_2
@@ -795,7 +795,7 @@
module_state_2 = null
inv2.icon_state = "inv2"
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
if (client)
client.screen -= module_state_3
@@ -808,7 +808,7 @@
module_active = null
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
if (client)
client.screen -= module_state_1
@@ -816,7 +816,7 @@
module_state_1 = null
inv1.icon_state = "inv1"
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
if (client)
client.screen -= module_state_2
@@ -824,7 +824,7 @@
module_state_2 = null
inv2.icon_state = "inv2"
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
if (client)
client.screen -= module_state_3

View File

@@ -2,11 +2,13 @@
name = "robot module"
icon = 'module.dmi'
icon_state = "std_module"
w_class = 2.0
w_class = 100.0
item_state = "electronic"
flags = FPRINT|TABLEPASS | CONDUCT
var/list/modules = list()
var/obj/item/emag
var
list/modules = list()
obj/item/emag = null
emp_act(severity)
if(modules)
@@ -15,48 +17,26 @@
if(emag)
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)
return
/obj/item/weapon/robot_module/standard
name = "standard robot module"
/obj/item/weapon/robot_module/hydroborg
name = "hydroponics robot module"
/obj/item/weapon/robot_module/medical
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()
New()
..()
src.modules += new /obj/item/weapon/melee/baton(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/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/melee/energy/sword(src)
/*
/obj/item/weapon/robot_module/hydroborg/New()
return
/obj/item/weapon/robot_module/medical
name = "medical robot module"
New()
..()
src.modules += new /obj/item/weapon/minihoe(src)
src.modules += new /obj/item/weapon/pestspray(src)
src.modules += new /obj/item/weapon/plantbgone(src)
src.modules += new /obj/item/nutrient/rh(src)
src.modules += new /obj/item/nutrient/l4z(src)
src.modules += new /obj/item/weapon/rsp(src)
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
src.emag = new /obj/item/weapon/grown/deathnettle(src)
*/
/obj/item/weapon/robot_module/engineering/New()
src.modules += new /obj/item/device/healthanalyzer(src)
for(var/i = 1 to 3)
var/obj/item/weapon/reagent_containers/syringe/S = new /obj/item/weapon/reagent_containers/syringe(src)
switch(i)
if(1) S.name = "Syringe-(Inaprovaline)"
if(2) S.name = "Syringe-(Anti-Toxin)"
if(3) S.name = "Syringe-(Mixed)"
src.modules += S
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/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/device/analyzer(src)
src.modules += new /obj/item/device/flashlight(src)
var/obj/item/weapon/rcd/R = new /obj/item/weapon/rcd(src)
R.matter = 30
src.modules += R
src.modules += new /obj/item/borg/rcd(src)
src.modules += new /obj/item/device/t_scanner(src)
src.modules += new /obj/item/weapon/crowbar(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)
W.amount = 50
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 (
/obj/item/stack/sheet/metal,
/obj/item/stack/sheet/rglass,
@@ -122,76 +144,30 @@ obj/item/weapon/robot_module/syndicate
var/O = new T(src)
src.modules += O
O:amount = 1
/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)
return
/obj/item/weapon/robot_module/medical/New()
..()
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)
/obj/item/weapon/robot_module/security
name = "security robot module"
src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
/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()
New()
..()
src.modules += new /obj/item/weapon/melee/baton(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/borg/sight/hud/sec(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/mop(src)
@@ -202,66 +178,59 @@ obj/item/weapon/robot_module/syndicate
R.my_atom = src.emag
R.add_reagent("lube", 1000)
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/spacecash(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/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"
*/ //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)
/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
return

View File

@@ -46,7 +46,7 @@
/obj/item/ammo_magazine/c9mm
name = "Ammunition Box (9mm)"
icon_state = "9mm"
origin_tech = "combat=3;materials=2"
origin_tech = "combat=2"
ammo_type = "/obj/item/ammo_casing/c9mm"
max_ammo = 30
@@ -55,6 +55,24 @@
/obj/item/ammo_magazine/c45
name = "Ammunition Box (.45)"
icon_state = "9mm"
origin_tech = "combat=3;materials=2"
origin_tech = "combat=2"
ammo_type = "/obj/item/ammo_casing/c45"
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

View File

@@ -40,6 +40,12 @@
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
name = "shotgun shell"
desc = "A 12 gauge shell."

View File

@@ -9,7 +9,6 @@
/obj/item/weapon/gun/energy/laser/captain
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."
@@ -30,7 +29,7 @@
process()
charge_tick++
if(!charge_tick >= 5) return 0
if(!charge_tick >= 10) return 0
charge_tick = 0
if(!power_supply) return 0
power_supply.give(100)
@@ -38,12 +37,13 @@
return 1
/obj/item/weapon/gun/energy/laser/cyborg/load_into_chamber()
if(in_chamber) return 1
if(isrobot(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
R.cell.use(40)
R.cell.use(100)
in_chamber = new/obj/item/projectile/beam(src)
return 1
return 0

View File

@@ -51,7 +51,7 @@
process()
charge_tick++
if(!charge_tick >= 5) return 0
if(!charge_tick >= 10) return 0
charge_tick = 0
if(!power_supply) return 0
if(!failcheck()) return 0

View File

@@ -62,7 +62,7 @@
process()
charge_tick++
if(!charge_tick >= 5) return 0
if(!charge_tick >= 10) return 0
charge_tick = 0
if(!power_supply) return 0
power_supply.give(100)

View File

@@ -11,13 +11,16 @@
ammo_type = "/obj/item/ammo_casing/a357"
list/loaded = list()
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()
..()
for(var/i = 1, i <= max_shells, i++)
loaded += new ammo_type(src)
update_icon()
return
load_into_chamber()
@@ -37,6 +40,7 @@
attackby(var/obj/item/A as obj, mob/user as mob)
var/num_loaded = 0
if(istype(A, /obj/item/ammo_magazine))
if((load_method == 2) && loaded.len) return
var/obj/item/ammo_magazine/AM = A
for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
if(loaded.len >= max_shells)
@@ -46,7 +50,11 @@
AM.stored_ammo -= AC
loaded += AC
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
if(AC.caliber == caliber && loaded.len < max_shells)
user.drop_item()
@@ -56,8 +64,11 @@
if(num_loaded)
user << text("\blue You load [] shell\s into the gun!", num_loaded)
A.update_icon()
update_icon()
return
update_icon()
desc = initial(desc) + text(" Has [] rounds remaining.", loaded.len)
return

View File

@@ -12,7 +12,7 @@
/obj/item/weapon/gun/projectile/automatic/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"
w_class = 3.0
max_shells = 20
@@ -20,3 +20,51 @@
origin_tech = "combat=5;materials=2;syndicate=8"
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

View File

@@ -1,7 +1,6 @@
/obj/item/projectile/bullet
name = "bullet"
icon_state = "bullet"
damage = 60
damage_type = BRUTE
nodamage = 0

View File

@@ -149,18 +149,25 @@
#define FULL_BODY 2047
//bitflags for mutations
#define PORTALS 1
#define COLD_RESISTANCE 2
#define XRAY 4
#define HULK 8
#define CLUMSY 16
#define FAT 32
#define HUSK 64 //changeling-drained
#define LASER 128
#define HEAL 256
var/const
TK =(1<<0)
COLD_RESISTANCE =(1<<1)
XRAY =(1<<2)
HULK =(1<<3)
CLUMSY =(1<<4)
FAT =(1<<5)
HUSK =(1<<6)
LASER =(1<<7)
HEAL =(1<<8)
//mob/var/stat things
var/const
CONSCIOUS = 0
UNCONSCIOUS = 1
DEAD = 2
// channel numbers for power
#define EQUIP 1
#define LIGHT 2
#define ENVIRON 3

View File

@@ -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
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>
<ul>
<li><b>Errorage updated:</b>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -599,8 +599,10 @@
#include "code\game\objects\items\food.dm"
#include "code\game\objects\items\helper_procs.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\shock_kit.dm"
#include "code\game\objects\items\tk_grab.dm"
#include "code\game\objects\items\trash.dm"
#include "code\game\objects\items\clothing\powerarmor.dm"
#include "code\game\objects\items\clothing\powerarmorcomponents.dm"