diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index b50efa38848..61c46bad876 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -583,7 +583,7 @@
"alk" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"all" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/turf/space,/area/shuttle/vox)
"alm" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"aln" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
+"aln" = (/obj/structure/rack,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"alo" = (/obj/machinery/door/poddoor{id_tag = "trash"; name = "disposal bay door"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"alp" = (/obj/machinery/mass_driver{dir = 8; id_tag = "trash"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal)
"alq" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal)
diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm
index 0a5cd703fc0..04512b660bf 100644
--- a/_maps/map_files/RandomZLevels/beach.dmm
+++ b/_maps/map_files/RandomZLevels/beach.dmm
@@ -19,7 +19,7 @@
"as" = (/obj/structure/boulder,/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea)
"at" = (/obj/item/flag/cult,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea)
"au" = (/obj/structure/mineral_door/sandstone,/obj/structure/barricade/wooden,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea)
-"av" = (/obj/item/weapon/crossbowframe,/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea)
+"av" = (/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea)
"aw" = (/obj/item/toy/eight_ball/conch,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea)
"ax" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea)
"ay" = (/obj/structure/closet/cabinet,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea)
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 6eef766fd9b..a2f06af2b25 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -8497,7 +8497,7 @@
"dhv" = (/obj/structure/rack,/obj/item/weapon/pneumatic_cannon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"dhw" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/turf/space,/area/shuttle/vox)
"dhx" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"dhy" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
+"dhy" = (/obj/structure/rack,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"dhz" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/stealth,/obj/item/clothing/head/helmet/space/vox/stealth,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"dhA" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
"dhB" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 2},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm
index 46b1662d8d6..65b00ea2f84 100644
--- a/_maps/map_files/cyberiad/z2.dmm
+++ b/_maps/map_files/cyberiad/z2.dmm
@@ -1136,7 +1136,7 @@
"EY" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin)
"EZ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin)
"Fa" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{name = "Chem Lab"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin)
-"Fb" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"Fb" = (/obj/structure/rack,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"Fc" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/automatic/proto,/obj/item/weapon/gun/projectile/automatic/proto{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"Fd" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/weapon/gun/projectile/automatic/m90,/obj/item/weapon/gun/projectile/automatic/m90{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"Fe" = (/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -32},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
@@ -1174,7 +1174,7 @@
"FL" = (/turf/simulated/wall/r_wall,/area/adminconstruction)
"FM" = (/obj/structure/rack,/obj/item/weapon/gun/energy/meteorgun,/obj/item/weapon/gun/energy/meteorgun{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"FN" = (/obj/structure/rack,/obj/item/weapon/twohanded/knighthammer{pixel_x = -3; pixel_y = 3},/obj/item/weapon/twohanded/mjollnir,/obj/item/weapon/twohanded/singularityhammer{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
-"FO" = (/obj/structure/rack,/obj/item/weapon/gun/energy/crossbow,/obj/item/weapon/gun/energy/crossbow{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"FO" = (/obj/structure/rack,/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow,/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"FP" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"FQ" = (/obj/structure/table,/obj/random/tool,/obj/item/clothing/gloves/color/yellow,/obj/item/weapon/pinpointer/advpinpointer,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin)
"FR" = (/obj/structure/table,/obj/item/weapon/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2; pixel_z = 0},/obj/item/weapon/grenade/syndieminibomb{pixel_x = -1},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin)
diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm
index 104c590cccc..da5594a4405 100644
--- a/_maps/map_files/cyberiad/z6.dmm
+++ b/_maps/map_files/cyberiad/z6.dmm
@@ -648,7 +648,7 @@
"mx" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"my" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/syndicate_depot)
"mz" = (/turf/simulated/floor/engine,/area/syndicate_depot)
-"mA" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/weapon/storage/box/donkpockets,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/m90,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
+"mA" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/weapon/storage/box/donkpockets,/obj/item/ammo_box/magazine/mm556x45,/obj/item/weapon/gun/projectile/automatic/m90,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"mB" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Telepad"; req_access_txt = "0"},/turf/simulated/floor/engine,/area/syndicate_depot)
"mC" = (/obj/machinery/telepad,/turf/simulated/floor/engine,/area/syndicate_depot)
"mD" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate,/obj/item/weapon/storage/firstaid/tactical,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 99918eccbc8..d36405db5d1 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -250,4 +250,8 @@
#define MATRIX_GREYSCALE list(0.3, 0.3, 0.3, 0,\
0.3, 0.3, 0.3, 0,\
0.3, 0.3, 0.3, 0,\
- 0, 0, 0, 1)//Gun trigger guards #define TRIGGER_GUARD_ALLOW_ALL -1 #define TRIGGER_GUARD_NONE 0 #define TRIGGER_GUARD_NORMAL 1
\ No newline at end of file
+ 0, 0, 0, 1)
+//Gun trigger guards
+#define TRIGGER_GUARD_ALLOW_ALL -1
+#define TRIGGER_GUARD_NONE 0
+#define TRIGGER_GUARD_NORMAL 1
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index d135e62ae69..35274d2102d 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -167,8 +167,6 @@
animals lunging, etc.
*/
/mob/proc/RangedAttack(var/atom/A, var/params)
- if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/color/yellow/power)) && a_intent == I_HARM)
- PowerGlove(A)
if(!mutations.len) return
if((LASER in mutations) && a_intent == I_HARM)
LaserEyes(A) // moved into a proc below
@@ -322,58 +320,6 @@
spawn(1)
LE.process()
-/mob/proc/PowerGlove(atom/A)
- return
-
-/mob/living/carbon/human/PowerGlove(atom/A)
- var/obj/item/clothing/gloves/color/yellow/power/G = src:gloves
- var/time = 100
- var/turf/T = get_turf(src)
- var/turf/U = get_turf(A)
- var/obj/structure/cable/cable = locate() in T
- if(!cable || !istype(cable))
- to_chat(src, "There is no cable here to power the gloves.")
- return
- if(world.time < G.next_shock)
- to_chat(src, "[G] aren't ready to shock again!")
- return
- src.visible_message("[name] fires an arc of electricity!", \
- "You fire an arc of electricity!", \
- "You hear the loud crackle of electricity!")
- var/datum/powernet/PN = cable.get_powernet()
- var/available = 0
- var/obj/item/projectile/beam/lightning/L = new /obj/item/projectile/beam/lightning/(get_turf(src))
- if(PN)
- available = PN.avail
- L.damage = PN.get_electrocute_damage()
- if(available >= 5000000)
- L.damage = 205
- if(L.damage >= 200)
- time = 200
- else if(L.damage >= 100)
- time = 150
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
- if(L.damage <= 0)
- qdel(L)
- if(L)
- playsound(get_turf(src), 'sound/effects/eleczap.ogg', 75, 1)
- L.tang = L.adjustAngle(get_angle(U,T))
- L.icon = midicon
- L.icon_state = "[L.tang]"
- L.firer = usr
- L.def_zone = get_organ_target()
- L.original = src
- L.current = U
- L.starting = U
- L.yo = U.y - T.y
- L.xo = U.x - T.x
- spawn( 1 )
- L.process()
-
- next_move = world.time + 12
- G.next_shock = world.time + time
// Simple helper to face what you clicked on, in case it should be needed in more than one place
/mob/proc/face_atom(var/atom/A)
@@ -419,4 +365,4 @@
else
var/turf/T = screen_loc2turf(modifiers["screen-loc"], get_turf(usr))
T.Click(location, control, params)
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 08c418778a3..d9daba46e40 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -605,10 +605,10 @@ var/list/uplink_items = list()
gamemodes = list(/datum/game_mode/nuclear)
/datum/uplink_item/ammo/machinegun
- name = "Box Magazine - 7.62x51mm"
- desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machine gun. By the time you need to use this, you'll already be on a pile of corpses."
+ name = "Box Magazine - 5.56x45mm"
+ desc = "A 50-round magazine of 5.56x45mm ammunition for use in the L6 SAW machine gun. By the time you need to use this, you'll already be on a pile of corpses."
reference = "762"
- item = /obj/item/ammo_box/magazine/m762
+ item = /obj/item/ammo_box/magazine/mm556x45
cost = 12
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 803a7ba0d80..3c8b96935ec 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -72,7 +72,7 @@ rcd light flash thingy on matter drain
if(T.z in config.station_levels)
// Increase health by 37.5% of original max, decrease delays between shots to 66%
turret.health += initial(turret.health) * 3 / 8
- turret.eprojectile = /obj/item/projectile/beam/heavylaser //Once you see it, you will know what it means to FEAR.
+ turret.eprojectile = /obj/item/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
to_chat(src, "Turrets upgraded.")
/datum/AI_Module/large/destroy_rcd
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index 5107ff7cab4..d1c5428d093 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -309,7 +309,9 @@
item_state = "alienpistol"
origin_tech = "combat=5;materials=4;powerstorage=3;abductor=3"
-/obj/item/weapon/gun/energy/decloner/alien/special_check(user)
+/obj/item/weapon/gun/energy/decloner/alien/can_trigger_gun(user)
+ if(!..())
+ return 0
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(H.get_species() != "Abductor")
@@ -631,4 +633,4 @@ Congratulations! You are now trained for xenobiology research!"}
icon_state = "abductor"
icon_closed = "abductor"
icon_opened = "abductoropen"
- material_drop = /obj/item/stack/sheet/mineral/abductor
\ No newline at end of file
+ material_drop = /obj/item/stack/sheet/mineral/abductor
diff --git a/code/game/gamemodes/steal_items.dm b/code/game/gamemodes/steal_items.dm
index fd648b05c7d..25d2807432e 100644
--- a/code/game/gamemodes/steal_items.dm
+++ b/code/game/gamemodes/steal_items.dm
@@ -35,7 +35,7 @@
/datum/theft_objective/hoslaser
name = "the head of security's recreated antique laser gun"
- typepath = /obj/item/weapon/gun/energy/hos
+ typepath = /obj/item/weapon/gun/energy/gun/hos
protected_jobs = list("Head Of Security")
/datum/theft_objective/hand_tele
@@ -244,4 +244,4 @@ datum/theft_objective/ai/check_special_completion(var/obj/item/device/aicard/C)
typepath = /obj/item/stack/sheet/mineral/uranium
min=10
max=30
- step=5
\ No newline at end of file
+ step=5
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index eab12bb22d5..7378cae2b85 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -100,10 +100,9 @@
/obj/machinery/porta_turret/proc/setup()
var/obj/item/weapon/gun/energy/E = installation //All energy-based weapons are applicable
- if(istext(installation)) E = text2path(installation)
- //var/obj/item/ammo_casing/shottype = E.projectile_type
+ var/obj/item/ammo_casing/shottype = E.ammo_type[1]
- projectile = initial(E.projectile_type)
+ projectile = shottype.projectile_type
eprojectile = projectile
shot_sound = initial(E.fire_sound)
eshot_sound = shot_sound
@@ -561,9 +560,6 @@ var/list/turret_icons
if(get_dist(src, L) > 7) //if it's too far away, why bother?
return TURRET_NOT_TARGET
- if(!check_trajectory(L, src)) //check if we have true line of sight
- return TURRET_NOT_TARGET
-
if(emagged) // If emagged not even the dead get a rest
return L.stat ? TURRET_SECONDARY_TARGET : TURRET_PRIORITY_TARGET
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 92bca16c5b7..a1559c4fb3a 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -203,7 +203,8 @@
if(istype(O,/obj/item/weapon/gun/energy/disabler/cyborg))
var/obj/item/weapon/gun/energy/disabler/cyborg/D = O
if(D.power_supply.charge < D.power_supply.maxcharge)
- D.power_supply.give(D.charge_cost)
+ var/obj/item/ammo_casing/energy/E = D.ammo_type[D.select]
+ D.power_supply.give(E.e_cost)
D.update_icon()
else
D.charge_tick = 0
diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm
index 82060d47bc2..ff24aa01027 100644
--- a/code/game/machinery/turrets.dm
+++ b/code/game/machinery/turrets.dm
@@ -227,15 +227,15 @@
if(1)
A = new /obj/item/projectile/beam(loc)
if(2)
- A = new /obj/item/projectile/beam/heavylaser(loc)
+ A = new /obj/item/projectile/beam/laser/heavylaser(loc)
if(3)
A = new /obj/item/projectile/beam/pulse(loc)
if(4)
A = new /obj/item/projectile/magic/change(loc)
if(5)
- A = new /obj/item/projectile/lasertag/blue(loc)
+ A = new /obj/item/projectile/beam/lasertag/bluetag(loc)
if(6)
- A = new /obj/item/projectile/lasertag/red(loc)
+ A = new /obj/item/projectile/beam/lasertag/redtag(loc)
A.original = target
use_power(500)
else
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index d95cbaff799..a92e949bafc 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -56,7 +56,7 @@
name = "CH-LC \"Solaris\" Laser Cannon"
icon_state = "mecha_laser"
energy_drain = 40
- projectile = /obj/item/projectile/beam/heavylaser
+ projectile = /obj/item/projectile/beam/laser/heavylaser
fire_sound = 'sound/weapons/lasercannonfire.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index bfb90de8cac..512baa30703 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -125,13 +125,13 @@
to_chat(usr, "This robot has had its disabler removed!")
return 0
- if(T.recharge_time <= 2)
+ if(T.charge_delay <= 2)
to_chat(R, "Maximum cooling achieved for this hardpoint!")
to_chat(usr, "There's no room for another cooling unit!")
return 0
else
- T.recharge_time = max(2 , T.recharge_time - 4)
+ T.charge_delay = max(2 , T.charge_delay - 4)
return 1
@@ -214,4 +214,4 @@
return 0
R.emagged = 1
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index c71f2e14182..fd3f5505f4f 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -114,7 +114,7 @@
bmark.pixel_x--
bmark.pixel_y--
- if(Proj.damage >= 20 || istype(Proj, /obj/item/projectile/practice))
+ if(Proj.damage >= 20 || istype(Proj, /obj/item/projectile/beam/practice))
bmark.icon_state = "scorch"
bmark.dir = pick(NORTH,SOUTH,EAST,WEST) // random scorch design
@@ -178,4 +178,4 @@
b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4)
b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4)
- Target.bulletholes.Add(src)
\ No newline at end of file
+ Target.bulletholes.Add(src)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 3fe6dc7102f..c4c5d3cea4c 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -140,7 +140,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40), \
- new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \
+ /*new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \ */
new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("easel", /obj/structure/easel, 3, one_per_turf = 1, on_floor = 1), \
diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm
index e0ac96c4feb..b0a1c45622d 100644
--- a/code/game/objects/items/weapons/chrono_eraser.dm
+++ b/code/game/objects/items/weapons/chrono_eraser.dm
@@ -41,12 +41,11 @@
icon = 'icons/obj/chronos.dmi'
icon_state = "chronogun"
item_state = "chronogun"
- w_class = 3.0
- projectile_type = "/obj/item/projectile/energy/chrono_beam"
- fire_sound = 'sound/weapons/Laser.ogg'
- charge_cost = 0
- fire_delay = 50
+ w_class = 3
flags = NODROP
+ ammo_type = list(/obj/item/ammo_casing/energy/chrono_beam)
+ can_charge = 0
+ fire_delay = 50
var/obj/item/weapon/chrono_eraser/TED = null
var/obj/effect/chrono_field/field = null
var/turf/startpos = null
@@ -60,12 +59,13 @@
qdel(src)
/obj/item/weapon/gun/energy/chrono_gun/dropped()
+ ..()
qdel(src)
/obj/item/weapon/gun/energy/chrono_gun/update_icon()
return
-/obj/item/weapon/gun/energy/chrono_gun/Fire()
+/obj/item/weapon/gun/energy/chrono_gun/process_fire()
if(field)
field_disconnect(field)
..()
@@ -125,18 +125,23 @@
nodamage = 1
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
-/obj/item/projectile/energy/chrono_beam/process()
+/obj/item/projectile/energy/chrono_beam/fire()
gun = firer.get_active_hand()
if(istype(gun))
return ..()
else
return 0
-/obj/item/projectile/energy/chrono_beam/on_hit(var/atom/target)
+/obj/item/projectile/energy/chrono_beam/on_hit(atom/target)
if(target && gun && isliving(target))
var/obj/effect/chrono_field/F = new(target.loc, target, gun)
gun.field_connect(F)
+/obj/item/ammo_casing/energy/chrono_beam
+ name = "eradication beam"
+ projectile_type = /obj/item/projectile/energy/chrono_beam
+ icon_state = "chronobolt"
+ e_cost = 0
/obj/effect/chrono_field
name = "eradication field"
@@ -256,4 +261,4 @@
#undef CHRONO_BEAM_RANGE
-#undef CHRONO_FRAME_COUNT
\ No newline at end of file
+#undef CHRONO_FRAME_COUNT
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 4a2ced79339..1cadbfbd14a 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -115,7 +115,7 @@
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/storage/belt/security/sec(src)
new /obj/item/taperoll/police(src)
- new /obj/item/weapon/gun/energy/hos(src)
+ new /obj/item/weapon/gun/energy/gun/hos(src)
new /obj/item/weapon/door_remote/head_of_security(src)
diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm
index 75fc6af84d9..4afbeaa4f15 100644
--- a/code/modules/admin/verbs/honksquad.dm
+++ b/code/modules/admin/verbs/honksquad.dm
@@ -120,8 +120,8 @@ var/global/sent_honksquad = 0
equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/waterflower(src), slot_in_backpack)
if(prob(50))
equip_to_slot_or_del(new /obj/item/weapon/gun/energy/clown(src), slot_in_backpack)
- else
- equip_to_slot_or_del(new /obj/item/weapon/gun/grenadelauncher/piecannon(src), slot_in_backpack)
+ //else
+ //equip_to_slot_or_del(new /obj/item/weapon/gun/grenadelauncher/piecannon(src), slot_in_backpack)
src.mutations.Add(CLUMSY)
@@ -134,4 +134,4 @@ var/global/sent_honksquad = 0
W.registered_name = real_name
equip_to_slot_or_del(W, slot_wear_id)
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm
index 6131962b881..0b84e6d065a 100644
--- a/code/modules/admin/verbs/striketeam_syndicate.dm
+++ b/code/modules/admin/verbs/striketeam_syndicate.dm
@@ -144,7 +144,7 @@ var/global/sent_syndicate_strike_team = 0
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses)
equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back)
- equip_to_slot_or_del(new /obj/item/ammo_box/magazine/m762, slot_in_backpack)
+ equip_to_slot_or_del(new /obj/item/ammo_box/magazine/mm556x45)
equip_to_slot_or_del(new /obj/item/ammo_box/magazine/m45(src), slot_in_backpack)
equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(src), slot_in_backpack)
@@ -173,4 +173,4 @@ var/global/sent_syndicate_strike_team = 0
W.registered_name = real_name
equip_to_slot_or_del(W, slot_wear_id)
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm
index c5e370f06f7..0f6f3dda06e 100644
--- a/code/modules/admin/verbs/vox_raiders.dm
+++ b/code/modules/admin/verbs/vox_raiders.dm
@@ -18,8 +18,8 @@ var/global/vox_tick = 1
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store)
- var/obj/item/weapon/gun/launcher/spikethrower/W = new(src)
- equip_to_slot_or_del(W, slot_r_hand)
+ //var/obj/item/weapon/gun/launcher/spikethrower/W = new(src)
+ //equip_to_slot_or_del(W, slot_r_hand)
if(2) // Vox engineer!
@@ -77,4 +77,4 @@ var/global/vox_tick = 1
vox_tick++
if (vox_tick > 4) vox_tick = 1
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/modules/clothing/spacesuits/rig/modules/combat.dm b/code/modules/clothing/spacesuits/rig/modules/combat.dm
index 2473fd24eb8..16ddf2bdd69 100644
--- a/code/modules/clothing/spacesuits/rig/modules/combat.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/combat.dm
@@ -119,7 +119,7 @@
gun.attack_self(holder.wearer)
return 1
- gun.Fire(target,holder.wearer)
+ gun.process_fire(target,holder.wearer)
return 1
/obj/item/rig_module/mounted/egun
@@ -168,7 +168,7 @@
active_power_cost = 10
passive_power_cost = 0
- gun_type = /obj/item/weapon/gun/energy/crossbow/ninja
+ gun_type = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/ninja
/obj/item/rig_module/mounted/energy_blade/process()
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 7775830b4a0..cb067591904 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1982,4 +1982,21 @@
. |= A.GetAccess()
/mob/living/carbon/human/is_mechanical()
- return ..() || (species.flags & ALL_RPARTS) != 0
\ No newline at end of file
+ return ..() || (species.flags & ALL_RPARTS) != 0
+
+/mob/living/carbon/human/can_use_guns(var/obj/item/weapon/gun/G)
+ . = ..()
+
+ if(G.trigger_guard == TRIGGER_GUARD_NORMAL)
+ if(HULK in mutations)
+ to_chat(src, "Your meaty finger is much too large for the trigger guard!")
+ return 0
+ if(species.flags & NOGUNS)
+ to_chat(src, "Your fingers don't fit in the trigger guard!")
+ return 0
+
+ if(martial_art && martial_art.name == "The Sleeping Carp") //great dishonor to famiry
+ to_chat(src, "Use of ranged weaponry would bring dishonor to the clan.")
+ return 0
+
+ return .
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 835f741be3d..c30e02f5881 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -46,7 +46,10 @@ emp_act
if((P.embed && prob(20 + max(P.damage - armor, -10))))
var/obj/item/weapon/shard/shrapnel/SP = new()
(SP.name) = "[P.name] shrapnel"
- (SP.desc) = "[SP.desc] It looks like it was fired from [P.shot_from]."
+ if(P.ammo_casing && P.ammo_casing.caliber)
+ (SP.desc) = "[SP.desc] It looks like it is a [P.ammo_casing.caliber] caliber round."
+ else
+ (SP.desc) = "[SP.desc] The round's caliber is unidentifiable."
(SP.loc) = organ
organ.embed(SP)
diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm
index 0a220accc98..b0806e66241 100644
--- a/code/modules/mob/living/carbon/human/interactive/functions.dm
+++ b/code/modules/mob/living/carbon/human/interactive/functions.dm
@@ -693,7 +693,7 @@
best = R
if(istype(R, /obj/item/weapon/gun))
var/obj/item/weapon/gun/G = R
- if(G.can_fire())
+ if(G.can_shoot())
best = R
break // gun with ammo? screw the rest
if(best && best != main_hand)
@@ -727,22 +727,23 @@
if(main_hand.force != 0)
if(istype(main_hand,/obj/item/weapon/gun))
var/obj/item/weapon/gun/G = main_hand
- if(G.special_check(src))
+ if(G.can_trigger_gun(src))
var/shouldFire = 1
if(istype(main_hand, /obj/item/weapon/gun/energy))
var/obj/item/weapon/gun/energy/P = main_hand
var/stunning = 0
- if(ispath(text2path(P.projectile_type), /obj/item/projectile/energy/electrode))
- stunning = 1
+ for(var/A in P.ammo_type)
+ if(ispath(A,/obj/item/ammo_casing/energy/electrode))
+ stunning = 1
var/mob/stunCheck = TARGET
if(stunning && stunCheck.stunned)
shouldFire = 0
if(shouldFire)
- if(!G.process_chambered())
- G.click_empty(src)
+ if(!G.can_shoot())
+ G.shoot_with_empty_chamber(src)
npcDrop(G, 1)
else
- G.Fire(TARGET, src)
+ G.process_fire(TARGET, src)
else
if(get_dist(src,TARGET) > 6)
if(!walk2derpless(TARGET))
@@ -871,4 +872,4 @@
else
A.stamp(S)
custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")] as they stamp \the [A] with \a [S]!")
- return
\ No newline at end of file
+ return
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index f28e884f92f..f3c48bce39a 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -855,3 +855,9 @@
tally += 10
return tally
+
+/mob/living/proc/can_use_guns(var/obj/item/weapon/gun/G)
+ if (G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser())
+ to_chat(src, "You don't have the dexterity to do this!")
+ return 0
+ return 1
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 4d994436489..cc50408148e 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -47,10 +47,6 @@
proj_sharp = 0
proj_edge = 0
- if(istype(P, /obj/item/projectile/beam/lightning)) //Stupid snowflake lightning gun.
- if(P.damage >= 200)
- src.dust()
-
if(!P.nodamage)
apply_damage(P.damage, P.damage_type, def_zone, armor)
return P.on_hit(src, armor, def_zone)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index 12dd032ba49..23b87eb0c51 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -403,7 +403,7 @@ Auto Patrol[]"},
shoot_sound = 'sound/weapons/laser.ogg'
if(emagged == 2)
if(lasercolor)
- projectile = /obj/item/projectile/lasertag
+ projectile = /obj/item/projectile/beam/lasertag
else
projectile = /obj/item/projectile/beam
else
@@ -411,9 +411,9 @@ Auto Patrol[]"},
shoot_sound = 'sound/weapons/Taser.ogg'
projectile = /obj/item/projectile/energy/electrode
else if(lasercolor == "b")
- projectile = /obj/item/projectile/lasertag/blue
+ projectile = /obj/item/projectile/beam/lasertag/bluetag
else if(lasercolor == "r")
- projectile = /obj/item/projectile/lasertag/red
+ projectile = /obj/item/projectile/beam/lasertag/redtag
/mob/living/simple_animal/bot/ed209/proc/shootAt(mob/target)
if(lastfired && world.time - lastfired < shot_delay)
@@ -491,10 +491,10 @@ Auto Patrol[]"},
if(!disabled)
var/lasertag_check = 0
if((lasercolor == "b"))
- if(istype(Proj, /obj/item/projectile/lasertag/red))
+ if(istype(Proj, /obj/item/projectile/beam/lasertag/redtag))
lasertag_check++
else if((lasercolor == "r"))
- if(istype(Proj, /obj/item/projectile/lasertag/blue))
+ if(istype(Proj, /obj/item/projectile/beam/lasertag/bluetag))
lasertag_check++
if(lasertag_check)
icon_state = "[lasercolor]ed2090"
diff --git a/code/modules/mob/living/simple_animal/vox.dm b/code/modules/mob/living/simple_animal/vox.dm
index 3b34ddaf143..0ca934739d5 100644
--- a/code/modules/mob/living/simple_animal/vox.dm
+++ b/code/modules/mob/living/simple_animal/vox.dm
@@ -65,9 +65,9 @@
if ((O.client && !( O.blinded )))
to_chat(O, "\red [src] launches a razor-sharp quill at [target]!")
- var/obj/item/weapon/arrow/quill/Q = new(loc)
- Q.fingerprintslast = src.ckey
- Q.throw_at(target,10,30)
+ //var/obj/item/weapon/arrow/quill/Q = new(loc)
+ //Q.fingerprintslast = src.ckey
+ //Q.throw_at(target,10,30)
quills--
spawn(100)
@@ -155,4 +155,4 @@
desc = "A series of metallic lenses and chains."
icon = 'icons/obj/clothing/hats.dmi'
icon_state = "amp"
- item_state = "amp"
\ No newline at end of file
+ item_state = "amp"
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index 169e968afaf..ab3c224ac08 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -17,7 +17,6 @@
var/randomspread = 0 //Randomspread for automatics
var/click_cooldown_override = 0 //Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown.
-
/obj/item/ammo_casing/New()
..()
if(projectile_type)
@@ -32,6 +31,11 @@
icon_state = "[initial(icon_state)][BB ? "-live" : ""]"
desc = "[initial(desc)][BB ? "" : " This one is spent"]"
+/obj/item/ammo_casing/proc/newshot() //For energy weapons, shotgun shells and wands (!).
+ if (!BB)
+ BB = new projectile_type(src)
+ return
+
/obj/item/ammo_casing/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/ammo_box))
var/obj/item/ammo_box/box = I
@@ -99,7 +103,7 @@
update_icon()
/obj/item/ammo_box/Destroy()
- for(atom/A in stored_ammo)
+ for(var/atom/A in stored_ammo)
qdel(A)
stored_ammo = null
return ..()
@@ -128,7 +132,7 @@
for(var/obj/item/ammo_casing/AC in stored_ammo)
if(!AC.BB)//found a spent ammo
stored_ammo -= AC
- AC.loc = get_turf(src.loc)
+ AC.loc = get_turf(loc)
stored_ammo += R
R.loc = src
diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm
index 010ce185acb..980e9fb16bc 100644
--- a/code/modules/projectiles/ammunition/ammo_casings.dm
+++ b/code/modules/projectiles/ammunition/ammo_casings.dm
@@ -96,7 +96,7 @@
icon_state = "gshell"
projectile_type = /obj/item/projectile/bullet/pellet
pellets = 6
- deviation = 25
+ variance = 25
/obj/item/ammo_casing/shotgun/rubbershot
name = "rubber shot"
@@ -104,7 +104,7 @@
icon_state = "bshell"
projectile_type = /obj/item/projectile/bullet/rpellet
pellets = 6
- deviation = 25
+ variance = 25
materials = list(MAT_METAL=4000)
/obj/item/ammo_casing/shotgun/beanbag
@@ -121,17 +121,17 @@
projectile_type = /obj/item/projectile/bullet/pellet/weak
materials = list(MAT_METAL=250)
pellets = 5
- deviation = 25
+ variance = 25
/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
+ projectile_type = /obj/item/projectile/bullet/pellet/overload
materials = list(MAT_METAL=250)
pellets = 5
- deviation = 40
+ variance = 40
/obj/item/ammo_casing/shotgun/improvised/overload/New()
..()
@@ -191,7 +191,7 @@
icon_state = "ionshell"
projectile_type = /obj/item/projectile/ion/weak
pellets = 4
- deviation = 35
+ variance = 35
/obj/item/ammo_casing/shotgun/laserslug
name = "laser slug"
diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm
index b4e979e3b20..4fc5295e8ae 100644
--- a/code/modules/projectiles/ammunition/energy.dm
+++ b/code/modules/projectiles/ammunition/energy.dm
@@ -110,7 +110,8 @@
/obj/item/ammo_casing/energy/temp/newshot()
..()
- BB.temperature = temperature
+ var/obj/item/projectile/temp/T = BB
+ T.temperature = temperature
/obj/item/ammo_casing/energy/meteor
projectile_type = /obj/item/projectile/meteor
@@ -202,7 +203,7 @@
projectile_type = /obj/item/projectile/energy/shock_revolver
/obj/item/ammo_casing/energy/toxplasma
- projectile_type = /obj/item/projectile/toxplasma
+ projectile_type = /obj/item/projectile/energy/toxplasma
fire_sound = "sound/weapons/taser2.ogg"
select_name = "plasma dart"
@@ -214,7 +215,7 @@
/obj/item/ammo_casing/energy/sniper
projectile_type = /obj/item/projectile/beam/sniper
fire_sound = 'sound/weapons/marauder.ogg'
- fire_delay = 50
+ delay = 50
select_name = "sniper beam"
/obj/item/ammo_casing/energy/teleport
@@ -222,3 +223,8 @@
fire_sound = 'sound/weapons/wave.ogg'
e_cost = 1250
select_name = "teleport beam"
+ var/teleport_target
+
+/obj/item/ammo_casing/energy/teleport/newshot()
+ var/obj/item/projectile/energy/teleport/T = BB
+ T.teleport_target = teleport_target
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index e26e536e62a..367270d0cd1 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -50,7 +50,7 @@
R.loc = src
if(bullet)
- bullet.loc = get_turf(src.loc)
+ bullet.loc = get_turf(loc)
return 1
return 0
diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm
index 9642923c452..c17a7948fcb 100644
--- a/code/modules/projectiles/firing.dm
+++ b/code/modules/projectiles/firing.dm
@@ -28,7 +28,7 @@
if (zone_override)
BB.def_zone = zone_override
else
- BB.def_zone = user.zone_selected
+ BB.def_zone = user.zone_sel.selecting
BB.suppressed = quiet
if(reagents && BB.reagents)
@@ -60,18 +60,18 @@
/obj/item/projectile/proc/preparePixelProjectile(atom/target, var/turf/targloc, mob/living/user, params, spread)
var/turf/curloc = get_turf(user)
- src.loc = get_turf(user)
- src.starting = get_turf(user)
- src.current = curloc
- src.yo = targloc.y - curloc.y
- src.xo = targloc.x - curloc.x
+ loc = get_turf(user)
+ starting = get_turf(user)
+ current = curloc
+ yo = targloc.y - curloc.y
+ xo = targloc.x - curloc.x
if(params)
var/list/mouse_control = params2list(params)
if(mouse_control["icon-x"])
- src.p_x = text2num(mouse_control["icon-x"])
+ p_x = text2num(mouse_control["icon-x"])
if(mouse_control["icon-y"])
- src.p_y = text2num(mouse_control["icon-y"])
+ p_y = text2num(mouse_control["icon-y"])
if(mouse_control["screen-loc"])
//Split screen-loc up into X+Pixel_X and Y+Pixel_Y
var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",")
@@ -90,6 +90,6 @@
var/ox = round(screenview/2) //"origin" x
var/oy = round(screenview/2) //"origin" y
var/angle = Atan2(y - oy, x - ox)
- src.Angle = angle
+ Angle = angle
if(spread)
- src.Angle += spread
+ Angle += spread
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 7d72082b297..8233a172af8 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -65,7 +65,6 @@
..()
if(F)
verbs += /obj/item/weapon/gun/proc/toggle_gunlight
- new /datum/action/item_action/toggle_gunlight(src)
build_zooming()
/obj/item/weapon/gun/examine(mob/user)
@@ -120,7 +119,7 @@
return
if(!ismob(target) || user.a_intent == "harm") //melee attack
return
- if(target == user && user.zone_selected != "mouth") //so we can't shoot ourselves (unless mouth selected)
+ if(target == user && user.zone_sel.selecting != "mouth") //so we can't shoot ourselves (unless mouth selected)
return
if(istype(user))//Check if the user can use the gun, if the user isn't alive(turrets) assume it can.
@@ -133,7 +132,7 @@
return
if(flag)
- if(user.zone_selected == "mouth")
+ if(user.zone_sel.selecting == "mouth")
handle_suicide(user, target, params)
return
@@ -222,7 +221,7 @@ obj/item/weapon/gun/proc/newshot()
user.update_inv_l_hand()
else
user.update_inv_r_hand()
- feedback_add_details("gun_fired","[src.type]")
+ feedback_add_details("gun_fired","[type]")
/obj/item/weapon/gun/attack(mob/M as mob, mob/user)
if(user.a_intent == "harm") //Flogging
@@ -239,15 +238,12 @@ obj/item/weapon/gun/proc/newshot()
return
to_chat(user, "You click [S] into place on [src].")
if(S.on)
- SetLuminosity(0)
+ set_light(0)
F = S
I.loc = src
update_icon()
update_gunlight(user)
verbs += /obj/item/weapon/gun/proc/toggle_gunlight
- var/datum/action/A = new /datum/action/item_action/toggle_gunlight(src)
- if(loc == user)
- A.Grant(user)
if(istype(I, /obj/item/weapon/screwdriver))
if(F && can_flashlight)
@@ -259,8 +255,6 @@ obj/item/weapon/gun/proc/newshot()
S.update_brightness(user)
update_icon()
verbs -= /obj/item/weapon/gun/proc/toggle_gunlight
- for(var/datum/action/item_action/toggle_gunlight/TGL in actions)
- qdel(TGL)
if(unique_rename)
if(istype(I, /obj/item/weapon/pen))
@@ -351,7 +345,7 @@ obj/item/weapon/gun/proc/newshot()
semicd = 1
- if(!do_mob(user, target, 120) || user.zone_selected != "mouth")
+ if(!do_mob(user, target, 120) || user.zone_sel.selecting != "mouth")
if(user)
if(user == target)
user.visible_message("[user] decided life was worth living.")
diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm
index 56852f4e1ae..a503e92dd6b 100644
--- a/code/modules/projectiles/guns/alien.dm
+++ b/code/modules/projectiles/guns/alien.dm
@@ -1,71 +1,5 @@
-//Vox pinning weapon.
-/obj/item/weapon/gun/launcher/spikethrower
-
- name = "Vox spike thrower"
- desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
-
- var/last_regen = 0
- var/spike_gen_time = 100
- var/max_spikes = 3
- var/spikes = 3
- release_force = 30
- icon = 'icons/obj/gun.dmi'
- icon_state = "spikethrower3"
- item_state = "spikethrower"
- fire_sound_text = "a strange noise"
- fire_sound = 'sound/weapons/bladeslice.ogg'
-
-/obj/item/weapon/gun/launcher/spikethrower/New()
- ..()
- processing_objects.Add(src)
- last_regen = world.time
-
-/obj/item/weapon/gun/launcher/spikethrower/Destroy()
- processing_objects.Remove(src)
- return ..()
-
-/obj/item/weapon/gun/launcher/spikethrower/process()
-
- if(spikes < max_spikes && world.time > last_regen + spike_gen_time)
- spikes++
- last_regen = world.time
- update_icon()
-
-/obj/item/weapon/gun/launcher/spikethrower/examine(mob/user)
- ..(user)
- to_chat(user, "It has [spikes] [spikes == 1 ? "spike" : "spikes"] remaining.")
-
-/obj/item/weapon/gun/launcher/spikethrower/update_icon()
- icon_state = "spikethrower[spikes]"
-
-/obj/item/weapon/gun/launcher/spikethrower/emp_act(severity)
- return
-
-/obj/item/weapon/gun/launcher/spikethrower/special_check(user)
- if(istype(user,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = user
- if(H.species && H.species.name != "Vox" && H.species.name != "Vox Armalis")
- to_chat(user, "\red \The [src] does not respond to you!")
- return 0
- return 1
-
-/obj/item/weapon/gun/launcher/spikethrower/update_release_force()
- return
-
-/obj/item/weapon/gun/launcher/spikethrower/chamber_round()
- if(in_chamber) return 1
- if(spikes < 1) return 0
-
- spikes--
- in_chamber = new /obj/item/weapon/spike(src)
- return 1
-
-/obj/item/weapon/gun/launcher/spikethrower/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)
- if(..()) update_icon()
-
//This gun only functions for armalis. The on-sprite is too huge to render properly on other sprites.
/obj/item/weapon/gun/energy/noisecannon
-
name = "alien heavy cannon"
desc = "It's some kind of enormous alien weapon, as long as a man is tall."
@@ -73,15 +7,11 @@
icon_state = "noisecannon"
item_state = "noisecannon"
recoil = 1
-
force = 10
- projectile_type = "/obj/item/projectile/energy/sonic"
+ ammo_type = "/obj/item/projectile/energy/sonic"
cell_type = "/obj/item/weapon/stock_parts/cell/super"
- fire_delay = 40
fire_sound = 'sound/effects/basscannon.ogg'
- var/mode = 1
-
/obj/item/weapon/gun/energy/noisecannon/attack_hand(mob/user as mob)
if(loc != user)
var/mob/living/carbon/human/H = user
@@ -89,16 +19,18 @@
if(H.species.name == "Vox Armalis")
..()
return
- to_chat(user, "\red \The [src] is far too large for you to pick up.")
+ to_chat(user, "\The [src] is far too large for you to pick up.")
return
-/obj/item/weapon/gun/energy/noisecannon/process_chambered() //Does not have ammo.
- in_chamber = new projectile_type(src)
- return 1
-
/obj/item/weapon/gun/energy/noisecannon/update_icon()
return
+//Casing
+/obj/item/ammo_casing/energy/sonic
+ projectile_type = /obj/item/projectile/energy/sonic
+ fire_sound = 'sound/effects/basscannon.ogg'
+ delay = 40
+
//Projectile.
/obj/item/projectile/energy/sonic
name = "distortion"
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index df023424265..32c3009f312 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -3,6 +3,7 @@
name = "energy gun"
desc = "A basic energy-based gun."
fire_sound = 'sound/weapons/Taser.ogg'
+ fire_sound_text = "laser blast"
var/obj/item/weapon/stock_parts/cell/power_supply //What type of power cell this uses
var/cell_type = /obj/item/weapon/stock_parts/cell
@@ -42,23 +43,24 @@
update_icon()
/obj/item/weapon/gun/energy/Destroy()
- if(self_recharge)
+ if(selfcharge)
processing_objects.Remove(src)
return ..()
/obj/item/weapon/gun/energy/process()
if(selfcharge) //Every [recharge_time] ticks, recharge a shot for the cyborg
charge_tick++
- if(charge_tick < recharge_time)
+ if(charge_tick < charge_delay)
return 0
charge_tick = 0
if(!power_supply)
return 0 // check if we actually need to recharge
+ var/obj/item/ammo_casing/energy/E = ammo_type[select]
if(use_external_power)
var/obj/item/weapon/stock_parts/cell/external = get_external_power_supply()
- if(!external || !external.use(charge_cost/10)) //Take power from the borg...
+ if(!external || !external.use((E.e_cost)/10)) //Take power from the borg...
return 0 //Note, uses /10 because of shitty mods to the cell system
- power_supply.give(charge_cost) //... to recharge the shot
+ power_supply.give(E.e_cost) //... to recharge the shot
update_icon()
/obj/item/weapon/gun/energy/attack_self(mob/living/user as mob)
@@ -136,11 +138,11 @@
toggle_gunlight()
/obj/item/weapon/gun/energy/suicide_act(mob/user)
- if (src.can_shoot())
- user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.")
+ if (can_shoot())
+ user.visible_message("[user] is putting the barrel of the [name] in \his mouth. It looks like \he's trying to commit suicide.")
sleep(25)
if(user.l_hand == src || user.r_hand == src)
- user.visible_message("[user] melts \his face off with the [src.name]!")
+ user.visible_message("[user] melts \his face off with the [name]!")
playsound(loc, fire_sound, 50, 1, -1)
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
power_supply.use(shot.e_cost)
@@ -150,21 +152,21 @@
user.visible_message("[user] panics and starts choking to death!")
return(OXYLOSS)
else
- user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!")
+ user.visible_message("[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!")
playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1)
return (OXYLOSS)
/obj/item/weapon/gun/energy/proc/robocharge()
- if(isrobot(src.loc))
- var/mob/living/silicon/robot/R = src.loc
+ if(isrobot(loc))
+ var/mob/living/silicon/robot/R = loc
if(R && R.cell)
var/obj/item/ammo_casing/energy/shot = ammo_type[select] //Necessary to find cost of shot
if(R.cell.use(shot.e_cost/10)) //Take power from the borg... //Divided by 10 because cells and charge costs are fucked.
power_supply.give(shot.e_cost) //... to recharge the shot
/obj/item/weapon/gun/energy/proc/get_external_power_supply()
- if(istype(src.loc, /obj/item/rig_module))
- var/obj/item/rig_module/module = src.loc
+ if(istype(loc, /obj/item/rig_module))
+ var/obj/item/rig_module/module = loc
if(module.holder && module.holder.wearer)
var/mob/living/carbon/human/H = module.holder.wearer
if(istype(H) && H.back)
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 46add8b8b47..952c61aaf00 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -92,9 +92,9 @@
/obj/item/weapon/gun/energy/lasercannon/mounted
name = "mounted laser cannon"
- self_recharge = 1
+ selfcharge = 1
use_external_power = 1
- recharge_time = 10
+ charge_delay = 10
/obj/item/weapon/gun/energy/lasercannon/cyborg
@@ -130,7 +130,6 @@
origin_tech = "combat=1;magnets=2"
clumsy_check = 0
needs_permit = 0
- pin = /obj/item/device/firing_pin/tag/blue
ammo_x_offset = 2
selfcharge = 1
@@ -142,6 +141,5 @@
origin_tech = "combat=1;magnets=2"
clumsy_check = 0
needs_permit = 0
- pin = /obj/item/device/firing_pin/tag/red
ammo_x_offset = 2
selfcharge = 1
diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm
index b53563c81a7..ff9ef57a322 100644
--- a/code/modules/projectiles/guns/energy/nuclear.dm
+++ b/code/modules/projectiles/guns/energy/nuclear.dm
@@ -23,7 +23,7 @@
/obj/item/weapon/gun/energy/gun/mounted
name = "mounted energy gun"
- self_recharge = 1
+ selfcharge = 1
use_external_power = 1
/obj/item/weapon/gun/energy/gun/mini
@@ -37,8 +37,8 @@
can_flashlight = 0 // Can't attach or detach the flashlight, and override it's icon update
/obj/item/weapon/gun/energy/gun/mini/New()
- cell.maxcharge = 6000
- cell.charge = 6000
+ power_supply.maxcharge = 6000
+ power_supply.charge = 6000
F = new /obj/item/device/flashlight/seclite(src)
..()
@@ -84,7 +84,6 @@
origin_tech = "combat=3;materials=5;powerstorage=3"
var/fail_tick = 0
charge_delay = 5
- pin = null
can_charge = 0
ammo_x_offset = 1
ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/disabler)
@@ -106,11 +105,11 @@
switch(fail_tick)
if(0 to 200)
fail_tick += (2*(100-reliability))
- M.rad_act(40)
+ M.apply_effect(rand(3,120), IRRADIATE)
to_chat(M, "Your [name] feels warmer.")
if(201 to INFINITY)
- SSobj.processing.Remove(src)
- M.rad_act(80)
+ processing_objects.Remove(src)
+ M.apply_effect(300, IRRADIATE)
crit_fail = 1
to_chat(M, "Your [name]'s reactor overloads!")
@@ -130,27 +129,3 @@
overlays += "[icon_state]_fail_1"
if(151 to INFINITY)
overlays += "[icon_state]_fail_2"
-
-/obj/item/weapon/gun/energy/gun/turret/attack_self(mob/living/user as mob)
- switch(mode)
- if(0)
- mode = 1
- charge_cost = 500
- fire_sound = 'sound/weapons/Laser.ogg'
- to_chat(user, "\red [src.name] is now set to kill.")
- projectile_type = /obj/item/projectile/beam
- modifystate = "energykill"
- fire_delay = 0
- if(1)
- mode = 0
- charge_cost = 1000
- fire_sound = 'sound/weapons/Taser.ogg'
- to_chat(user, "\red [src.name] is now set to stun.")
- projectile_type = /obj/item/projectile/energy/electrode
- modifystate = "energystun"
- fire_delay = 15
- update_icon()
- if(user.l_hand == src)
- user.update_inv_l_hand()
- else
- user.update_inv_r_hand()
diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm
index b8ddc12a691..0587040afe4 100644
--- a/code/modules/projectiles/guns/energy/pulse.dm
+++ b/code/modules/projectiles/guns/energy/pulse.dm
@@ -54,7 +54,7 @@
ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse)
/obj/item/weapon/gun/energy/pulse/destroyer/attack_self(mob/living/user)
- to_chat(user, "[src.name] has three settings, and they are all DESTROY.")
+ to_chat(user, "[name] has three settings, and they are all DESTROY.")
/obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911
name = "\improper M1911-P"
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index e0328ac6058..949e0ef7d7d 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -173,7 +173,7 @@
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/reload()
power_supply.give(5000)
if(!suppressed)
- playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
+ playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
else
to_chat(loc, "[src] silently charges up.")
update_icon()
@@ -200,6 +200,10 @@
holds_charge = TRUE
unique_frequency = TRUE
+/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/ninja
+ name = "energy dart thrower"
+ ammo_type = list(/obj/item/ammo_casing/energy/dart)
+
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large
name = "energy crossbow"
desc = "A reverse engineered weapon using syndicate technology."
@@ -218,8 +222,8 @@
/obj/item/weapon/gun/energy/kinetic_accelerator/suicide_act(mob/user)
if(!suppressed)
- playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
- user.visible_message("[user] cocks the [src.name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!")
+ playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
+ user.visible_message("[user] cocks the [name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!")
shoot_live_shot()
return (OXYLOSS)
@@ -235,9 +239,9 @@
flags = CONDUCT | OPENCONTAINER
attack_verb = list("attacked", "slashed", "cut", "sliced")
force = 12
- sharpness = IS_SHARP
+ sharp = 1
+ edge = 1
can_charge = 0
- heat = 3800
/obj/item/weapon/gun/energy/plasmacutter/examine(mob/user)
..()
@@ -406,7 +410,7 @@ obj/item/weapon/gun/energy/staff/focus
var/e_cost = 1000
origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2"
- ammo_type = /obj/item/ammo_casing/energy/temp
+ ammo_type = list(/obj/item/ammo_casing/energy/temp)
cell_type = "/obj/item/weapon/stock_parts/cell"
var/powercost = ""
@@ -427,8 +431,9 @@ obj/item/weapon/gun/energy/staff/focus
/obj/item/weapon/gun/energy/temperature/newshot()
..()
- chambered.temperature = temperature
- chambered.e_cost = e_cost
+ var/obj/item/ammo_casing/energy/temp/T = chambered
+ T.temperature = temperature
+ T.e_cost = e_cost
/obj/item/weapon/gun/energy/temperature/attack_self(mob/living/user as mob)
user.set_machine(src)
@@ -459,23 +464,22 @@ obj/item/weapon/gun/energy/staff/focus
add_fingerprint(usr)
return
-
/obj/item/weapon/gun/energy/temperature/process()
switch(temperature)
if(0 to 100)
- charge_cost = 3000
+ e_cost = 3000
powercost = "High"
if(100 to 250)
- charge_cost = 2000
+ e_cost = 2000
powercost = "Medium"
if(251 to 300)
- charge_cost = 1000
+ e_cost = 1000
powercost = "Low"
if(301 to 400)
- charge_cost = 2000
+ e_cost = 2000
powercost = "Medium"
if(401 to 1000)
- charge_cost = 3000
+ e_cost = 3000
powercost = "High"
switch(powercost)
if("High") powercostcolor = "orange"
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 5e3f5128d6f..6fdbe55c171 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -9,7 +9,7 @@
/obj/item/weapon/gun/energy/taser/mounted
name = "mounted taser gun"
- self_recharge = 1
+ selfcharge = 1
use_external_power = 1
/obj/item/weapon/gun/energy/taser/cyborg
diff --git a/code/modules/projectiles/guns/energy/telegun.dm b/code/modules/projectiles/guns/energy/telegun.dm
index e145e2ccbcf..0113f11068c 100644
--- a/code/modules/projectiles/guns/energy/telegun.dm
+++ b/code/modules/projectiles/guns/energy/telegun.dm
@@ -35,3 +35,7 @@
var/desc = input("Please select a location to lock in.", "Telegun Target Interface") in L
teleport_target = L[desc]
+
+/obj/item/weapon/gun/energy/telegun/newshot()
+ var/obj/item/ammo_casing/energy/teleport/T = chambered
+ T.teleport_target = teleport_target
diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm
index 5d883ac7de7..7af9c18ea7d 100644
--- a/code/modules/projectiles/guns/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/grenade_launcher.dm
@@ -15,7 +15,7 @@
/obj/item/weapon/gun/grenadelauncher/examine(mob/user)
if(..(user, 2))
- to_chat(user, "[grenades.len] / [max_grenades] [ammo_name]s.")
+ to_chat(user, "[grenades.len] / [max_grenades] grenades.")
/obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params)
if((istype(I, /obj/item/weapon/grenade)))
@@ -24,10 +24,10 @@
return
I.loc = src
grenades += I
- to_chat(user, "You put the [ammo_name] in the [name].")
- to_chat(user, "[grenades.len] / [max_grenades] [ammo_name]s.")
+ to_chat(user, "You put the grenade in the [name].")
+ to_chat(user, "[grenades.len] / [max_grenades] grenades.")
else
- to_chat(user, "The grenade launcher cannot hold more [ammo_name]s.")
+ to_chat(user, "The grenade launcher cannot hold more grenades.")
/obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag)
if(target == user)
@@ -45,8 +45,8 @@
grenades -= F
F.loc = user.loc
F.throw_at(target, 30, 2, user)
- message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
- log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
+ message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([name]).")
+ log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([name]).")
F.active = 1
F.icon_state = initial(icon_state) + "_active"
playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index b64fb37e1c6..299c87b536f 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -5,6 +5,7 @@
icon_state = "staffofnothing"
item_state = "staff"
fire_sound = 'sound/weapons/emitter.ogg'
+ fire_sound_text = "energy blast"
flags = CONDUCT
w_class = 5
var/max_charges = 6
@@ -75,6 +76,6 @@
return
/obj/item/weapon/gun/magic/suicide_act(mob/user)
- user.visible_message("[user] is twisting the [src.name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.")
+ user.visible_message("[user] is twisting the [name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.")
playsound(loc, fire_sound, 50, 1, -1)
return FIRELOSS
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index c6d5bc4bf00..abde404e87d 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -67,7 +67,7 @@
var/message ="You irradiate yourself with pure energy! "
message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?")
to_chat(user, message)
- user.adjustBurnLoss(500)
+ user.adjustFireLoss(500)
charges--
..()
diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm
index bd5f6b23e79..032874c4918 100644
--- a/code/modules/projectiles/guns/medbeam.dm
+++ b/code/modules/projectiles/guns/medbeam.dm
@@ -48,7 +48,7 @@
spawn(0)
current_beam.Start()
- feedback_add_details("gun_fired","[src.type]")
+ feedback_add_details("gun_fired","[type]")
/obj/item/weapon/gun/medbeam/process()
var/mob/living/carbon/human/H = loc
diff --git a/code/modules/projectiles/guns/mounted.dm b/code/modules/projectiles/guns/mounted.dm
index b200dd1d6a7..592908a6b87 100644
--- a/code/modules/projectiles/guns/mounted.dm
+++ b/code/modules/projectiles/guns/mounted.dm
@@ -12,7 +12,7 @@
/obj/item/weapon/gun/energy/advtaser/mounted/dropped()//if somebody manages to drop this somehow...
..()
- src.loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases.
+ loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases.
/obj/item/weapon/gun/energy/laser/mounted
name = "mounted laser"
@@ -28,4 +28,4 @@
/obj/item/weapon/gun/energy/laser/mounted/dropped()
..()
- src.loc = null
+ loc = null
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index fddc09349ab..3fc01b0a5b5 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -96,7 +96,7 @@
if(user.l_hand != src && user.r_hand != src)
..()
return
- to_chat(user, "You unscrew [silenced] from [src].")
+ to_chat(user, "You unscrew [suppressed] from [src].")
user.put_in_hands(suppressed)
fire_sound = S.oldsound
w_class = S.initial_w_class
@@ -108,7 +108,7 @@
/obj/item/weapon/gun/projectile/attack_self(mob/living/user as mob)
var/obj/item/ammo_casing/AC = chambered //Find chambered round
if(magazine)
- magazine.loc = get_turf(src.loc)
+ magazine.loc = get_turf(loc)
user.put_in_hands(magazine)
magazine.update_icon()
magazine = null
@@ -136,18 +136,18 @@
return boolets
/obj/item/weapon/gun/projectile/suicide_act(mob/user)
- if (src.chambered && src.chambered.BB && !src.chambered.BB.nodamage)
- user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.")
+ if (chambered && chambered.BB && !chambered.BB.nodamage)
+ user.visible_message("[user] is putting the barrel of the [name] in \his mouth. It looks like \he's trying to commit suicide.")
sleep(25)
if(user.l_hand == src || user.r_hand == src)
process_fire(user, user, 0, zone_override = "head")
- user.visible_message("[user] blows \his brains out with the [src.name]!")
+ user.visible_message("[user] blows \his brains out with the [name]!")
return(BRUTELOSS)
else
user.visible_message("[user] panics and starts choking to death!")
return(OXYLOSS)
else
- user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!")
+ user.visible_message("[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!")
playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1)
return (OXYLOSS)
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 8e700c92cc0..b3d09e049cd 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -1,6 +1,5 @@
/obj/item/weapon/gun/projectile/automatic
w_class = 3.0
- automatic = 1
var/alarmed = 0
var/select = 1
can_suppress = 1
@@ -37,14 +36,14 @@
if(istype(AM, mag_type))
if(magazine)
to_chat(user, "You perform a tactical reload on \the [src], replacing the magazine.")
- magazine.forceMove(get_turf(src.loc))
+ magazine.loc = get_turf(loc)
magazine.update_icon()
magazine = null
else
to_chat(user, "You insert the magazine into \the [src].")
user.remove_from_mob(AM)
magazine = AM
- magazine.forceMove(src)
+ magazine.loc = src
chamber_round()
A.update_icon()
update_icon()
@@ -74,7 +73,7 @@
/obj/item/weapon/gun/projectile/automatic/proc/empty_alarm()
if(!chambered && !get_ammo() && !alarmed)
- playsound(src.loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
+ playsound(loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
update_icon()
alarmed = 1
return
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 66e404a7de8..1a9da6fcf22 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -45,7 +45,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round(0)
if(CB)
- CB.loc = get_turf(src.loc)
+ CB.loc = get_turf(loc)
CB.SpinAnimation(10, 1)
CB.update_icon()
num_unloaded++
@@ -124,7 +124,7 @@
afterattack(user, user) //you know the drill
user.visible_message("[src] goes off!", "[src] goes off in your face!")
return
- if(do_after(user, 30/A.toolspeed, target = src))
+ if(do_after(user, 30, target = src))
if(magazine.ammo_count())
to_chat(user, "You can't modify it!")
return
@@ -173,7 +173,7 @@
name = "\improper Russian Revolver"
desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism that spins the chamber before each trigger pull."
origin_tech = "combat=2;materials=2"
- mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357
+ mag_type = /obj/item/ammo_box/magazine/internal/rus357
var/spun = 0
@@ -211,7 +211,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round()
chambered = null
- CB.loc = get_turf(src.loc)
+ CB.loc = get_turf(loc)
CB.update_icon()
num_unloaded++
if (num_unloaded)
@@ -234,7 +234,6 @@
return
if(ishuman(user))
- var/mob/living/carbon/human/H = user
if(!spun)
to_chat(user, "You need to spin the revolver's chamber first!")
return
@@ -245,12 +244,11 @@
var/obj/item/ammo_casing/AC = chambered
if(AC.fire(user, user))
playsound(user, fire_sound, 50, 1)
- var/zone = check_zone(user.zone_selected)
- var/obj/item/bodypart/affecting = H.get_bodypart(zone)
+ var/zone = check_zone(user.zone_sel.selecting)
if(zone == "head" || zone == "eyes" || zone == "mouth")
- shoot_self(user, affecting)
+ shoot_self(user, zone)
else
- user.visible_message("[user.name] cowardly fires [src] at \his [affecting.name]!", "You cowardly fire [src] at your [affecting.name]!", "You hear a gunshot!")
+ user.visible_message("[user.name] cowardly fires [src] at \his [zone]!", "You cowardly fire [src] at your [zone]!", "You hear a gunshot!")
return
user.visible_message("*click*")
diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm
index a82caddeba1..b2d01b303ed 100644
--- a/code/modules/projectiles/guns/projectile/rocket.dm
+++ b/code/modules/projectiles/guns/projectile/rocket.dm
@@ -45,8 +45,8 @@
playsound(user.loc, 'sound/effects/bang.ogg', 50, 1)
M.primed = 1
M.throw_at(target, missile_range, missile_speed,user)
- message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).")
- log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).")
+ message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([name]).")
+ log_game("[key_name_admin(user)] used a rocket launcher ([name]).")
rockets -= I
qdel(I)
return
diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm
index 5c4856d2503..4cb8a59b305 100644
--- a/code/modules/projectiles/guns/projectile/saw.dm
+++ b/code/modules/projectiles/guns/projectile/saw.dm
@@ -39,7 +39,7 @@
else if(cover_open && magazine)
//drop the mag
magazine.update_icon()
- magazine.loc = get_turf(src.loc)
+ magazine.loc = get_turf(loc)
user.put_in_hands(magazine)
magazine = null
update_icon()
@@ -69,7 +69,7 @@
. = ..()
if((blocked != 100) && istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
- H.drip(35)
+ H.drip(350)
/obj/item/projectile/bullet/saw/hollow
damage = 60
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 1119a795505..47ffa8de488 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -22,7 +22,7 @@
update_icon()
-/obj/item/weapon/gun/projectile/shotgun/process_chambered()
+/obj/item/weapon/gun/projectile/shotgun/process_chamber()
return ..(0, 0)
/obj/item/weapon/gun/projectile/shotgun/chamber_round()
@@ -79,7 +79,7 @@
name = "riot shotgun"
desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control."
icon_state = "riotshotgun"
- mag_type = /obj/item/ammo_box/magazine/internal/shotriot
+ mag_type = /obj/item/ammo_box/magazine/internal/shot/riot
sawn_desc = "Come with me if you want to live."
/obj/item/weapon/gun/projectile/shotgun/riot/attackby(obj/item/A, mob/user, params)
@@ -143,7 +143,7 @@
..()
if(guns_left)
var/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/GUN = new
- GUN.guns_left = src.guns_left - 1
+ GUN.guns_left = guns_left - 1
user.drop_item()
user.swap_hand()
user.put_in_hands(GUN)
@@ -172,7 +172,7 @@
flags = CONDUCT
slot_flags = SLOT_BACK
origin_tech = "combat=3;materials=1"
- mag_type = /obj/item/ammo_box/magazine/internal/cylinder/dual
+ mag_type = /obj/item/ammo_box/magazine/internal/shot/dual
sawn_desc = "Omar's coming!"
unique_rename = 1
unique_reskin = 1
@@ -204,7 +204,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round(0)
chambered = null
- CB.loc = get_turf(src.loc)
+ CB.loc = get_turf(loc)
CB.update_icon()
num_unloaded++
if (num_unloaded)
@@ -286,7 +286,7 @@
if(do_after(user, 30, target = src))
user.visible_message("[user] shortens \the [src]!", "You shorten \the [src]!")
- name = "sawn-off [src.name]"
+ name = "sawn-off [name]"
desc = sawn_desc
icon_state = "[icon_state]-sawn"
w_class = 3
@@ -303,7 +303,7 @@
/obj/item/weapon/gun/projectile/shotgun/automatic/shoot_live_shot(mob/living/user as mob|obj)
..()
- src.pump(user)
+ pump(user)
/obj/item/weapon/gun/projectile/shotgun/automatic/combat
name = "combat shotgun"
@@ -375,7 +375,7 @@
sawn_desc = "I'm sorry, but why did you saw your cane in the first place?"
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
- silenced = 1
+ suppressed = 1
needs_permit = 0 //its just a cane beepsky.....
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/attackby(obj/item/A, mob/user, params)
@@ -385,7 +385,7 @@
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/examine(mob/user) // HAD TO REPEAT EXAMINE CODE BECAUSE GUN CODE DOESNT STEALTH
var/f_name = "\a [src]."
- if(src.blood_DNA && !istype(src, /obj/effect/decal))
+ if(blood_DNA && !istype(src, /obj/effect/decal))
if(gender == PLURAL)
f_name = "some "
else
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index 5033d0f8a0e..59bd7fb649b 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -4,7 +4,7 @@
icon_state = "sniper"
item_state = "sniper"
recoil = 2
- heavy_weapon = 1
+ weapon_weight = WEAPON_MEDIUM
mag_type = /obj/item/ammo_box/magazine/sniper_rounds
fire_delay = 40
origin_tech = "combat=8"
@@ -117,7 +117,7 @@
/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
- H.drip(100)
+ H.drip(1000)
return ..()
diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm
index 45a590bd420..332d279376b 100644
--- a/code/modules/projectiles/guns/syringe_gun.dm
+++ b/code/modules/projectiles/guns/syringe_gun.dm
@@ -28,7 +28,7 @@
chambered.BB = new S.projectile_type (src)
- S.reagents.trans_to(in_chamber, S.reagents.total_volume)
+ S.reagents.trans_to(chambered.BB, S.reagents.total_volume)
chambered.BB.name = S.name
syringes.Remove(S)
@@ -55,8 +55,9 @@
var/obj/item/weapon/reagent_containers/syringe/S = syringes[syringes.len]
- if(!S) return 0
- S.forceMove(user.loc)
+ if(!S)
+ return 0
+ S.loc = user.loc
syringes.Remove(S)
to_chat(user, "You unload [S] from \the [src]!")
@@ -70,7 +71,7 @@
return
to_chat(user, "You load [A] into \the [src]!")
syringes.Add(A)
- A.forceMove(src)
+ A.loc = src
return 1
else
to_chat(user, "[src] cannot hold more syringes.")
@@ -90,5 +91,5 @@
w_class = 2
origin_tech = "combat=2;syndicate=2"
force = 2 //Also very weak because it's smaller
- silenced = 1 //Softer fire sound
+ suppressed = 1 //Softer fire sound
can_unsuppress = 0 //Permanently silenced
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 0cba3aa5fbf..9816fa7a804 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -79,7 +79,7 @@
playsound(loc, hitsound, volume, 1, -1)
L.visible_message("[L] is hit by \a [src][organ_hit_text]!", \
"[L] is hit by \a [src][organ_hit_text]!") //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
- L.on_hit(type)
+ L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter)
var/reagent_note
if(reagents && reagents.reagent_list)
@@ -91,8 +91,8 @@
return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter)
/obj/item/projectile/proc/vol_by_damage()
- if(src.damage)
- return Clamp((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100
+ if(damage)
+ return Clamp((damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100
else
return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume
@@ -113,10 +113,10 @@
if(isnull(organ))
return
else if(isturf(A) && hitsound_wall)
- var/volume = Clamp(vol_by_damage() + 20, 0, 100)
- if(suppressed)
- volume = 5
- playsound(loc, hitsound_wall, volume, 1, -1)
+ var/volume = Clamp(vol_by_damage() + 20, 0, 100)
+ if(suppressed)
+ volume = 5
+ playsound(loc, hitsound_wall, volume, 1, -1)
var/turf/target_turf = get_turf(A)
@@ -220,5 +220,5 @@ obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a pro
return ..()
/obj/item/projectile/proc/dumbfire(var/dir)
- current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better.
- fire()
+ current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better.
+ fire()
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index b11c4f66961..8c946455a65 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -87,11 +87,11 @@
name = "laser tag beam"
icon_state = "omnilaser"
-/obj/item/projectile/beam/lasertag/red
+/obj/item/projectile/beam/lasertag/redtag
icon_state = "laser"
suit_types = list(/obj/item/clothing/suit/bluetag)
-/obj/item/projectile/beam/lasertag/blue
+/obj/item/projectile/beam/lasertag/bluetag
icon_state = "bluelaser"
suit_types = list(/obj/item/clothing/suit/redtag)
@@ -131,156 +131,3 @@
var/mob/living/carbon/M = target
M.visible_message("[M] explodes into a shower of gibs!")
M.gib()
-
-/* //THIS CODE MAKES ME WANT TO STAB MY EYES OUT
-/obj/item/projectile/beam/lightning
- invisibility = 101
- name = "lightning"
- damage = 0
- icon = 'icons/obj/lightning.dmi'
- icon_state = "lightning"
- stun = 10
- weaken = 10
- stutter = 50
- eyeblur = 50
- var/tang = 0
- layer = 3
- var/turf/last = null
- kill_count = 6
- var/bullet_acted = 0
-
-/obj/item/projectile/beam/lightning/Bump(var/atom/A)
- if((A != firer) && !bullet_acted)
- A.bullet_act(src)
- bullet_acted = 1
-
-/obj/item/projectile/beam/lightning/proc/adjustAngle(angle)
- angle = round(angle) + 45
- if(angle > 180)
- angle -= 180
- else
- angle += 180
- if(!angle)
- angle = 1
- return angle
-
-/obj/item/projectile/beam/lightning/process()
- var/first = 1 //So we don't make the overlay in the same tile as the firer
- var/broke = 0
- var/broken
- var/atom/curr = current
- var/Angle=round(Get_Angle(firer,curr))
- var/icon/I=new('icons/obj/zap.dmi',"lightning")
- I.Turn(Angle)
- var/DX=(32*curr.x+curr.pixel_x)-(32*firer.x+firer.pixel_x)
- var/DY=(32*curr.y+curr.pixel_y)-(32*firer.y+firer.pixel_y)
- var/N=0
- var/length=round(sqrt((DX)**2+(DY)**2))
- var/count = 0
- for(N,N= kill_count)
- break
- count++
- var/obj/effect/overlay/beam/X=new(loc)
- X.BeamSource=src
- if(N+32>length)
- var/icon/II=new(icon,icon_state)
- II.DrawBox(null,1,(length-N),32,32)
- II.Turn(Angle)
- X.icon=II
- else X.icon=I
- var/Pixel_x=round(sin(Angle)+32*sin(Angle)*(N+16)/32)
- var/Pixel_y=round(cos(Angle)+32*cos(Angle)*(N+16)/32)
- if(DX==0) Pixel_x=0
- if(DY==0) Pixel_y=0
- if(Pixel_x>32)
- for(var/a=0, a<=Pixel_x,a+=32)
- X.x++
- Pixel_x-=32
- if(Pixel_x<-32)
- for(var/a=0, a>=Pixel_x,a-=32)
- X.x--
- Pixel_x+=32
- if(Pixel_y>32)
- for(var/a=0, a<=Pixel_y,a+=32)
- X.y++
- Pixel_y-=32
- if(Pixel_y<-32)
- for(var/a=0, a>=Pixel_y,a-=32)
- X.y--
- Pixel_y+=32
- X.pixel_x=Pixel_x
- X.pixel_y=Pixel_y
- var/turf/TT = get_turf(X.loc)
- if(TT == firer.loc)
- continue
- if(TT.density)
- qdel(X)
- break
- for(var/atom/O in TT)
- if(istype(O,/mob/living))
- if(O.density)
- qdel(X)
- broke = 1
- break
- if(!O.CanPass(src))
- qdel(X)
- broke = 1
- break
- if(broke)
- if(X)
- qdel(X)
- break
- spawn
- while(src) //Move until we hit something
- if(first)
- icon = midicon
- if((!( current ) || loc == current)) //If we pass our target
- broken = 1
- icon = endicon
- tang = adjustAngle(get_angle(original,current))
- if(tang > 180)
- tang -= 180
- else
- tang += 180
- icon_state = "[tang]"
- var/turf/simulated/floor/f = current
- if(f && istype(f))
- if(!bullet_acted)
- f.break_tile()
- f.hotspot_expose(1000,CELL_VOLUME)
- if((x == 1 || x == world.maxx || y == 1 || y == world.maxy))
- broken = 1
- return
- if(kill_count < 1)
- broken = 1
- kill_count--
- if(!bumped && !isturf(original))
- if(loc == get_turf(original))
- if(!(original in permutated))
- icon = endicon
- if(!broken)
- tang = adjustAngle(get_angle(original,current))
- if(tang > 180)
- tang -= 180
- else
- tang += 180
- icon_state = "[tang]"
- Bump(original)
- first = 0
- if(broken)
- break
- else
- last = get_turf(src.loc)
- step_towards(src, current) //Move~
- if(src.loc != current)
- tang = adjustAngle(get_angle(src.loc,current))
- icon_state = "[tang]"
- qdel(src)
- return
-/obj/item/projectile/beam/lightning/on_hit(atom/target, blocked = 0)
- if(istype(target, /mob/living))
- var/mob/living/M = target
- M.playsound_local(src, "explosion", 50, 1)
- ..()
-*/
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index f3a676d962f..38c9a9efd55 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -80,7 +80,7 @@
range = rand(8)
/obj/item/projectile/bullet/pellet/weak/on_range()
- var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
+ var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
sparks.set_up(1, 1, src)
sparks.start()
..()
@@ -97,7 +97,7 @@
/obj/item/projectile/bullet/pellet/overload/on_range()
explosion(src, 0, 0, 2)
- var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
+ var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
sparks.set_up(3, 3, src)
sparks.start()
..()
@@ -179,7 +179,7 @@
forcedodge = 1
nodamage = 1
hitsound = 'sound/items/bikehorn.ogg'
- icon = 'icons/obj/hydroponics/harvest.dmi'
+ icon = 'icons/obj/harvest.dmi'
icon_state = "banana"
range = 200
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index b023d77de52..79ffc1d0898 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -21,7 +21,7 @@
/obj/item/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0)
. = ..()
if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks!
- var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
+ var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
sparks.set_up(1, 1, src)
sparks.start()
else if(iscarbon(target))
@@ -33,7 +33,7 @@
C.do_jitter_animation(jitter)
/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
- var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
+ var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
sparks.set_up(1, 1, src)
sparks.start()
..()
@@ -80,7 +80,7 @@
/obj/item/ammo_casing/energy/shock_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
..()
- var/obj/item/projectile/hook/P = BB
+ var/obj/item/projectile/energy/shock_revolver/P = BB
spawn(1)
P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 74eff57d98d..1d1f6dc93a8 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -48,7 +48,7 @@
/obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target)
. = ..()
if(ismob(target))
- var/old_stat = stat
+ var/old_stat = target.stat
target.suiciding = 0
target.revive()
if(!target.ckey)
@@ -94,16 +94,22 @@
if(isturf(target) && target.density)
CreateDoor(target)
else if (isturf(T) && T.density)
- CreateDoor(T
+ CreateDoor(T)
else if(istype(target, /obj/machinery/door))
- OpenDoor(target))
+ OpenDoor(target)
/obj/item/projectile/magic/door/proc/CreateDoor(turf/T)
var/door_type = pick(door_types)
var/obj/structure/mineral_door/D = new door_type(T)
- T.ChangeTurf(/turf/open/floor/plating)
+ T.ChangeTurf(/turf/simulated/floor/plasteel)
D.Open()
+/obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D)
+ if(istype(D,/obj/machinery/door/airlock))
+ var/obj/machinery/door/airlock/A = D
+ A.locked = 0
+ D.open()
+
/obj/item/projectile/magic/change
name = "bolt of change"
icon_state = "ice_1"
diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm
index 9f4e36bc1b4..466a8ba8e99 100644
--- a/code/modules/projectiles/projectile/reusable.dm
+++ b/code/modules/projectiles/projectile/reusable.dm
@@ -1,7 +1,7 @@
/obj/item/projectile/bullet/reusable
name = "reusable bullet"
desc = "How do you even reuse a bullet?"
- ammo_type = /obj/item/ammo_casing/caseless/
+ var/ammo_type = /obj/item/ammo_casing/caseless/
var/dropped = 0
/obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = 0)
@@ -14,7 +14,7 @@
/obj/item/projectile/bullet/reusable/proc/handle_drop()
if(!dropped)
- new ammo_type(src.loc)
+ new ammo_type(loc)
dropped = 1
/obj/item/projectile/bullet/reusable/magspear
@@ -42,7 +42,7 @@
if(dropped)
return
dropped = 1
- var/obj/item/ammo_casing/caseless/foam_dart/newdart = new ammo_type(src.loc)
+ var/obj/item/ammo_casing/caseless/foam_dart/newdart = new ammo_type(loc)
var/obj/item/ammo_casing/caseless/foam_dart/old_dart = ammo_casing
newdart.modified = old_dart.modified
if(pen)
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 851f23bcdd7..56b4875002b 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -115,7 +115,7 @@
if(A == firer)
loc = A.loc
return
- playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
+ playsound(loc, 'sound/effects/meteorimpact.ogg', 40, 1)
for(var/mob/M in urange(10, src))
if(!M.stat)
shake_camera(M, 3, 1)
@@ -195,8 +195,8 @@
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
- new /obj/effect/decal/cleanable/ash(src.loc)
- src.visible_message("The [src.name] explodes!","You hear a snap!")
+ new /obj/effect/decal/cleanable/ash(loc)
+ visible_message("The [name] explodes!","You hear a snap!")
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)
@@ -230,7 +230,7 @@ obj/item/projectile/kinetic/New()
..()
/obj/item/projectile/kinetic/on_range()
- new /obj/effect/kinetic_blast(src.loc)
+ new /obj/effect/kinetic_blast(loc)
..()
/obj/item/projectile/kinetic/on_hit(atom/target)
@@ -240,13 +240,13 @@ obj/item/projectile/kinetic/New()
var/turf/simulated/mineral/M = target_turf
M.gets_drilled(firer)
new /obj/item/effect/kinetic_blast(target_turf)
- if(src.splash)
+ if(splash)
for(var/turf/T in range(splash, target_turf))
if(istype(T, /turf/simulated/mineral))
var/turf/simulated/mineral/M = T
M.gets_drilled(firer)
-/obj/item/effect/kinetic_blast
+/obj/effect/kinetic_blast
name = "kinetic explosion"
icon = 'icons/obj/projectiles.dmi'
icon_state = "kinetic_blast"
@@ -340,13 +340,8 @@ obj/item/projectile/kinetic/New()
icon_state = "bluespace"
damage = 0
nodamage = 1
- var/obj/item/weapon/gun/energy/telegun/T = null
var/teleport_target = null
- OnFired()
- T = shot_from
- teleport_target = T.teleport_target
-
/obj/item/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0)
if(isliving(target))
if(teleport_target)
diff --git a/code/modules/reagents/dartgun.dm b/code/modules/reagents/dartgun.dm
index 4fb705dbcf9..f08685b3d88 100644
--- a/code/modules/reagents/dartgun.dm
+++ b/code/modules/reagents/dartgun.dm
@@ -104,7 +104,7 @@
to_chat(user, "