diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 744223ae526..ad2a35ab7e0 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -192,6 +192,16 @@ var/list/uplink_items = list() cost = 14 job = list("Station Engineer","Chief Engineer") +//RD + +/datum/uplink_item/jobspecific/telegun + name = "Telegun" + desc = "An extremely energy gun that utilizes bluespace technology to teleport away living targets; will teleport targets to the same beacon a teleporter is locked onto." + item = /obj/item/weapon/gun/energy/telegun + cost = 12 + job = list("Research Director") + + // DANGEROUS WEAPONS /datum/uplink_item/dangerous diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index b1eeae11fca..dd90a185926 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -127,6 +127,43 @@ tools = list(/obj/item/weapon/screwdriver) time = 5 +/datum/table_recipe/ionslug + name = "Ion Scatter Shell" + result = /obj/item/ammo_casing/shotgun/ion + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/weapon/stock_parts/micro_laser/ultra = 1, + /obj/item/weapon/stock_parts/subspace/crystal = 1) + tools = list(/obj/item/weapon/screwdriver) + time = 5 + +/datum/table_recipe/improvisedslug + name = "Improvised Shotgun Shell" + result = /obj/item/ammo_casing/shotgun/improvised + reqs = list(/obj/item/weapon/grenade/chem_grenade = 1, + /obj/item/stack/sheet/metal = 1, + /obj/item/stack/cable_coil = 1, + /datum/reagent/fuel = 10) + tools = list(/obj/item/weapon/screwdriver) + time = 5 + +/datum/table_recipe/improvisedslugoverload + name = "Overload Improvised Shell" + result = /obj/item/ammo_casing/shotgun/improvised/overload + reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1, + /datum/reagent/water = 5, + /datum/reagent/potassium = 5) + tools = list(/obj/item/weapon/screwdriver) + time = 5 + +/datum/table_recipe/laserslug + name = "Laser Slug Shell" + result = /obj/item/ammo_casing/shotgun/laserslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/weapon/stock_parts/capacitor/adv = 1, + /obj/item/weapon/stock_parts/micro_laser/high = 1) + tools = list(/obj/item/weapon/screwdriver) + time = 5 + /datum/table_recipe/ishotgun name = "Improvised Shotgun" result = /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index e94ad8a54b0..1c925655bea 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -67,6 +67,19 @@ buck = 5 deviation = 0.8 +/obj/item/ammo_casing/shotgun/improvised/overload + name = "overloaded improvised shell" + desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \ + propellant. It's like playing russian roulette, with a shotgun." + icon_state = "improvshell" + projectile_type = /obj/item/projectile/bullet/pellet/random + m_amt = 250 + buck = 5 + deviation = 1.0 + +/obj/item/ammo_casing/shotgun/improvised/overload/New() + ..() + buck = rand(3, 8) /obj/item/ammo_casing/shotgun/stunslug name = "taser slug" @@ -110,6 +123,21 @@ buck = 4 deviation = 0.9 +/obj/item/ammo_casing/shotgun/ion + name = "ion shell" + desc = "An advanced shotgun shell which uses a subspace ansible crystal to produce an effect similar to a standard ion rifle. \ + The unique properties of the crystal splot the pulse into a spread of individually weaker bolts." + icon_state = "ionshell" + projectile_type = /obj/item/projectile/ion/weak + buck = 4 + deviation = 0.9 + +/obj/item/ammo_casing/shotgun/laserslug + name = "laser slug" + desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a laser weapon in a ballistic package." + icon_state = "lshell" + projectile_type = /obj/item/projectile/beam + /obj/item/ammo_casing/shotgun/techshell name = "unloaded technological shell" desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." diff --git a/code/modules/projectiles/guns/energy/advtaser.dm b/code/modules/projectiles/guns/energy/advtaser.dm index b63c9dfbf16..8d7e37812a3 100644 --- a/code/modules/projectiles/guns/energy/advtaser.dm +++ b/code/modules/projectiles/guns/energy/advtaser.dm @@ -11,7 +11,7 @@ charge_cost = 2000 modifystate = "advtaserstun" can_flashlight = 1 - fire_delay = 20 + fire_delay = 15 var/mode = 0 //0 = stun, 1 = disable @@ -33,7 +33,7 @@ user << "\red [src.name] is now set to stun." projectile_type = "/obj/item/projectile/energy/electrode" modifystate = "advtaserstun" - fire_delay = 20 + fire_delay = 15 update_icon() if(user.l_hand == src) user.update_inv_l_hand() diff --git a/code/modules/projectiles/guns/energy/hos.dm b/code/modules/projectiles/guns/energy/hos.dm index b1b932c38d9..944e40a7fea 100644 --- a/code/modules/projectiles/guns/energy/hos.dm +++ b/code/modules/projectiles/guns/energy/hos.dm @@ -37,7 +37,7 @@ user << "\red [src.name] is now set to stun." projectile_type = "/obj/item/projectile/energy/electrode" modifystate = "hoslaserstun" - fire_delay = 20 + fire_delay = 15 update_icon() if(user.l_hand == src) user.update_inv_l_hand() diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 8f5a2f470e4..31add5f22c9 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -130,7 +130,7 @@ update_charge() update_reactor() update_mode() - + /obj/item/weapon/gun/energy/gun/turret name = "hybrid turret gun" @@ -142,8 +142,8 @@ can_flashlight = 0 projectile_type = /obj/item/projectile/energy/electrode charge_cost = 1000 - fire_delay = 20 - + fire_delay = 15 + /obj/item/weapon/gun/energy/gun/turret/update_icon() icon_state = initial(icon_state) @@ -164,9 +164,9 @@ user << "\red [src.name] is now set to stun." projectile_type = /obj/item/projectile/energy/electrode modifystate = "energystun" - fire_delay = 20 + fire_delay = 15 update_icon() if(user.l_hand == src) user.update_inv_l_hand() else - user.update_inv_r_hand() \ No newline at end of file + user.update_inv_r_hand() \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 3591d84008b..fbf71b120ed 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -12,6 +12,9 @@ slot_flags = SLOT_BACK w_class = 4.0 + emp_act() + return + attack_self(mob/living/user as mob) switch(mode) if(2) @@ -20,21 +23,18 @@ fire_sound = 'sound/weapons/Taser.ogg' user << "\red [src.name] is now set to stun." projectile_type = "/obj/item/projectile/energy/electrode" - fire_delay = 20 if(0) mode = 1 charge_cost = 100 fire_sound = 'sound/weapons/Laser.ogg' user << "\red [src.name] is now set to kill." projectile_type = "/obj/item/projectile/beam" - fire_delay = 0 if(1) mode = 2 charge_cost = 200 fire_sound = 'sound/weapons/pulse.ogg' user << "\red [src.name] is now set to DESTROY." projectile_type = "/obj/item/projectile/beam/pulse" - fire_delay = 0 return isHandgun() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index f82359d028f..b81486149ee 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -331,6 +331,19 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. update_icon() return 1 +// Telegun for Tator RDs + +/obj/item/weapon/gun/energy/telegun + name = "Teleporter Gun" + desc = "An extremely advanced bluespace energy gun capable of teleporting targets to far off locations." + icon_state = "telegun" + item_state = "ionrifle" + icon_override = 'icons/mob/in-hand/guns.dmi' + fire_sound = 'sound/weapons/wave.ogg' + origin_tech = "combat=6;materials=7;powerstorage=5;bluespace=5;syndicate=4" + cell_type = "/obj/item/weapon/stock_parts/cell/crap" + projectile_type = "/obj/item/projectile/energy/teleport" + charge_cost = 1250 /* 3d printer 'pseudo guns' for borgs */ diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 998c15e2c01..ea52d3a78e7 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -7,7 +7,7 @@ fire_sound = 'sound/weapons/Taser.ogg' projectile_type = "/obj/item/projectile/energy/electrode" cell_type = "/obj/item/weapon/stock_parts/cell/crap" - fire_delay = 20 + fire_delay = 15 /obj/item/weapon/gun/energy/taser/cyborg name = "taser gun" @@ -53,7 +53,7 @@ fire_sound = "sound/weapons/gunshot.ogg" projectile_type = "/obj/item/projectile/energy/electrode" cell_type = "/obj/item/weapon/stock_parts/cell" - fire_delay = 20 + fire_delay = 15 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 0cf1a336331..543d565c5d6 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -39,6 +39,9 @@ /obj/item/projectile/bullet/pellet/weak damage = 3 +/obj/item/projectile/bullet/pellet/random/New() + damage = rand(10) + /obj/item/projectile/bullet/midbullet damage = 20 stamina = 65 //two rounds from the c20r knocks people down diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 082d5062dd3..4dab3aaaad4 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -41,18 +41,6 @@ proj_hit = 1 ..() -/obj/item/projectile/energy/electrode/revolver - name = "electrode" - icon_state = "spark" - nodamage = 1 -/* stun = 2 - weaken = 2 - stutter = 10 */ - agony = 50 - damage_type = HALLOSS - hitsound = 'sound/weapons/tase.ogg' - //Damage will be handled on the MOB side, to prevent window shattering. - /obj/item/projectile/energy/declone name = "declone" icon_state = "declone" diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index f143e5bbcdb..3461b9a3856 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -12,6 +12,12 @@ return 1 +/obj/item/projectile/ion/weak + +/obj/item/projectile/ion/weak/on_hit(atom/target, blocked = 0) + empulse(target, 0, 0) + return 1 + /obj/item/projectile/bullet/gyro name ="explosive bolt" icon_state= "bolter" @@ -206,8 +212,30 @@ obj/item/projectile/kinetic/New() /obj/item/effect/kinetic_blast/New() spawn(4) del(src) - + /obj/item/projectile/bullet/frag12 name ="explosive slug" damage = 25 weaken = 5 + +/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0) + explosion(target, -1, 0, 1) + return 1 + +/obj/item/projectile/energy/teleport + name = "teleportation burst" + icon_state = "bluespace" + damage = 0 + nodamage = 1 + +/obj/item/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0) + if(isliving(target)) + var/obj/item/device/radio/beacon/teletarget = null + for(var/obj/machinery/computer/teleporter/com in machines) + if(com.target) + teletarget = com.target + if(teletarget) + do_teleport(target, teletarget, 0)//teleport what's in the tile to the beacon + else + do_teleport(target, target, 15) //Otherwise it just warps you off somewhere. + diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index d8f875d1944..8a7c4b5d8bb 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index d87a61fc5cd..ba0ca07b908 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index a76a6d1004b..2955b5c2eed 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -5799,7 +5799,7 @@ "chA" = (/obj/effect/decal/warning_stripes/northeast,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "chB" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/engine,/area/toxins/misc_lab) "chC" = (/turf/simulated/floor/engine,/area/toxins/misc_lab) -"chD" = (/obj/machinery/chem_dispenser,/turf/simulated/floor/engine,/area/toxins/misc_lab) +"chD" = (/obj/machinery/chem_dispenser,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor/engine,/area/toxins/misc_lab) "chE" = (/obj/structure/closet/secure_closet/scientist,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "chF" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/newscaster{pixel_y = 34},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "chG" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/clothing/ears/earmuffs,/obj/machinery/camera{c_tag = "Research Test Lab North"; dir = 2; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) @@ -5807,7 +5807,7 @@ "chI" = (/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) "chJ" = (/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/obj/machinery/light{dir = 1; on = 1},/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) "chK" = (/obj/structure/closet/crate/hydroponics/prespawned,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) -"chL" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 25},/obj/machinery/light{dir = 1; on = 1},/obj/item/clothing/gloves/color/latex,/obj/item/weapon/storage/box/beakers,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) +"chL" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 25},/obj/machinery/light{dir = 1; on = 1},/obj/item/clothing/gloves/color/latex,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) "chM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/toxins/xenobiology/xenoflora) "chN" = (/turf/simulated/floor,/area/toxins/xenobiology/xenoflora) "chO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology/xenoflora) @@ -5972,7 +5972,7 @@ "ckR" = (/obj/machinery/camera{c_tag = "Research Xenoflora Laboratory West"; dir = 4; network = list("Research","SS13"); pixel_y = -22},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) "ckS" = (/obj/structure/table,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 2},/obj/item/device/assembly/igniter{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = -4; pixel_y = -4},/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/engine,/area/toxins/misc_lab) "ckT" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) -"ckU" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) +"ckU" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) "ckV" = (/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) "ckW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) "ckX" = (/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/toxins/xenobiology/xenoflora) @@ -13046,7 +13046,7 @@ "eQT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "eQU" = (/obj/structure/table,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/item/weapon/pen,/obj/item/device/taperecorder,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "eQV" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) -"eQW" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/turf/simulated/floor/engine,/area/toxins/misc_lab) +"eQW" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/turf/simulated/floor/engine,/area/toxins/misc_lab) "eQX" = (/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Camera Screen"; network = list("TestChamber"); pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "eQY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "eQZ" = (/obj/structure/rack,/obj/item/clothing/mask/gas{pixel_x = -2; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)