diff --git a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
index f55b570b89c..c9c50ff1428 100644
--- a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
+++ b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
@@ -14,9 +14,9 @@
"e" = (
/obj/machinery/porta_turret/syndicate{
desc = "A ballistic machine gun auto-turret that fires bluespace bullets.";
- lethal_projectile = /obj/item/projectile/magic/teleport;
+ lethal_projectile = /obj/projectile/magic/teleport;
name = "displacement turret";
- stun_projectile = /obj/item/projectile/magic/teleport
+ stun_projectile = /obj/projectile/magic/teleport
},
/turf/open/floor/plasteel/grimy{
icon_state = "engine"
diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index 85dddcf174e..b4145ce3dee 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -80,7 +80,7 @@
#define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target)
#define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity)
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume)
-#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone)
+#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/projectile, def_zone)
#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob)
#define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume)
#define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): (/mob/user)
@@ -286,9 +286,9 @@
// /obj/item/pen signals
#define COMSIG_PEN_ROTATED "pen_rotated" //called after rotation in /obj/item/pen/attack_self(): (rotation, mob/living/carbon/user)
-// /obj/item/projectile signals (sent to the firer)
-#define COMSIG_PROJECTILE_ON_HIT "projectile_on_hit" // from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle)
-#define COMSIG_PROJECTILE_BEFORE_FIRE "projectile_before_fire" // from base of /obj/item/projectile/proc/fire(): (obj/item/projectile, atom/original_target)
+// /obj/projectile signals (sent to the firer)
+#define COMSIG_PROJECTILE_ON_HIT "projectile_on_hit" // from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle)
+#define COMSIG_PROJECTILE_BEFORE_FIRE "projectile_before_fire" // from base of /obj/projectile/proc/fire(): (obj/projectile, atom/original_target)
#define COMSIG_PROJECTILE_PREHIT "com_proj_prehit" // sent to targets during the process_hit proc of projectiles
// /obj/mecha signals
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index ce8947d1415..d963d563ef3 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -231,7 +231,7 @@ GLOBAL_LIST_INIT(pointed_types, typecacheof(list(
#define isbodypart(A) (istype(A, /obj/item/bodypart))
-#define isprojectile(A) (istype(A, /obj/item/projectile))
+#define isprojectile(A) (istype(A, /obj/projectile))
#define isgun(A) (istype(A, /obj/item/gun))
diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm
index e082be7d1fc..042f2013638 100644
--- a/code/__HELPERS/radiation.dm
+++ b/code/__HELPERS/radiation.dm
@@ -8,7 +8,7 @@
/obj/effect,
/obj/docking_port,
/atom/movable/lighting_object,
- /obj/item/projectile,
+ /obj/projectile,
))
var/list/processing_list = list(location)
. = list()
diff --git a/code/controllers/subsystem/processing/projectiles.dm b/code/controllers/subsystem/processing/projectiles.dm
index b0930d3d071..479298e4bbd 100644
--- a/code/controllers/subsystem/processing/projectiles.dm
+++ b/code/controllers/subsystem/processing/projectiles.dm
@@ -10,7 +10,7 @@ PROCESSING_SUBSYSTEM_DEF(projectiles)
/datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed)
global_pixel_speed = new_speed
for(var/i in processing)
- var/obj/item/projectile/P = i
+ var/obj/projectile/P = i
if(istype(P)) //there's non projectiles on this too.
P.set_pixel_speed(new_speed)
diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm
index 8bba40e8c78..784d677b746 100644
--- a/code/datums/components/chasm.dm
+++ b/code/datums/components/chasm.dm
@@ -10,7 +10,7 @@
/obj/docking_port,
/obj/structure/lattice,
/obj/structure/stone_tile,
- /obj/item/projectile,
+ /obj/projectile,
/obj/effect/projectile,
/obj/effect/portal,
/obj/effect/abstract,
diff --git a/code/datums/components/fantasy/suffixes.dm b/code/datums/components/fantasy/suffixes.dm
index d63806768d8..0dd37edb6f4 100644
--- a/code/datums/components/fantasy/suffixes.dm
+++ b/code/datums/components/fantasy/suffixes.dm
@@ -124,23 +124,23 @@
/datum/fantasy_affix/shrapnel/apply(datum/component/fantasy/comp, newName)
. = ..()
// higher means more likely
- var/list/weighted_projectile_types = list(/obj/item/projectile/meteor = 1,
- /obj/item/projectile/energy/nuclear_particle = 1,
- /obj/item/projectile/beam/pulse = 1,
- /obj/item/projectile/bullet/honker = 15,
- /obj/item/projectile/temp = 15,
- /obj/item/projectile/ion = 15,
- /obj/item/projectile/magic/door = 15,
- /obj/item/projectile/magic/locker = 15,
- /obj/item/projectile/magic/fetch = 15,
- /obj/item/projectile/beam/emitter = 15,
- /obj/item/projectile/magic/flying = 15,
- /obj/item/projectile/energy/net = 15,
- /obj/item/projectile/bullet/incendiary/c9mm = 15,
- /obj/item/projectile/temp/hot = 15,
- /obj/item/projectile/beam/disabler = 15)
+ var/list/weighted_projectile_types = list(/obj/projectile/meteor = 1,
+ /obj/projectile/energy/nuclear_particle = 1,
+ /obj/projectile/beam/pulse = 1,
+ /obj/projectile/bullet/honker = 15,
+ /obj/projectile/temp = 15,
+ /obj/projectile/ion = 15,
+ /obj/projectile/magic/door = 15,
+ /obj/projectile/magic/locker = 15,
+ /obj/projectile/magic/fetch = 15,
+ /obj/projectile/beam/emitter = 15,
+ /obj/projectile/magic/flying = 15,
+ /obj/projectile/energy/net = 15,
+ /obj/projectile/bullet/incendiary/c9mm = 15,
+ /obj/projectile/temp/hot = 15,
+ /obj/projectile/beam/disabler = 15)
- var/obj/item/projectile/picked_projectiletype = pickweight(weighted_projectile_types)
+ var/obj/projectile/picked_projectiletype = pickweight(weighted_projectile_types)
var/obj/item/master = comp.parent
comp.appliedComponents += master.AddComponent(/datum/component/shrapnel, picked_projectiletype)
diff --git a/code/datums/components/shrapnel.dm b/code/datums/components/shrapnel.dm
index 1b09fd5f77a..bff4a8b35c9 100644
--- a/code/datums/components/shrapnel.dm
+++ b/code/datums/components/shrapnel.dm
@@ -26,7 +26,7 @@
return
var/turf/target_turf = get_turf(target)
for(var/turf/shootat_turf in RANGE_TURFS(radius, target) - RANGE_TURFS(radius-1, target))
- var/obj/item/projectile/P = new projectile_type(target_turf)
+ var/obj/projectile/P = new projectile_type(target_turf)
//Shooting Code:
P.range = radius+1
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 1fc996710cb..1482a26305f 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -59,8 +59,8 @@
var/obj/item/I = AM
if(I.item_flags & ABSTRACT)
return
- else if(istype(AM, /obj/item/projectile))
- var/obj/item/projectile/P = AM
+ else if(istype(AM, /obj/projectile))
+ var/obj/projectile/P = AM
if(P.original != parent)
return
if(istype(AM, /obj/effect/dummy/phased_mob)) //don't squeek if they're in a phased/jaunting container.
diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm
index d1d702cd864..0253ecf8a4a 100644
--- a/code/datums/martial/_martial.dm
+++ b/code/datums/martial/_martial.dm
@@ -72,5 +72,5 @@
return
///Gets called when a projectile hits the owner. Returning anything other than BULLET_ACT_HIT will stop the projectile from hitting the mob.
-/datum/martial_art/proc/on_projectile_hit(mob/living/carbon/human/A, obj/item/projectile/P, def_zone)
+/datum/martial_art/proc/on_projectile_hit(mob/living/carbon/human/A, obj/projectile/P, def_zone)
return BULLET_ACT_HIT
diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm
index b3dfc7aee23..27d031b6542 100644
--- a/code/datums/martial/sleeping_carp.dm
+++ b/code/datums/martial/sleeping_carp.dm
@@ -151,7 +151,7 @@
return TRUE
return ..()
-/datum/martial_art/the_sleeping_carp/on_projectile_hit(mob/living/carbon/human/A, obj/item/projectile/P, def_zone)
+/datum/martial_art/the_sleeping_carp/on_projectile_hit(mob/living/carbon/human/A, obj/projectile/P, def_zone)
. = ..()
if(A.incapacitated(FALSE, TRUE)) //NO STUN
return BULLET_ACT_HIT
diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm
index e1efc42ffd4..6e521d4f699 100644
--- a/code/datums/mutations/actions.dm
+++ b/code/datums/mutations/actions.dm
@@ -120,7 +120,7 @@
charge_max = 600
clothes_req = FALSE
range = 20
- projectile_type = /obj/item/projectile/magic/aoe/fireball/firebreath
+ projectile_type = /obj/projectile/magic/aoe/fireball/firebreath
base_icon_state = "fireball"
action_icon_state = "fireball0"
sound = 'sound/magic/demon_dies.ogg' //horrifying lizard noises
@@ -138,10 +138,10 @@
to_chat(C,"Something in front of your mouth caught fire!")
return FALSE
-/obj/effect/proc_holder/spell/aimed/firebreath/ready_projectile(obj/item/projectile/P, atom/target, mob/user, iteration)
- if(!istype(P, /obj/item/projectile/magic/aoe/fireball))
+/obj/effect/proc_holder/spell/aimed/firebreath/ready_projectile(obj/projectile/P, atom/target, mob/user, iteration)
+ if(!istype(P, /obj/projectile/magic/aoe/fireball))
return
- var/obj/item/projectile/magic/aoe/fireball/F = P
+ var/obj/projectile/magic/aoe/fireball/F = P
switch(strength)
if(1 to 3)
F.exp_light = strength-1
@@ -149,7 +149,7 @@
F.exp_heavy = strength-3
F.exp_fire += strength
-/obj/item/projectile/magic/aoe/fireball/firebreath
+/obj/projectile/magic/aoe/fireball/firebreath
name = "fire breath"
exp_heavy = 0
exp_light = 0
diff --git a/code/datums/mutations/cold.dm b/code/datums/mutations/cold.dm
index cd10c2b38f7..1dd531490ac 100644
--- a/code/datums/mutations/cold.dm
+++ b/code/datums/mutations/cold.dm
@@ -34,7 +34,7 @@
cooldown_min = 150
clothes_req = FALSE
range = 3
- projectile_type = /obj/item/projectile/temp/cryo
+ projectile_type = /obj/projectile/temp/cryo
base_icon_state = "icebeam"
action_icon_state = "icebeam"
active_msg = "You focus your cryokinesis!"
diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm
index ddbca67664f..e8aab3cc67c 100644
--- a/code/datums/mutations/sight.dm
+++ b/code/datums/mutations/sight.dm
@@ -103,7 +103,7 @@
return
to_chat(source, "You shoot with your laser eyes!")
source.changeNext_move(CLICK_CD_RANGE)
- var/obj/item/projectile/beam/laser_eyes/LE = new(source.loc)
+ var/obj/projectile/beam/laser_eyes/LE = new(source.loc)
LE.firer = source
LE.def_zone = ran_zone(source.zone_selected)
LE.preparePixelProjectile(target, source, mouseparams)
@@ -111,7 +111,7 @@
playsound(source, 'sound/weapons/taser2.ogg', 75, TRUE)
///Projectile type used by laser eyes
-/obj/item/projectile/beam/laser_eyes
+/obj/projectile/beam/laser_eyes
name = "beam"
icon = 'icons/effects/genetics.dmi'
icon_state = "eyelasers"
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 9e5fcb1fc98..80fa875c173 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -511,7 +511,7 @@
new/obj/effect/temp_visual/dir_setting/curse/grasp_portal(spawn_turf, owner.dir)
playsound(spawn_turf, 'sound/effects/curse2.ogg', 80, TRUE, -1)
var/turf/ownerloc = get_turf(owner)
- var/obj/item/projectile/curse_hand/C = new (spawn_turf)
+ var/obj/projectile/curse_hand/C = new (spawn_turf)
C.preparePixelProjectile(ownerloc, spawn_turf)
C.fire()
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index e9a5fee0803..2f994109c0b 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -212,7 +212,7 @@
return ..()
-/atom/proc/handle_ricochet(obj/item/projectile/P)
+/atom/proc/handle_ricochet(obj/projectile/P)
return
///Can the mover object pass this atom, while heading for the target turf
@@ -413,7 +413,7 @@
*
* Default behaviour is to send the COMSIG_ATOM_BULLET_ACT and then call on_hit() on the projectile
*/
-/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
+/atom/proc/bullet_act(obj/projectile/P, def_zone)
SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, P, def_zone)
. = P.on_hit(src, 0, def_zone)
diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm
index 64aaeebacd9..fd5d81d0959 100644
--- a/code/game/gamemodes/sandbox/h_sandbox.dm
+++ b/code/game/gamemodes/sandbox/h_sandbox.dm
@@ -28,7 +28,7 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
var/global/list/spawn_forbidden = list(
/obj/item/tk_grab, /obj/item/implant, // not implanter, the actual thing that is inside you
/obj/item/assembly, /obj/item/onetankbomb, /obj/item/pda/ai,
- /obj/item/smallDelivery, /obj/item/projectile,
+ /obj/item/smallDelivery, /obj/projectile,
/obj/item/borg/sight, /obj/item/borg/stun, /obj/item/robot_module)
/datum/hSB/proc/update()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 5067405dad1..8f712fc4e70 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -40,10 +40,10 @@
/obj/structure/barricade/CanPass(atom/movable/mover, turf/target)//So bullets will fly over and stuff.
if(locate(/obj/structure/barricade) in get_turf(mover))
return 1
- else if(istype(mover, /obj/item/projectile))
+ else if(istype(mover, /obj/projectile))
if(!anchored)
return 1
- var/obj/item/projectile/proj = mover
+ var/obj/projectile/proj = mover
if(proj.firer && Adjacent(proj.firer))
return 1
if(prob(proj_pass_rate))
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 40bb21ac8e3..dcdb105a5a9 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -542,7 +542,7 @@
break
update_icon()
- var/obj/item/projectile/A
+ var/obj/projectile/A
//any emagged turrets drains 2x power and uses a different projectile?
if(mode == TURRET_STUN)
use_power(reqpower)
@@ -645,8 +645,8 @@
scan_range = 9
req_access = list(ACCESS_SYNDICATE)
mode = TURRET_LETHAL
- stun_projectile = /obj/item/projectile/bullet
- lethal_projectile = /obj/item/projectile/bullet
+ stun_projectile = /obj/projectile/bullet
+ lethal_projectile = /obj/projectile/bullet
lethal_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
stun_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
icon_state = "syndie_off"
@@ -667,23 +667,23 @@
/obj/machinery/porta_turret/syndicate/energy
icon_state = "standard_lethal"
base_icon_state = "standard"
- stun_projectile = /obj/item/projectile/energy/electrode
+ stun_projectile = /obj/projectile/energy/electrode
stun_projectile_sound = 'sound/weapons/taser.ogg'
- lethal_projectile = /obj/item/projectile/beam/laser
+ lethal_projectile = /obj/projectile/beam/laser
lethal_projectile_sound = 'sound/weapons/laser.ogg'
desc = "An energy blaster auto-turret."
/obj/machinery/porta_turret/syndicate/energy/heavy
icon_state = "standard_lethal"
base_icon_state = "standard"
- stun_projectile = /obj/item/projectile/energy/electrode
+ stun_projectile = /obj/projectile/energy/electrode
stun_projectile_sound = 'sound/weapons/taser.ogg'
- lethal_projectile = /obj/item/projectile/beam/laser/heavylaser
+ lethal_projectile = /obj/projectile/beam/laser/heavylaser
lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
desc = "An energy blaster auto-turret."
/obj/machinery/porta_turret/syndicate/energy/raven
- stun_projectile = /obj/item/projectile/beam/laser
+ stun_projectile = /obj/projectile/beam/laser
stun_projectile_sound = 'sound/weapons/laser.ogg'
faction = list("neutral","silicon","turret")
@@ -691,14 +691,14 @@
/obj/machinery/porta_turret/syndicate/pod
integrity_failure = 20
max_integrity = 40
- stun_projectile = /obj/item/projectile/bullet/syndicate_turret
- lethal_projectile = /obj/item/projectile/bullet/syndicate_turret
+ stun_projectile = /obj/projectile/bullet/syndicate_turret
+ lethal_projectile = /obj/projectile/bullet/syndicate_turret
/obj/machinery/porta_turret/syndicate/shuttle
scan_range = 9
shot_delay = 3
- stun_projectile = /obj/item/projectile/bullet/p50/penetrator/shuttle
- lethal_projectile = /obj/item/projectile/bullet/p50/penetrator/shuttle
+ stun_projectile = /obj/projectile/bullet/p50/penetrator/shuttle
+ lethal_projectile = /obj/projectile/bullet/p50/penetrator/shuttle
lethal_projectile_sound = 'sound/weapons/gun/smg/shot.ogg'
stun_projectile_sound = 'sound/weapons/gun/smg/shot.ogg'
armor = list("melee" = 50, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 80, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
@@ -723,7 +723,7 @@
name = "perimeter defense turret"
desc = "A plasma beam turret calibrated to defend outposts against non-humanoid fauna. It is more effective when exposed to the environment."
installation = null
- lethal_projectile = /obj/item/projectile/plasma/turret
+ lethal_projectile = /obj/projectile/plasma/turret
lethal_projectile_sound = 'sound/weapons/plasma_cutter.ogg'
mode = TURRET_LETHAL //It would be useless in stun mode anyway
faction = list("neutral","silicon","turret") //Minebots, medibots, etc that should not be shot.
@@ -749,8 +749,8 @@
use_power = NO_POWER_USE
has_cover = 0
scan_range = 9
- stun_projectile = /obj/item/projectile/beam/laser
- lethal_projectile = /obj/item/projectile/beam/laser
+ stun_projectile = /obj/projectile/beam/laser
+ lethal_projectile = /obj/projectile/beam/laser
lethal_projectile_sound = 'sound/weapons/plasma_cutter.ogg'
stun_projectile_sound = 'sound/weapons/plasma_cutter.ogg'
icon_state = "syndie_off"
@@ -773,8 +773,8 @@
integrity_failure = 60
name = "Old Laser Turret"
desc = "A turret built with substandard parts and run down further with age. Still capable of delivering lethal lasers to the odd space carp, but not much else."
- stun_projectile = /obj/item/projectile/beam/weak/penetrator
- lethal_projectile = /obj/item/projectile/beam/weak/penetrator
+ stun_projectile = /obj/projectile/beam/weak/penetrator
+ lethal_projectile = /obj/projectile/beam/weak/penetrator
faction = list("neutral","silicon","turret")
////////////////////////
@@ -999,16 +999,16 @@
/obj/item/gun/energy/laser/bluetag/get_turret_properties()
. = ..()
- .["stun_projectile"] = /obj/item/projectile/beam/lasertag/bluetag
- .["lethal_projectile"] = /obj/item/projectile/beam/lasertag/bluetag
+ .["stun_projectile"] = /obj/projectile/beam/lasertag/bluetag
+ .["lethal_projectile"] = /obj/projectile/beam/lasertag/bluetag
.["base_icon_state"] = "blue"
.["shot_delay"] = 30
.["team_color"] = "blue"
/obj/item/gun/energy/laser/redtag/get_turret_properties()
. = ..()
- .["stun_projectile"] = /obj/item/projectile/beam/lasertag/redtag
- .["lethal_projectile"] = /obj/item/projectile/beam/lasertag/redtag
+ .["stun_projectile"] = /obj/projectile/beam/lasertag/redtag
+ .["lethal_projectile"] = /obj/projectile/beam/lasertag/redtag
.["base_icon_state"] = "red"
.["shot_delay"] = 30
.["team_color"] = "red"
@@ -1070,14 +1070,14 @@
installation = /obj/item/gun/energy/laser/bluetag
team_color = "blue"
-/obj/machinery/porta_turret/lasertag/bullet_act(obj/item/projectile/P)
+/obj/machinery/porta_turret/lasertag/bullet_act(obj/projectile/P)
. = ..()
if(on)
if(team_color == "blue")
- if(istype(P, /obj/item/projectile/beam/lasertag/redtag))
+ if(istype(P, /obj/projectile/beam/lasertag/redtag))
on = FALSE
addtimer(VARSET_CALLBACK(src, on, TRUE), 10 SECONDS)
else if(team_color == "red")
- if(istype(P, /obj/item/projectile/beam/lasertag/bluetag))
+ if(istype(P, /obj/projectile/beam/lasertag/bluetag))
on = FALSE
addtimer(VARSET_CALLBACK(src, on, TRUE), 10 SECONDS)
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 1e6004fdab4..80a114ccf63 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -456,7 +456,7 @@
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return prob(20)
else
- if(istype(mover, /obj/item/projectile))
+ if(istype(mover, /obj/projectile))
return prob(10)
else
return !density
diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm
index 0b593cd1be1..d811b0c5c9a 100644
--- a/code/game/mecha/combat/durand.dm
+++ b/code/game/mecha/combat/durand.dm
@@ -65,7 +65,7 @@
SEND_SIGNAL(shield, COMSIG_MECHA_ACTION_ACTIVATE, source, signal_args)
//Redirects projectiles to the shield if defense_check decides they should be blocked and returns true.
-/obj/mecha/combat/durand/proc/prehit(obj/item/projectile/source, list/signal_args)
+/obj/mecha/combat/durand/proc/prehit(obj/projectile/source, list/signal_args)
if(defense_check(source.loc) && shield)
signal_args[2] = shield
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 2fdbdfa24ed..adde836b741 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -36,7 +36,7 @@
set_ready_state(0)
for(var/i=1 to get_shot_amount())
- var/obj/item/projectile/A = new projectile(curloc)
+ var/obj/projectile/A = new projectile(curloc)
A.firer = chassis.occupant
A.original = target
if(!A.suppressed && firing_effect_type)
@@ -80,7 +80,7 @@
desc = "A weapon for combat exosuits. Shoots basic lasers."
icon_state = "mecha_laser"
energy_drain = 30
- projectile = /obj/item/projectile/beam/laser
+ projectile = /obj/projectile/beam/laser
fire_sound = 'sound/weapons/laser.ogg'
harmful = TRUE
@@ -90,7 +90,7 @@
desc = "A weapon for combat exosuits. Shoots basic disablers."
icon_state = "mecha_disabler"
energy_drain = 30
- projectile = /obj/item/projectile/beam/disabler
+ projectile = /obj/projectile/beam/disabler
fire_sound = 'sound/weapons/taser2.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
@@ -99,7 +99,7 @@
desc = "A weapon for combat exosuits. Shoots heavy lasers."
icon_state = "mecha_laser"
energy_drain = 60
- projectile = /obj/item/projectile/beam/laser/heavylaser
+ projectile = /obj/projectile/beam/laser/heavylaser
fire_sound = 'sound/weapons/lasercannonfire.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
@@ -108,7 +108,7 @@
desc = "A weapon for combat exosuits. Shoots technology-disabling ion beams. Don't catch yourself in the blast!"
icon_state = "mecha_ion"
energy_drain = 120
- projectile = /obj/item/projectile/ion
+ projectile = /obj/projectile/ion
fire_sound = 'sound/weapons/laser.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla
@@ -117,7 +117,7 @@
desc = "A weapon for combat exosuits. Fires bolts of electricity similar to the experimental tesla engine."
icon_state = "mecha_ion"
energy_drain = 500
- projectile = /obj/item/projectile/energy/tesla/cannon
+ projectile = /obj/projectile/energy/tesla/cannon
fire_sound = 'sound/magic/lightningbolt.ogg'
harmful = TRUE
@@ -127,7 +127,7 @@
desc = "A weapon for combat exosuits. Shoots powerful destructive blasts capable of demolishing obstacles."
icon_state = "mecha_pulse"
energy_drain = 120
- projectile = /obj/item/projectile/beam/pulse/heavy
+ projectile = /obj/projectile/beam/pulse/heavy
fire_sound = 'sound/weapons/marauder.ogg'
harmful = TRUE
@@ -140,7 +140,7 @@
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
energy_drain = 30
- projectile = /obj/item/projectile/plasma/adv/mech
+ projectile = /obj/projectile/plasma/adv/mech
fire_sound = 'sound/weapons/plasma_cutter.ogg'
harmful = TRUE
@@ -157,7 +157,7 @@
icon_state = "mecha_taser"
energy_drain = 20
equip_cooldown = 8
- projectile = /obj/item/projectile/energy/electrode
+ projectile = /obj/projectile/energy/electrode
fire_sound = 'sound/weapons/taser.ogg'
@@ -280,7 +280,7 @@
desc = "A weapon for combat exosuits. Shoots incendiary bullets."
icon_state = "mecha_carbine"
equip_cooldown = 10
- projectile = /obj/item/projectile/bullet/incendiary/fnx99
+ projectile = /obj/projectile/bullet/incendiary/fnx99
projectiles = 24
projectiles_cache = 24
projectiles_cache_max = 96
@@ -293,7 +293,7 @@
fire_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
icon_state = "mecha_mime"
equip_cooldown = 30
- projectile = /obj/item/projectile/bullet/mime
+ projectile = /obj/projectile/bullet/mime
projectiles = 6
projectile_energy_cost = 50
harmful = TRUE
@@ -303,7 +303,7 @@
desc = "A weapon for combat exosuits. Shoots a spread of pellets."
icon_state = "mecha_scatter"
equip_cooldown = 20
- projectile = /obj/item/projectile/bullet/scattershot
+ projectile = /obj/projectile/bullet/scattershot
projectiles = 40
projectiles_cache = 40
projectiles_cache_max = 160
@@ -317,7 +317,7 @@
desc = "A weapon for combat exosuits. Shoots a rapid, three shot burst."
icon_state = "mecha_uac2"
equip_cooldown = 10
- projectile = /obj/item/projectile/bullet/lmg
+ projectile = /obj/projectile/bullet/lmg
projectiles = 300
projectiles_cache = 300
projectiles_cache_max = 1200
@@ -332,7 +332,7 @@
name = "\improper SRM-8 missile rack"
desc = "A weapon for combat exosuits. Launches light explosive missiles."
icon_state = "mecha_missilerack"
- projectile = /obj/item/projectile/bullet/a84mm_he
+ projectile = /obj/projectile/bullet/a84mm_he
fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg'
projectiles = 8
projectiles_cache = 0
@@ -346,7 +346,7 @@
name = "\improper BRM-6 missile rack"
desc = "A weapon for combat exosuits. Launches low-explosive breaching missiles designed to explode only when striking a sturdy target."
icon_state = "mecha_missilerack_six"
- projectile = /obj/item/projectile/bullet/a84mm_br
+ projectile = /obj/projectile/bullet/a84mm_br
fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg'
projectiles = 6
projectiles_cache = 0
diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm
index e4f54f836d1..7234a79401e 100644
--- a/code/game/mecha/mecha_defense.dm
+++ b/code/game/mecha/mecha_defense.dm
@@ -110,7 +110,7 @@
log_message("Hit by [AM].", LOG_MECHA, color="red")
. = ..()
-/obj/mecha/bullet_act(obj/item/projectile/Proj) //wrapper
+/obj/mecha/bullet_act(obj/projectile/Proj) //wrapper
if (!enclosed && occupant && !silicon_pilot && !Proj.force_hit && (Proj.def_zone == BODY_ZONE_HEAD || Proj.def_zone == BODY_ZONE_CHEST)) //allows bullets to hit the pilot of open-canopy mechs
occupant.bullet_act(Proj) //If the sides are open, the occupant can be hit
return BULLET_ACT_HIT
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index 303f02b9932..1acdd7569f7 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -134,8 +134,8 @@
return 1
/obj/effect/particle_effect/smoke/bad/CanPass(atom/movable/mover, turf/target)
- if(istype(mover, /obj/item/projectile/beam))
- var/obj/item/projectile/beam/B = mover
+ if(istype(mover, /obj/projectile/beam))
+ var/obj/projectile/beam/B = mover
B.damage = (B.damage/2)
return 1
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index c16bae26c7d..0a25bb3c854 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -156,7 +156,7 @@
var/turf/real_target = get_link_target_turf()
if(!istype(real_target))
return FALSE
- if(!force && (!ismecha(M) && !istype(M, /obj/item/projectile) && M.anchored && !allow_anchored))
+ if(!force && (!ismecha(M) && !istype(M, /obj/projectile) && M.anchored && !allow_anchored))
return
if(ismegafauna(M))
message_admins("[M] has used a portal at [ADMIN_VERBOSEJMP(src)] made by [usr].")
@@ -166,8 +166,8 @@
else
last_effect = world.time
if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel))
- if(istype(M, /obj/item/projectile))
- var/obj/item/projectile/P = M
+ if(istype(M, /obj/projectile))
+ var/obj/projectile/P = M
P.ignore_source_check = TRUE
return TRUE
return FALSE
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index e2c5df54131..4762f724009 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -44,7 +44,7 @@
if(prob(50))
to_chat(mover, "You get stuck in \the [src] for a moment.")
return FALSE
- else if(istype(mover, /obj/item/projectile))
+ else if(istype(mover, /obj/projectile))
return prob(30)
return TRUE
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index 73a47180850..92c39b3e457 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -158,7 +158,7 @@
if(EAST)
icon_state = "beam_splash_e"
-/obj/item/projectile/curse_hand/update_icon()
+/obj/projectile/curse_hand/update_icon()
icon_state = "[icon_state][handedness]"
/obj/effect/temp_visual/wizard
diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm
index b5978179424..cf8fd7645d3 100644
--- a/code/game/objects/items/cardboard_cutouts.dm
+++ b/code/game/objects/items/cardboard_cutouts.dm
@@ -65,8 +65,8 @@
if(prob(I.force))
push_over()
-/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/bullet/reusable))
+/obj/item/cardboard_cutout/bullet_act(obj/projectile/P)
+ if(istype(P, /obj/projectile/bullet/reusable))
P.on_hit(src, 0)
visible_message("[src] is hit by [P]!")
playsound(src, 'sound/weapons/slice.ogg', 50, TRUE)
diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm
index 52841f06921..3de5e3505a2 100644
--- a/code/game/objects/items/chrono_eraser.dm
+++ b/code/game/objects/items/chrono_eraser.dm
@@ -120,20 +120,20 @@
TED.pass_mind(M)
-/obj/item/projectile/energy/chrono_beam
+/obj/projectile/energy/chrono_beam
name = "eradication beam"
icon_state = "chronobolt"
range = CHRONO_BEAM_RANGE
nodamage = TRUE
var/obj/item/gun/energy/chrono_gun/gun = null
-/obj/item/projectile/energy/chrono_beam/Initialize()
+/obj/projectile/energy/chrono_beam/Initialize()
. = ..()
var/obj/item/ammo_casing/energy/chrono_beam/C = loc
if(istype(C))
gun = C.gun
-/obj/item/projectile/energy/chrono_beam/on_hit(atom/target)
+/obj/projectile/energy/chrono_beam/on_hit(atom/target)
if(target && gun && isliving(target))
var/obj/structure/chrono_field/F = new(target.loc, target, gun)
gun.field_connect(F)
@@ -141,7 +141,7 @@
/obj/item/ammo_casing/energy/chrono_beam
name = "eradication beam"
- projectile_type = /obj/item/projectile/energy/chrono_beam
+ projectile_type = /obj/projectile/energy/chrono_beam
icon_state = "chronobolt"
e_cost = 0
var/obj/item/gun/energy/chrono_gun/gun
@@ -238,9 +238,9 @@
else
qdel(src)
-/obj/structure/chrono_field/bullet_act(obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/energy/chrono_beam))
- var/obj/item/projectile/energy/chrono_beam/beam = P
+/obj/structure/chrono_field/bullet_act(obj/projectile/P)
+ if(istype(P, /obj/projectile/energy/chrono_beam))
+ var/obj/projectile/energy/chrono_beam/beam = P
var/obj/item/gun/energy/chrono_gun/Pgun = beam.gun
if(Pgun && istype(Pgun))
Pgun.field_connect(src)
diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm
index 134268527fc..cb69657a05f 100644
--- a/code/game/objects/items/flamethrower.dm
+++ b/code/game/objects/items/flamethrower.dm
@@ -235,7 +235,7 @@
create_with_tank = TRUE
/obj/item/flamethrower/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- var/obj/item/projectile/P = hitby
+ var/obj/projectile/P = hitby
if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15))
owner.visible_message("\The [attack_text] hits the fueltank on [owner]'s [name], rupturing it! What a shot!")
var/turf/target_turf = get_turf(owner)
diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm
index 75152e3fcdb..47beefd83d9 100644
--- a/code/game/objects/items/grenades/grenade.dm
+++ b/code/game/objects/items/grenades/grenade.dm
@@ -119,7 +119,7 @@
return attack_hand(user)
/obj/item/grenade/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- var/obj/item/projectile/P = hitby
+ var/obj/projectile/P = hitby
if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15))
owner.visible_message("[attack_text] hits [owner]'s [src], setting it off! What a shot!")
var/turf/T = get_turf(src)
diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm
index 60afdc0ca90..06981729dec 100644
--- a/code/game/objects/items/latexballoon.dm
+++ b/code/game/objects/items/latexballoon.dm
@@ -40,7 +40,7 @@
if (prob(50))
qdel(src)
-/obj/item/latexballon/bullet_act(obj/item/projectile/P)
+/obj/item/latexballon/bullet_act(obj/projectile/P)
if(!P.nodamage)
burst()
return ..()
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 6bd0996c4e9..db61d342a34 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -471,7 +471,7 @@
"You hear a loud crack as you are washed with a wave of heat.")
consume_everything()
-/obj/item/melee/supermatter_sword/bullet_act(obj/item/projectile/P)
+/obj/item/melee/supermatter_sword/bullet_act(obj/projectile/P)
visible_message("[P] smacks into [src] and rapidly flashes to ash.",\
"You hear a loud crack as you are washed with a wave of heat.")
consume_everything(P)
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index fa9c4b49546..8e80bc81536 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -493,18 +493,18 @@
/obj/item/ammo_casing/caseless/gumball
name = "Gumball"
desc = "Why are you seeing this?!"
- projectile_type = /obj/item/projectile/bullet/reusable/gumball
+ projectile_type = /obj/projectile/bullet/reusable/gumball
click_cooldown_override = 2
-/obj/item/projectile/bullet/reusable/gumball
+/obj/projectile/bullet/reusable/gumball
name = "gumball"
desc = "Oh noes! A fast-moving gumball!"
icon_state = "gumball"
ammo_type = /obj/item/reagent_containers/food/snacks/gumball/cyborg
nodamage = TRUE
-/obj/item/projectile/bullet/reusable/gumball/handle_drop()
+/obj/projectile/bullet/reusable/gumball/handle_drop()
if(!dropped)
var/turf/T = get_turf(src)
var/obj/item/reagent_containers/food/snacks/gumball/S = new ammo_type(T)
@@ -514,10 +514,10 @@
/obj/item/ammo_casing/caseless/lollipop //NEEDS RANDOMIZED COLOR LOGIC.
name = "Lollipop"
desc = "Why are you seeing this?!"
- projectile_type = /obj/item/projectile/bullet/reusable/lollipop
+ projectile_type = /obj/projectile/bullet/reusable/lollipop
click_cooldown_override = 2
-/obj/item/projectile/bullet/reusable/lollipop
+/obj/projectile/bullet/reusable/lollipop
name = "lollipop"
desc = "Oh noes! A fast-moving lollipop!"
icon_state = "lollipop_1"
@@ -525,7 +525,7 @@
var/color2 = rgb(0, 0, 0)
nodamage = TRUE
-/obj/item/projectile/bullet/reusable/lollipop/Initialize()
+/obj/projectile/bullet/reusable/lollipop/Initialize()
. = ..()
var/obj/item/reagent_containers/food/snacks/lollipop/S = new ammo_type(src)
color2 = S.headcolor
@@ -533,7 +533,7 @@
head.color = color2
add_overlay(head)
-/obj/item/projectile/bullet/reusable/lollipop/handle_drop()
+/obj/projectile/bullet/reusable/lollipop/handle_drop()
if(!dropped)
var/turf/T = get_turf(src)
var/obj/item/reagent_containers/food/snacks/lollipop/S = new ammo_type(T)
@@ -559,7 +559,7 @@
var/projectile_damage_tick_ecost_coefficient = 2 //Lasers get half their damage chopped off, drains 50 power/tick. Note that fields are processed 5 times per second.
var/projectile_speed_coefficient = 1.5 //Higher the coefficient slower the projectile.
var/projectile_tick_speed_ecost = 15
- var/list/obj/item/projectile/tracked
+ var/list/obj/projectile/tracked
var/image/projectile_effect
var/field_radius = 3
var/active = FALSE
@@ -652,7 +652,7 @@
/obj/item/borg/projectile_dampen/proc/process_usage()
var/usage = 0
for(var/I in tracked)
- var/obj/item/projectile/P = I
+ var/obj/projectile/P = I
if(!P.stun && P.nodamage) //No damage
continue
usage += projectile_tick_speed_ecost
@@ -673,7 +673,7 @@
host.cell.use(energy_recharge*energy_recharge_cyborg_drain_coefficient)
energy += energy_recharge
-/obj/item/borg/projectile_dampen/proc/dampen_projectile(obj/item/projectile/P, track_projectile = TRUE)
+/obj/item/borg/projectile_dampen/proc/dampen_projectile(obj/projectile/P, track_projectile = TRUE)
if(tracked[P])
return
if(track_projectile)
@@ -682,7 +682,7 @@
P.speed *= projectile_speed_coefficient
P.add_overlay(projectile_effect)
-/obj/item/borg/projectile_dampen/proc/restore_projectile(obj/item/projectile/P)
+/obj/item/borg/projectile_dampen/proc/restore_projectile(obj/projectile/P)
tracked -= P
P.damage *= (1/projectile_damage_coefficient)
P.speed *= (1/projectile_speed_coefficient)
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index 9d8e973449c..412e7df3414 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -60,17 +60,17 @@
#define DECALTYPE_SCORCH 1
#define DECALTYPE_BULLET 2
-/obj/item/target/clown/bullet_act(obj/item/projectile/P)
+/obj/item/target/clown/bullet_act(obj/projectile/P)
. = ..()
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, TRUE)
-/obj/item/target/bullet_act(obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/bullet/reusable)) // If it's a foam dart, don't bother with any of this other shit
+/obj/item/target/bullet_act(obj/projectile/P)
+ if(istype(P, /obj/projectile/bullet/reusable)) // If it's a foam dart, don't bother with any of this other shit
return P.on_hit(src, 0)
var/p_x = P.p_x + pick(0,0,0,0,0,-1,1) // really ugly way of coding "sometimes offset P.p_x!"
var/p_y = P.p_y + pick(0,0,0,0,0,-1,1)
var/decaltype = DECALTYPE_SCORCH
- if(istype(P, /obj/item/projectile/bullet))
+ if(istype(P, /obj/projectile/bullet))
decaltype = DECALTYPE_BULLET
var/icon/C = icon(icon,icon_state)
if(C.GetPixel(p_x, p_y) && P.original == src && overlays.len <= 35) // if the located pixel isn't blank (null)
@@ -83,7 +83,7 @@
bullet_hole.pixel_y = p_y - 1
if(decaltype == DECALTYPE_SCORCH)
bullet_hole.setDir(pick(NORTH,SOUTH,EAST,WEST))// random scorch design
- if(P.damage >= 20 || istype(P, /obj/item/projectile/beam/practice))
+ if(P.damage >= 20 || istype(P, /obj/projectile/beam/practice))
bullet_hole.setDir(pick(NORTH,SOUTH,EAST,WEST))
else
bullet_hole.icon_state = "light_scorch"
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index c4827a1f611..53295914fd6 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -66,7 +66,7 @@
if(3)
take_damage(rand(10, 90), BRUTE, "bomb", 0)
-/obj/bullet_act(obj/item/projectile/P)
+/obj/bullet_act(obj/projectile/P)
. = ..()
playsound(src, P.hitsound, 50, TRUE)
visible_message("[src] is hit by \a [P]!", null, null, COMBAT_MESSAGE_RANGE)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 1b1350ef24e..c7420281f92 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -275,7 +275,7 @@
if(istype(mover) && (mover.pass_flags & PASSGRILLE))
return prob(girderpasschance)
else
- if(istype(mover, /obj/item/projectile))
+ if(istype(mover, /obj/projectile))
return prob(girderpasschance)
else
return 0
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 6c15eb1cde9..4e132690f1e 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -126,7 +126,7 @@
if(istype(mover) && (mover.pass_flags & PASSGRILLE))
return TRUE
else
- if(istype(mover, /obj/item/projectile) && density)
+ if(istype(mover, /obj/projectile) && density)
return prob(30)
else
return !density
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index 2581aad4f09..ec387a0ca72 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -104,11 +104,11 @@
max_integrity = 10
allow_walk = 0
-/obj/structure/holosign/barrier/cyborg/bullet_act(obj/item/projectile/P)
+/obj/structure/holosign/barrier/cyborg/bullet_act(obj/projectile/P)
take_damage((P.damage / 5) , BRUTE, "melee", 1) //Doesn't really matter what damage flag it is.
- if(istype(P, /obj/item/projectile/energy/electrode))
+ if(istype(P, /obj/projectile/energy/electrode))
take_damage(10, BRUTE, "melee", 1) //Tasers aren't harmful.
- if(istype(P, /obj/item/projectile/beam/disabler))
+ if(istype(P, /obj/projectile/beam/disabler))
take_damage(5, BRUTE, "melee", 1) //Disablers aren't harmful.
return BULLET_ACT_HIT
@@ -154,7 +154,7 @@
max_integrity = 20
var/shockcd = 0
-/obj/structure/holosign/barrier/cyborg/hacked/bullet_act(obj/item/projectile/P)
+/obj/structure/holosign/barrier/cyborg/hacked/bullet_act(obj/projectile/P)
take_damage(P.damage, BRUTE, "melee", 1) //Yeah no this doesn't get projectile resistance.
return BULLET_ACT_HIT
diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm
index 1601461b6ee..4a71e4f26b7 100644
--- a/code/game/objects/structures/manned_turret.dm
+++ b/code/game/objects/structures/manned_turret.dm
@@ -13,7 +13,7 @@
layer = ABOVE_MOB_LAYER
var/view_range = 10
var/cooldown = 0
- var/projectile_type = /obj/item/projectile/bullet/manned_turret
+ var/projectile_type = /obj/projectile/bullet/manned_turret
var/rate_of_fire = 1
var/number_of_shots = 40
var/cooldown_duration = 90
@@ -151,7 +151,7 @@
var/turf/targets_from = get_turf(src)
if(QDELETED(target))
target = target_turf
- var/obj/item/projectile/P = new projectile_type(targets_from)
+ var/obj/projectile/P = new projectile_type(targets_from)
P.starting = targets_from
P.firer = user
P.original = target
@@ -166,7 +166,7 @@
/obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics
name = "Infinity Gun"
view_range = 12
- projectile_type = /obj/item/projectile/bullet/manned_turret
+ projectile_type = /obj/projectile/bullet/manned_turret
/obj/machinery/manned_turret/ultimate/checkfire(atom/targeted_atom, mob/user)
target = targeted_atom
diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm
index 7593af10a42..b4204a18025 100644
--- a/code/game/objects/structures/reflector.dm
+++ b/code/game/objects/structures/reflector.dm
@@ -14,7 +14,7 @@
var/framebuildstackamount = 5
var/buildstacktype = /obj/item/stack/sheet/metal
var/buildstackamount = 0
- var/list/allowed_projectile_typecache = list(/obj/item/projectile/beam)
+ var/list/allowed_projectile_typecache = list(/obj/projectile/beam)
var/rotation_angle = -1
/obj/structure/reflector/Initialize()
@@ -58,7 +58,7 @@
/obj/structure/reflector/proc/dir_map_to_angle(dir)
return 0
-/obj/structure/reflector/bullet_act(obj/item/projectile/P)
+/obj/structure/reflector/bullet_act(obj/projectile/P)
var/pdir = P.dir
var/pangle = P.Angle
var/ploc = get_turf(P)
@@ -68,7 +68,7 @@
return ..()
return BULLET_ACT_FORCE_PIERCE
-/obj/structure/reflector/proc/auto_reflect(obj/item/projectile/P, pdir, turf/ploc, pangle)
+/obj/structure/reflector/proc/auto_reflect(obj/projectile/P, pdir, turf/ploc, pangle)
P.ignore_source_check = TRUE
P.range = P.decayedRange
P.decayedRange = max(P.decayedRange--, 0)
@@ -193,7 +193,7 @@
admin = TRUE
anchored = TRUE
-/obj/structure/reflector/single/auto_reflect(obj/item/projectile/P, pdir, turf/ploc, pangle)
+/obj/structure/reflector/single/auto_reflect(obj/projectile/P, pdir, turf/ploc, pangle)
var/incidence = GET_ANGLE_OF_INCIDENCE(rotation_angle, (P.Angle + 180))
if(abs(incidence) > 90 && abs(incidence) < 270)
return FALSE
@@ -219,7 +219,7 @@
admin = TRUE
anchored = TRUE
-/obj/structure/reflector/double/auto_reflect(obj/item/projectile/P, pdir, turf/ploc, pangle)
+/obj/structure/reflector/double/auto_reflect(obj/projectile/P, pdir, turf/ploc, pangle)
var/incidence = GET_ANGLE_OF_INCIDENCE(rotation_angle, (P.Angle + 180))
var/new_angle = SIMPLIFY_DEGREES(rotation_angle + incidence)
P.setAngle(new_angle)
@@ -243,7 +243,7 @@
admin = TRUE
anchored = TRUE
-/obj/structure/reflector/box/auto_reflect(obj/item/projectile/P)
+/obj/structure/reflector/box/auto_reflect(obj/projectile/P)
P.setAngle(rotation_angle)
return ..()
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 6ce62d69b45..11b5b51ba0f 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -110,7 +110,7 @@
PlasmaBurn(exposed_temperature)
-/obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj)
+/obj/structure/statue/plasma/bullet_act(obj/projectile/Proj)
var/burn = FALSE
if(!(Proj.nodamage) && Proj.damage_type == BURN && !QDELETED(src))
burn = TRUE
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 8ce0ffc91c9..342d4f0c49d 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -69,7 +69,7 @@
pinned_target.forceMove(user.drop_location())
to_chat(user, "You take the target out of the stake.")
-/obj/structure/target_stake/bullet_act(obj/item/projectile/P)
+/obj/structure/target_stake/bullet_act(obj/projectile/P)
if(pinned_target)
pinned_target.bullet_act(P)
else
diff --git a/code/game/turfs/simulated/reebe_void.dm b/code/game/turfs/simulated/reebe_void.dm
index 14aa02065d5..971abec3b45 100644
--- a/code/game/turfs/simulated/reebe_void.dm
+++ b/code/game/turfs/simulated/reebe_void.dm
@@ -42,7 +42,7 @@
else
if(istype(AM, /obj/structure/window))
return FALSE
- if(istype(AM, /obj/item/projectile))
+ if(istype(AM, /obj/projectile))
return TRUE
if((locate(/obj/structure/lattice) in src))
return TRUE
diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm
index 9627c8f9c52..4837acde811 100644
--- a/code/game/turfs/simulated/wall/mineral_walls.dm
+++ b/code/game/turfs/simulated/wall/mineral_walls.dm
@@ -115,10 +115,10 @@
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
-/turf/closed/wall/mineral/plasma/bullet_act(obj/item/projectile/Proj)
- if(istype(Proj, /obj/item/projectile/beam))
+/turf/closed/wall/mineral/plasma/bullet_act(obj/projectile/Proj)
+ if(istype(Proj, /obj/projectile/beam))
PlasmaBurn(2500)
- else if(istype(Proj, /obj/item/projectile/ion))
+ else if(istype(Proj, /obj/projectile/ion))
PlasmaBurn(500)
. = ..()
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 32764b0ed76..c7550232859 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -41,7 +41,7 @@
/turf/closed/wall/attack_tk()
return
-/turf/closed/wall/handle_ricochet(obj/item/projectile/P) //A huge pile of shitcode!
+/turf/closed/wall/handle_ricochet(obj/projectile/P) //A huge pile of shitcode!
var/turf/p_turf = get_turf(P)
var/face_direction = get_dir(src, p_turf)
var/face_angle = dir2angle(face_direction)
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 66d6208e1f5..4c23def7ac5 100755
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -567,7 +567,7 @@
/turf/proc/Melt()
return ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
-/turf/bullet_act(obj/item/projectile/P)
+/turf/bullet_act(obj/projectile/P)
. = ..()
if(. != BULLET_ACT_FORCE_PIERCE)
. = BULLET_ACT_TURF
diff --git a/code/modules/antagonists/blob/structures/shield.dm b/code/modules/antagonists/blob/structures/shield.dm
index e91deaf4c47..b837697af6d 100644
--- a/code/modules/antagonists/blob/structures/shield.dm
+++ b/code/modules/antagonists/blob/structures/shield.dm
@@ -44,7 +44,7 @@
brute_resist = 0.5
explosion_block = 2
-/obj/structure/blob/shield/reflective/handle_ricochet(obj/item/projectile/P)
+/obj/structure/blob/shield/reflective/handle_ricochet(obj/projectile/P)
var/turf/p_turf = get_turf(P)
var/face_direction = get_dir(src, p_turf)
var/face_angle = dir2angle(face_direction)
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 4b0d57d5fef..a027e2698e2 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -276,7 +276,7 @@
/obj/item/ammo_casing/magic/tentacle
name = "tentacle"
desc = "A tentacle."
- projectile_type = /obj/item/projectile/tentacle
+ projectile_type = /obj/projectile/tentacle
caliber = "tentacle"
icon_state = "tentacle_end"
firing_effect_type = null
@@ -290,7 +290,7 @@
gun = null
return ..()
-/obj/item/projectile/tentacle
+/obj/projectile/tentacle
name = "tentacle"
icon_state = "tentacle_end"
pass_flags = PASSTABLE
@@ -301,20 +301,20 @@
var/chain
var/obj/item/ammo_casing/magic/tentacle/source //the item that shot it
-/obj/item/projectile/tentacle/Initialize()
+/obj/projectile/tentacle/Initialize()
source = loc
. = ..()
-/obj/item/projectile/tentacle/fire(setAngle)
+/obj/projectile/tentacle/fire(setAngle)
if(firer)
chain = firer.Beam(src, icon_state = "tentacle", time = INFINITY, maxdistance = INFINITY, beam_sleep_time = 1)
..()
-/obj/item/projectile/tentacle/proc/reset_throw(mob/living/carbon/human/H)
+/obj/projectile/tentacle/proc/reset_throw(mob/living/carbon/human/H)
if(H.in_throw_mode)
H.throw_mode_off() //Don't annoy the changeling if he doesn't catch the item
-/obj/item/projectile/tentacle/proc/tentacle_grab(mob/living/carbon/human/H, mob/living/carbon/C)
+/obj/projectile/tentacle/proc/tentacle_grab(mob/living/carbon/human/H, mob/living/carbon/C)
if(H.Adjacent(C))
if(H.get_active_held_item() && !H.get_inactive_held_item())
H.swap_hand()
@@ -323,7 +323,7 @@
C.grabbedby(H)
C.grippedby(H, instant = TRUE) //instant aggro grab
-/obj/item/projectile/tentacle/proc/tentacle_stab(mob/living/carbon/human/H, mob/living/carbon/C)
+/obj/projectile/tentacle/proc/tentacle_stab(mob/living/carbon/human/H, mob/living/carbon/C)
if(H.Adjacent(C))
for(var/obj/item/I in H.held_items)
if(I.get_sharpness())
@@ -334,7 +334,7 @@
playsound(get_turf(H),I.hitsound,75,TRUE)
return
-/obj/item/projectile/tentacle/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/tentacle/on_hit(atom/target, blocked = FALSE)
var/mob/living/carbon/human/H = firer
if(blocked >= 100)
return BULLET_ACT_BLOCK
@@ -389,7 +389,7 @@
L.throw_at(get_step_towards(H,L), 8, 2)
. = BULLET_ACT_HIT
-/obj/item/projectile/tentacle/Destroy()
+/obj/projectile/tentacle/Destroy()
qdel(chain)
source = null
return ..()
diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
index f3f7a231bec..16e26682cd1 100644
--- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
+++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
@@ -155,7 +155,7 @@
clockwork_say(ranged_ability_user, text2ratvar("Purge all untruths and honor Engine!"))
log_combat(ranged_ability_user, U, "fired at with Kindle")
playsound(ranged_ability_user, 'sound/magic/blink.ogg', 50, TRUE, frequency = 0.5)
- var/obj/item/projectile/kindle/A = new(T)
+ var/obj/projectile/kindle/A = new(T)
A.preparePixelProjectile(target, caller, params)
A.fire()
@@ -163,7 +163,7 @@
return TRUE
-/obj/item/projectile/kindle
+/obj/projectile/kindle
name = "kindled flame"
icon_state = "pulse0"
nodamage = TRUE
@@ -173,11 +173,11 @@
range = 3
log_override = TRUE
-/obj/item/projectile/kindle/Destroy()
+/obj/projectile/kindle/Destroy()
visible_message("[src] flickers out!")
. = ..()
-/obj/item/projectile/kindle/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/kindle/on_hit(atom/target, blocked = FALSE)
if(isliving(target))
var/mob/living/L = target
if(is_servant_of_ratvar(L) || L.stat || L.has_status_effect(STATUS_EFFECT_KINDLE))
diff --git a/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm
index 632403bf55c..6e3507eb564 100644
--- a/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm
+++ b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm
@@ -80,15 +80,15 @@
break
. = ..()
-/mob/living/simple_animal/hostile/clockwork/marauder/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/clockwork/marauder/bullet_act(obj/projectile/P)
if(deflect_projectile(P))
return BULLET_ACT_BLOCK
return ..()
-/mob/living/simple_animal/hostile/clockwork/marauder/proc/deflect_projectile(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/clockwork/marauder/proc/deflect_projectile(obj/projectile/P)
if(!shield_health)
return
- var/energy_projectile = istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)
+ var/energy_projectile = istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam)
visible_message("[src] deflects [P] with [p_their()] shield!", \
"You block [P] with your shield! Blocks left: [shield_health - 1]")
if(energy_projectile)
diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
index 4ae8f52fe51..90cc1f1ecd8 100644
--- a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
@@ -40,7 +40,7 @@
return
..()
-/obj/structure/destructible/clockwork/trap/brass_skewer/bullet_act(obj/item/projectile/P)
+/obj/structure/destructible/clockwork/trap/brass_skewer/bullet_act(obj/projectile/P)
if(buckled_mobs && LAZYLEN(buckled_mobs))
var/mob/living/L = buckled_mobs[1]
return L.bullet_act(P)
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index f9cb83d1869..cf5349beaec 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -755,17 +755,17 @@
ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/blood
/obj/item/ammo_casing/magic/arcane_barrage/blood
- projectile_type = /obj/item/projectile/magic/arcane_barrage/blood
+ projectile_type = /obj/projectile/magic/arcane_barrage/blood
firing_effect_type = /obj/effect/temp_visual/cult/sparks
-/obj/item/projectile/magic/arcane_barrage/blood
+/obj/projectile/magic/arcane_barrage/blood
name = "blood bolt"
icon_state = "mini_leaper"
nondirectional_sprite = TRUE
damage_type = BRUTE
impact_effect_type = /obj/effect/temp_visual/dir_setting/bloodsplatter
-/obj/item/projectile/magic/arcane_barrage/blood/Bump(atom/target)
+/obj/projectile/magic/arcane_barrage/blood/Bump(atom/target)
var/turf/T = get_turf(target)
playsound(T, 'sound/effects/splat.ogg', 50, TRUE)
if(iscultist(target))
@@ -914,8 +914,8 @@
/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(iscultist(owner))
- if(istype(hitby, /obj/item/projectile))
- var/obj/item/projectile/P = hitby
+ if(istype(hitby, /obj/projectile))
+ var/obj/projectile/P = hitby
if(P.damage_type == BRUTE || P.damage_type == BURN)
if(P.damage >= 30)
var/turf/T = get_turf(owner)
diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm
index 545320fa9ed..da4240f24b3 100644
--- a/code/modules/antagonists/swarmer/swarmer.dm
+++ b/code/modules/antagonists/swarmer/swarmer.dm
@@ -91,7 +91,7 @@
mob_size = MOB_SIZE_TINY
ventcrawler = VENTCRAWLER_ALWAYS
ranged = 1
- projectiletype = /obj/item/projectile/beam/disabler
+ projectiletype = /obj/projectile/beam/disabler
ranged_cooldown_time = 20
projectilesound = 'sound/weapons/taser2.ogg'
loot = list(/obj/effect/decal/cleanable/robot_debris, /obj/item/stack/ore/bluespace_crystal)
@@ -136,7 +136,7 @@
death()
/mob/living/simple_animal/hostile/swarmer/CanPass(atom/movable/O)
- if(istype(O, /obj/item/projectile/beam/disabler))//Allows for swarmers to fight as a group without wasting their shots hitting each other
+ if(istype(O, /obj/projectile/beam/disabler))//Allows for swarmers to fight as a group without wasting their shots hitting each other
return 1
if(isswarmer(O))
return 1
@@ -633,7 +633,7 @@
/obj/structure/swarmer/blockade/CanPass(atom/movable/O)
if(isswarmer(O))
return 1
- if(istype(O, /obj/item/projectile/beam/disabler))
+ if(istype(O, /obj/projectile/beam/disabler))
return 1
/mob/living/simple_animal/hostile/swarmer/proc/CreateSwarmer()
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index 629580d379f..2c4e05e2eab 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -404,7 +404,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
/datum/AI_Module/large/upgrade_turrets/upgrade(mob/living/silicon/ai/AI)
for(var/obj/machinery/porta_turret/ai/turret in GLOB.machines)
turret.obj_integrity += 30
- turret.lethal_projectile = /obj/item/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
+ turret.lethal_projectile = /obj/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
turret.lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index 6934edc4c54..ded139aac81 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -389,12 +389,12 @@
ammo_type = /obj/item/ammo_casing/a50/ctf
/obj/item/ammo_casing/a50/ctf
- projectile_type = /obj/item/projectile/bullet/ctf
+ projectile_type = /obj/projectile/bullet/ctf
-/obj/item/projectile/bullet/ctf
+/obj/projectile/bullet/ctf
damage = 0
-/obj/item/projectile/bullet/ctf/prehit(atom/target)
+/obj/projectile/bullet/ctf/prehit(atom/target)
if(is_ctf_target(target))
damage = 60
. = ..()
@@ -424,13 +424,13 @@
qdel(src)
/obj/item/ammo_casing/caseless/laser/ctf
- projectile_type = /obj/item/projectile/beam/ctf
+ projectile_type = /obj/projectile/beam/ctf
-/obj/item/projectile/beam/ctf
+/obj/projectile/beam/ctf
damage = 0
icon_state = "omnilaser"
-/obj/item/projectile/beam/ctf/prehit(atom/target)
+/obj/projectile/beam/ctf/prehit(atom/target)
if(is_ctf_target(target))
damage = 150
. = ..()
@@ -453,9 +453,9 @@
ammo_type = /obj/item/ammo_casing/caseless/laser/ctf/red
/obj/item/ammo_casing/caseless/laser/ctf/red
- projectile_type = /obj/item/projectile/beam/ctf/red
+ projectile_type = /obj/projectile/beam/ctf/red
-/obj/item/projectile/beam/ctf/red
+/obj/projectile/beam/ctf/red
icon_state = "laser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
@@ -468,9 +468,9 @@
ammo_type = /obj/item/ammo_casing/caseless/laser/ctf/blue
/obj/item/ammo_casing/caseless/laser/ctf/blue
- projectile_type = /obj/item/projectile/beam/ctf/blue
+ projectile_type = /obj/projectile/beam/ctf/blue
-/obj/item/projectile/beam/ctf/blue
+/obj/projectile/beam/ctf/blue
icon_state = "bluelaser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index 0adef7f0b4b..a2ecfc0412c 100644
--- a/code/modules/awaymissions/mission_code/stationCollision.dm
+++ b/code/modules/awaymissions/mission_code/stationCollision.dm
@@ -43,7 +43,7 @@
name ="retro laser"
icon_state = "retro"
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces."
-// projectile_type = "/obj/item/projectile/practice"
+// projectile_type = "/obj/projectile/practice"
clumsy_check = 0 //No sense in having a harmless gun blow up in the clowns face
//Syndicate sub-machine guns.
diff --git a/code/modules/events/wizard/magicarp.dm b/code/modules/events/wizard/magicarp.dm
index 1d14509628c..86c47f2eef9 100644
--- a/code/modules/events/wizard/magicarp.dm
+++ b/code/modules/events/wizard/magicarp.dm
@@ -32,15 +32,15 @@
ranged = 1
retreat_distance = 2
minimum_distance = 0 //Between shots they can and will close in to nash
- projectiletype = /obj/item/projectile/magic
+ projectiletype = /obj/projectile/magic
projectilesound = 'sound/weapons/emitter.ogg'
maxHealth = 50
health = 50
gold_core_spawnable = NO_SPAWN
random_color = FALSE
- var/allowed_projectile_types = list(/obj/item/projectile/magic/change, /obj/item/projectile/magic/animate, /obj/item/projectile/magic/resurrection,
- /obj/item/projectile/magic/death, /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball,
- /obj/item/projectile/magic/spellblade, /obj/item/projectile/magic/arcane_barrage)
+ var/allowed_projectile_types = list(/obj/projectile/magic/change, /obj/projectile/magic/animate, /obj/projectile/magic/resurrection,
+ /obj/projectile/magic/death, /obj/projectile/magic/teleport, /obj/projectile/magic/door, /obj/projectile/magic/aoe/fireball,
+ /obj/projectile/magic/spellblade, /obj/projectile/magic/arcane_barrage)
/mob/living/simple_animal/hostile/carp/ranged/Initialize()
projectiletype = pick(allowed_projectile_types)
@@ -60,13 +60,13 @@
/mob/living/simple_animal/hostile/carp/ranged/xenobiology // these are for the xenobio gold slime pool
gold_core_spawnable = HOSTILE_SPAWN
- allowed_projectile_types = list(/obj/item/projectile/magic/change, /obj/item/projectile/magic/animate, /obj/item/projectile/magic/resurrection,
- /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball, /obj/item/projectile/magic/spellblade,
- /obj/item/projectile/magic/arcane_barrage) //thanks Lett1
+ allowed_projectile_types = list(/obj/projectile/magic/change, /obj/projectile/magic/animate, /obj/projectile/magic/resurrection,
+ /obj/projectile/magic/teleport, /obj/projectile/magic/door, /obj/projectile/magic/aoe/fireball, /obj/projectile/magic/spellblade,
+ /obj/projectile/magic/arcane_barrage) //thanks Lett1
/mob/living/simple_animal/hostile/carp/ranged/chaos/xenobiology
gold_core_spawnable = HOSTILE_SPAWN
- allowed_projectile_types = list(/obj/item/projectile/magic/change, /obj/item/projectile/magic/animate, /obj/item/projectile/magic/resurrection,
- /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball, /obj/item/projectile/magic/spellblade,
- /obj/item/projectile/magic/arcane_barrage)
+ allowed_projectile_types = list(/obj/projectile/magic/change, /obj/projectile/magic/animate, /obj/projectile/magic/resurrection,
+ /obj/projectile/magic/teleport, /obj/projectile/magic/door, /obj/projectile/magic/aoe/fireball, /obj/projectile/magic/spellblade,
+ /obj/projectile/magic/arcane_barrage)
diff --git a/code/modules/fields/peaceborg_dampener.dm b/code/modules/fields/peaceborg_dampener.dm
index 47d7f096c96..5a1f1491648 100644
--- a/code/modules/fields/peaceborg_dampener.dm
+++ b/code/modules/fields/peaceborg_dampener.dm
@@ -17,8 +17,8 @@
var/static/image/southeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast")
var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic")
var/obj/item/borg/projectile_dampen/projector = null
- var/list/obj/item/projectile/tracked
- var/list/obj/item/projectile/staging
+ var/list/obj/projectile/tracked
+ var/list/obj/projectile/staging
use_host_turf = TRUE
/datum/proximity_monitor/advanced/peaceborg_dampener/New()
@@ -33,9 +33,9 @@
if(!istype(projector))
qdel(src)
var/list/ranged = list()
- for(var/obj/item/projectile/P in range(current_range, get_turf(host)))
+ for(var/obj/projectile/P in range(current_range, get_turf(host)))
ranged += P
- for(var/obj/item/projectile/P in tracked)
+ for(var/obj/projectile/P in tracked)
if(!(P in ranged) || !P.loc)
release_projectile(P)
for(var/mob/living/silicon/robot/R in range(current_range, get_turf(host)))
@@ -80,20 +80,20 @@
else
return generic_edge
-/datum/proximity_monitor/advanced/peaceborg_dampener/proc/capture_projectile(obj/item/projectile/P, track_projectile = TRUE)
+/datum/proximity_monitor/advanced/peaceborg_dampener/proc/capture_projectile(obj/projectile/P, track_projectile = TRUE)
if(P in tracked)
return
projector.dampen_projectile(P, track_projectile)
if(track_projectile)
tracked += P
-/datum/proximity_monitor/advanced/peaceborg_dampener/proc/release_projectile(obj/item/projectile/P)
+/datum/proximity_monitor/advanced/peaceborg_dampener/proc/release_projectile(obj/projectile/P)
projector.restore_projectile(P)
tracked -= P
/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_uncrossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F)
if(!is_turf_in_field(get_turf(AM), src))
- if(istype(AM, /obj/item/projectile))
+ if(istype(AM, /obj/projectile))
if(AM in tracked)
release_projectile(AM)
else
@@ -101,13 +101,13 @@
return ..()
/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_crossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F)
- if(istype(AM, /obj/item/projectile) && !(AM in tracked) && staging[AM] && !is_turf_in_field(staging[AM], src))
+ if(istype(AM, /obj/projectile) && !(AM in tracked) && staging[AM] && !is_turf_in_field(staging[AM], src))
capture_projectile(AM)
staging -= AM
return ..()
/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_canpass(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F, turf/entering)
- if(istype(AM, /obj/item/projectile))
+ if(istype(AM, /obj/projectile))
staging[AM] = get_turf(AM)
. = ..()
if(!.)
diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm
index 5fc3c23c7e8..7c97984e4d6 100644
--- a/code/modules/fields/timestop.dm
+++ b/code/modules/fields/timestop.dm
@@ -82,7 +82,7 @@
var/frozen = TRUE
if(isliving(A))
freeze_mob(A)
- else if(istype(A, /obj/item/projectile))
+ else if(istype(A, /obj/projectile))
freeze_projectile(A)
else if(istype(A, /obj/mecha))
freeze_mecha(A)
@@ -116,7 +116,7 @@
unfreeze_throwing(A)
if(isliving(A))
unfreeze_mob(A)
- else if(istype(A, /obj/item/projectile))
+ else if(istype(A, /obj/projectile))
unfreeze_projectile(A)
else if(istype(A, /obj/mecha))
unfreeze_mecha(A)
@@ -127,14 +127,14 @@
A.move_resist = frozen_things[A]
frozen_things -= A
global_frozen_atoms -= A
-
+
/datum/proximity_monitor/advanced/timestop/proc/freeze_mecha(obj/mecha/M)
M.completely_disabled = TRUE
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_mecha(obj/mecha/M)
M.completely_disabled = FALSE
-
+
/datum/proximity_monitor/advanced/timestop/proc/freeze_throwing(atom/movable/AM)
var/datum/thrownthing/T = AM.throwing
@@ -171,10 +171,10 @@
return ..()
-/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/item/projectile/P)
+/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/projectile/P)
P.paused = TRUE
-/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/item/projectile/P)
+/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/projectile/P)
P.paused = FALSE
/datum/proximity_monitor/advanced/timestop/proc/freeze_mob(mob/living/L)
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 8657f0f1b31..bc93a175c0f 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -1290,9 +1290,9 @@ GLOBAL_LIST_INIT(hallucination_list, list(
qdel(src)
return
var/turf/start = pick(startlocs)
- var/proj_type = pick(subtypesof(/obj/item/projectile/hallucination))
+ var/proj_type = pick(subtypesof(/obj/projectile/hallucination))
feedback_details += "Type: [proj_type]"
- var/obj/item/projectile/hallucination/H = new proj_type(start)
+ var/obj/projectile/hallucination/H = new proj_type(start)
target.playsound_local(start, H.hal_fire_sound, 60, 1)
H.hal_target = target
H.preparePixelProjectile(target, start)
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index c5d90044804..3d11667e995 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -131,7 +131,7 @@
qdel(src)
target.Bumped(B)
-/obj/item/reagent_containers/food/drinks/bullet_act(obj/item/projectile/P)
+/obj/item/reagent_containers/food/drinks/bullet_act(obj/projectile/P)
. = ..()
if(!(P.nodamage) && P.damage_type == BRUTE && !QDELETED(src))
var/atom/T = get_turf(src)
@@ -442,7 +442,7 @@
qdel(src)
..()
-/obj/item/reagent_containers/food/drinks/soda_cans/bullet_act(obj/item/projectile/P)
+/obj/item/reagent_containers/food/drinks/soda_cans/bullet_act(obj/projectile/P)
. = ..()
if(!(P.nodamage) && P.damage_type == BRUTE && !QDELETED(src))
var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(src.loc)
diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm
index f1cd4cbcc73..a7522091f15 100644
--- a/code/modules/holodeck/items.dm
+++ b/code/modules/holodeck/items.dm
@@ -125,7 +125,7 @@
..()
/obj/structure/holohoop/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
- if (isitem(AM) && !istype(AM,/obj/item/projectile))
+ if (isitem(AM) && !istype(AM,/obj/projectile))
if(prob(50))
AM.forceMove(get_turf(src))
visible_message("Swish! [AM] lands in [src].")
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 82d52bea7f8..16b4021547c 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -91,12 +91,12 @@
return connected
-/obj/machinery/hydroponics/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
+/obj/machinery/hydroponics/bullet_act(obj/projectile/Proj) //Works with the Somatoray to modify plant variables.
if(!myseed)
return ..()
- if(istype(Proj , /obj/item/projectile/energy/floramut))
+ if(istype(Proj , /obj/projectile/energy/floramut))
mutate()
- else if(istype(Proj , /obj/item/projectile/energy/florayield))
+ else if(istype(Proj , /obj/projectile/energy/florayield))
return myseed.bullet_act(Proj)
else
return ..()
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 629e6100dd3..898c66d0bd2 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -129,8 +129,8 @@
-/obj/item/seeds/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
- if(istype(Proj, /obj/item/projectile/energy/florayield))
+/obj/item/seeds/bullet_act(obj/projectile/Proj) //Works with the Somatoray to modify plant variables.
+ if(istype(Proj, /obj/projectile/energy/florayield))
var/rating = 1
if(istype(loc, /obj/machinery/hydroponics))
var/obj/machinery/hydroponics/H = loc
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 33210b7030f..ccdf690c082 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -11,7 +11,7 @@
force = 0 //You can't hit stuff unless wielded
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK
- force_unwielded = 0
+ force_unwielded = 0
force_wielded = 20
throwforce = 5
throw_speed = 4
@@ -84,7 +84,7 @@
var/turf/proj_turf = user.loc
if(!isturf(proj_turf))
return
- var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf)
+ var/obj/projectile/destabilizer/D = new /obj/projectile/destabilizer(proj_turf)
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.on_projectile_fire(D, user)
@@ -155,7 +155,7 @@
item_state = "crusher[wielded]"
//destablizing force
-/obj/item/projectile/destabilizer
+/obj/projectile/destabilizer
name = "destabilizing force"
icon_state = "pulse1"
nodamage = TRUE
@@ -166,11 +166,11 @@
log_override = TRUE
var/obj/item/twohanded/kinetic_crusher/hammer_synced
-/obj/item/projectile/destabilizer/Destroy()
+/obj/projectile/destabilizer/Destroy()
hammer_synced = null
return ..()
-/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/destabilizer/on_hit(atom/target, blocked = FALSE)
if(isliving(target))
var/mob/living/L = target
var/had_effect = (L.has_status_effect(STATUS_EFFECT_CRUSHERMARK)) //used as a boolean
@@ -226,7 +226,7 @@
return TRUE
/obj/item/crusher_trophy/proc/on_melee_hit(mob/living/target, mob/living/user) //the target and the user
-/obj/item/crusher_trophy/proc/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user
+/obj/item/crusher_trophy/proc/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user
/obj/item/crusher_trophy/proc/on_mark_application(mob/living/target, datum/status_effect/crusher_mark/mark, had_mark) //the target, the mark applied, and if the target had a mark before
/obj/item/crusher_trophy/proc/on_mark_detonation(mob/living/target, mob/living/user) //the target and the user
@@ -281,7 +281,7 @@
/obj/item/crusher_trophy/blaster_tubes/magma_wing/effect_desc()
return "mark detonation to make the next destabilizer shot deal [bonus_value] damage"
-/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
+/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
if(deadly_shot)
marker.name = "heated [marker.name]"
marker.icon_state = "lava"
@@ -400,7 +400,7 @@
/obj/item/crusher_trophy/blaster_tubes/effect_desc()
return "mark detonation to make the next destabilizer shot deal [bonus_value] damage but move slower"
-/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
+/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
if(deadly_shot)
marker.name = "deadly [marker.name]"
marker.icon_state = "chronobolt"
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 878ee6b9e55..6eab9be3b0c 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -405,11 +405,11 @@
/obj/item/ammo_casing/magic/hook
name = "hook"
desc = "A hook."
- projectile_type = /obj/item/projectile/hook
+ projectile_type = /obj/projectile/hook
caliber = "hook"
icon_state = "hook"
-/obj/item/projectile/hook
+/obj/projectile/hook
name = "hook"
icon_state = "hook"
icon = 'icons/obj/lavaland/artefacts.dmi'
@@ -421,13 +421,13 @@
paralyze = 30
var/chain
-/obj/item/projectile/hook/fire(setAngle)
+/obj/projectile/hook/fire(setAngle)
if(firer)
chain = firer.Beam(src, icon_state = "chain", time = INFINITY, maxdistance = INFINITY)
..()
//TODO: root the firer until the chain returns
-/obj/item/projectile/hook/on_hit(atom/target)
+/obj/projectile/hook/on_hit(atom/target)
. = ..()
if(ismovableatom(target))
var/atom/movable/A = target
@@ -438,7 +438,7 @@
//TODO: keep the chain beamed to A
//TODO: needs a callback to delete the chain
-/obj/item/projectile/hook/Destroy()
+/obj/projectile/hook/Destroy()
qdel(chain)
return ..()
@@ -451,9 +451,9 @@
to_chat(user, "The [src] isn't ready to fire yet!")
/obj/item/ammo_casing/magic/hook/bounty
- projectile_type = /obj/item/projectile/hook/bounty
+ projectile_type = /obj/projectile/hook/bounty
-/obj/item/projectile/hook/bounty
+/obj/projectile/hook/bounty
damage = 0
paralyze = 20
@@ -1069,8 +1069,8 @@
/obj/structure/closet/crate/necropolis/colossus
name = "colossus chest"
-/obj/structure/closet/crate/necropolis/colossus/bullet_act(obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/colossus))
+/obj/structure/closet/crate/necropolis/colossus/bullet_act(obj/projectile/P)
+ if(istype(P, /obj/projectile/colossus))
return BULLET_ACT_FORCE_PIERCE
return ..()
diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm
index f68de678341..e0f113f5e30 100644
--- a/code/modules/mining/minebot.dm
+++ b/code/modules/mining/minebot.dm
@@ -132,14 +132,14 @@
return
/mob/living/simple_animal/hostile/mining_drone/CanPass(atom/movable/O)
- if(istype(O, /obj/item/projectile/kinetic))
- var/obj/item/projectile/kinetic/K = O
+ if(istype(O, /obj/projectile/kinetic))
+ var/obj/projectile/kinetic/K = O
if(K.kinetic_gun)
for(var/A in K.kinetic_gun.get_modkits())
var/obj/item/borg/upgrade/modkit/M = A
if(istype(M, /obj/item/borg/upgrade/modkit/minebot_passthrough))
return TRUE
- if(istype(O, /obj/item/projectile/destabilizer))
+ if(istype(O, /obj/projectile/destabilizer))
return TRUE
return ..()
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 2d207c9380c..34100bd96be 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -244,7 +244,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
else
..()
-/obj/item/twohanded/required/gibtonite/bullet_act(obj/item/projectile/P)
+/obj/item/twohanded/required/gibtonite/bullet_act(obj/projectile/P)
GibtoniteReaction(P.firer)
. = ..()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index 70ae7198ad9..0ab6785e710 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -228,7 +228,7 @@ Doesn't work on other aliens/AI.*/
return FALSE
user.visible_message("[user] spits neurotoxin!", "You spit neurotoxin.")
- var/obj/item/projectile/bullet/neurotoxin/A = new /obj/item/projectile/bullet/neurotoxin(user.loc)
+ var/obj/projectile/bullet/neurotoxin/A = new /obj/projectile/bullet/neurotoxin(user.loc)
A.preparePixelProjectile(target, user, params)
A.fire()
user.newtonian_move(get_dir(U, T))
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 181e7789549..8c7391b5a46 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -37,7 +37,7 @@
if(check_mask &&(wear_mask?.flags_cover & PEPPERPROOF))
return wear_mask
-/mob/living/carbon/check_projectile_dismemberment(obj/item/projectile/P, def_zone)
+/mob/living/carbon/check_projectile_dismemberment(obj/projectile/P, def_zone)
var/obj/item/bodypart/affecting = get_bodypart(def_zone)
if(affecting && affecting.dismemberable && affecting.get_damage() >= (affecting.max_damage - P.dismemberment))
affecting.dismember(P.damtype)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 752d4640b68..04af60cbb2b 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -35,12 +35,12 @@
protection += physiology.armor.getRating(d_type)
return protection
-/mob/living/carbon/human/on_hit(obj/item/projectile/P)
+/mob/living/carbon/human/on_hit(obj/projectile/P)
if(dna && dna.species)
dna.species.on_hit(P, src)
-/mob/living/carbon/human/bullet_act(obj/item/projectile/P, def_zone)
+/mob/living/carbon/human/bullet_act(obj/projectile/P, def_zone)
if(dna && dna.species)
var/spec_return = dna.species.bullet_act(P, src)
if(spec_return)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 07434e9187d..90fa4574ab1 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1606,15 +1606,15 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage_amount)
return 1
-/datum/species/proc/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/proc/on_hit(obj/projectile/P, mob/living/carbon/human/H)
// called when hit by a projectile
switch(P.type)
- if(/obj/item/projectile/energy/floramut) // overwritten by plants/pods
+ if(/obj/projectile/energy/floramut) // overwritten by plants/pods
H.show_message("The radiation beam dissipates harmlessly through your body.")
- if(/obj/item/projectile/energy/florayield)
+ if(/obj/projectile/energy/florayield)
H.show_message("The radiation beam dissipates harmlessly through your body.")
-/datum/species/proc/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/proc/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
// called before a projectile hit
return 0
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index c13a7625302..4a69db24183 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -354,7 +354,7 @@
new /obj/item/stack/ore/glass(get_turf(H))
qdel(H)
-/datum/species/golem/sand/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/sand/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
if(!(P.original == H && P.firer == H))
if(P.flag == "bullet" || P.flag == "bomb")
playsound(H, 'sound/effects/shovel_dig.ogg', 70, TRUE)
@@ -386,7 +386,7 @@
new /obj/item/shard(get_turf(H))
qdel(H)
-/datum/species/golem/glass/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/glass/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
if(!(P.original == H && P.firer == H)) //self-shots don't reflect
if(P.flag == "laser" || P.flag == "energy")
H.visible_message("The [P.name] gets reflected by [H]'s glass skin!", \
@@ -443,7 +443,7 @@
if(world.time > last_teleport + teleport_cooldown && user != H)
reactive_teleport(H)
-/datum/species/golem/bluespace/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/bluespace/on_hit(obj/projectile/P, mob/living/carbon/human/H)
..()
if(world.time > last_teleport + teleport_cooldown)
reactive_teleport(H)
@@ -542,7 +542,7 @@
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
last_banana = world.time
-/datum/species/golem/bananium/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/bananium/on_hit(obj/projectile/P, mob/living/carbon/human/H)
..()
if(world.time > last_banana + banana_cooldown)
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
@@ -826,7 +826,7 @@
var/last_gong_time = 0
var/gong_cooldown = 150
-/datum/species/golem/bronze/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/bronze/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
if(!(world.time > last_gong_time + gong_cooldown))
return ..()
if(P.flag == "bullet" || P.flag == "bomb")
@@ -848,7 +848,7 @@
if(world.time > last_gong_time + gong_cooldown)
gong(H)
-/datum/species/golem/bronze/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/bronze/on_hit(obj/projectile/P, mob/living/carbon/human/H)
..()
if(world.time > last_gong_time + gong_cooldown)
gong(H)
diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
index 9044e696b61..337bfe1641e 100644
--- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
@@ -40,9 +40,9 @@
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
return 1
-/datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/pod/on_hit(obj/projectile/P, mob/living/carbon/human/H)
switch(P.type)
- if(/obj/item/projectile/energy/floramut)
+ if(/obj/projectile/energy/floramut)
if(prob(15))
H.rad_act(rand(30,80))
H.Paralyze(100)
@@ -56,5 +56,5 @@
else
H.adjustFireLoss(rand(5,15))
H.show_message("The radiation beam singes you!")
- if(/obj/item/projectile/energy/florayield)
+ if(/obj/projectile/energy/florayield)
H.set_nutrition(min(H.nutrition+30, NUTRITION_LEVEL_FULL))
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index ed66f7a9505..1d0e80b6ed8 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -50,7 +50,7 @@
C.fully_replace_character_name("[pick(GLOB.nightmare_names)]")
-/datum/species/shadow/nightmare/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/shadow/nightmare/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
var/turf/T = H.loc
if(istype(T))
var/light_amount = T.get_lumcount()
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index 92d15b8fb4b..ee2806461e3 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -393,8 +393,8 @@
if((W.force) && (!target) && (W.damtype != STAMINA) )
retaliate(user)
-/mob/living/carbon/monkey/bullet_act(obj/item/projectile/Proj)
- if(istype(Proj , /obj/item/projectile/beam)||istype(Proj, /obj/item/projectile/bullet))
+/mob/living/carbon/monkey/bullet_act(obj/projectile/Proj)
+ if(istype(Proj , /obj/projectile/beam)||istype(Proj, /obj/projectile/bullet))
if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
if(!Proj.nodamage && Proj.damage < src.health && isliving(Proj.firer))
retaliate(Proj.firer)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 756c50931f6..63db1cb9263 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -40,10 +40,10 @@
return FALSE
/mob/living/proc/is_pepper_proof(check_head = TRUE, check_mask = TRUE)
return FALSE
-/mob/living/proc/on_hit(obj/item/projectile/P)
+/mob/living/proc/on_hit(obj/projectile/P)
return BULLET_ACT_HIT
-/mob/living/bullet_act(obj/item/projectile/P, def_zone)
+/mob/living/bullet_act(obj/projectile/P, def_zone)
var/armor = run_armor_check(def_zone, P.flag, "","",P.armour_penetration)
var/on_hit_state = P.on_hit(src, armor)
if(!P.nodamage && on_hit_state != BULLET_ACT_BLOCK)
@@ -53,7 +53,7 @@
check_projectile_dismemberment(P, def_zone)
return on_hit_state ? BULLET_ACT_HIT : BULLET_ACT_BLOCK
-/mob/living/proc/check_projectile_dismemberment(obj/item/projectile/P, def_zone)
+/mob/living/proc/check_projectile_dismemberment(obj/projectile/P, def_zone)
return 0
/obj/item/proc/get_volume_by_throwforce_and_or_w_class()
diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm
index 3f181d0fb9d..7512adf58af 100644
--- a/code/modules/mob/living/living_movement.dm
+++ b/code/modules/mob/living/living_movement.dm
@@ -5,8 +5,8 @@
/mob/living/CanPass(atom/movable/mover, turf/target)
if((mover.pass_flags & PASSMOB))
return TRUE
- if(istype(mover, /obj/item/projectile))
- var/obj/item/projectile/P = mover
+ if(istype(mover, /obj/projectile))
+ var/obj/projectile/P = mover
return !P.can_hit_target(src, P.permutated, src == P.original, TRUE)
if(mover.throwing)
return (!density || !(mobility_flags & MOBILITY_STAND) || (mover.throwing.thrower == src && !ismob(mover)))
diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm
index eff8c3f0a5f..326f5136299 100644
--- a/code/modules/mob/living/silicon/ai/ai_defense.dm
+++ b/code/modules/mob/living/silicon/ai/ai_defense.dm
@@ -47,7 +47,7 @@
-/mob/living/silicon/ai/bullet_act(obj/item/projectile/Proj)
+/mob/living/silicon/ai/bullet_act(obj/projectile/Proj)
. = ..(Proj)
updatehealth()
diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm
index 7d542d7748f..d36c1096645 100644
--- a/code/modules/mob/living/silicon/pai/pai_defense.dm
+++ b/code/modules/mob/living/silicon/pai/pai_defense.dm
@@ -58,7 +58,7 @@
visible_message("[user] stomps on [src]!.")
take_holo_damage(2)
-/mob/living/silicon/pai/bullet_act(obj/item/projectile/Proj)
+/mob/living/silicon/pai/bullet_act(obj/projectile/Proj)
if(Proj.stun)
fold_in(force = TRUE)
src.visible_message("The electrically-charged projectile disrupts [src]'s holomatrix, forcing [src] to fold in!")
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 93593414a71..d28b6e4f072 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -181,7 +181,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
if (stat != DEAD)
adjustBruteLoss(30)
-/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj, def_zone)
+/mob/living/silicon/robot/bullet_act(obj/projectile/Proj, def_zone)
. = ..()
updatehealth()
if(prob(75) && Proj.damage > 0)
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index 00bd3ed2a64..13c4364f73c 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -117,7 +117,7 @@
M.visible_message("[M] is thrown off of [src]!")
flash_act(affect_silicon = 1)
-/mob/living/silicon/bullet_act(obj/item/projectile/Proj, def_zone)
+/mob/living/silicon/bullet_act(obj/projectile/Proj, def_zone)
SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, Proj, def_zone)
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
adjustBruteLoss(Proj.damage)
diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm
index 0003b88bb25..fa23090d091 100644
--- a/code/modules/mob/living/simple_animal/animal_defense.dm
+++ b/code/modules/mob/living/simple_animal/animal_defense.dm
@@ -109,7 +109,7 @@
apply_damage(damage, damagetype, null, getarmor(null, armorcheck))
return TRUE
-/mob/living/simple_animal/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/bullet_act(obj/projectile/Proj)
apply_damage(Proj.damage, Proj.damage_type)
Proj.on_hit(src)
return BULLET_ACT_HIT
diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
index d7c8d6a175e..c81c71704ea 100644
--- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
+++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
@@ -19,7 +19,7 @@
baton_type = /obj/item/toy/sword
weapon_force = 0
-/mob/living/simple_animal/bot/secbot/grievous/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/bot/secbot/grievous/bullet_act(obj/projectile/P)
visible_message("[src] deflects [P] with its energy swords!")
playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE)
return BULLET_ACT_BLOCK
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index ee6a272ca60..882246e89be 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -312,7 +312,7 @@
do_sparks(5, TRUE, src)
..()
-/mob/living/simple_animal/bot/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/bot/bullet_act(obj/projectile/Proj)
if(Proj && (Proj.damage_type == BRUTE || Proj.damage_type == BURN))
if(prob(75) && Proj.damage > 0)
do_sparks(5, TRUE, src)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index 3ff77ea9677..bb94d59deb9 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -1,124 +1,124 @@
-/mob/living/simple_animal/bot/secbot/ed209
- name = "\improper ED-209 Security Robot"
- desc = "A security robot. He looks less than thrilled."
- icon_state = "ed209"
- density = TRUE
- health = 100
- maxHealth = 100
- obj_damage = 60
- environment_smash = ENVIRONMENT_SMASH_WALLS //Walls can't stop THE LAW
- mob_size = MOB_SIZE_LARGE
-
- model = "ED-209"
- window_id = "autoed209"
- window_name = "Automatic Security Unit v2.6"
- ranged = TRUE
- var/lastfired = 0
- var/shot_delay = 15
- var/shoot_sound = 'sound/weapons/laser.ogg'
- var/projectile = /obj/item/projectile/beam/disabler
- var/fair_market_projectile = /obj/item/projectile/bullet/c38 // For shooting the worst scumbags of all: the poor
- do_footstep = TRUE
-
-/mob/living/simple_animal/bot/secbot/ed209/Initialize(mapload)
- . = ..()
- set_weapon() //giving it the right projectile and firing sound.
-
-/mob/living/simple_animal/bot/secbot/ed209/bot_reset()
- ..()
- set_weapon()
-
-/mob/living/simple_animal/bot/secbot/ed209/set_custom_texts()
- text_hack = "You disable [name]'s combat inhibitor."
- text_dehack = "You restore [name]'s combat inhibitor."
- text_dehack_fail = "[name] ignores your attempts to restrict him!"
-
-/mob/living/simple_animal/bot/secbot/ed209/emag_act(mob/user)
- ..()
- icon_state = "ed209[on]"
- set_weapon()
-
-/mob/living/simple_animal/bot/secbot/ed209/handle_automated_action()
- var/judgement_criteria = judgement_criteria()
- var/list/targets = list()
- for(var/mob/living/carbon/C in view(7,src)) //Let's find us a target
- var/threatlevel = 0
- if(C.incapacitated())
- continue
- threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
- //speak(C.real_name + text(": threat: []", threatlevel))
- if(threatlevel < 4 )
- continue
- var/dst = get_dist(src, C)
- if(dst <= 1 || dst > 7)
- continue
- targets += C
- if(targets.len>0)
- var/mob/living/carbon/t = pick(targets)
- if(t.stat != DEAD && !t.handcuffed) //we don't shoot people who are dead, cuffed or lying down.
- shootAt(t)
- ..()
-
-/mob/living/simple_animal/bot/secbot/ed209/proc/set_weapon() //used to update the projectile type and firing sound
- shoot_sound = 'sound/weapons/laser.ogg'
- if(emagged == 2)
- projectile = /obj/item/projectile/beam
- else
- projectile = /obj/item/projectile/beam/disabler
-
-/mob/living/simple_animal/bot/secbot/ed209/proc/shootAt(mob/target)
- if(world.time <= lastfired + shot_delay)
- return
- lastfired = world.time
- var/turf/T = loc
- var/turf/U = get_turf(target)
- if(!U)
- return
- if(!isturf(T))
- return
-
- if(!projectile)
- return
-
- var/obj/item/projectile/A = new projectile (loc)
- playsound(src, shoot_sound, 50, TRUE)
- A.preparePixelProjectile(target, src)
- A.fire()
-
-/mob/living/simple_animal/bot/secbot/ed209/emp_act(severity)
- if(severity == 2 && prob(70))
- severity = 1
- . = ..()
- if(. & EMP_PROTECT_SELF)
- return
- if (severity >= 2)
- new /obj/effect/temp_visual/emp(loc)
- var/list/mob/living/carbon/targets = new
- for(var/mob/living/carbon/C in view(12,src))
- if(C.stat==DEAD)
- continue
- targets += C
- if(targets.len)
- if(prob(50))
- var/mob/toshoot = pick(targets)
- if(toshoot)
- targets-=toshoot
- if(prob(50) && emagged < 2)
- emagged = 2
- set_weapon()
- shootAt(toshoot)
- emagged = FALSE
- set_weapon()
- else
- shootAt(toshoot)
- else if(prob(50))
- if(targets.len)
- var/mob/toarrest = pick(targets)
- if(toarrest)
- target = toarrest
- mode = BOT_HUNT
-
-/mob/living/simple_animal/bot/secbot/ed209/RangedAttack(atom/A)
- if(!on)
- return
- shootAt(A)
+/mob/living/simple_animal/bot/secbot/ed209
+ name = "\improper ED-209 Security Robot"
+ desc = "A security robot. He looks less than thrilled."
+ icon_state = "ed209"
+ density = TRUE
+ health = 100
+ maxHealth = 100
+ obj_damage = 60
+ environment_smash = ENVIRONMENT_SMASH_WALLS //Walls can't stop THE LAW
+ mob_size = MOB_SIZE_LARGE
+
+ model = "ED-209"
+ window_id = "autoed209"
+ window_name = "Automatic Security Unit v2.6"
+ ranged = TRUE
+ var/lastfired = 0
+ var/shot_delay = 15
+ var/shoot_sound = 'sound/weapons/laser.ogg'
+ var/projectile = /obj/projectile/beam/disabler
+ var/fair_market_projectile = /obj/projectile/bullet/c38 // For shooting the worst scumbags of all: the poor
+ do_footstep = TRUE
+
+/mob/living/simple_animal/bot/secbot/ed209/Initialize(mapload)
+ . = ..()
+ set_weapon() //giving it the right projectile and firing sound.
+
+/mob/living/simple_animal/bot/secbot/ed209/bot_reset()
+ ..()
+ set_weapon()
+
+/mob/living/simple_animal/bot/secbot/ed209/set_custom_texts()
+ text_hack = "You disable [name]'s combat inhibitor."
+ text_dehack = "You restore [name]'s combat inhibitor."
+ text_dehack_fail = "[name] ignores your attempts to restrict him!"
+
+/mob/living/simple_animal/bot/secbot/ed209/emag_act(mob/user)
+ ..()
+ icon_state = "ed209[on]"
+ set_weapon()
+
+/mob/living/simple_animal/bot/secbot/ed209/handle_automated_action()
+ var/judgement_criteria = judgement_criteria()
+ var/list/targets = list()
+ for(var/mob/living/carbon/C in view(7,src)) //Let's find us a target
+ var/threatlevel = 0
+ if(C.incapacitated())
+ continue
+ threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ //speak(C.real_name + text(": threat: []", threatlevel))
+ if(threatlevel < 4 )
+ continue
+ var/dst = get_dist(src, C)
+ if(dst <= 1 || dst > 7)
+ continue
+ targets += C
+ if(targets.len>0)
+ var/mob/living/carbon/t = pick(targets)
+ if(t.stat != DEAD && !t.handcuffed) //we don't shoot people who are dead, cuffed or lying down.
+ shootAt(t)
+ ..()
+
+/mob/living/simple_animal/bot/secbot/ed209/proc/set_weapon() //used to update the projectile type and firing sound
+ shoot_sound = 'sound/weapons/laser.ogg'
+ if(emagged == 2)
+ projectile = /obj/projectile/beam
+ else
+ projectile = /obj/projectile/beam/disabler
+
+/mob/living/simple_animal/bot/secbot/ed209/proc/shootAt(mob/target)
+ if(world.time <= lastfired + shot_delay)
+ return
+ lastfired = world.time
+ var/turf/T = loc
+ var/turf/U = get_turf(target)
+ if(!U)
+ return
+ if(!isturf(T))
+ return
+
+ if(!projectile)
+ return
+
+ var/obj/projectile/A = new projectile (loc)
+ playsound(src, shoot_sound, 50, TRUE)
+ A.preparePixelProjectile(target, src)
+ A.fire()
+
+/mob/living/simple_animal/bot/secbot/ed209/emp_act(severity)
+ if(severity == 2 && prob(70))
+ severity = 1
+ . = ..()
+ if(. & EMP_PROTECT_SELF)
+ return
+ if (severity >= 2)
+ new /obj/effect/temp_visual/emp(loc)
+ var/list/mob/living/carbon/targets = new
+ for(var/mob/living/carbon/C in view(12,src))
+ if(C.stat==DEAD)
+ continue
+ targets += C
+ if(targets.len)
+ if(prob(50))
+ var/mob/toshoot = pick(targets)
+ if(toshoot)
+ targets-=toshoot
+ if(prob(50) && emagged < 2)
+ emagged = 2
+ set_weapon()
+ shootAt(toshoot)
+ emagged = FALSE
+ set_weapon()
+ else
+ shootAt(toshoot)
+ else if(prob(50))
+ if(targets.len)
+ var/mob/toarrest = pick(targets)
+ if(toarrest)
+ target = toarrest
+ mode = BOT_HUNT
+
+/mob/living/simple_animal/bot/secbot/ed209/RangedAttack(atom/A)
+ if(!on)
+ return
+ shootAt(A)
diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm
index 3b37295ce98..db367da3d70 100644
--- a/code/modules/mob/living/simple_animal/bot/honkbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm
@@ -135,8 +135,8 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 75, TRUE, -1) // evil laughter
update_icon()
-/mob/living/simple_animal/bot/honkbot/bullet_act(obj/item/projectile/Proj)
- if((istype(Proj,/obj/item/projectile/beam)) || (istype(Proj,/obj/item/projectile/bullet) && (Proj.damage_type == BURN))||(Proj.damage_type == BRUTE) && (!Proj.nodamage && Proj.damage < health && ishuman(Proj.firer)))
+/mob/living/simple_animal/bot/honkbot/bullet_act(obj/projectile/Proj)
+ if((istype(Proj,/obj/projectile/beam)) || (istype(Proj,/obj/projectile/bullet) && (Proj.damage_type == BURN))||(Proj.damage_type == BRUTE) && (!Proj.nodamage && Proj.damage < health && ishuman(Proj.firer)))
retaliate(Proj.firer)
return ..()
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 808ebadf9cb..b9040bc4bb5 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -152,7 +152,7 @@
wires.cut_random()
return
-/mob/living/simple_animal/bot/mulebot/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/bot/mulebot/bullet_act(obj/projectile/Proj)
. = ..()
if(.)
if(prob(50) && !isnull(load))
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index 29482e7939b..ac5ec134f7d 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -222,8 +222,8 @@ Auto Patrol: []"},
declare_arrests = FALSE
update_icon()
-/mob/living/simple_animal/bot/secbot/bullet_act(obj/item/projectile/Proj)
- if(istype(Proj , /obj/item/projectile/beam)||istype(Proj, /obj/item/projectile/bullet))
+/mob/living/simple_animal/bot/secbot/bullet_act(obj/projectile/Proj)
+ if(istype(Proj , /obj/projectile/beam)||istype(Proj, /obj/projectile/bullet))
if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
if(!Proj.nodamage && Proj.damage < src.health && ishuman(Proj.firer))
retaliate(Proj.firer)
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 99b50eeee4d..a9954e0a609 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -144,8 +144,8 @@
AIStatus = AI_ON
environment_smash = ENVIRONMENT_SMASH_STRUCTURES //only token destruction, don't smash the cult wall NO STOP
-/mob/living/simple_animal/hostile/construct/armored/bullet_act(obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
+/mob/living/simple_animal/hostile/construct/armored/bullet_act(obj/projectile/P)
+ if(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam))
var/reflectchance = 40 - round(P.damage/3)
if(prob(reflectchance))
apply_damage(P.damage * 0.5, P.damage_type)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
index 9619d657917..0f1351467a7 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
@@ -1,5 +1,5 @@
//Ranged
-/obj/item/projectile/guardian
+/obj/projectile/guardian
name = "crystal spray"
icon_state = "guardian"
damage = 5
@@ -12,7 +12,7 @@
melee_damage_lower = 10
melee_damage_upper = 10
damage_coeff = list(BRUTE = 0.9, BURN = 0.9, TOX = 0.9, CLONE = 0.9, STAMINA = 0, OXY = 0.9)
- projectiletype = /obj/item/projectile/guardian
+ projectiletype = /obj/projectile/guardian
ranged_cooldown_time = 1 //fast!
projectilesound = 'sound/effects/hit_on_shattered_glass.ogg'
ranged = 1
@@ -54,8 +54,8 @@
/mob/living/simple_animal/hostile/guardian/ranged/Shoot(atom/targeted_atom)
. = ..()
- if(istype(., /obj/item/projectile))
- var/obj/item/projectile/P = .
+ if(istype(., /obj/projectile))
+ var/obj/projectile/P = .
if(namedatum)
P.color = namedatum.colour
diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm
index 9ecf08983aa..7c5a128b3c0 100644
--- a/code/modules/mob/living/simple_animal/hostile/alien.dm
+++ b/code/modules/mob/living/simple_animal/hostile/alien.dm
@@ -69,7 +69,7 @@
ranged = 1
retreat_distance = 5
minimum_distance = 5
- projectiletype = /obj/item/projectile/neurotox
+ projectiletype = /obj/projectile/neurotox
projectilesound = 'sound/weapons/pierce.ogg'
@@ -88,7 +88,7 @@
move_to_delay = 4
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 4,
/obj/item/stack/sheet/animalhide/xeno = 1)
- projectiletype = /obj/item/projectile/neurotox
+ projectiletype = /obj/projectile/neurotox
projectilesound = 'sound/weapons/pierce.ogg'
status_flags = 0
unique_name = 0
@@ -141,7 +141,7 @@
mob_size = MOB_SIZE_LARGE
gold_core_spawnable = NO_SPAWN
-/obj/item/projectile/neurotox
+/obj/projectile/neurotox
name = "neurotoxin"
damage = 30
icon_state = "toxin"
diff --git a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
index 92dc436a019..633fb6f018e 100644
--- a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
@@ -18,7 +18,7 @@
health = 1000
maxHealth = 1000
loot = list(/obj/effect/temp_visual/paperwiz_dying)
- projectiletype = /obj/item/projectile/temp
+ projectiletype = /obj/projectile/temp
projectilesound = 'sound/weapons/emitter.ogg'
attack_sound = 'sound/hallucinations/growl1.ogg'
var/list/copies = list()
diff --git a/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm b/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
index 18b6807e4a6..41fd54bb6c9 100644
--- a/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
+++ b/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
@@ -5,7 +5,7 @@
icon_state = "dark_wizard"
icon_living = "dark_wizard"
move_to_delay = 10
- projectiletype = /obj/item/projectile/temp/earth_bolt
+ projectiletype = /obj/projectile/temp/earth_bolt
projectilesound = 'sound/magic/ethereal_enter.ogg'
ranged = TRUE
ranged_message = "earth bolts"
@@ -28,11 +28,11 @@
weather_immunities = list("lava","ash")
minbodytemp = 0
maxbodytemp = INFINITY
- atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
+ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
loot = list(/obj/effect/decal/remains/human)
del_on_death = TRUE
-/obj/item/projectile/temp/earth_bolt
+/obj/projectile/temp/earth_bolt
name = "earth bolt"
icon_state = "declone"
damage = 4
diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm
index 578ba46b114..1b12a0f944d 100644
--- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/hivebotbullet
+/obj/projectile/hivebotbullet
damage = 10
damage_type = BRUTE
@@ -19,7 +19,7 @@
attacktext = "claws"
attack_sound = 'sound/weapons/bladeslice.ogg'
projectilesound = 'sound/weapons/gun/pistol/shot.ogg'
- projectiletype = /obj/item/projectile/hivebotbullet
+ projectiletype = /obj/projectile/hivebotbullet
faction = list("hivebot")
check_friendly_fire = 1
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index f4a2f2d7f34..13fa159a387 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -118,7 +118,7 @@
FindTarget(list(user), 1)
return ..()
-/mob/living/simple_animal/hostile/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/bullet_act(obj/projectile/P)
if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client)
if(P.firer && get_dist(src, P.firer) <= aggro_vision_range)
FindTarget(list(P.firer), 1)
@@ -409,7 +409,7 @@
playsound(src, projectilesound, 100, TRUE)
casing.fire_casing(targeted_atom, src, null, null, null, ran_zone(), 0, src)
else if(projectiletype)
- var/obj/item/projectile/P = new projectiletype(startloc)
+ var/obj/projectile/P = new projectiletype(startloc)
playsound(src, projectilesound, 100, TRUE)
P.starting = startloc
P.firer = src
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
index afb7bbe3c1d..ca20117bd3b 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
@@ -14,7 +14,7 @@
maxHealth = 300
health = 300
ranged = TRUE
- projectiletype = /obj/item/projectile/leaper
+ projectiletype = /obj/projectile/leaper
projectilesound = 'sound/weapons/pierce.ogg'
ranged_cooldown_time = 30
pixel_x = -16
@@ -28,7 +28,7 @@
do_footstep = TRUE
-/obj/item/projectile/leaper
+/obj/projectile/leaper
name = "leaper bubble"
icon_state = "leaper"
paralyze = 50
@@ -38,7 +38,7 @@
nondirectional_sprite = TRUE
impact_effect_type = /obj/effect/temp_visual/leaper_projectile_impact
-/obj/item/projectile/leaper/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/leaper/on_hit(atom/target, blocked = FALSE)
..()
if(iscarbon(target))
var/mob/living/carbon/C = target
@@ -48,7 +48,7 @@
var/mob/living/simple_animal/L = target
L.adjustHealth(25)
-/obj/item/projectile/leaper/on_range()
+/obj/projectile/leaper/on_range()
var/turf/T = get_turf(src)
..()
new /obj/structure/leaper_bubble(T)
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm
index 72183b354af..a440920b6eb 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm
@@ -20,7 +20,7 @@
speak_emote = list("chitters")
attack_sound = 'sound/weapons/bladeslice.ogg'
ranged_cooldown_time = 60
- projectiletype = /obj/item/projectile/mega_arachnid
+ projectiletype = /obj/projectile/mega_arachnid
projectilesound = 'sound/weapons/pierce.ogg'
alpha = 50
@@ -48,13 +48,13 @@
..()
alpha = 50
-/obj/item/projectile/mega_arachnid
+/obj/projectile/mega_arachnid
name = "flesh snare"
nodamage = TRUE
damage = 0
icon_state = "tentacle_end"
-/obj/item/projectile/mega_arachnid/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/mega_arachnid/on_hit(atom/target, blocked = FALSE)
if(iscarbon(target) && blocked < 100)
var/obj/item/restraints/legcuffs/beartrap/mega_arachnid/B = new /obj/item/restraints/legcuffs/beartrap/mega_arachnid(get_turf(target))
B.Crossed(target)
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
index fa49257efba..09113a6dc55 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
@@ -25,7 +25,7 @@
aggro_vision_range = 15
ranged = TRUE
ranged_cooldown_time = 10
- projectiletype = /obj/item/projectile/seedling
+ projectiletype = /obj/projectile/seedling
projectilesound = 'sound/weapons/pierce.ogg'
robust_searching = TRUE
stat_attack = UNCONSCIOUS
@@ -35,7 +35,7 @@
var/mob/living/beam_debuff_target
var/solar_beam_identifier = 0
-/obj/item/projectile/seedling
+/obj/projectile/seedling
name = "solar energy"
icon_state = "seedling"
damage = 10
@@ -47,7 +47,7 @@
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
nondirectional_sprite = TRUE
-/obj/item/projectile/seedling/Bump(atom/A)//Stops seedlings from destroying other jungle mobs through FF
+/obj/projectile/seedling/Bump(atom/A)//Stops seedlings from destroying other jungle mobs through FF
if(isliving(A))
var/mob/living/L = A
if("jungle" in L.faction)
@@ -181,7 +181,7 @@
Shoot(target)
return
var/turf/our_turf = get_turf(src)
- var/obj/item/projectile/seedling/readied_shot = new /obj/item/projectile/seedling(our_turf)
+ var/obj/projectile/seedling/readied_shot = new /obj/projectile/seedling(our_turf)
readied_shot.preparePixelProjectile(target, src, null, rand(-10, 10))
readied_shot.fire()
playsound(src, projectilesound, 100, TRUE)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 909fa4151ae..3c3ac9a71b6 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -34,7 +34,7 @@ Difficulty: Medium
speak_emote = list("roars")
speed = 3
move_to_delay = 3
- projectiletype = /obj/item/projectile/kinetic/miner
+ projectiletype = /obj/projectile/kinetic/miner
projectilesound = 'sound/weapons/kenetic_accel.ogg'
ranged = TRUE
ranged_cooldown_time = 16
@@ -111,7 +111,7 @@ Difficulty: Medium
..()
target.stun_absorption -= "miner"
-/obj/item/projectile/kinetic/miner
+/obj/projectile/kinetic/miner
damage = 20
speed = 0.9
icon_state = "ka_tracer"
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index eec07745a8b..51ccefd463d 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -417,7 +417,7 @@ Difficulty: Hard
if(.)
recovery_time = world.time + 20 // can only attack melee once every 2 seconds but rapid_melee gives higher priority
-/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/projectile/P)
if(BUBBLEGUM_IS_ENRAGED)
visible_message("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons while enraged!", "You deflect the projectile!")
playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 300, TRUE)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 78c785a7d4e..3d681446750 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -171,7 +171,7 @@ Difficulty: Very Hard
if(!isnum(set_angle) && (!marker || marker == loc))
return
var/turf/startloc = get_turf(src)
- var/obj/item/projectile/P = new /obj/item/projectile/colossus(startloc)
+ var/obj/projectile/P = new /obj/projectile/colossus(startloc)
P.preparePixelProjectile(marker, startloc)
P.firer = src
if(target)
@@ -233,7 +233,7 @@ Difficulty: Very Hard
target = new_target
INVOKE_ASYNC(src, /atom/movable/proc/orbit, target, 0, FALSE, 0, 0, FALSE, TRUE)
-/mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/projectile/P)
if(!stat)
var/obj/effect/temp_visual/at_shield/AT = new /obj/effect/temp_visual/at_shield(loc, src)
var/random_x = rand(-32, 32)
@@ -243,7 +243,7 @@ Difficulty: Very Hard
AT.pixel_y += random_y
return ..()
-/obj/item/projectile/colossus
+/obj/projectile/colossus
name ="death bolt"
icon_state= "chronobolt"
damage = 25
@@ -253,7 +253,7 @@ Difficulty: Very Hard
damage_type = BRUTE
pass_flags = PASSTABLE
-/obj/item/projectile/colossus/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/colossus/on_hit(atom/target, blocked = FALSE)
. = ..()
if(isturf(target) || isobj(target))
target.ex_act(EXPLODE_HEAVY)
@@ -426,9 +426,9 @@ Difficulty: Very Hard
ActivationReaction(user, ACTIVATE_WEAPON)
..()
-/obj/machinery/anomalous_crystal/bullet_act(obj/item/projectile/P, def_zone)
+/obj/machinery/anomalous_crystal/bullet_act(obj/projectile/P, def_zone)
. = ..()
- if(istype(P, /obj/item/projectile/magic))
+ if(istype(P, /obj/projectile/magic))
ActivationReaction(P.firer, ACTIVATE_MAGIC, P.damage_type)
return
ActivationReaction(P.firer, P.flag, P.damage_type)
@@ -541,18 +541,18 @@ Difficulty: Very Hard
observer_desc = "This crystal generates a projectile when activated."
activation_method = ACTIVATE_TOUCH
cooldown_add = 50
- var/obj/item/projectile/generated_projectile = /obj/item/projectile/beam/emitter
+ var/obj/projectile/generated_projectile = /obj/projectile/beam/emitter
/obj/machinery/anomalous_crystal/emitter/Initialize()
. = ..()
- generated_projectile = pick(/obj/item/projectile/colossus)
+ generated_projectile = pick(/obj/projectile/colossus)
var/proj_name = initial(generated_projectile.name)
observer_desc = "This crystal generates \a [proj_name] when activated."
/obj/machinery/anomalous_crystal/emitter/ActivationReaction(mob/user, method)
if(..())
- var/obj/item/projectile/P = new generated_projectile(get_turf(src))
+ var/obj/projectile/P = new generated_projectile(get_turf(src))
P.setDir(dir)
switch(dir)
if(NORTH)
@@ -689,7 +689,7 @@ Difficulty: Very Hard
activation_method = ACTIVATE_TOUCH
cooldown_add = 50
activation_sound = 'sound/magic/timeparadox2.ogg'
- var/static/list/banned_items_typecache = typecacheof(list(/obj/item/storage, /obj/item/implant, /obj/item/implanter, /obj/item/disk/nuclear, /obj/item/projectile, /obj/item/spellbook))
+ var/static/list/banned_items_typecache = typecacheof(list(/obj/item/storage, /obj/item/implant, /obj/item/implanter, /obj/item/disk/nuclear, /obj/projectile, /obj/item/spellbook))
/obj/machinery/anomalous_crystal/refresher/ActivationReaction(mob/user, method)
if(..())
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index ce7503db84f..c2fac4e9fb1 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -530,8 +530,8 @@ Difficulty: Hard
return FALSE
if(mover == caster.pulledby)
return TRUE
- if(istype(mover, /obj/item/projectile))
- var/obj/item/projectile/P = mover
+ if(istype(mover, /obj/projectile))
+ var/obj/projectile/P = mover
if(P.firer == caster)
return TRUE
if(mover == caster)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index 9935fb40aa4..8103ebf3c74 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -317,7 +317,7 @@
layer = ABOVE_OBJ_LAYER
armor = list("melee" = 0, "bullet" = 0, "laser" = 100,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
///What kind of projectile the actual damaging part should be.
- var/projectile_type = /obj/item/projectile/beam/legion
+ var/projectile_type = /obj/projectile/beam/legion
///Time until the tracer gets shot
var/initial_firing_time = 18
///How long it takes between shooting the tracer and the projectile.
@@ -355,14 +355,14 @@
///Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction.
/obj/structure/legionturret/proc/fire_beam(angle)
- var/obj/item/projectile/ouchie = new projectile_type(loc)
+ var/obj/projectile/ouchie = new projectile_type(loc)
ouchie.firer = src
ouchie.fire(angle)
playsound(src, 'sound/effects/bin_close.ogg', 100, TRUE)
QDEL_IN(src, 5)
///Used for the legion turret.
-/obj/item/projectile/beam/legion
+/obj/projectile/beam/legion
name = "blood pulse"
hitsound = 'sound/magic/magic_missile.ogg'
damage = 19
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
index 5850734ff07..2539098f3f7 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
@@ -238,7 +238,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
/mob/living/simple_animal/hostile/swarmer/ai/ranged_combat
icon_state = "swarmer_ranged"
icon_living = "swarmer_ranged"
- projectiletype = /obj/item/projectile/beam/laser
+ projectiletype = /obj/projectile/beam/laser
projectilesound = 'sound/weapons/laser.ogg'
check_friendly_fire = TRUE //you're supposed to protect the resource swarmers, you poop
retreat_distance = 3
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
index dc0c8cf0c3e..c6e4fb623cd 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
@@ -10,7 +10,7 @@
icon_gib = "syndicate_gib"
mob_biotypes = MOB_ORGANIC|MOB_BEAST
move_to_delay = 20
- projectiletype = /obj/item/projectile/temp/basilisk
+ projectiletype = /obj/projectile/temp/basilisk
projectilesound = 'sound/weapons/pierce.ogg'
ranged = 1
ranged_message = "stares"
@@ -35,7 +35,7 @@
loot = list(/obj/item/stack/ore/diamond{layer = ABOVE_MOB_LAYER},
/obj/item/stack/ore/diamond{layer = ABOVE_MOB_LAYER})
-/obj/item/projectile/temp/basilisk
+/obj/projectile/temp/basilisk
name = "freezing blast"
icon_state = "ice_2"
damage = 0
@@ -103,7 +103,7 @@
light_range = 3
light_power = 2.5
light_color = LIGHT_COLOR_LAVA
- projectiletype = /obj/item/projectile/temp/basilisk/magmawing
+ projectiletype = /obj/projectile/temp/basilisk/magmawing
crusher_loot = /obj/item/crusher_trophy/blaster_tubes/magma_wing
crusher_drop_mod = 60
@@ -116,12 +116,12 @@
icon_dead = "watcher_icewing_dead"
maxHealth = 170
health = 170
- projectiletype = /obj/item/projectile/temp/basilisk/icewing
+ projectiletype = /obj/projectile/temp/basilisk/icewing
butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) //No sinew; the wings are too fragile to be usable
crusher_loot = /obj/item/crusher_trophy/watcher_wing/ice_wing
crusher_drop_mod = 30
-/obj/item/projectile/temp/basilisk/magmawing
+/obj/projectile/temp/basilisk/magmawing
name = "scorching blast"
icon_state = "lava"
damage = 5
@@ -129,7 +129,7 @@
nodamage = FALSE
temperature = 500 //Heats you up!
-/obj/item/projectile/temp/basilisk/magmawing/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/temp/basilisk/magmawing/on_hit(atom/target, blocked = FALSE)
. = ..()
if(.)
var/mob/living/L = target
@@ -137,12 +137,12 @@
L.adjust_fire_stacks(0.1)
L.IgniteMob()
-/obj/item/projectile/temp/basilisk/icewing
+/obj/projectile/temp/basilisk/icewing
damage = 5
damage_type = BURN
nodamage = FALSE
-/obj/item/projectile/temp/basilisk/icewing/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/temp/basilisk/icewing/on_hit(atom/target, blocked = FALSE)
. = ..()
if(.)
var/mob/living/L = target
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
index 5663d0addd3..5115018b93a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
@@ -73,8 +73,8 @@
/mob/living/simple_animal/hostile/asteroid/curseblob/CanPass(atom/movable/mover, turf/target)
if(mover == set_target)
return FALSE
- if(istype(mover, /obj/item/projectile))
- var/obj/item/projectile/P = mover
+ if(istype(mover, /obj/projectile))
+ var/obj/projectile/P = mover
if(P.firer == set_target)
return FALSE
return TRUE
@@ -95,7 +95,7 @@ IGNORE_PROC_IF_NOT_TARGET(attack_animal)
IGNORE_PROC_IF_NOT_TARGET(attack_slime)
-/mob/living/simple_animal/hostile/asteroid/curseblob/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/hostile/asteroid/curseblob/bullet_act(obj/projectile/Proj)
if(Proj.firer != set_target)
return
return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
index 20650ad3472..fef11e0e2eb 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
@@ -72,7 +72,7 @@
visible_message("The [name] buries into the ground, vanishing from sight!")
qdel(src)
-/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/projectile/P)
visible_message("The [P.name] was repelled by [name]'s girth!")
return BULLET_ACT_BLOCK
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm
index 9e7b5f22cca..1c8e12c6b1d 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm
@@ -37,7 +37,7 @@
return
icon_state = icon_living
-/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/item/projectile/P)//Reduces damage from most projectiles to curb off-screen kills
+/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/projectile/P)//Reduces damage from most projectiles to curb off-screen kills
if(!stat)
Aggro()
if(P.damage < 30 && P.damage_type != BRUTE)
diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
index c7ecf51c707..a58c17c5790 100644
--- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
@@ -177,7 +177,7 @@
if(T.throwforce)
Bruise()
-/mob/living/simple_animal/hostile/mushroom/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/mushroom/bullet_act(obj/projectile/P)
. = ..()
if(P.nodamage)
Bruise()
diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm
index 8f245fb0b6a..eef1e93b791 100644
--- a/code/modules/mob/living/simple_animal/hostile/pirate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm
@@ -76,7 +76,7 @@
rapid_fire_delay = 6
retreat_distance = 5
minimum_distance = 5
- projectiletype = /obj/item/projectile/beam/laser
+ projectiletype = /obj/projectile/beam/laser
loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged,
/obj/item/gun/energy/laser)
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index 701d18f2557..48519da15ef 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -131,7 +131,7 @@
QDEL_NULL(sord)
return ..()
-/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/projectile/Proj)
if(prob(projectile_deflect_chance))
visible_message("[src] blocks [Proj] with its shield!")
return BULLET_ACT_BLOCK
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index d85f88bf60b..edfb402a397 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -336,7 +336,7 @@
return
//Bullets
-/mob/living/simple_animal/parrot/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/parrot/bullet_act(obj/projectile/Proj)
. = ..()
if(!stat && !client)
if(parrot_state == PARROT_PERCH)
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index dff513f4c61..05f365de1e9 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -250,7 +250,7 @@
amount = -abs(amount)
return ..() //Heals them
-/mob/living/simple_animal/slime/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/slime/bullet_act(obj/projectile/Proj)
attacked += 10
if((Proj.damage_type == BURN))
adjustBruteLoss(-abs(Proj.damage)) //fire projectiles heals slimes.
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index 3331badb110..b3378679d7d 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -156,6 +156,6 @@
// "Stun" weapons can cause minor damage to components (short-circuits?)
// "Burn" damage is equally strong against internal components and exterior casing
// "Brute" damage mostly damages the casing.
-/obj/machinery/modular_computer/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/modular_computer/bullet_act(obj/projectile/Proj)
if(cpu)
cpu.bullet_act(Proj)
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index 4fd1b278c02..c76ba78cb05 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -78,7 +78,7 @@
tesla_zap(src, 5, power_gen * 0.05)
addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion.
-/obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/Proj)
. = ..()
if(!going_kaboom && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)))
log_bomber(Proj.firer, "triggered a", src, "explosion via projectile")
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 4cefc54e3d4..0fe97ea5ea5 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -31,7 +31,7 @@
var/locked = FALSE
var/allow_switch_interact = TRUE
- var/projectile_type = /obj/item/projectile/beam/emitter
+ var/projectile_type = /obj/projectile/beam/emitter
var/projectile_sound = 'sound/weapons/emitter.ogg'
var/datum/effect_system/spark_spread/sparks
@@ -204,7 +204,7 @@
fire_beam()
/obj/machinery/power/emitter/proc/fire_beam(mob/user)
- var/obj/item/projectile/P = new projectile_type(get_turf(src))
+ var/obj/projectile/P = new projectile_type(get_turf(src))
playsound(get_turf(src), projectile_sound, 50, TRUE)
if(prob(35))
sparks.start()
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 858d4cc3630..87ba3bc0e86 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -159,7 +159,7 @@ field_generator power level display
else
..()
-/obj/machinery/field/generator/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/field/generator/bullet_act(obj/projectile/Proj)
if(Proj.flag != "bullet")
power = min(power + Proj.damage, field_generator_max_power)
check_power_level()
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index e60e4d1d57c..27ab3ed300b 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -112,7 +112,7 @@
return
-/obj/singularity/bullet_act(obj/item/projectile/P)
+/obj/singularity/bullet_act(obj/projectile/P)
qdel(P)
return BULLET_ACT_HIT //Will there be an impact? Who knows. Will we see it? No.
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 34592cca4bd..d645513f9e0 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -512,7 +512,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
return 1
-/obj/machinery/power/supermatter_crystal/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/power/supermatter_crystal/bullet_act(obj/projectile/Proj)
var/turf/L = loc
if(!istype(L))
return FALSE
diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm
index a3ad1a43ee1..8cc82ddf9cf 100644
--- a/code/modules/projectiles/ammunition/_ammunition.dm
+++ b/code/modules/projectiles/ammunition/_ammunition.dm
@@ -11,7 +11,7 @@
var/fire_sound = null //What sound should play when this ammo is fired
var/caliber = null //Which kind of guns it can be loaded into
var/projectile_type = null //The bullet type to create when New() is called
- var/obj/item/projectile/BB = null //The loaded bullet
+ var/obj/projectile/BB = null //The loaded bullet
var/pellets = 1 //Pellets for spreadshot
var/variance = 0 //Variance for inaccuracy fundamental to the casing
var/randomspread = 0 //Randomspread for automatics
diff --git a/code/modules/projectiles/ammunition/ballistic/lmg.dm b/code/modules/projectiles/ammunition/ballistic/lmg.dm
index 06e43ebecd0..2ef9a8047ba 100644
--- a/code/modules/projectiles/ammunition/ballistic/lmg.dm
+++ b/code/modules/projectiles/ammunition/ballistic/lmg.dm
@@ -5,19 +5,19 @@
desc = "A 7.12x82mm bullet casing."
icon_state = "762-casing"
caliber = "mm71282"
- projectile_type = /obj/item/projectile/bullet/mm712x82
+ projectile_type = /obj/projectile/bullet/mm712x82
/obj/item/ammo_casing/mm712x82/ap
name = "7.12x82mm armor-piercing bullet casing"
desc = "A 7.12x82mm bullet casing designed with a hardened-tipped core to help penetrate armored targets."
- projectile_type = /obj/item/projectile/bullet/mm712x82_ap
+ projectile_type = /obj/projectile/bullet/mm712x82_ap
/obj/item/ammo_casing/mm712x82/hollow
name = "7.12x82mm hollow-point bullet casing"
desc = "A 7.12x82mm bullet casing designed to cause more damage to unarmored targets."
- projectile_type = /obj/item/projectile/bullet/mm712x82_hp
+ projectile_type = /obj/projectile/bullet/mm712x82_hp
/obj/item/ammo_casing/mm712x82/incen
name = "7.12x82mm incendiary bullet casing"
desc = "A 7.12x82mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames."
- projectile_type = /obj/item/projectile/bullet/incendiary/mm712x82
+ projectile_type = /obj/projectile/bullet/incendiary/mm712x82
diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm
index d4fa3a79ae3..d58e0ca1bdd 100644
--- a/code/modules/projectiles/ammunition/ballistic/pistol.dm
+++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm
@@ -4,22 +4,22 @@
name = "10mm bullet casing"
desc = "A 10mm bullet casing."
caliber = "10mm"
- projectile_type = /obj/item/projectile/bullet/c10mm
+ projectile_type = /obj/projectile/bullet/c10mm
/obj/item/ammo_casing/c10mm/ap
name = "10mm armor-piercing bullet casing"
desc = "A 10mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/c10mm_ap
+ projectile_type = /obj/projectile/bullet/c10mm_ap
/obj/item/ammo_casing/c10mm/hp
name = "10mm hollow-point bullet casing"
desc = "A 10mm hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/c10mm_hp
+ projectile_type = /obj/projectile/bullet/c10mm_hp
/obj/item/ammo_casing/c10mm/fire
name = "10mm incendiary bullet casing"
desc = "A 10mm incendiary bullet casing."
- projectile_type = /obj/item/projectile/bullet/incendiary/c10mm
+ projectile_type = /obj/projectile/bullet/incendiary/c10mm
// 9mm (Stechkin APS)
@@ -27,17 +27,17 @@
name = "9mm bullet casing"
desc = "A 9mm bullet casing."
caliber = "9mm"
- projectile_type = /obj/item/projectile/bullet/c9mm
+ projectile_type = /obj/projectile/bullet/c9mm
/obj/item/ammo_casing/c9mm/ap
name = "9mm armor-piercing bullet casing"
desc = "A 9mm armor-piercing bullet casing."
- projectile_type =/obj/item/projectile/bullet/c9mm_ap
+ projectile_type =/obj/projectile/bullet/c9mm_ap
/obj/item/ammo_casing/c9mm/inc
name = "9mm incendiary bullet casing"
desc = "A 9mm incendiary bullet casing."
- projectile_type = /obj/item/projectile/bullet/incendiary/c9mm
+ projectile_type = /obj/projectile/bullet/incendiary/c9mm
// .50AE (Desert Eagle)
@@ -46,5 +46,5 @@
name = ".50AE bullet casing"
desc = "A .50AE bullet casing."
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/a50AE
+ projectile_type = /obj/projectile/bullet/a50AE
diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm
index 46adbfbc5c9..df118602cc3 100644
--- a/code/modules/projectiles/ammunition/ballistic/revolver.dm
+++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm
@@ -4,7 +4,7 @@
name = ".357 bullet casing"
desc = "A .357 bullet casing."
caliber = "357"
- projectile_type = /obj/item/projectile/bullet/a357
+ projectile_type = /obj/projectile/bullet/a357
// 7.62x38mmR (Nagant Revolver)
@@ -12,7 +12,7 @@
name = "7.62x38mmR bullet casing"
desc = "A 7.62x38mmR bullet casing."
caliber = "n762"
- projectile_type = /obj/item/projectile/bullet/n762
+ projectile_type = /obj/projectile/bullet/n762
// .38 (Detective's Gun)
@@ -20,21 +20,21 @@
name = ".38 bullet casing"
desc = "A .38 bullet casing."
caliber = "38"
- projectile_type = /obj/item/projectile/bullet/c38
+ projectile_type = /obj/projectile/bullet/c38
/obj/item/ammo_casing/c38/trac
name = ".38 TRAC bullet casing"
desc = "A .38 \"TRAC\" bullet casing."
- projectile_type = /obj/item/projectile/bullet/c38/trac
+ projectile_type = /obj/projectile/bullet/c38/trac
/obj/item/ammo_casing/c38/hotshot
name = ".38 Hot Shot bullet casing"
desc = "A .38 Hot Shot bullet casing."
caliber = "38"
- projectile_type = /obj/item/projectile/bullet/c38/hotshot
+ projectile_type = /obj/projectile/bullet/c38/hotshot
/obj/item/ammo_casing/c38/iceblox
name = ".38 Iceblox bullet casing"
desc = "A .38 Iceblox bullet casing."
caliber = "38"
- projectile_type = /obj/item/projectile/bullet/c38/iceblox
+ projectile_type = /obj/projectile/bullet/c38/iceblox
diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm
index a35cfcba1c7..31292cfac06 100644
--- a/code/modules/projectiles/ammunition/ballistic/rifle.dm
+++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm
@@ -5,10 +5,10 @@
desc = "A 7.62 bullet casing."
icon_state = "762-casing"
caliber = "a762"
- projectile_type = /obj/item/projectile/bullet/a762
+ projectile_type = /obj/projectile/bullet/a762
/obj/item/ammo_casing/a762/enchanted
- projectile_type = /obj/item/projectile/bullet/a762_enchanted
+ projectile_type = /obj/projectile/bullet/a762_enchanted
// 5.56mm (M-90gl Carbine)
@@ -16,7 +16,7 @@
name = "5.56mm bullet casing"
desc = "A 5.56mm bullet casing."
caliber = "a556"
- projectile_type = /obj/item/projectile/bullet/a556
+ projectile_type = /obj/projectile/bullet/a556
// 40mm (Grenade Launcher)
@@ -25,4 +25,4 @@
desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher."
caliber = "40mm"
icon_state = "40mmHE"
- projectile_type = /obj/item/projectile/bullet/a40mm
+ projectile_type = /obj/projectile/bullet/a40mm
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index e345922dc14..a00348061dc 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -5,27 +5,27 @@
desc = "A 12 gauge lead slug."
icon_state = "blshell"
caliber = "shotgun"
- projectile_type = /obj/item/projectile/bullet/shotgun_slug
+ projectile_type = /obj/projectile/bullet/shotgun_slug
materials = list(/datum/material/iron=4000)
/obj/item/ammo_casing/shotgun/beanbag
name = "beanbag slug"
desc = "A weak beanbag slug for riot control."
icon_state = "bshell"
- projectile_type = /obj/item/projectile/bullet/shotgun_beanbag
+ projectile_type = /obj/projectile/bullet/shotgun_beanbag
materials = list(/datum/material/iron=250)
/obj/item/ammo_casing/shotgun/incendiary
name = "incendiary slug"
desc = "An incendiary-coated shotgun slug."
icon_state = "ishell"
- projectile_type = /obj/item/projectile/bullet/incendiary/shotgun
+ projectile_type = /obj/projectile/bullet/incendiary/shotgun
/obj/item/ammo_casing/shotgun/dragonsbreath
name = "dragonsbreath shell"
desc = "A shotgun shell which fires a spread of incendiary pellets."
icon_state = "ishell2"
- projectile_type = /obj/item/projectile/bullet/incendiary/shotgun/dragonsbreath
+ projectile_type = /obj/projectile/bullet/incendiary/shotgun/dragonsbreath
pellets = 4
variance = 35
@@ -33,14 +33,14 @@
name = "taser slug"
desc = "A stunning taser slug."
icon_state = "stunshell"
- projectile_type = /obj/item/projectile/bullet/shotgun_stunslug
+ projectile_type = /obj/projectile/bullet/shotgun_stunslug
materials = list(/datum/material/iron=250)
/obj/item/ammo_casing/shotgun/meteorslug
name = "meteorslug shell"
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
icon_state = "mshell"
- projectile_type = /obj/item/projectile/bullet/shotgun_meteorslug
+ projectile_type = /obj/projectile/bullet/shotgun_meteorslug
/obj/item/ammo_casing/shotgun/pulseslug
name = "pulse slug"
@@ -48,19 +48,19 @@
energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \
would have difficulty with."
icon_state = "pshell"
- projectile_type = /obj/item/projectile/beam/pulse/shotgun
+ projectile_type = /obj/projectile/beam/pulse/shotgun
/obj/item/ammo_casing/shotgun/frag12
name = "FRAG-12 slug"
desc = "A high explosive breaching round for a 12 gauge shotgun."
icon_state = "heshell"
- projectile_type = /obj/item/projectile/bullet/shotgun_frag12
+ projectile_type = /obj/projectile/bullet/shotgun_frag12
/obj/item/ammo_casing/shotgun/buckshot
name = "buckshot shell"
desc = "A 12 gauge buckshot shell."
icon_state = "gshell"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun_buckshot
+ projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot
pellets = 6
variance = 25
@@ -68,7 +68,7 @@
name = "rubber shot"
desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance."
icon_state = "bshell"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun_rubbershot
+ projectile_type = /obj/projectile/bullet/pellet/shotgun_rubbershot
pellets = 6
variance = 25
materials = list(/datum/material/iron=4000)
@@ -77,7 +77,7 @@
name = "custom incapacitating shot"
desc = "A shotgun casing filled with... something. used to incapacitate targets."
icon_state = "bountyshell"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun_incapacitate
+ projectile_type = /obj/projectile/bullet/pellet/shotgun_incapacitate
pellets = 12//double the pellets, but half the stun power of each, which makes this best for just dumping right in someone's face.
variance = 25
materials = list(/datum/material/iron=4000)
@@ -86,7 +86,7 @@
name = "improvised shell"
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
icon_state = "improvshell"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun_improvised
+ projectile_type = /obj/projectile/bullet/pellet/shotgun_improvised
materials = list(/datum/material/iron=250)
pellets = 10
variance = 25
@@ -96,7 +96,7 @@
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 split the pulse into a spread of individually weaker bolts."
icon_state = "ionshell"
- projectile_type = /obj/item/projectile/ion/weak
+ projectile_type = /obj/projectile/ion/weak
pellets = 4
variance = 35
@@ -104,7 +104,7 @@
name = "scatter laser shell"
desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a scatter laser weapon in a ballistic package."
icon_state = "lshell"
- projectile_type = /obj/item/projectile/beam/weak
+ projectile_type = /obj/projectile/beam/weak
pellets = 6
variance = 35
@@ -118,7 +118,7 @@
name = "shotgun dart"
desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical."
icon_state = "cshell"
- projectile_type = /obj/item/projectile/bullet/dart
+ projectile_type = /obj/projectile/bullet/dart
var/reagent_amount = 30
/obj/item/ammo_casing/shotgun/dart/Initialize()
diff --git a/code/modules/projectiles/ammunition/ballistic/smg.dm b/code/modules/projectiles/ammunition/ballistic/smg.dm
index c3597a56a30..5c6220f59f2 100644
--- a/code/modules/projectiles/ammunition/ballistic/smg.dm
+++ b/code/modules/projectiles/ammunition/ballistic/smg.dm
@@ -4,17 +4,17 @@
name = "4.6x30mm bullet casing"
desc = "A 4.6x30mm bullet casing."
caliber = "4.6x30mm"
- projectile_type = /obj/item/projectile/bullet/c46x30mm
+ projectile_type = /obj/projectile/bullet/c46x30mm
/obj/item/ammo_casing/c46x30mm/ap
name = "4.6x30mm armor-piercing bullet casing"
desc = "A 4.6x30mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/c46x30mm_ap
+ projectile_type = /obj/projectile/bullet/c46x30mm_ap
/obj/item/ammo_casing/c46x30mm/inc
name = "4.6x30mm incendiary bullet casing"
desc = "A 4.6x30mm incendiary bullet casing."
- projectile_type = /obj/item/projectile/bullet/incendiary/c46x30mm
+ projectile_type = /obj/projectile/bullet/incendiary/c46x30mm
// .45 (M1911 + C20r)
@@ -22,4 +22,4 @@
name = ".45 bullet casing"
desc = "A .45 bullet casing."
caliber = ".45"
- projectile_type = /obj/item/projectile/bullet/c45
+ projectile_type = /obj/projectile/bullet/c45
diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm
index 30cddedfd8c..9862d1bfabc 100644
--- a/code/modules/projectiles/ammunition/ballistic/sniper.dm
+++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm
@@ -4,17 +4,17 @@
name = ".50 bullet casing"
desc = "A .50 bullet casing."
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/p50
+ projectile_type = /obj/projectile/bullet/p50
icon_state = ".50"
/obj/item/ammo_casing/p50/soporific
name = ".50 soporific bullet casing"
desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell."
- projectile_type = /obj/item/projectile/bullet/p50/soporific
+ projectile_type = /obj/projectile/bullet/p50/soporific
icon_state = "sleeper"
harmful = FALSE
/obj/item/ammo_casing/p50/penetrator
name = ".50 penetrator round bullet casing"
desc = "A .50 caliber penetrator round casing."
- projectile_type = /obj/item/projectile/bullet/p50/penetrator
+ projectile_type = /obj/projectile/bullet/p50/penetrator
diff --git a/code/modules/projectiles/ammunition/caseless/foam.dm b/code/modules/projectiles/ammunition/caseless/foam.dm
index a5a3dd23d53..3145358ec8a 100644
--- a/code/modules/projectiles/ammunition/caseless/foam.dm
+++ b/code/modules/projectiles/ammunition/caseless/foam.dm
@@ -1,7 +1,7 @@
/obj/item/ammo_casing/caseless/foam_dart
name = "foam dart"
desc = "It's nerf or nothing! Ages 8 and up."
- projectile_type = /obj/item/projectile/bullet/reusable/foam_dart
+ projectile_type = /obj/projectile/bullet/reusable/foam_dart
caliber = "foam_force"
icon = 'icons/obj/guns/toy.dmi'
icon_state = "foamdart"
@@ -24,7 +24,7 @@
/obj/item/ammo_casing/caseless/foam_dart/attackby(obj/item/A, mob/user, params)
- var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
+ var/obj/projectile/bullet/reusable/foam_dart/FD = BB
if (A.tool_behaviour == TOOL_SCREWDRIVER && !modified)
modified = TRUE
FD.modified = TRUE
@@ -49,7 +49,7 @@
return ..()
/obj/item/ammo_casing/caseless/foam_dart/attack_self(mob/living/user)
- var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
+ var/obj/projectile/bullet/reusable/foam_dart/FD = BB
if(FD.pen)
FD.damage = initial(FD.damage)
FD.nodamage = initial(FD.nodamage)
@@ -60,6 +60,6 @@
/obj/item/ammo_casing/caseless/foam_dart/riot
name = "riot foam dart"
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
- projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot
+ projectile_type = /obj/projectile/bullet/reusable/foam_dart/riot
icon_state = "foamdart_riot"
materials = list(/datum/material/iron = 1125)
diff --git a/code/modules/projectiles/ammunition/caseless/misc.dm b/code/modules/projectiles/ammunition/caseless/misc.dm
index a56c430bb13..7a88ba4d405 100644
--- a/code/modules/projectiles/ammunition/caseless/misc.dm
+++ b/code/modules/projectiles/ammunition/caseless/misc.dm
@@ -3,11 +3,11 @@
desc = "You shouldn't be seeing this."
caliber = "laser"
icon_state = "s-casing-live"
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
fire_sound = 'sound/weapons/laser.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy
/obj/item/ammo_casing/caseless/laser/gatling
- projectile_type = /obj/item/projectile/beam/weak/penetrator
+ projectile_type = /obj/projectile/beam/weak/penetrator
variance = 0.8
click_cooldown_override = 1
diff --git a/code/modules/projectiles/ammunition/caseless/rocket.dm b/code/modules/projectiles/ammunition/caseless/rocket.dm
index bc693d96bc8..50547b996c3 100644
--- a/code/modules/projectiles/ammunition/caseless/rocket.dm
+++ b/code/modules/projectiles/ammunition/caseless/rocket.dm
@@ -3,17 +3,17 @@
desc = "An 84mm High Explosive rocket. Fire at people and pray."
caliber = "84mm"
icon_state = "srm-8"
- projectile_type = /obj/item/projectile/bullet/a84mm_he
+ projectile_type = /obj/projectile/bullet/a84mm_he
/obj/item/ammo_casing/caseless/rocket/hedp
name = "\improper PM-9HEDP"
desc = "An 84mm High Explosive Dual Purpose rocket. Pointy end toward mechs."
caliber = "84mm"
icon_state = "84mm-hedp"
- projectile_type = /obj/item/projectile/bullet/a84mm
+ projectile_type = /obj/projectile/bullet/a84mm
/obj/item/ammo_casing/caseless/a75
desc = "A .75 bullet casing."
caliber = "75"
icon_state = "s-casing-live"
- projectile_type = /obj/item/projectile/bullet/gyro
+ projectile_type = /obj/projectile/bullet/gyro
diff --git a/code/modules/projectiles/ammunition/energy/_energy.dm b/code/modules/projectiles/ammunition/energy/_energy.dm
index 3a4e457c3d4..1d74358fe66 100644
--- a/code/modules/projectiles/ammunition/energy/_energy.dm
+++ b/code/modules/projectiles/ammunition/energy/_energy.dm
@@ -2,7 +2,7 @@
name = "energy weapon lens"
desc = "The part of the gun that makes the laser go pew."
caliber = "energy"
- projectile_type = /obj/item/projectile/energy
+ projectile_type = /obj/projectile/energy
var/e_cost = 100 //The amount of energy a cell needs to expend to create this shot.
var/select_name = "energy"
fire_sound = 'sound/weapons/laser.ogg'
diff --git a/code/modules/projectiles/ammunition/energy/ebow.dm b/code/modules/projectiles/ammunition/energy/ebow.dm
index 8d9c72d1ba0..9715c0a0c6d 100644
--- a/code/modules/projectiles/ammunition/energy/ebow.dm
+++ b/code/modules/projectiles/ammunition/energy/ebow.dm
@@ -1,12 +1,12 @@
/obj/item/ammo_casing/energy/bolt
- projectile_type = /obj/item/projectile/energy/bolt
+ projectile_type = /obj/projectile/energy/bolt
select_name = "bolt"
e_cost = 500
fire_sound = 'sound/weapons/genhit.ogg'
/obj/item/ammo_casing/energy/bolt/halloween
- projectile_type = /obj/item/projectile/energy/bolt/halloween
+ projectile_type = /obj/projectile/energy/bolt/halloween
/obj/item/ammo_casing/energy/bolt/large
- projectile_type = /obj/item/projectile/energy/bolt/large
+ projectile_type = /obj/projectile/energy/bolt/large
select_name = "heavy bolt"
diff --git a/code/modules/projectiles/ammunition/energy/gravity.dm b/code/modules/projectiles/ammunition/energy/gravity.dm
index d8a6a1244de..5e3417e2499 100644
--- a/code/modules/projectiles/ammunition/energy/gravity.dm
+++ b/code/modules/projectiles/ammunition/energy/gravity.dm
@@ -15,15 +15,15 @@
. = ..()
/obj/item/ammo_casing/energy/gravity/repulse
- projectile_type = /obj/item/projectile/gravityrepulse
+ projectile_type = /obj/projectile/gravityrepulse
select_name = "repulse"
/obj/item/ammo_casing/energy/gravity/attract
- projectile_type = /obj/item/projectile/gravityattract
+ projectile_type = /obj/projectile/gravityattract
select_name = "attract"
/obj/item/ammo_casing/energy/gravity/chaos
- projectile_type = /obj/item/projectile/gravitychaos
+ projectile_type = /obj/projectile/gravitychaos
select_name = "chaos"
diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm
index 47455e9754f..05b1f05eecd 100644
--- a/code/modules/projectiles/ammunition/energy/laser.dm
+++ b/code/modules/projectiles/ammunition/energy/laser.dm
@@ -1,14 +1,14 @@
/obj/item/ammo_casing/energy/laser
- projectile_type = /obj/item/projectile/beam/laser
+ projectile_type = /obj/projectile/beam/laser
select_name = "kill"
/obj/item/ammo_casing/energy/lasergun
- projectile_type = /obj/item/projectile/beam/laser
+ projectile_type = /obj/projectile/beam/laser
e_cost = 83
select_name = "kill"
/obj/item/ammo_casing/energy/lasergun/old
- projectile_type = /obj/item/projectile/beam/laser
+ projectile_type = /obj/projectile/beam/laser
e_cost = 200
select_name = "kill"
@@ -16,55 +16,55 @@
e_cost = 120
/obj/item/ammo_casing/energy/laser/practice
- projectile_type = /obj/item/projectile/beam/practice
+ projectile_type = /obj/projectile/beam/practice
select_name = "practice"
harmful = FALSE
/obj/item/ammo_casing/energy/laser/scatter
- projectile_type = /obj/item/projectile/beam/scatter
+ projectile_type = /obj/projectile/beam/scatter
pellets = 5
variance = 25
select_name = "scatter"
/obj/item/ammo_casing/energy/laser/scatter/disabler
- projectile_type = /obj/item/projectile/beam/disabler
+ projectile_type = /obj/projectile/beam/disabler
pellets = 3
variance = 15
harmful = FALSE
/obj/item/ammo_casing/energy/laser/heavy
- projectile_type = /obj/item/projectile/beam/laser/heavylaser
+ projectile_type = /obj/projectile/beam/laser/heavylaser
select_name = "anti-vehicle"
fire_sound = 'sound/weapons/lasercannonfire.ogg'
/obj/item/ammo_casing/energy/laser/pulse
- projectile_type = /obj/item/projectile/beam/pulse
+ projectile_type = /obj/projectile/beam/pulse
e_cost = 200
select_name = "DESTROY"
fire_sound = 'sound/weapons/pulse.ogg'
/obj/item/ammo_casing/energy/laser/bluetag
- projectile_type = /obj/item/projectile/beam/lasertag/bluetag
+ projectile_type = /obj/projectile/beam/lasertag/bluetag
select_name = "bluetag"
harmful = FALSE
/obj/item/ammo_casing/energy/laser/bluetag/hitscan
- projectile_type = /obj/item/projectile/beam/lasertag/bluetag/hitscan
+ projectile_type = /obj/projectile/beam/lasertag/bluetag/hitscan
/obj/item/ammo_casing/energy/laser/redtag
- projectile_type = /obj/item/projectile/beam/lasertag/redtag
+ projectile_type = /obj/projectile/beam/lasertag/redtag
select_name = "redtag"
harmful = FALSE
/obj/item/ammo_casing/energy/laser/redtag/hitscan
- projectile_type = /obj/item/projectile/beam/lasertag/redtag/hitscan
+ projectile_type = /obj/projectile/beam/lasertag/redtag/hitscan
/obj/item/ammo_casing/energy/xray
- projectile_type = /obj/item/projectile/beam/xray
+ projectile_type = /obj/projectile/beam/xray
e_cost = 50
fire_sound = 'sound/weapons/laser3.ogg'
/obj/item/ammo_casing/energy/mindflayer
- projectile_type = /obj/item/projectile/beam/mindflayer
+ projectile_type = /obj/projectile/beam/mindflayer
select_name = "MINDFUCK"
fire_sound = 'sound/weapons/laser.ogg'
diff --git a/code/modules/projectiles/ammunition/energy/lmg.dm b/code/modules/projectiles/ammunition/energy/lmg.dm
index cf894ca56dd..864cb13b43c 100644
--- a/code/modules/projectiles/ammunition/energy/lmg.dm
+++ b/code/modules/projectiles/ammunition/energy/lmg.dm
@@ -1,5 +1,5 @@
/obj/item/ammo_casing/energy/c3dbullet
- projectile_type = /obj/item/projectile/bullet/c3d
+ projectile_type = /obj/projectile/bullet/c3d
select_name = "spraydown"
fire_sound = 'sound/weapons/gun/smg/shot.ogg'
e_cost = 20
diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm
index d02abf9c881..a1341bacd3b 100644
--- a/code/modules/projectiles/ammunition/energy/plasma.dm
+++ b/code/modules/projectiles/ammunition/energy/plasma.dm
@@ -1,11 +1,11 @@
/obj/item/ammo_casing/energy/plasma
- projectile_type = /obj/item/projectile/plasma
+ projectile_type = /obj/projectile/plasma
select_name = "plasma burst"
fire_sound = 'sound/weapons/plasma_cutter.ogg'
delay = 15
e_cost = 25
/obj/item/ammo_casing/energy/plasma/adv
- projectile_type = /obj/item/projectile/plasma/adv
+ projectile_type = /obj/projectile/plasma/adv
delay = 10
e_cost = 10
diff --git a/code/modules/projectiles/ammunition/energy/portal.dm b/code/modules/projectiles/ammunition/energy/portal.dm
index dcb8b5e1e0b..c49ad9d43a4 100644
--- a/code/modules/projectiles/ammunition/energy/portal.dm
+++ b/code/modules/projectiles/ammunition/energy/portal.dm
@@ -1,5 +1,5 @@
/obj/item/ammo_casing/energy/wormhole
- projectile_type = /obj/item/projectile/beam/wormhole
+ projectile_type = /obj/projectile/beam/wormhole
e_cost = 0
harmful = FALSE
fire_sound = 'sound/weapons/pulse3.ogg'
@@ -7,7 +7,7 @@
var/obj/item/gun/energy/wormhole_projector/gun
/obj/item/ammo_casing/energy/wormhole/orange
- projectile_type = /obj/item/projectile/beam/wormhole/orange
+ projectile_type = /obj/projectile/beam/wormhole/orange
select_name = "orange"
/obj/item/ammo_casing/energy/wormhole/Initialize(mapload, obj/item/gun/energy/wormhole_projector/wh)
@@ -16,6 +16,6 @@
/obj/item/ammo_casing/energy/wormhole/throw_proj()
. = ..()
- if(istype(BB, /obj/item/projectile/beam/wormhole))
- var/obj/item/projectile/beam/wormhole/WH = BB
+ if(istype(BB, /obj/projectile/beam/wormhole))
+ var/obj/projectile/beam/wormhole/WH = BB
WH.gun = gun
diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm
index b5270af7ad6..25edcec3754 100644
--- a/code/modules/projectiles/ammunition/energy/special.dm
+++ b/code/modules/projectiles/ammunition/energy/special.dm
@@ -1,76 +1,76 @@
/obj/item/ammo_casing/energy/ion
- projectile_type = /obj/item/projectile/ion
+ projectile_type = /obj/projectile/ion
select_name = "ion"
fire_sound = 'sound/weapons/ionrifle.ogg'
/obj/item/ammo_casing/energy/ion/hos
- projectile_type = /obj/item/projectile/ion/weak
+ projectile_type = /obj/projectile/ion/weak
e_cost = 300
/obj/item/ammo_casing/energy/declone
- projectile_type = /obj/item/projectile/energy/declone
+ projectile_type = /obj/projectile/energy/declone
select_name = "declone"
fire_sound = 'sound/weapons/pulse3.ogg'
/obj/item/ammo_casing/energy/declone/weak
- projectile_type = /obj/item/projectile/energy/declone/weak
+ projectile_type = /obj/projectile/energy/declone/weak
/obj/item/ammo_casing/energy/flora
fire_sound = 'sound/effects/stealthoff.ogg'
harmful = FALSE
/obj/item/ammo_casing/energy/flora/yield
- projectile_type = /obj/item/projectile/energy/florayield
+ projectile_type = /obj/projectile/energy/florayield
select_name = "yield"
/obj/item/ammo_casing/energy/flora/mut
- projectile_type = /obj/item/projectile/energy/floramut
+ projectile_type = /obj/projectile/energy/floramut
select_name = "mutation"
/obj/item/ammo_casing/energy/temp
- projectile_type = /obj/item/projectile/temp
+ projectile_type = /obj/projectile/temp
select_name = "freeze"
e_cost = 250
fire_sound = 'sound/weapons/pulse3.ogg'
/obj/item/ammo_casing/energy/temp/hot
- projectile_type = /obj/item/projectile/temp/hot
+ projectile_type = /obj/projectile/temp/hot
select_name = "bake"
/obj/item/ammo_casing/energy/meteor
- projectile_type = /obj/item/projectile/meteor
+ projectile_type = /obj/projectile/meteor
select_name = "goddamn meteor"
/obj/item/ammo_casing/energy/net
- projectile_type = /obj/item/projectile/energy/net
+ projectile_type = /obj/projectile/energy/net
select_name = "netting"
pellets = 6
variance = 40
harmful = FALSE
/obj/item/ammo_casing/energy/trap
- projectile_type = /obj/item/projectile/energy/trap
+ projectile_type = /obj/projectile/energy/trap
select_name = "snare"
harmful = FALSE
/obj/item/ammo_casing/energy/instakill
- projectile_type = /obj/item/projectile/beam/instakill
+ projectile_type = /obj/projectile/beam/instakill
e_cost = 0
select_name = "DESTROY"
/obj/item/ammo_casing/energy/instakill/blue
- projectile_type = /obj/item/projectile/beam/instakill/blue
+ projectile_type = /obj/projectile/beam/instakill/blue
/obj/item/ammo_casing/energy/instakill/red
- projectile_type = /obj/item/projectile/beam/instakill/red
+ projectile_type = /obj/projectile/beam/instakill/red
/obj/item/ammo_casing/energy/tesla_revolver
fire_sound = 'sound/magic/lightningbolt.ogg'
e_cost = 200
select_name = "stun"
- projectile_type = /obj/item/projectile/energy/tesla/revolver
+ projectile_type = /obj/projectile/energy/tesla/revolver
/obj/item/ammo_casing/energy/shrink
- projectile_type = /obj/item/projectile/beam/shrink
+ projectile_type = /obj/projectile/beam/shrink
select_name = "shrink ray"
e_cost = 200
diff --git a/code/modules/projectiles/ammunition/energy/stun.dm b/code/modules/projectiles/ammunition/energy/stun.dm
index 35e12bc5293..909501d653a 100644
--- a/code/modules/projectiles/ammunition/energy/stun.dm
+++ b/code/modules/projectiles/ammunition/energy/stun.dm
@@ -1,5 +1,5 @@
/obj/item/ammo_casing/energy/electrode
- projectile_type = /obj/item/projectile/energy/electrode
+ projectile_type = /obj/projectile/energy/electrode
select_name = "stun"
fire_sound = 'sound/weapons/taser.ogg'
e_cost = 200
@@ -16,7 +16,7 @@
e_cost = 1000
/obj/item/ammo_casing/energy/disabler
- projectile_type = /obj/item/projectile/beam/disabler
+ projectile_type = /obj/projectile/beam/disabler
select_name = "disable"
e_cost = 50
fire_sound = 'sound/weapons/taser2.ogg'
diff --git a/code/modules/projectiles/ammunition/special/magic.dm b/code/modules/projectiles/ammunition/special/magic.dm
index 8df17a9c925..9440c435384 100644
--- a/code/modules/projectiles/ammunition/special/magic.dm
+++ b/code/modules/projectiles/ammunition/special/magic.dm
@@ -1,67 +1,67 @@
/obj/item/ammo_casing/magic
name = "magic casing"
desc = "I didn't even know magic needed ammo..."
- projectile_type = /obj/item/projectile/magic
+ projectile_type = /obj/projectile/magic
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/magic
heavy_metal = FALSE
/obj/item/ammo_casing/magic/change
- projectile_type = /obj/item/projectile/magic/change
+ projectile_type = /obj/projectile/magic/change
/obj/item/ammo_casing/magic/animate
- projectile_type = /obj/item/projectile/magic/animate
+ projectile_type = /obj/projectile/magic/animate
/obj/item/ammo_casing/magic/heal
- projectile_type = /obj/item/projectile/magic/resurrection
+ projectile_type = /obj/projectile/magic/resurrection
harmful = FALSE
/obj/item/ammo_casing/magic/death
- projectile_type = /obj/item/projectile/magic/death
+ projectile_type = /obj/projectile/magic/death
/obj/item/ammo_casing/magic/teleport
- projectile_type = /obj/item/projectile/magic/teleport
+ projectile_type = /obj/projectile/magic/teleport
harmful = FALSE
/obj/item/ammo_casing/magic/safety
- projectile_type = /obj/item/projectile/magic/safety
+ projectile_type = /obj/projectile/magic/safety
harmful = FALSE
/obj/item/ammo_casing/magic/door
- projectile_type = /obj/item/projectile/magic/door
+ projectile_type = /obj/projectile/magic/door
harmful = FALSE
/obj/item/ammo_casing/magic/fireball
- projectile_type = /obj/item/projectile/magic/aoe/fireball
+ projectile_type = /obj/projectile/magic/aoe/fireball
/obj/item/ammo_casing/magic/chaos
- projectile_type = /obj/item/projectile/magic
+ projectile_type = /obj/projectile/magic
/obj/item/ammo_casing/magic/spellblade
- projectile_type = /obj/item/projectile/magic/spellblade
+ projectile_type = /obj/projectile/magic/spellblade
/obj/item/ammo_casing/magic/arcane_barrage
- projectile_type = /obj/item/projectile/magic/arcane_barrage
+ projectile_type = /obj/projectile/magic/arcane_barrage
/obj/item/ammo_casing/magic/honk
- projectile_type = /obj/item/projectile/bullet/honker
+ projectile_type = /obj/projectile/bullet/honker
/obj/item/ammo_casing/magic/locker
- projectile_type = /obj/item/projectile/magic/locker
+ projectile_type = /obj/projectile/magic/locker
/obj/item/ammo_casing/magic/flying
- projectile_type = /obj/item/projectile/magic/flying
+ projectile_type = /obj/projectile/magic/flying
/obj/item/ammo_casing/magic/bounty
- projectile_type = /obj/item/projectile/magic/bounty
+ projectile_type = /obj/projectile/magic/bounty
/obj/item/ammo_casing/magic/antimagic
- projectile_type = /obj/item/projectile/magic/antimagic
+ projectile_type = /obj/projectile/magic/antimagic
/obj/item/ammo_casing/magic/sapping
- projectile_type = /obj/item/projectile/magic/sapping
+ projectile_type = /obj/projectile/magic/sapping
/obj/item/ammo_casing/magic/necropotence
- projectile_type = /obj/item/projectile/magic/necropotence
+ projectile_type = /obj/projectile/magic/necropotence
/obj/item/ammo_casing/magic/wipe
- projectile_type = /obj/item/projectile/magic/wipe
+ projectile_type = /obj/projectile/magic/wipe
diff --git a/code/modules/projectiles/ammunition/special/syringe.dm b/code/modules/projectiles/ammunition/special/syringe.dm
index 490602aec6a..db015322c1c 100644
--- a/code/modules/projectiles/ammunition/special/syringe.dm
+++ b/code/modules/projectiles/ammunition/special/syringe.dm
@@ -1,7 +1,7 @@
/obj/item/ammo_casing/syringegun
name = "syringe gun spring"
desc = "A high-power spring that throws syringes."
- projectile_type = /obj/item/projectile/bullet/dart/syringe
+ projectile_type = /obj/projectile/bullet/dart/syringe
firing_effect_type = null
/obj/item/ammo_casing/syringegun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
@@ -16,7 +16,7 @@
S.reagents.trans_to(BB, S.reagents.total_volume, transfered_by = user)
BB.name = S.name
- var/obj/item/projectile/bullet/dart/D = BB
+ var/obj/projectile/bullet/dart/D = BB
D.piercing = S.proj_piercing
SG.syringes.Remove(S)
qdel(S)
@@ -25,7 +25,7 @@
/obj/item/ammo_casing/chemgun
name = "dart synthesiser"
desc = "A high-power spring, linked to an energy-based dart synthesiser."
- projectile_type = /obj/item/projectile/bullet/dart
+ projectile_type = /obj/projectile/bullet/dart
firing_effect_type = null
/obj/item/ammo_casing/chemgun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
@@ -43,7 +43,7 @@
/obj/item/ammo_casing/dnainjector
name = "rigged syringe gun spring"
desc = "A high-power spring that throws DNA injectors."
- projectile_type = /obj/item/projectile/bullet/dnainjector
+ projectile_type = /obj/projectile/bullet/dnainjector
firing_effect_type = null
/obj/item/ammo_casing/dnainjector/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
@@ -55,7 +55,7 @@
return
var/obj/item/dnainjector/S = popleft(SG.syringes)
- var/obj/item/projectile/bullet/dnainjector/D = BB
+ var/obj/projectile/bullet/dnainjector/D = BB
S.forceMove(D)
D.injector = S
..()
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 61fd72eb5b5..685ef8a4724 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -202,7 +202,7 @@
. = ""
else
var/obj/item/ammo_casing/energy/E = ammo_type[select]
- var/obj/item/projectile/energy/BB = E.BB
+ var/obj/projectile/energy/BB = E.BB
if(!BB)
. = ""
else if(BB.nodamage || !BB.damage || BB.damage_type == STAMINA)
diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm
index 8708156d165..8a518284eb7 100644
--- a/code/modules/projectiles/guns/energy/dueling.dm
+++ b/code/modules/projectiles/guns/energy/dueling.dm
@@ -244,12 +244,12 @@
/obj/item/ammo_casing/energy/duel
e_cost = 0
- projectile_type = /obj/item/projectile/energy/duel
+ projectile_type = /obj/projectile/energy/duel
var/setting
/obj/item/ammo_casing/energy/duel/ready_proj(atom/target, mob/living/user, quiet, zone_override)
. = ..()
- var/obj/item/projectile/energy/duel/D = BB
+ var/obj/projectile/energy/duel/D = BB
D.setting = setting
D.update_icon()
@@ -261,14 +261,14 @@
//Projectile
-/obj/item/projectile/energy/duel
+/obj/projectile/energy/duel
name = "dueling beam"
icon_state = "declone"
reflectable = FALSE
homing = TRUE
var/setting
-/obj/item/projectile/energy/duel/update_icon()
+/obj/projectile/energy/duel/update_icon()
. = ..()
switch(setting)
if(DUEL_SETTING_A)
@@ -278,7 +278,7 @@
if(DUEL_SETTING_C)
color = "blue"
-/obj/item/projectile/energy/duel/on_hit(atom/target, blocked)
+/obj/projectile/energy/duel/on_hit(atom/target, blocked)
. = ..()
var/turf/T = get_turf(target)
var/obj/effect/temp_visual/dueling_chaff/C = locate() in T
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 3c12a55b921..9170a628c9e 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -63,7 +63,7 @@
for(var/A in modkits)
. += A
-/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/projectile/kinetic/K)
K.kinetic_gun = src //do something special on-hit, easy!
for(var/A in get_modkits())
var/obj/item/borg/upgrade/modkit/M = A
@@ -153,7 +153,7 @@
//Casing
/obj/item/ammo_casing/energy/kinetic
- projectile_type = /obj/item/projectile/kinetic
+ projectile_type = /obj/projectile/kinetic
select_name = "kinetic"
e_cost = 500
fire_sound = 'sound/weapons/kenetic_accel.ogg' // fine spelling there chap
@@ -165,7 +165,7 @@
KA.modify_projectile(BB)
//Projectiles
-/obj/item/projectile/kinetic
+/obj/projectile/kinetic
name = "kinetic force"
icon_state = null
damage = 40
@@ -178,11 +178,11 @@
var/pressure_decrease = 0.25
var/obj/item/gun/energy/kinetic_accelerator/kinetic_gun
-/obj/item/projectile/kinetic/Destroy()
+/obj/projectile/kinetic/Destroy()
kinetic_gun = null
return ..()
-/obj/item/projectile/kinetic/prehit(atom/target)
+/obj/projectile/kinetic/prehit(atom/target)
. = ..()
if(.)
if(kinetic_gun)
@@ -194,15 +194,15 @@
damage = damage * pressure_decrease
pressure_decrease_active = TRUE
-/obj/item/projectile/kinetic/on_range()
+/obj/projectile/kinetic/on_range()
strike_thing()
..()
-/obj/item/projectile/kinetic/on_hit(atom/target)
+/obj/projectile/kinetic/on_hit(atom/target)
strike_thing(target)
. = ..()
-/obj/item/projectile/kinetic/proc/strike_thing(atom/target)
+/obj/projectile/kinetic/proc/strike_thing(atom/target)
var/turf/target_turf = get_turf(target)
if(!target_turf)
target_turf = get_turf(src)
@@ -294,14 +294,14 @@
-/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/projectile/kinetic/K)
//use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure
-/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//use this one for effects you want to trigger before mods that do damage
-/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//and this one for things that don't need to trigger before other damage-dealing mods
-/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//Range
/obj/item/borg/upgrade/modkit/range
@@ -310,7 +310,7 @@
modifier = 1
cost = 25
-/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/projectile/kinetic/K)
K.range += modifier
@@ -320,7 +320,7 @@
desc = "Increases the damage of kinetic accelerator when installed."
modifier = 10
-/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/projectile/kinetic/K)
K.damage += modifier
@@ -376,10 +376,10 @@
turf_aoe = initial(turf_aoe)
stats_stolen = FALSE
-/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K)
K.name = "kinetic explosion"
-/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(stats_stolen)
return
new /obj/effect/temp_visual/explosion/fast(target_turf)
@@ -425,7 +425,7 @@
modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss.
cost = 50
-/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
var/valid_repeat = FALSE
if(isliving(target))
var/mob/living/L = target
@@ -445,7 +445,7 @@
cost = 20
var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
-/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target) && isliving(K.firer))
var/mob/living/L = target
if(L.stat == DEAD)
@@ -460,7 +460,7 @@
cost = 30
modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it.
-/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs.
var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in target_turf
if(R)
@@ -478,7 +478,7 @@
var/maximum_bounty = 25
var/list/bounties_reaped = list()
-/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target))
var/mob/living/L = target
var/list/existing_marks = L.has_status_effect_list(STATUS_EFFECT_SYPHONMARK)
@@ -489,7 +489,7 @@
qdel(SM)
L.apply_status_effect(STATUS_EFFECT_SYPHONMARK, src)
-/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target))
var/mob/living/L = target
if(bounties_reaped[L.type])
@@ -517,7 +517,7 @@
maximum_of_type = 2
cost = 35
-/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/projectile/kinetic/K)
K.pressure_decrease *= modifier
@@ -572,7 +572,7 @@
denied_type = /obj/item/borg/upgrade/modkit/tracer
var/bolt_color = "#FFFFFF"
-/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/projectile/kinetic/K)
K.icon_state = "ka_tracer"
K.color = bolt_color
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 758b6fbbc8e..6d6ec8deda7 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -85,17 +85,17 @@
ammo_x_offset = 3
/obj/item/ammo_casing/energy/laser/accelerator
- projectile_type = /obj/item/projectile/beam/laser/accelerator
+ projectile_type = /obj/projectile/beam/laser/accelerator
select_name = "accelerator"
fire_sound = 'sound/weapons/lasercannonfire.ogg'
-/obj/item/projectile/beam/laser/accelerator
+/obj/projectile/beam/laser/accelerator
name = "accelerator laser"
icon_state = "scatterlaser"
range = 255
damage = 6
-/obj/item/projectile/beam/laser/accelerator/Range()
+/obj/projectile/beam/laser/accelerator/Range()
..()
damage += 7
transform *= 1 + ((damage/7) * 0.2)//20% larger per tile
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 5a74489ebb3..cbadddb4825 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -236,7 +236,7 @@
var/obj/item/ammo_casing/energy/wormhole/W = ammo_type[i]
if(istype(W))
W.gun = src
- var/obj/item/projectile/beam/wormhole/WH = W.BB
+ var/obj/projectile/beam/wormhole/WH = W.BB
if(istype(WH))
WH.gun = src
@@ -272,9 +272,9 @@
p_orange.link_portal(p_blue)
p_blue.link_portal(p_orange)
-/obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/item/projectile/beam/wormhole/W, turf/target)
+/obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/projectile/beam/wormhole/W, turf/target)
var/obj/effect/portal/P = new /obj/effect/portal(target, src, 300, null, FALSE, null, atmos_link)
- if(istype(W, /obj/item/projectile/beam/wormhole/orange))
+ if(istype(W, /obj/projectile/beam/wormhole/orange))
qdel(p_orange)
p_orange = P
P.icon_state = "portal1"
diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm
index 6812e1d0478..e8f1683d21a 100644
--- a/code/modules/projectiles/guns/magic/staff.dm
+++ b/code/modules/projectiles/guns/magic/staff.dm
@@ -41,11 +41,11 @@
max_charges = 10
recharge_rate = 2
no_den_usage = 1
- var/allowed_projectile_types = list(/obj/item/projectile/magic/change, /obj/item/projectile/magic/animate, /obj/item/projectile/magic/resurrection,
- /obj/item/projectile/magic/death, /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball,
- /obj/item/projectile/magic/spellblade, /obj/item/projectile/magic/arcane_barrage, /obj/item/projectile/magic/locker, /obj/item/projectile/magic/flying,
- /obj/item/projectile/magic/bounty, /obj/item/projectile/magic/antimagic, /obj/item/projectile/magic/fetch, /obj/item/projectile/magic/sapping,
- /obj/item/projectile/magic/necropotence, /obj/item/projectile/magic, /obj/item/projectile/temp/chill, /obj/item/projectile/magic/wipe)
+ var/allowed_projectile_types = list(/obj/projectile/magic/change, /obj/projectile/magic/animate, /obj/projectile/magic/resurrection,
+ /obj/projectile/magic/death, /obj/projectile/magic/teleport, /obj/projectile/magic/door, /obj/projectile/magic/aoe/fireball,
+ /obj/projectile/magic/spellblade, /obj/projectile/magic/arcane_barrage, /obj/projectile/magic/locker, /obj/projectile/magic/flying,
+ /obj/projectile/magic/bounty, /obj/projectile/magic/antimagic, /obj/projectile/magic/fetch, /obj/projectile/magic/sapping,
+ /obj/projectile/magic/necropotence, /obj/projectile/magic, /obj/projectile/temp/chill, /obj/projectile/magic/wipe)
/obj/item/gun/magic/staff/chaos/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0)
chambered.projectile_type = pick(allowed_projectile_types)
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index be960b6e8da..e0d007a5edc 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -194,7 +194,7 @@
if(diff < AIMING_BEAM_ANGLE_CHANGE_THRESHOLD && !force_update)
return
aiming_lastangle = lastangle
- var/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/P = new
+ var/obj/projectile/beam/beam_rifle/hitscan/aiming_beam/P = new
P.gun = src
P.wall_pierce_amount = wall_pierce_amount
P.structure_pierce_amount = structure_piercing
@@ -370,7 +370,7 @@
/obj/item/ammo_casing/energy/beam_rifle/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
. = ..()
- var/obj/item/projectile/beam/beam_rifle/hitscan/HS_BB = BB
+ var/obj/projectile/beam/beam_rifle/hitscan/HS_BB = BB
if(!istype(HS_BB))
return
HS_BB.impact_direct_damage = projectile_damage
@@ -409,12 +409,12 @@
return TRUE
/obj/item/ammo_casing/energy/beam_rifle/hitscan
- projectile_type = /obj/item/projectile/beam/beam_rifle/hitscan
+ projectile_type = /obj/projectile/beam/beam_rifle/hitscan
select_name = "beam"
e_cost = 10000
fire_sound = 'sound/weapons/beam_sniper.ogg'
-/obj/item/projectile/beam/beam_rifle
+/obj/projectile/beam/beam_rifle
name = "particle beam"
icon = null
hitsound = 'sound/effects/explosion3.ogg'
@@ -442,7 +442,7 @@
var/turf/cached
var/list/pierced = list()
-/obj/item/projectile/beam/beam_rifle/proc/AOE(turf/epicenter)
+/obj/projectile/beam/beam_rifle/proc/AOE(turf/epicenter)
set waitfor = FALSE
if(!epicenter)
return
@@ -459,7 +459,7 @@
continue
O.take_damage(aoe_structure_damage * get_damage_coeff(O), BURN, "laser", FALSE)
-/obj/item/projectile/beam/beam_rifle/proc/check_pierce(atom/target)
+/obj/projectile/beam/beam_rifle/proc/check_pierce(atom/target)
if(!do_pierce)
return FALSE
if(pierced[target]) //we already pierced them go away
@@ -485,14 +485,14 @@
return TRUE
return FALSE
-/obj/item/projectile/beam/beam_rifle/proc/get_damage_coeff(atom/target)
+/obj/projectile/beam/beam_rifle/proc/get_damage_coeff(atom/target)
if(istype(target, /obj/machinery/door))
return 0.4
if(istype(target, /obj/structure/window))
return 0.5
return 1
-/obj/item/projectile/beam/beam_rifle/proc/handle_impact(atom/target)
+/obj/projectile/beam/beam_rifle/proc/handle_impact(atom/target)
if(isobj(target))
var/obj/O = target
O.take_damage(impact_structure_damage * get_damage_coeff(target), BURN, "laser", FALSE)
@@ -501,7 +501,7 @@
L.adjustFireLoss(impact_direct_damage)
L.emote("scream")
-/obj/item/projectile/beam/beam_rifle/proc/handle_hit(atom/target)
+/obj/projectile/beam/beam_rifle/proc/handle_hit(atom/target)
set waitfor = FALSE
if(!cached && !QDELETED(target))
cached = get_turf(target)
@@ -512,7 +512,7 @@
if(!QDELETED(target))
handle_impact(target)
-/obj/item/projectile/beam/beam_rifle/Bump(atom/target)
+/obj/projectile/beam/beam_rifle/Bump(atom/target)
if(check_pierce(target))
permutated += target
trajectory_ignore_forcemove = TRUE
@@ -523,19 +523,19 @@
cached = get_turf(target)
return ..()
-/obj/item/projectile/beam/beam_rifle/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/beam/beam_rifle/on_hit(atom/target, blocked = FALSE)
if(!QDELETED(target))
cached = get_turf(target)
handle_hit(target)
return ..()
-/obj/item/projectile/beam/beam_rifle/hitscan
+/obj/projectile/beam/beam_rifle/hitscan
icon_state = ""
hitscan = TRUE
tracer_type = /obj/effect/projectile/tracer/tracer/beam_rifle
var/constant_tracer = FALSE
-/obj/item/projectile/beam/beam_rifle/hitscan/generate_hitscan_tracers(cleanup = TRUE, duration = 5, impacting = TRUE, highlander)
+/obj/projectile/beam/beam_rifle/hitscan/generate_hitscan_tracers(cleanup = TRUE, duration = 5, impacting = TRUE, highlander)
set waitfor = FALSE
if(isnull(highlander))
highlander = constant_tracer
@@ -551,7 +551,7 @@
beam_segments = null
QDEL_NULL(beam_index)
-/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam
+/obj/projectile/beam/beam_rifle/hitscan/aiming_beam
tracer_type = /obj/effect/projectile/tracer/tracer/aiming
name = "aiming beam"
hitsound = null
@@ -564,10 +564,10 @@
hitscan_light_color_override = "#99ff99"
reflectable = REFLECT_FAKEPROJECTILE
-/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/prehit(atom/target)
+/obj/projectile/beam/beam_rifle/hitscan/aiming_beam/prehit(atom/target)
qdel(src)
return FALSE
-/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/on_hit()
+/obj/projectile/beam/beam_rifle/hitscan/aiming_beam/on_hit()
qdel(src)
return BULLET_ACT_HIT
diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm
index 8c077ab8440..a88d87cf9d3 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -104,12 +104,12 @@
var/turf/targturf = get_turf(target)
message_admins("Blast wave fired from [ADMIN_VERBOSEJMP(starting)] at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [ADMIN_LOOKUPFLW(user)] with power [heavy]/[medium]/[light].")
log_game("Blast wave fired from [AREACOORD(starting)] at [AREACOORD(targturf)] ([target.name]) by [key_name(user)] with power [heavy]/[medium]/[light].")
- var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light)
+ var/obj/projectile/blastwave/BW = new(loc, heavy, medium, light)
BW.hugbox = hugbox
BW.preparePixelProjectile(target, get_turf(src), params, 0)
BW.fire()
-/obj/item/projectile/blastwave
+/obj/projectile/blastwave
name = "blast wave"
icon_state = "blastwave"
damage = 0
@@ -121,13 +121,13 @@
var/hugbox = TRUE
range = 150
-/obj/item/projectile/blastwave/Initialize(mapload, _h, _m, _l)
+/obj/projectile/blastwave/Initialize(mapload, _h, _m, _l)
heavyr = _h
mediumr = _m
lightr = _l
return ..()
-/obj/item/projectile/blastwave/Range()
+/obj/projectile/blastwave/Range()
..()
var/amount_destruction = EXPLODE_NONE
var/wallbreak_chance = 0
@@ -156,5 +156,5 @@
mediumr = max(mediumr - 1, 0)
lightr = max(lightr - 1, 0)
-/obj/item/projectile/blastwave/ex_act()
+/obj/projectile/blastwave/ex_act()
return
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index fdd46bd561f..20b1b2d05a2 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -2,17 +2,17 @@
#define MOVES_HITSCAN -1 //Not actually hitscan but close as we get without actual hitscan.
#define MUZZLE_EFFECT_PIXEL_INCREMENT 17 //How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers.
-/obj/item/projectile
+/obj/projectile
name = "projectile"
icon = 'icons/obj/projectiles.dmi'
icon_state = "bullet"
density = FALSE
anchored = TRUE
- item_flags = ABSTRACT
pass_flags = PASSTABLE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
movement_type = FLYING
- hitsound = 'sound/weapons/pierce.ogg'
+ //The sound this plays on impact.
+ var/hitsound = 'sound/weapons/pierce.ogg'
var/hitsound_wall = ""
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
@@ -83,7 +83,9 @@
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
- var/projectile_type = /obj/item/projectile
+ ///How much armor this projectile pierces.
+ var/armour_penetration = 0
+ var/projectile_type = /obj/projectile
var/range = 50 //This will de-increment every step. When 0, it will deletze the projectile.
var/decayedRange //stores original range
var/reflect_range_decrease = 5 //amount of original range that falls off when reflecting, so it doesn't go forever
@@ -107,17 +109,17 @@
var/temporary_unstoppable_movement = FALSE
-/obj/item/projectile/Initialize()
+/obj/projectile/Initialize()
. = ..()
permutated = list()
decayedRange = range
-/obj/item/projectile/proc/Range()
+/obj/projectile/proc/Range()
range--
if(range <= 0 && loc)
on_range()
-/obj/item/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range
+/obj/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range
qdel(src)
//to get the correct limb (if any) for the projectile hit message
@@ -131,10 +133,10 @@
else //when a limb is missing the damage is actually passed to the chest
return BODY_ZONE_CHEST
-/obj/item/projectile/proc/prehit(atom/target)
+/obj/projectile/proc/prehit(atom/target)
return TRUE
-/obj/item/projectile/proc/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/proc/on_hit(atom/target, blocked = FALSE)
if(fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, Angle)
var/turf/target_loca = get_turf(target)
@@ -206,21 +208,21 @@
return BULLET_ACT_HIT
-/obj/item/projectile/proc/vol_by_damage()
+/obj/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
else
return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume
-/obj/item/projectile/proc/on_ricochet(atom/A)
+/obj/projectile/proc/on_ricochet(atom/A)
return
-/obj/item/projectile/proc/store_hitscan_collision(datum/point/pcache)
+/obj/projectile/proc/store_hitscan_collision(datum/point/pcache)
beam_segments[beam_index] = pcache
beam_index = pcache
beam_segments[beam_index] = null
-/obj/item/projectile/Bump(atom/A)
+/obj/projectile/Bump(atom/A)
var/datum/point/pcache = trajectory.copy_to()
var/turf/T = get_turf(A)
if(check_ricochet(A) && check_ricochet_flag(A) && ricochets < ricochets_max)
@@ -249,7 +251,7 @@
#define DO_NOT_QDEL 2 //Pass through.
#define FORCE_QDEL 3 //Force deletion.
-/obj/item/projectile/proc/process_hit(turf/T, atom/target, qdel_self, hit_something = FALSE) //probably needs to be reworked entirely when pixel movement is done.
+/obj/projectile/proc/process_hit(turf/T, atom/target, qdel_self, hit_something = FALSE) //probably needs to be reworked entirely when pixel movement is done.
if(QDELETED(src) || !T || !target) //We're done, nothing's left.
if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !CHECK_BITFIELD(movement_type, UNSTOPPABLE)))
qdel(src)
@@ -277,7 +279,7 @@
#undef DO_NOT_QDEL
#undef FORCE_QDEL
-/obj/item/projectile/proc/select_target(turf/T, atom/target) //Select a target from a turf.
+/obj/projectile/proc/select_target(turf/T, atom/target) //Select a target from a turf.
if((original in T) && can_hit_target(original, permutated, TRUE, TRUE))
return original
if(target && can_hit_target(target, permutated, target == original, TRUE))
@@ -305,17 +307,17 @@
return T
//Returns null if nothing at all was found.
-/obj/item/projectile/proc/check_ricochet()
+/obj/projectile/proc/check_ricochet()
if(prob(ricochet_chance))
return TRUE
return FALSE
-/obj/item/projectile/proc/check_ricochet_flag(atom/A)
+/obj/projectile/proc/check_ricochet_flag(atom/A)
if(A.flags_1 & CHECK_RICOCHET_1)
return TRUE
return FALSE
-/obj/item/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight.
+/obj/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight.
if(!trajectory && isnull(forced_angle) && isnull(Angle))
return FALSE
var/datum/point/vector/current = trajectory
@@ -325,15 +327,15 @@
var/datum/point/vector/v = current.return_vector_after_increments(moves * SSprojectiles.global_iterations_per_move)
return v.return_turf()
-/obj/item/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle)
+/obj/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle)
var/turf/current = get_turf(src)
var/turf/ending = return_predicted_turf_after_moves(moves, forced_angle)
return getline(current, ending)
-/obj/item/projectile/Process_Spacemove(movement_dir = 0)
+/obj/projectile/Process_Spacemove(movement_dir = 0)
return TRUE //Bullets don't drift in space
-/obj/item/projectile/process()
+/obj/projectile/process()
last_process = world.time
if(!loc || !fired || !trajectory)
fired = FALSE
@@ -356,7 +358,7 @@
for(var/i in 1 to required_moves)
pixel_move(1, FALSE)
-/obj/item/projectile/proc/fire(angle, atom/direct_target)
+/obj/projectile/proc/fire(angle, atom/direct_target)
if(fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_BEFORE_FIRE, src, original)
//If no angle needs to resolve it from xo/yo!
@@ -396,7 +398,7 @@
START_PROCESSING(SSprojectiles, src)
pixel_move(1, FALSE) //move it now!
-/obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides.
+/obj/projectile/proc/setAngle(new_angle) //wrapper for overrides.
Angle = new_angle
if(!nondirectional_sprite)
var/matrix/M = new
@@ -406,7 +408,7 @@
trajectory.set_angle(new_angle)
return TRUE
-/obj/item/projectile/forceMove(atom/target)
+/obj/projectile/forceMove(atom/target)
if(!isloc(target) || !isloc(loc) || !z)
return ..()
var/zc = target.z != z
@@ -423,11 +425,11 @@
if(zc)
after_z_change(old, target)
-/obj/item/projectile/proc/after_z_change(atom/olcloc, atom/newloc)
+/obj/projectile/proc/after_z_change(atom/olcloc, atom/newloc)
-/obj/item/projectile/proc/before_z_change(atom/oldloc, atom/newloc)
+/obj/projectile/proc/before_z_change(atom/oldloc, atom/newloc)
-/obj/item/projectile/vv_edit_var(var_name, var_value)
+/obj/projectile/vv_edit_var(var_name, var_value)
switch(var_name)
if(NAMEOF(src, Angle))
setAngle(var_value)
@@ -435,19 +437,19 @@
else
return ..()
-/obj/item/projectile/proc/set_pixel_speed(new_speed)
+/obj/projectile/proc/set_pixel_speed(new_speed)
if(trajectory)
trajectory.set_speed(new_speed)
return TRUE
return FALSE
-/obj/item/projectile/proc/record_hitscan_start(datum/point/pcache)
+/obj/projectile/proc/record_hitscan_start(datum/point/pcache)
if(pcache)
beam_segments = list()
beam_index = pcache
beam_segments[beam_index] = null //record start.
-/obj/item/projectile/proc/process_hitscan()
+/obj/projectile/proc/process_hitscan()
var/safety = range * 3
record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
while(loc && !QDELETED(src))
@@ -462,7 +464,7 @@
return //Kill!
pixel_move(1, TRUE)
-/obj/item/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
+/obj/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
if(!loc || !trajectory)
return
last_projectile_move = world.time
@@ -502,7 +504,7 @@
animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW)
Range()
-/obj/item/projectile/proc/process_homing() //may need speeding up in the future performance wise.
+/obj/projectile/proc/process_homing() //may need speeding up in the future performance wise.
if(!homing_target)
return FALSE
var/datum/point/PT = RETURN_PRECISE_POINT(homing_target)
@@ -511,7 +513,7 @@
var/angle = closer_angle_difference(Angle, angle_between_points(RETURN_PRECISE_POINT(src), PT))
setAngle(Angle + CLAMP(angle, -homing_turn_speed, homing_turn_speed))
-/obj/item/projectile/proc/set_homing_target(atom/A)
+/obj/projectile/proc/set_homing_target(atom/A)
if(!A || (!isturf(A) && !isturf(A.loc)))
return FALSE
homing = TRUE
@@ -525,7 +527,7 @@
//Returns true if the target atom is on our current turf and above the right layer
//If direct target is true it's the originally clicked target.
-/obj/item/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
+/obj/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
if(QDELETED(target))
return FALSE
if(!ignore_source_check && firer)
@@ -549,7 +551,7 @@
return TRUE
//Spread is FORCED!
-/obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0)
+/obj/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0)
var/turf/curloc = get_turf(source)
var/turf/targloc = get_turf(target)
trajectory_ignore_forcemove = TRUE
@@ -607,14 +609,14 @@
angle = ATAN2(y - oy, x - ox)
return list(angle, p_x, p_y)
-/obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
+/obj/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
. = ..()
if(isliving(AM) && !(pass_flags & PASSMOB))
var/mob/living/L = AM
if(can_hit_target(L, permutated, (AM == original)))
Bump(AM)
-/obj/item/projectile/Move(atom/newloc, dir = NONE)
+/obj/projectile/Move(atom/newloc, dir = NONE)
. = ..()
if(.)
if(temporary_unstoppable_movement)
@@ -623,7 +625,7 @@
if(fired && can_hit_target(original, permutated, TRUE))
Bump(original)
-/obj/item/projectile/Destroy()
+/obj/projectile/Destroy()
if(hitscan)
finalize_hitscan_and_generate_tracers()
STOP_PROCESSING(SSprojectiles, src)
@@ -631,18 +633,18 @@
qdel(trajectory)
return ..()
-/obj/item/projectile/proc/cleanup_beam_segments()
+/obj/projectile/proc/cleanup_beam_segments()
QDEL_LIST_ASSOC(beam_segments)
beam_segments = list()
qdel(beam_index)
-/obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
+/obj/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
if(trajectory && beam_index)
var/datum/point/pcache = trajectory.copy_to()
beam_segments[beam_index] = pcache
generate_hitscan_tracers(null, null, impacting)
-/obj/item/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 3, impacting = TRUE)
+/obj/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 3, impacting = TRUE)
if(!length(beam_segments))
return
if(tracer_type)
@@ -672,5 +674,5 @@
if(cleanup)
cleanup_beam_segments()
-/obj/item/projectile/experience_pressure_difference()
+/obj/projectile/experience_pressure_difference()
return
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 04c3be29784..77ee9cf976f 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/beam
+/obj/projectile/beam
name = "laser"
icon_state = "laser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
@@ -15,12 +15,12 @@
ricochet_chance = 80
reflectable = REFLECT_NORMAL
-/obj/item/projectile/beam/laser
+/obj/projectile/beam/laser
tracer_type = /obj/effect/projectile/tracer/laser
muzzle_type = /obj/effect/projectile/muzzle/laser
impact_type = /obj/effect/projectile/impact/laser
-/obj/item/projectile/beam/laser/heavylaser
+/obj/projectile/beam/laser/heavylaser
name = "heavy laser"
icon_state = "heavylaser"
damage = 40
@@ -28,7 +28,7 @@
muzzle_type = /obj/effect/projectile/muzzle/heavy_laser
impact_type = /obj/effect/projectile/impact/heavy_laser
-/obj/item/projectile/beam/laser/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/beam/laser/on_hit(atom/target, blocked = FALSE)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
@@ -36,23 +36,23 @@
else if(isturf(target))
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser/wall
-/obj/item/projectile/beam/weak
+/obj/projectile/beam/weak
damage = 15
-/obj/item/projectile/beam/weak/penetrator
+/obj/projectile/beam/weak/penetrator
armour_penetration = 50
-/obj/item/projectile/beam/practice
+/obj/projectile/beam/practice
name = "practice laser"
damage = 0
nodamage = TRUE
-/obj/item/projectile/beam/scatter
+/obj/projectile/beam/scatter
name = "laser pellet"
icon_state = "scatterlaser"
damage = 5
-/obj/item/projectile/beam/xray
+/obj/projectile/beam/xray
name = "\improper X-ray beam"
icon_state = "xray"
flag = "rad"
@@ -67,7 +67,7 @@
muzzle_type = /obj/effect/projectile/muzzle/xray
impact_type = /obj/effect/projectile/impact/xray
-/obj/item/projectile/beam/disabler
+/obj/projectile/beam/disabler
name = "disabler beam"
icon_state = "omnilaser"
damage = 30
@@ -81,7 +81,7 @@
muzzle_type = /obj/effect/projectile/muzzle/disabler
impact_type = /obj/effect/projectile/impact/disabler
-/obj/item/projectile/beam/pulse
+/obj/projectile/beam/pulse
name = "pulse"
icon_state = "u_laser"
damage = 50
@@ -91,36 +91,36 @@
muzzle_type = /obj/effect/projectile/muzzle/pulse
impact_type = /obj/effect/projectile/impact/pulse
-/obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/beam/pulse/on_hit(atom/target, blocked = FALSE)
. = ..()
if (!QDELETED(target) && (isturf(target) || istype(target, /obj/structure/)))
target.ex_act(EXPLODE_HEAVY)
-/obj/item/projectile/beam/pulse/shotgun
+/obj/projectile/beam/pulse/shotgun
damage = 40
-/obj/item/projectile/beam/pulse/heavy
+/obj/projectile/beam/pulse/heavy
name = "heavy pulse laser"
icon_state = "pulse1_bl"
var/life = 20
-/obj/item/projectile/beam/pulse/heavy/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/beam/pulse/heavy/on_hit(atom/target, blocked = FALSE)
life -= 10
if(life > 0)
. = BULLET_ACT_FORCE_PIERCE
..()
-/obj/item/projectile/beam/emitter
+/obj/projectile/beam/emitter
name = "emitter beam"
icon_state = "emitter"
damage = 30
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
light_color = LIGHT_COLOR_GREEN
-/obj/item/projectile/beam/emitter/singularity_pull()
+/obj/projectile/beam/emitter/singularity_pull()
return //don't want the emitters to miss
-/obj/item/projectile/beam/lasertag
+/obj/projectile/beam/lasertag
name = "laser tag beam"
icon_state = "omnilaser"
hitsound = null
@@ -131,7 +131,7 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
light_color = LIGHT_COLOR_BLUE
-/obj/item/projectile/beam/lasertag/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/beam/lasertag/on_hit(atom/target, blocked = FALSE)
. = ..()
if(ishuman(target))
var/mob/living/carbon/human/M = target
@@ -139,7 +139,7 @@
if(M.wear_suit.type in suit_types)
M.adjustStaminaLoss(34)
-/obj/item/projectile/beam/lasertag/redtag
+/obj/projectile/beam/lasertag/redtag
icon_state = "laser"
suit_types = list(/obj/item/clothing/suit/bluetag)
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
@@ -148,20 +148,20 @@
muzzle_type = /obj/effect/projectile/muzzle/laser
impact_type = /obj/effect/projectile/impact/laser
-/obj/item/projectile/beam/lasertag/redtag/hitscan
+/obj/projectile/beam/lasertag/redtag/hitscan
hitscan = TRUE
-/obj/item/projectile/beam/lasertag/bluetag
+/obj/projectile/beam/lasertag/bluetag
icon_state = "bluelaser"
suit_types = list(/obj/item/clothing/suit/redtag)
tracer_type = /obj/effect/projectile/tracer/laser/blue
muzzle_type = /obj/effect/projectile/muzzle/laser/blue
impact_type = /obj/effect/projectile/impact/laser/blue
-/obj/item/projectile/beam/lasertag/bluetag/hitscan
+/obj/projectile/beam/lasertag/bluetag/hitscan
hitscan = TRUE
-/obj/item/projectile/beam/instakill
+/obj/projectile/beam/instakill
name = "instagib laser"
icon_state = "purple_laser"
damage = 200
@@ -169,17 +169,17 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser
light_color = LIGHT_COLOR_PURPLE
-/obj/item/projectile/beam/instakill/blue
+/obj/projectile/beam/instakill/blue
icon_state = "blue_laser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
light_color = LIGHT_COLOR_BLUE
-/obj/item/projectile/beam/instakill/red
+/obj/projectile/beam/instakill/red
icon_state = "red_laser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
light_color = LIGHT_COLOR_RED
-/obj/item/projectile/beam/instakill/on_hit(atom/target)
+/obj/projectile/beam/instakill/on_hit(atom/target)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
@@ -187,7 +187,7 @@
M.gib()
//a shrink ray that shrinks stuff, which grows back after a short while.
-/obj/item/projectile/beam/shrink
+/obj/projectile/beam/shrink
name = "shrink ray"
icon_state = "blue_laser"
hitsound = 'sound/weapons/shrink_hit.ogg'
@@ -198,7 +198,7 @@
light_color = LIGHT_COLOR_BLUE
var/shrink_time = 90
-/obj/item/projectile/beam/shrink/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/beam/shrink/on_hit(atom/target, blocked = FALSE)
. = ..()
if(isopenturf(target) || istype(target, /turf/closed/indestructible))//shrunk floors wouldnt do anything except look weird, i-walls shouldnt be bypassable
return
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 725ef9baa6f..999e4c0f9bc 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/bullet
+/obj/projectile/bullet
name = "bullet"
icon_state = "bullet"
damage = 60
diff --git a/code/modules/projectiles/projectile/bullets/_incendiary.dm b/code/modules/projectiles/projectile/bullets/_incendiary.dm
index d0cf74421c8..c46211cdb85 100644
--- a/code/modules/projectiles/projectile/bullets/_incendiary.dm
+++ b/code/modules/projectiles/projectile/bullets/_incendiary.dm
@@ -1,15 +1,15 @@
-/obj/item/projectile/bullet/incendiary
+/obj/projectile/bullet/incendiary
damage = 20
var/fire_stacks = 4
-/obj/item/projectile/bullet/incendiary/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/incendiary/on_hit(atom/target, blocked = FALSE)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
M.adjust_fire_stacks(fire_stacks)
M.IgniteMob()
-/obj/item/projectile/bullet/incendiary/Move()
+/obj/projectile/bullet/incendiary/Move()
. = ..()
var/turf/location = get_turf(src)
if(location)
diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm
index 8091efcdfc5..21df04c15e6 100644
--- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm
+++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm
@@ -1,14 +1,14 @@
-/obj/item/projectile/bullet/dart
+/obj/projectile/bullet/dart
name = "dart"
icon_state = "cbbolt"
damage = 6
var/piercing = FALSE
-/obj/item/projectile/bullet/dart/Initialize()
+/obj/projectile/bullet/dart/Initialize()
. = ..()
create_reagents(50, NO_REACT)
-/obj/item/projectile/bullet/dart/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/dart/on_hit(atom/target, blocked = FALSE)
if(iscarbon(target))
var/mob/living/carbon/M = target
if(blocked != 100) // not completely blocked
@@ -27,12 +27,12 @@
reagents.handle_reactions()
return BULLET_ACT_HIT
-/obj/item/projectile/bullet/dart/metalfoam/Initialize()
+/obj/projectile/bullet/dart/metalfoam/Initialize()
. = ..()
reagents.add_reagent(/datum/reagent/aluminium, 15)
reagents.add_reagent(/datum/reagent/foaming_agent, 5)
reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 5)
-/obj/item/projectile/bullet/dart/syringe
+/obj/projectile/bullet/dart/syringe
name = "syringe"
icon_state = "syringeproj"
diff --git a/code/modules/projectiles/projectile/bullets/dnainjector.dm b/code/modules/projectiles/projectile/bullets/dnainjector.dm
index f645f7eccd1..2cae1c2b321 100644
--- a/code/modules/projectiles/projectile/bullets/dnainjector.dm
+++ b/code/modules/projectiles/projectile/bullets/dnainjector.dm
@@ -1,11 +1,11 @@
-/obj/item/projectile/bullet/dnainjector
+/obj/projectile/bullet/dnainjector
name = "\improper DNA injector"
icon_state = "syringeproj"
var/obj/item/dnainjector/injector
damage = 5
hitsound_wall = "shatter"
-/obj/item/projectile/bullet/dnainjector/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/dnainjector/on_hit(atom/target, blocked = FALSE)
if(iscarbon(target))
var/mob/living/carbon/M = target
if(blocked != 100)
@@ -19,6 +19,6 @@
"You were protected against \the [src]!")
return ..()
-/obj/item/projectile/bullet/dnainjector/Destroy()
+/obj/projectile/bullet/dnainjector/Destroy()
QDEL_NULL(injector)
return ..()
diff --git a/code/modules/projectiles/projectile/bullets/grenade.dm b/code/modules/projectiles/projectile/bullets/grenade.dm
index e0804611d51..a0477939d0a 100644
--- a/code/modules/projectiles/projectile/bullets/grenade.dm
+++ b/code/modules/projectiles/projectile/bullets/grenade.dm
@@ -1,12 +1,12 @@
// 40mm (Grenade Launcher
-/obj/item/projectile/bullet/a40mm
+/obj/projectile/bullet/a40mm
name ="40mm grenade"
desc = "USE A WEEL GUN"
icon_state= "bolter"
damage = 60
-/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/a40mm/on_hit(atom/target, blocked = FALSE)
..()
explosion(target, -1, 0, 2, 1, 0, flame_range = 3)
return BULLET_ACT_HIT
diff --git a/code/modules/projectiles/projectile/bullets/lmg.dm b/code/modules/projectiles/projectile/bullets/lmg.dm
index addeecd3cf6..07532f5a926 100644
--- a/code/modules/projectiles/projectile/bullets/lmg.dm
+++ b/code/modules/projectiles/projectile/bullets/lmg.dm
@@ -1,44 +1,44 @@
// C3D (Borgs)
-/obj/item/projectile/bullet/c3d
+/obj/projectile/bullet/c3d
damage = 20
// Mech LMG
-/obj/item/projectile/bullet/lmg
+/obj/projectile/bullet/lmg
damage = 20
// Mech FNX-99
-/obj/item/projectile/bullet/incendiary/fnx99
+/obj/projectile/bullet/incendiary/fnx99
damage = 20
// Turrets
-/obj/item/projectile/bullet/manned_turret
+/obj/projectile/bullet/manned_turret
damage = 20
-/obj/item/projectile/bullet/syndicate_turret
+/obj/projectile/bullet/syndicate_turret
damage = 20
// 7.12x82mm (SAW)
-/obj/item/projectile/bullet/mm712x82
+/obj/projectile/bullet/mm712x82
name = "7.12x82mm bullet"
damage = 45
armour_penetration = 5
-/obj/item/projectile/bullet/mm712x82_ap
+/obj/projectile/bullet/mm712x82_ap
name = "7.12x82mm armor-piercing bullet"
damage = 40
armour_penetration = 75
-/obj/item/projectile/bullet/mm712x82_hp
+/obj/projectile/bullet/mm712x82_hp
name = "7.12x82mm hollow-point bullet"
damage = 60
armour_penetration = -60
-/obj/item/projectile/bullet/incendiary/mm712x82
+/obj/projectile/bullet/incendiary/mm712x82
name = "7.12x82mm incendiary bullet"
damage = 20
fire_stacks = 3
diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm
index ac14fa563c5..e24d9f6275c 100644
--- a/code/modules/projectiles/projectile/bullets/pistol.dm
+++ b/code/modules/projectiles/projectile/bullets/pistol.dm
@@ -1,36 +1,36 @@
// 9mm (Stechkin APS)
-/obj/item/projectile/bullet/c9mm
+/obj/projectile/bullet/c9mm
name = "9mm bullet"
damage = 20
-/obj/item/projectile/bullet/c9mm_ap
+/obj/projectile/bullet/c9mm_ap
name = "9mm armor-piercing bullet"
damage = 15
armour_penetration = 40
-/obj/item/projectile/bullet/incendiary/c9mm
+/obj/projectile/bullet/incendiary/c9mm
name = "9mm incendiary bullet"
damage = 10
fire_stacks = 1
// 10mm (Stechkin)
-/obj/item/projectile/bullet/c10mm
+/obj/projectile/bullet/c10mm
name = "10mm bullet"
damage = 30
-/obj/item/projectile/bullet/c10mm_ap
+/obj/projectile/bullet/c10mm_ap
name = "10mm armor-piercing bullet"
damage = 27
armour_penetration = 40
-/obj/item/projectile/bullet/c10mm_hp
+/obj/projectile/bullet/c10mm_hp
name = "10mm hollow-point bullet"
damage = 40
armour_penetration = -50
-/obj/item/projectile/bullet/incendiary/c10mm
+/obj/projectile/bullet/incendiary/c10mm
name = "10mm incendiary bullet"
damage = 15
fire_stacks = 2
diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm
index 14ef8717b24..3408896802b 100644
--- a/code/modules/projectiles/projectile/bullets/revolver.dm
+++ b/code/modules/projectiles/projectile/bullets/revolver.dm
@@ -1,26 +1,26 @@
// 7.62x38mmR (Nagant Revolver)
-/obj/item/projectile/bullet/n762
+/obj/projectile/bullet/n762
name = "7.62x38mmR bullet"
damage = 60
// .50AE (Desert Eagle)
-/obj/item/projectile/bullet/a50AE
+/obj/projectile/bullet/a50AE
name = ".50AE bullet"
damage = 60
// .38 (Detective's Gun)
-/obj/item/projectile/bullet/c38
+/obj/projectile/bullet/c38
name = ".38 bullet"
damage = 25
-/obj/item/projectile/bullet/c38/trac
+/obj/projectile/bullet/c38/trac
name = ".38 TRAC bullet"
damage = 10
-/obj/item/projectile/bullet/c38/trac/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/c38/trac/on_hit(atom/target, blocked = FALSE)
. = ..()
var/mob/living/carbon/M = target
var/obj/item/implant/tracking/c38/imp
@@ -31,23 +31,23 @@
imp = new /obj/item/implant/tracking/c38(M)
imp.implant(M)
-/obj/item/projectile/bullet/c38/hotshot //similar to incendiary bullets, but do not leave a flaming trail
+/obj/projectile/bullet/c38/hotshot //similar to incendiary bullets, but do not leave a flaming trail
name = ".38 Hot Shot bullet"
damage = 20
-/obj/item/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
M.adjust_fire_stacks(6)
M.IgniteMob()
-/obj/item/projectile/bullet/c38/iceblox //see /obj/item/projectile/temp for the original code
+/obj/projectile/bullet/c38/iceblox //see /obj/projectile/temp for the original code
name = ".38 Iceblox bullet"
damage = 20
var/temperature = 100
-/obj/item/projectile/bullet/c38/iceblox/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/c38/iceblox/on_hit(atom/target, blocked = FALSE)
. = ..()
if(isliving(target))
var/mob/living/M = target
@@ -55,6 +55,6 @@
// .357 (Syndie Revolver)
-/obj/item/projectile/bullet/a357
+/obj/projectile/bullet/a357
name = ".357 bullet"
damage = 60
diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm
index 1cd5a9f0bbb..ea60a4219a7 100644
--- a/code/modules/projectiles/projectile/bullets/rifle.dm
+++ b/code/modules/projectiles/projectile/bullets/rifle.dm
@@ -1,16 +1,16 @@
// 5.56mm (M-90gl Carbine)
-/obj/item/projectile/bullet/a556
+/obj/projectile/bullet/a556
name = "5.56mm bullet"
damage = 35
// 7.62 (Nagant Rifle)
-/obj/item/projectile/bullet/a762
+/obj/projectile/bullet/a762
name = "7.62 bullet"
damage = 60
-/obj/item/projectile/bullet/a762_enchanted
+/obj/projectile/bullet/a762_enchanted
name = "enchanted 7.62 bullet"
damage = 20
stamina = 80
diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm
index 33f7ffc6e12..d291da83ecd 100644
--- a/code/modules/projectiles/projectile/bullets/shotgun.dm
+++ b/code/modules/projectiles/projectile/bullets/shotgun.dm
@@ -1,21 +1,21 @@
-/obj/item/projectile/bullet/shotgun_slug
+/obj/projectile/bullet/shotgun_slug
name = "12g shotgun slug"
damage = 60
-/obj/item/projectile/bullet/shotgun_beanbag
+/obj/projectile/bullet/shotgun_beanbag
name = "beanbag slug"
damage = 5
stamina = 55
-/obj/item/projectile/bullet/incendiary/shotgun
+/obj/projectile/bullet/incendiary/shotgun
name = "incendiary slug"
damage = 20
-/obj/item/projectile/bullet/incendiary/shotgun/dragonsbreath
+/obj/projectile/bullet/incendiary/shotgun/dragonsbreath
name = "dragonsbreath pellet"
damage = 5
-/obj/item/projectile/bullet/shotgun_stunslug
+/obj/projectile/bullet/shotgun_stunslug
name = "stunslug"
damage = 5
paralyze = 100
@@ -25,7 +25,7 @@
icon_state = "spark"
color = "#FFFF00"
-/obj/item/projectile/bullet/shotgun_meteorslug
+/obj/projectile/bullet/shotgun_meteorslug
name = "meteorslug"
icon = 'icons/obj/meteor.dmi'
icon_state = "dust"
@@ -34,46 +34,46 @@
knockdown = 80
hitsound = 'sound/effects/meteorimpact.ogg'
-/obj/item/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE)
. = ..()
if(ismovableatom(target))
var/atom/movable/M = target
var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src)))
M.safe_throw_at(throw_target, 3, 2)
-/obj/item/projectile/bullet/shotgun_meteorslug/Initialize()
+/obj/projectile/bullet/shotgun_meteorslug/Initialize()
. = ..()
SpinAnimation()
-/obj/item/projectile/bullet/shotgun_frag12
+/obj/projectile/bullet/shotgun_frag12
name ="frag12 slug"
damage = 25
paralyze = 50
-/obj/item/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE)
..()
explosion(target, -1, 0, 1)
return BULLET_ACT_HIT
-/obj/item/projectile/bullet/pellet
+/obj/projectile/bullet/pellet
var/tile_dropoff = 0.75
var/tile_dropoff_s = 0.5
-/obj/item/projectile/bullet/pellet/shotgun_buckshot
+/obj/projectile/bullet/pellet/shotgun_buckshot
name = "buckshot pellet"
damage = 12.5
-/obj/item/projectile/bullet/pellet/shotgun_rubbershot
+/obj/projectile/bullet/pellet/shotgun_rubbershot
name = "rubbershot pellet"
damage = 3
stamina = 11
-/obj/item/projectile/bullet/pellet/shotgun_incapacitate
+/obj/projectile/bullet/pellet/shotgun_incapacitate
name = "incapacitating pellet"
damage = 1
stamina = 6
-/obj/item/projectile/bullet/pellet/Range()
+/obj/projectile/bullet/pellet/Range()
..()
if(damage > 0)
damage -= tile_dropoff
@@ -82,19 +82,19 @@
if(damage < 0 && stamina < 0)
qdel(src)
-/obj/item/projectile/bullet/pellet/shotgun_improvised
+/obj/projectile/bullet/pellet/shotgun_improvised
tile_dropoff = 0.55 //Come on it does 6 damage don't be like that.
damage = 6
-/obj/item/projectile/bullet/pellet/shotgun_improvised/Initialize()
+/obj/projectile/bullet/pellet/shotgun_improvised/Initialize()
. = ..()
range = rand(1, 8)
-/obj/item/projectile/bullet/pellet/shotgun_improvised/on_range()
+/obj/projectile/bullet/pellet/shotgun_improvised/on_range()
do_sparks(1, TRUE, src)
..()
// Mech Scattershot
-/obj/item/projectile/bullet/scattershot
+/obj/projectile/bullet/scattershot
damage = 24
diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm
index 0a5866008ed..5be2031497d 100644
--- a/code/modules/projectiles/projectile/bullets/smg.dm
+++ b/code/modules/projectiles/projectile/bullets/smg.dm
@@ -1,21 +1,21 @@
// .45 (M1911 & C20r)
-/obj/item/projectile/bullet/c45
+/obj/projectile/bullet/c45
name = ".45 bullet"
damage = 30
// 4.6x30mm (Autorifles)
-/obj/item/projectile/bullet/c46x30mm
+/obj/projectile/bullet/c46x30mm
name = "4.6x30mm bullet"
damage = 20
-/obj/item/projectile/bullet/c46x30mm_ap
+/obj/projectile/bullet/c46x30mm_ap
name = "4.6x30mm armor-piercing bullet"
damage = 15
armour_penetration = 40
-/obj/item/projectile/bullet/incendiary/c46x30mm
+/obj/projectile/bullet/incendiary/c46x30mm
name = "4.6x30mm incendiary bullet"
damage = 10
fire_stacks = 1
diff --git a/code/modules/projectiles/projectile/bullets/sniper.dm b/code/modules/projectiles/projectile/bullets/sniper.dm
index b480c8e8a30..cb6e4ad5c13 100644
--- a/code/modules/projectiles/projectile/bullets/sniper.dm
+++ b/code/modules/projectiles/projectile/bullets/sniper.dm
@@ -1,6 +1,6 @@
// .50 (Sniper)
-/obj/item/projectile/bullet/p50
+/obj/projectile/bullet/p50
name =".50 bullet"
speed = 0.4
damage = 70
@@ -9,13 +9,13 @@
armour_penetration = 50
var/breakthings = TRUE
-/obj/item/projectile/bullet/p50/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/p50/on_hit(atom/target, blocked = 0)
if(isobj(target) && (blocked != 100) && breakthings)
var/obj/O = target
O.take_damage(80, BRUTE, "bullet", FALSE)
return ..()
-/obj/item/projectile/bullet/p50/soporific
+/obj/projectile/bullet/p50/soporific
name =".50 soporific bullet"
armour_penetration = 0
damage = 0
@@ -23,13 +23,13 @@
paralyze = 0
breakthings = FALSE
-/obj/item/projectile/bullet/p50/soporific/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/p50/soporific/on_hit(atom/target, blocked = FALSE)
if((blocked != 100) && isliving(target))
var/mob/living/L = target
L.Sleeping(400)
return ..()
-/obj/item/projectile/bullet/p50/penetrator
+/obj/projectile/bullet/p50/penetrator
name =".50 penetrator bullet"
icon_state = "gauss"
name = "penetrator round"
@@ -39,7 +39,7 @@
paralyze = 0
breakthings = FALSE
-/obj/item/projectile/bullet/p50/penetrator/shuttle //Nukeop Shuttle Variety
+/obj/projectile/bullet/p50/penetrator/shuttle //Nukeop Shuttle Variety
icon_state = "gaussstrong"
damage = 25
speed = 0.3
diff --git a/code/modules/projectiles/projectile/bullets/special.dm b/code/modules/projectiles/projectile/bullets/special.dm
index f5f8de195dc..e17e26435ad 100644
--- a/code/modules/projectiles/projectile/bullets/special.dm
+++ b/code/modules/projectiles/projectile/bullets/special.dm
@@ -1,6 +1,6 @@
// Honker
-/obj/item/projectile/bullet/honker
+/obj/projectile/bullet/honker
name = "banana"
damage = 0
movement_type = FLYING | UNSTOPPABLE
@@ -10,11 +10,11 @@
icon_state = "banana"
range = 200
-/obj/item/projectile/bullet/honker/Initialize()
+/obj/projectile/bullet/honker/Initialize()
. = ..()
SpinAnimation()
-/obj/item/projectile/bullet/honker/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/honker/on_hit(atom/target, blocked = FALSE)
. = ..()
var/mob/M = target
if(istype(M))
@@ -22,10 +22,10 @@
// Mime
-/obj/item/projectile/bullet/mime
+/obj/projectile/bullet/mime
damage = 40
-/obj/item/projectile/bullet/mime/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/mime/on_hit(atom/target, blocked = FALSE)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
diff --git a/code/modules/projectiles/projectile/energy/_energy.dm b/code/modules/projectiles/projectile/energy/_energy.dm
index f29ad3a0ee9..8dbaa953741 100644
--- a/code/modules/projectiles/projectile/energy/_energy.dm
+++ b/code/modules/projectiles/projectile/energy/_energy.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/energy
+/obj/projectile/energy
name = "energy"
icon_state = "spark"
damage = 0
diff --git a/code/modules/projectiles/projectile/energy/ebow.dm b/code/modules/projectiles/projectile/energy/ebow.dm
index c83668df16a..a39e29fc75e 100644
--- a/code/modules/projectiles/projectile/energy/ebow.dm
+++ b/code/modules/projectiles/projectile/energy/ebow.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/energy/bolt //ebow bolts
+/obj/projectile/energy/bolt //ebow bolts
name = "bolt"
icon_state = "cbbolt"
damage = 15
@@ -9,9 +9,9 @@
knockdown = 10
slur = 5
-/obj/item/projectile/energy/bolt/halloween
+/obj/projectile/energy/bolt/halloween
name = "candy corn"
icon_state = "candy_corn"
-/obj/item/projectile/energy/bolt/large
+/obj/projectile/energy/bolt/large
damage = 20
diff --git a/code/modules/projectiles/projectile/energy/misc.dm b/code/modules/projectiles/projectile/energy/misc.dm
index 16c238afb9b..f4465733023 100644
--- a/code/modules/projectiles/projectile/energy/misc.dm
+++ b/code/modules/projectiles/projectile/energy/misc.dm
@@ -1,16 +1,16 @@
-/obj/item/projectile/energy/declone
+/obj/projectile/energy/declone
name = "radiation beam"
icon_state = "declone"
damage = 20
damage_type = CLONE
irradiate = 100
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
-
-/obj/item/projectile/energy/declone/weak
+
+/obj/projectile/energy/declone/weak
damage = 9
irradiate = 30
-
-/obj/item/projectile/energy/dart //ninja throwing dart
+
+/obj/projectile/energy/dart //ninja throwing dart
name = "dart"
icon_state = "toxin"
damage = 5
diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm
index a30c152175b..a5d135c1b30 100644
--- a/code/modules/projectiles/projectile/energy/net_snare.dm
+++ b/code/modules/projectiles/projectile/energy/net_snare.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/energy/net
+/obj/projectile/energy/net
name = "energy netting"
icon_state = "e_netting"
damage = 10
@@ -6,18 +6,18 @@
hitsound = 'sound/weapons/taserhit.ogg'
range = 10
-/obj/item/projectile/energy/net/Initialize()
+/obj/projectile/energy/net/Initialize()
. = ..()
SpinAnimation()
-/obj/item/projectile/energy/net/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/energy/net/on_hit(atom/target, blocked = FALSE)
if(isliving(target))
var/turf/Tloc = get_turf(target)
if(!locate(/obj/effect/nettingportal) in Tloc)
new /obj/effect/nettingportal(Tloc)
..()
-/obj/item/projectile/energy/net/on_range()
+/obj/projectile/energy/net/on_range()
do_sparks(1, TRUE, src)
..()
@@ -55,14 +55,14 @@
/obj/effect/nettingportal/singularity_pull()
return
-/obj/item/projectile/energy/trap
+/obj/projectile/energy/trap
name = "energy snare"
icon_state = "e_snare"
nodamage = TRUE
hitsound = 'sound/weapons/taserhit.ogg'
range = 4
-/obj/item/projectile/energy/trap/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/energy/trap/on_hit(atom/target, blocked = FALSE)
if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - drop a trap
new/obj/item/restraints/legcuffs/beartrap/energy(get_turf(loc))
else if(iscarbon(target))
@@ -70,11 +70,11 @@
B.Crossed(target)
..()
-/obj/item/projectile/energy/trap/on_range()
+/obj/projectile/energy/trap/on_range()
new /obj/item/restraints/legcuffs/beartrap/energy(loc)
..()
-/obj/item/projectile/energy/trap/cyborg
+/obj/projectile/energy/trap/cyborg
name = "Energy Bola"
icon_state = "e_snare"
nodamage = TRUE
@@ -82,7 +82,7 @@
hitsound = 'sound/weapons/taserhit.ogg'
range = 10
-/obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = FALSE)
if(!ismob(target) || blocked >= 100)
do_sparks(1, TRUE, src)
qdel(src)
@@ -92,6 +92,6 @@
QDEL_IN(src, 10)
..()
-/obj/item/projectile/energy/trap/cyborg/on_range()
+/obj/projectile/energy/trap/cyborg/on_range()
do_sparks(1, TRUE, src)
qdel(src)
diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm
index e08f806fe58..5f72fdbb79d 100644
--- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm
+++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm
@@ -1,5 +1,5 @@
//Nuclear particle projectile - a deadly side effect of fusion
-/obj/item/projectile/energy/nuclear_particle
+/obj/projectile/energy/nuclear_particle
name = "nuclear particle"
icon_state = "nuclear_particle"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
@@ -17,7 +17,7 @@
"purple" = "#FF00FF"
)
-/obj/item/projectile/energy/nuclear_particle/Initialize()
+/obj/projectile/energy/nuclear_particle/Initialize()
. = ..()
//Random color time!
var/our_color = pick(particle_colors)
@@ -25,5 +25,5 @@
set_light(4, 3, particle_colors[our_color]) //Range of 4, brightness of 3 - Same range as a flashlight
/atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction.
- var/obj/item/projectile/energy/nuclear_particle/P = new /obj/item/projectile/energy/nuclear_particle(src)
+ var/obj/projectile/energy/nuclear_particle/P = new /obj/projectile/energy/nuclear_particle(src)
P.fire(angle)
diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm
index e43dd94c90d..95414d05326 100644
--- a/code/modules/projectiles/projectile/energy/stun.dm
+++ b/code/modules/projectiles/projectile/energy/stun.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/energy/electrode
+/obj/projectile/energy/electrode
name = "electrode"
icon_state = "spark"
color = "#FFFF00"
@@ -12,7 +12,7 @@
muzzle_type = /obj/effect/projectile/muzzle/stun
impact_type = /obj/effect/projectile/impact/stun
-/obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/energy/electrode/on_hit(atom/target, blocked = FALSE)
. = ..()
if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks!
do_sparks(1, TRUE, src)
@@ -25,6 +25,6 @@
else if((C.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(C, TRAIT_STUNIMMUNE))
addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5)
-/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
+/obj/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
do_sparks(1, TRUE, src)
..()
diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm
index c34d5056f0b..032714b0b76 100644
--- a/code/modules/projectiles/projectile/energy/tesla.dm
+++ b/code/modules/projectiles/projectile/energy/tesla.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/energy/tesla
+/obj/projectile/energy/tesla
name = "tesla bolt"
icon_state = "tesla_projectile"
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
@@ -7,23 +7,23 @@
var/zap_range = 3
var/power = 10000
-/obj/item/projectile/energy/tesla/fire(setAngle)
+/obj/projectile/energy/tesla/fire(setAngle)
if(firer)
chain = firer.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY)
..()
-/obj/item/projectile/energy/tesla/on_hit(atom/target)
+/obj/projectile/energy/tesla/on_hit(atom/target)
. = ..()
tesla_zap(target, zap_range, power, tesla_flags)
qdel(src)
-/obj/item/projectile/energy/tesla/Destroy()
+/obj/projectile/energy/tesla/Destroy()
QDEL_NULL(chain)
return ..()
-/obj/item/projectile/energy/tesla/revolver
+/obj/projectile/energy/tesla/revolver
name = "energy orb"
-/obj/item/projectile/energy/tesla/cannon
+/obj/projectile/energy/tesla/cannon
name = "tesla orb"
power = 20000
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 36c7c0f8397..b625e1f6142 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/magic
+/obj/projectile/magic
name = "bolt of nothing"
icon_state = "energy"
damage = 0
@@ -7,11 +7,11 @@
armour_penetration = 100
flag = "magic"
-/obj/item/projectile/magic/death
+/obj/projectile/magic/death
name = "bolt of death"
icon_state = "pulse1_bl"
-/obj/item/projectile/magic/death/on_hit(target)
+/obj/projectile/magic/death/on_hit(target)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -20,14 +20,14 @@
return BULLET_ACT_BLOCK
M.death(0)
-/obj/item/projectile/magic/resurrection
+/obj/projectile/magic/resurrection
name = "bolt of resurrection"
icon_state = "ion"
damage = 0
damage_type = OXY
nodamage = TRUE
-/obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
+/obj/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
. = ..()
if(isliving(target))
if(target.hellbound)
@@ -45,7 +45,7 @@
else if(target.stat != DEAD)
to_chat(target, "You feel great!")
-/obj/item/projectile/magic/teleport
+/obj/projectile/magic/teleport
name = "bolt of teleportation"
icon_state = "bluespace"
damage = 0
@@ -54,7 +54,7 @@
var/inner_tele_radius = 0
var/outer_tele_radius = 6
-/obj/item/projectile/magic/teleport/on_hit(mob/target)
+/obj/projectile/magic/teleport/on_hit(mob/target)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -73,14 +73,14 @@
smoke.set_up(max(round(4 - teleammount),0), stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity
smoke.start()
-/obj/item/projectile/magic/safety
+/obj/projectile/magic/safety
name = "bolt of safety"
icon_state = "bluespace"
damage = 0
damage_type = OXY
nodamage = TRUE
-/obj/item/projectile/magic/safety/on_hit(atom/target)
+/obj/projectile/magic/safety/on_hit(atom/target)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -99,7 +99,7 @@
smoke.set_up(0, t)
smoke.start()
-/obj/item/projectile/magic/door
+/obj/projectile/magic/door
name = "bolt of door creation"
icon_state = "energy"
damage = 0
@@ -107,7 +107,7 @@
nodamage = TRUE
var/list/door_types = list(/obj/structure/mineral_door/wood, /obj/structure/mineral_door/iron, /obj/structure/mineral_door/silver, /obj/structure/mineral_door/gold, /obj/structure/mineral_door/uranium, /obj/structure/mineral_door/sandstone, /obj/structure/mineral_door/transparent/plasma, /obj/structure/mineral_door/transparent/diamond)
-/obj/item/projectile/magic/door/on_hit(atom/target)
+/obj/projectile/magic/door/on_hit(atom/target)
. = ..()
if(istype(target, /obj/machinery/door))
OpenDoor(target)
@@ -116,26 +116,26 @@
if(isclosedturf(T) && !isindestructiblewall(T))
CreateDoor(T)
-/obj/item/projectile/magic/door/proc/CreateDoor(turf/T)
+/obj/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, flags = CHANGETURF_INHERIT_AIR)
D.Open()
-/obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D)
+/obj/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 = FALSE
D.open()
-/obj/item/projectile/magic/change
+/obj/projectile/magic/change
name = "bolt of change"
icon_state = "ice_1"
damage = 0
damage_type = BURN
nodamage = TRUE
-/obj/item/projectile/magic/change/on_hit(atom/change)
+/obj/projectile/magic/change/on_hit(atom/change)
. = ..()
if(ismob(change))
var/mob/M = change
@@ -287,14 +287,14 @@
qdel(M)
return new_mob
-/obj/item/projectile/magic/animate
+/obj/projectile/magic/animate
name = "bolt of animation"
icon_state = "red_1"
damage = 0
damage_type = BURN
nodamage = TRUE
-/obj/item/projectile/magic/animate/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/magic/animate/on_hit(atom/target, blocked = FALSE)
target.animate_atom_living(firer)
..()
@@ -332,7 +332,7 @@
if(owner)
C.ChangeOwner(owner)
-/obj/item/projectile/magic/spellblade
+/obj/projectile/magic/spellblade
name = "blade energy"
icon_state = "lavastaff"
damage = 15
@@ -341,7 +341,7 @@
dismemberment = 50
nodamage = FALSE
-/obj/item/projectile/magic/spellblade/on_hit(target)
+/obj/projectile/magic/spellblade/on_hit(target)
if(ismob(target))
var/mob/M = target
if(M.anti_magic_check())
@@ -350,7 +350,7 @@
return BULLET_ACT_BLOCK
. = ..()
-/obj/item/projectile/magic/arcane_barrage
+/obj/projectile/magic/arcane_barrage
name = "arcane bolt"
icon_state = "arcane_barrage"
damage = 20
@@ -360,7 +360,7 @@
flag = "magic"
hitsound = 'sound/weapons/barragespellhit.ogg'
-/obj/item/projectile/magic/arcane_barrage/on_hit(target)
+/obj/projectile/magic/arcane_barrage/on_hit(target)
if(ismob(target))
var/mob/M = target
if(M.anti_magic_check())
@@ -370,7 +370,7 @@
. = ..()
-/obj/item/projectile/magic/locker
+/obj/projectile/magic/locker
name = "locker bolt"
icon_state = "locker"
nodamage = TRUE
@@ -380,11 +380,11 @@
var/locker_suck = TRUE
var/obj/structure/closet/locker_temp_instance = /obj/structure/closet/decay
-/obj/item/projectile/magic/locker/Initialize()
+/obj/projectile/magic/locker/Initialize()
. = ..()
locker_temp_instance = new(src)
-/obj/item/projectile/magic/locker/prehit(atom/A)
+/obj/projectile/magic/locker/prehit(atom/A)
if(isliving(A) && locker_suck)
var/mob/living/M = A
if(M.anti_magic_check())
@@ -397,7 +397,7 @@
return FALSE
return ..()
-/obj/item/projectile/magic/locker/on_hit(target)
+/obj/projectile/magic/locker/on_hit(target)
if(created)
return ..()
if(LAZYLEN(contents))
@@ -408,7 +408,7 @@
created = TRUE
return ..()
-/obj/item/projectile/magic/locker/Destroy()
+/obj/projectile/magic/locker/Destroy()
locker_suck = FALSE
for(var/atom/movable/AM in contents)
AM.forceMove(get_turf(src))
@@ -455,11 +455,11 @@
addtimer(CALLBACK(src, .proc/decay), 15 SECONDS)
icon_welded = "welded"
-/obj/item/projectile/magic/flying
+/obj/projectile/magic/flying
name = "bolt of flying"
icon_state = "flight"
-/obj/item/projectile/magic/flying/on_hit(target)
+/obj/projectile/magic/flying/on_hit(target)
. = ..()
if(isliving(target))
var/mob/living/L = target
@@ -469,11 +469,11 @@
var/atom/throw_target = get_edge_target_turf(L, angle2dir(Angle))
L.throw_at(throw_target, 200, 4)
-/obj/item/projectile/magic/bounty
+/obj/projectile/magic/bounty
name = "bolt of bounty"
icon_state = "bounty"
-/obj/item/projectile/magic/bounty/on_hit(target)
+/obj/projectile/magic/bounty/on_hit(target)
. = ..()
if(isliving(target))
var/mob/living/L = target
@@ -482,11 +482,11 @@
return BULLET_ACT_BLOCK
L.apply_status_effect(STATUS_EFFECT_BOUNTY, firer)
-/obj/item/projectile/magic/antimagic
+/obj/projectile/magic/antimagic
name = "bolt of antimagic"
icon_state = "antimagic"
-/obj/item/projectile/magic/antimagic/on_hit(target)
+/obj/projectile/magic/antimagic/on_hit(target)
. = ..()
if(isliving(target))
var/mob/living/L = target
@@ -495,11 +495,11 @@
return BULLET_ACT_BLOCK
L.apply_status_effect(STATUS_EFFECT_ANTIMAGIC)
-/obj/item/projectile/magic/fetch
+/obj/projectile/magic/fetch
name = "bolt of fetching"
icon_state = "fetch"
-/obj/item/projectile/magic/fetch/on_hit(target)
+/obj/projectile/magic/fetch/on_hit(target)
. = ..()
if(isliving(target))
var/mob/living/L = target
@@ -509,11 +509,11 @@
var/atom/throw_target = get_edge_target_turf(L, get_dir(L, firer))
L.throw_at(throw_target, 200, 4)
-/obj/item/projectile/magic/sapping
+/obj/projectile/magic/sapping
name = "bolt of sapping"
icon_state = "sapping"
-/obj/item/projectile/magic/sapping/on_hit(target)
+/obj/projectile/magic/sapping/on_hit(target)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -522,11 +522,11 @@
return BULLET_ACT_BLOCK
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, src, /datum/mood_event/sapped)
-/obj/item/projectile/magic/necropotence
+/obj/projectile/magic/necropotence
name = "bolt of necropotence"
icon_state = "necropotence"
-/obj/item/projectile/magic/necropotence/on_hit(target)
+/obj/projectile/magic/necropotence/on_hit(target)
. = ..()
if(isliving(target))
var/mob/living/L = target
@@ -544,11 +544,11 @@
spell.recharging = FALSE
spell.update_icon()
-/obj/item/projectile/magic/wipe
+/obj/projectile/magic/wipe
name = "bolt of possession"
icon_state = "wipe"
-/obj/item/projectile/magic/wipe/on_hit(target)
+/obj/projectile/magic/wipe/on_hit(target)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
@@ -563,7 +563,7 @@
possession_test(M)
return BULLET_ACT_HIT
-/obj/item/projectile/magic/wipe/proc/possession_test(var/mob/living/carbon/M)
+/obj/projectile/magic/wipe/proc/possession_test(var/mob/living/carbon/M)
var/datum/brain_trauma/special/imaginary_friend/trapped_owner/trauma = M.gain_trauma(/datum/brain_trauma/special/imaginary_friend/trapped_owner)
var/poll_message = "Do you want to play as [M.real_name]?"
if(M.mind && M.mind.assigned_role)
@@ -591,13 +591,13 @@
to_chat(M, "Your mind has managed to go unnoticed in the spirit world.")
qdel(trauma)
-/obj/item/projectile/magic/aoe
+/obj/projectile/magic/aoe
name = "Area Bolt"
desc = "What the fuck does this do?!"
damage = 0
var/proxdet = TRUE
-/obj/item/projectile/magic/aoe/Range()
+/obj/projectile/magic/aoe/Range()
if(proxdet)
for(var/mob/living/L in range(1, get_turf(src)))
if(L.stat != DEAD && L != firer && !L.anti_magic_check())
@@ -605,7 +605,7 @@
..()
-/obj/item/projectile/magic/aoe/lightning
+/obj/projectile/magic/aoe/lightning
name = "lightning bolt"
icon_state = "tesla_projectile" //Better sprites are REALLY needed and appreciated!~
damage = 15
@@ -620,12 +620,12 @@
var/chain
var/mob/living/caster
-/obj/item/projectile/magic/aoe/lightning/fire(setAngle)
+/obj/projectile/magic/aoe/lightning/fire(setAngle)
if(caster)
chain = caster.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY)
..()
-/obj/item/projectile/magic/aoe/lightning/on_hit(target)
+/obj/projectile/magic/aoe/lightning/on_hit(target)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -636,11 +636,11 @@
tesla_zap(src, tesla_range, tesla_power, tesla_flags)
qdel(src)
-/obj/item/projectile/magic/aoe/lightning/Destroy()
+/obj/projectile/magic/aoe/lightning/Destroy()
qdel(chain)
. = ..()
-/obj/item/projectile/magic/aoe/fireball
+/obj/projectile/magic/aoe/fireball
name = "bolt of fireball"
icon_state = "fireball"
damage = 10
@@ -653,7 +653,7 @@
var/exp_flash = 3
var/exp_fire = 2
-/obj/item/projectile/magic/aoe/fireball/on_hit(target)
+/obj/projectile/magic/aoe/fireball/on_hit(target)
. = ..()
if(ismob(target))
var/mob/living/M = target
@@ -664,14 +664,14 @@
var/turf/T = get_turf(target)
explosion(T, -1, exp_heavy, exp_light, exp_flash, 0, flame_range = exp_fire)
-/obj/item/projectile/magic/aoe/fireball/infernal
+/obj/projectile/magic/aoe/fireball/infernal
name = "infernal fireball"
exp_heavy = -1
exp_light = -1
exp_flash = 4
exp_fire= 5
-/obj/item/projectile/magic/aoe/fireball/infernal/on_hit(target)
+/obj/projectile/magic/aoe/fireball/infernal/on_hit(target)
. = ..()
if(ismob(target))
var/mob/living/M = target
@@ -683,7 +683,7 @@
//still magic related, but a different path
-/obj/item/projectile/temp/chill
+/obj/projectile/temp/chill
name = "bolt of chills"
icon_state = "ice_2"
damage = 0
diff --git a/code/modules/projectiles/projectile/magic/spellcard.dm b/code/modules/projectiles/projectile/magic/spellcard.dm
index 67e3ad374e5..c8d31781276 100644
--- a/code/modules/projectiles/projectile/magic/spellcard.dm
+++ b/code/modules/projectiles/projectile/magic/spellcard.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/spellcard
+/obj/projectile/spellcard
name = "enchanted card"
desc = "A piece of paper enchanted to give it extreme durability and stiffness, along with a very hot burn to anyone unfortunate enough to get hit by a charged one."
icon_state = "spellcard"
diff --git a/code/modules/projectiles/projectile/reusable/_reusable.dm b/code/modules/projectiles/projectile/reusable/_reusable.dm
index 33c9678fe47..b41cb0a2a64 100644
--- a/code/modules/projectiles/projectile/reusable/_reusable.dm
+++ b/code/modules/projectiles/projectile/reusable/_reusable.dm
@@ -1,19 +1,19 @@
-/obj/item/projectile/bullet/reusable
+/obj/projectile/bullet/reusable
name = "reusable bullet"
desc = "How do you even reuse a bullet?"
var/ammo_type = /obj/item/ammo_casing/caseless
var/dropped = FALSE
impact_effect_type = null
-/obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/reusable/on_hit(atom/target, blocked = FALSE)
. = ..()
handle_drop()
-/obj/item/projectile/bullet/reusable/on_range()
+/obj/projectile/bullet/reusable/on_range()
handle_drop()
..()
-/obj/item/projectile/bullet/reusable/proc/handle_drop()
+/obj/projectile/bullet/reusable/proc/handle_drop()
if(!dropped)
var/turf/T = get_turf(src)
new ammo_type(T)
diff --git a/code/modules/projectiles/projectile/reusable/foam_dart.dm b/code/modules/projectiles/projectile/reusable/foam_dart.dm
index 85e648a3099..504965f2adc 100644
--- a/code/modules/projectiles/projectile/reusable/foam_dart.dm
+++ b/code/modules/projectiles/projectile/reusable/foam_dart.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/bullet/reusable/foam_dart
+/obj/projectile/bullet/reusable/foam_dart
name = "foam dart"
desc = "I hope you're wearing eye protection."
damage = 0 // It's a damn toy.
@@ -11,14 +11,14 @@
var/modified = FALSE
var/obj/item/pen/pen = null
-/obj/item/projectile/bullet/reusable/foam_dart/handle_drop()
+/obj/projectile/bullet/reusable/foam_dart/handle_drop()
if(dropped)
return
var/turf/T = get_turf(src)
dropped = 1
var/obj/item/ammo_casing/caseless/foam_dart/newcasing = new ammo_type(T)
newcasing.modified = modified
- var/obj/item/projectile/bullet/reusable/foam_dart/newdart = newcasing.BB
+ var/obj/projectile/bullet/reusable/foam_dart/newdart = newcasing.BB
newdart.modified = modified
newdart.damage = damage
newdart.nodamage = nodamage
@@ -30,11 +30,11 @@
newdart.update_icon()
-/obj/item/projectile/bullet/reusable/foam_dart/Destroy()
+/obj/projectile/bullet/reusable/foam_dart/Destroy()
pen = null
return ..()
-/obj/item/projectile/bullet/reusable/foam_dart/riot
+/obj/projectile/bullet/reusable/foam_dart/riot
name = "riot foam dart"
icon_state = "foamdart_riot_proj"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
diff --git a/code/modules/projectiles/projectile/special/curse.dm b/code/modules/projectiles/projectile/special/curse.dm
index 5796609212a..019d10fb26f 100644
--- a/code/modules/projectiles/projectile/special/curse.dm
+++ b/code/modules/projectiles/projectile/special/curse.dm
@@ -2,7 +2,7 @@
name = "curse arm"
layer = LARGE_MOB_LAYER
-/obj/item/projectile/curse_hand
+/obj/projectile/curse_hand
name = "curse hand"
icon_state = "cursehand0"
hitsound = 'sound/effects/curse4.ogg'
@@ -15,25 +15,25 @@
var/datum/beam/arm
var/handedness = 0
-/obj/item/projectile/curse_hand/Initialize(mapload)
+/obj/projectile/curse_hand/Initialize(mapload)
. = ..()
ENABLE_BITFIELD(movement_type, UNSTOPPABLE)
handedness = prob(50)
icon_state = "cursehand[handedness]"
-/obj/item/projectile/curse_hand/fire(setAngle)
+/obj/projectile/curse_hand/fire(setAngle)
if(starting)
arm = starting.Beam(src, icon_state = "curse[handedness]", time = INFINITY, maxdistance = INFINITY, beam_type=/obj/effect/ebeam/curse_arm)
..()
-/obj/item/projectile/curse_hand/prehit(atom/target)
+/obj/projectile/curse_hand/prehit(atom/target)
if(target == original)
DISABLE_BITFIELD(movement_type, UNSTOPPABLE)
else if(!isturf(target))
return FALSE
return ..()
-/obj/item/projectile/curse_hand/Destroy()
+/obj/projectile/curse_hand/Destroy()
if(arm)
arm.End()
arm = null
diff --git a/code/modules/projectiles/projectile/special/floral.dm b/code/modules/projectiles/projectile/special/floral.dm
index 437316ce428..ebef5ab39db 100644
--- a/code/modules/projectiles/projectile/special/floral.dm
+++ b/code/modules/projectiles/projectile/special/floral.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/energy/floramut
+/obj/projectile/energy/floramut
name = "alpha somatoray"
icon_state = "energy"
damage = 0
@@ -6,7 +6,7 @@
nodamage = TRUE
flag = "energy"
-/obj/item/projectile/energy/florayield
+/obj/projectile/energy/florayield
name = "beta somatoray"
icon_state = "energy2"
damage = 0
diff --git a/code/modules/projectiles/projectile/special/gravity.dm b/code/modules/projectiles/projectile/special/gravity.dm
index c20a717a170..51203ff0c98 100644
--- a/code/modules/projectiles/projectile/special/gravity.dm
+++ b/code/modules/projectiles/projectile/special/gravity.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/gravityrepulse
+/obj/projectile/gravityrepulse
name = "repulsion bolt"
icon = 'icons/effects/effects.dmi'
icon_state = "chronofield"
@@ -11,13 +11,13 @@
var/power = 4
var/list/thrown_items = list()
-/obj/item/projectile/gravityrepulse/Initialize()
+/obj/projectile/gravityrepulse/Initialize()
. = ..()
var/obj/item/ammo_casing/energy/gravity/repulse/C = loc
if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
power = min(C.gun.power, 15)
-/obj/item/projectile/gravityrepulse/on_hit()
+/obj/projectile/gravityrepulse/on_hit()
. = ..()
T = get_turf(src)
for(var/atom/movable/A in range(T, power))
@@ -33,7 +33,7 @@
for(var/turf/F in range(T,power))
new /obj/effect/temp_visual/gravpush(F)
-/obj/item/projectile/gravityattract
+/obj/projectile/gravityattract
name = "attraction bolt"
icon = 'icons/effects/effects.dmi'
icon_state = "chronofield"
@@ -46,13 +46,13 @@
var/power = 4
var/list/thrown_items = list()
-/obj/item/projectile/gravityattract/Initialize()
+/obj/projectile/gravityattract/Initialize()
. = ..()
var/obj/item/ammo_casing/energy/gravity/attract/C = loc
if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
power = min(C.gun.power, 15)
-/obj/item/projectile/gravityattract/on_hit()
+/obj/projectile/gravityattract/on_hit()
. = ..()
T = get_turf(src)
for(var/atom/movable/A in range(T, power))
@@ -67,7 +67,7 @@
for(var/turf/F in range(T,power))
new /obj/effect/temp_visual/gravpush(F)
-/obj/item/projectile/gravitychaos
+/obj/projectile/gravitychaos
name = "gravitational blast"
icon = 'icons/effects/effects.dmi'
icon_state = "chronofield"
@@ -80,13 +80,13 @@
var/power = 4
var/list/thrown_items = list()
-/obj/item/projectile/gravitychaos/Initialize()
+/obj/projectile/gravitychaos/Initialize()
. = ..()
var/obj/item/ammo_casing/energy/gravity/chaos/C = loc
if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
power = min(C.gun.power, 15)
-/obj/item/projectile/gravitychaos/on_hit()
+/obj/projectile/gravitychaos/on_hit()
. = ..()
T = get_turf(src)
for(var/atom/movable/A in range(T, power))
diff --git a/code/modules/projectiles/projectile/special/hallucination.dm b/code/modules/projectiles/projectile/special/hallucination.dm
index b163daaab7a..df3dc908627 100644
--- a/code/modules/projectiles/projectile/special/hallucination.dm
+++ b/code/modules/projectiles/projectile/special/hallucination.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/hallucination
+/obj/projectile/hallucination
name = "bullet"
icon = null
icon_state = null
@@ -8,7 +8,7 @@
ricochet_chance = 0
damage = 0
nodamage = TRUE
- projectile_type = /obj/item/projectile/hallucination
+ projectile_type = /obj/projectile/hallucination
log_override = TRUE
var/hal_icon_state
var/image/fake_icon
@@ -21,19 +21,19 @@
var/hit_duration
var/hit_duration_wall
-/obj/item/projectile/hallucination/fire()
+/obj/projectile/hallucination/fire()
..()
fake_icon = image('icons/obj/projectiles.dmi', src, hal_icon_state, ABOVE_MOB_LAYER)
if(hal_target.client)
hal_target.client.images += fake_icon
-/obj/item/projectile/hallucination/Destroy()
+/obj/projectile/hallucination/Destroy()
if(hal_target.client)
hal_target.client.images -= fake_icon
QDEL_NULL(fake_icon)
return ..()
-/obj/item/projectile/hallucination/Bump(atom/A)
+/obj/projectile/hallucination/Bump(atom/A)
if(!ismob(A))
if(hal_hitsound_wall)
hal_target.playsound_local(loc, hal_hitsound_wall, 40, 1)
@@ -46,7 +46,7 @@
qdel(src)
return TRUE
-/obj/item/projectile/hallucination/proc/target_on_hit(mob/M)
+/obj/projectile/hallucination/proc/target_on_hit(mob/M)
if(M == hal_target)
to_chat(hal_target, "[M] is hit by \a [src] in the chest!")
hal_apply_effect()
@@ -60,7 +60,7 @@
else if(hal_impact_effect)
spawn_hit(M, FALSE)
-/obj/item/projectile/hallucination/proc/spawn_blood(mob/M, set_dir)
+/obj/projectile/hallucination/proc/spawn_blood(mob/M, set_dir)
set waitfor = 0
if(!hal_target.client)
return
@@ -102,11 +102,11 @@
animate(blood, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = 5)
addtimer(CALLBACK(src, .proc/cleanup_blood), 5)
-/obj/item/projectile/hallucination/proc/cleanup_blood(image/blood)
+/obj/projectile/hallucination/proc/cleanup_blood(image/blood)
hal_target.client.images -= blood
qdel(blood)
-/obj/item/projectile/hallucination/proc/spawn_hit(atom/A, is_wall)
+/obj/projectile/hallucination/proc/spawn_hit(atom/A, is_wall)
set waitfor = 0
if(!hal_target.client)
return
@@ -120,10 +120,10 @@
qdel(hit_effect)
-/obj/item/projectile/hallucination/proc/hal_apply_effect()
+/obj/projectile/hallucination/proc/hal_apply_effect()
return
-/obj/item/projectile/hallucination/bullet
+/obj/projectile/hallucination/bullet
name = "bullet"
hal_icon_state = "bullet"
hal_fire_sound = "gunshot"
@@ -134,10 +134,10 @@
hit_duration = 5
hit_duration_wall = 5
-/obj/item/projectile/hallucination/bullet/hal_apply_effect()
+/obj/projectile/hallucination/bullet/hal_apply_effect()
hal_target.adjustStaminaLoss(60)
-/obj/item/projectile/hallucination/laser
+/obj/projectile/hallucination/laser
name = "laser"
damage_type = BURN
hal_icon_state = "laser"
@@ -150,11 +150,11 @@
hit_duration_wall = 10
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
-/obj/item/projectile/hallucination/laser/hal_apply_effect()
+/obj/projectile/hallucination/laser/hal_apply_effect()
hal_target.adjustStaminaLoss(20)
hal_target.blur_eyes(2)
-/obj/item/projectile/hallucination/taser
+/obj/projectile/hallucination/taser
name = "electrode"
damage_type = BURN
hal_icon_state = "spark"
@@ -165,7 +165,7 @@
hal_impact_effect = null
hal_impact_effect_wall = null
-/obj/item/projectile/hallucination/taser/hal_apply_effect()
+/obj/projectile/hallucination/taser/hal_apply_effect()
hal_target.Paralyze(100)
hal_target.stuttering += 20
if(hal_target.dna && hal_target.dna.check_mutation(HULK))
@@ -173,7 +173,7 @@
else if((hal_target.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(hal_target, TRAIT_STUNIMMUNE))
addtimer(CALLBACK(hal_target, /mob/living/carbon.proc/do_jitter_animation, 20), 5)
-/obj/item/projectile/hallucination/disabler
+/obj/projectile/hallucination/disabler
name = "disabler beam"
damage_type = STAMINA
hal_icon_state = "omnilaser"
@@ -185,10 +185,10 @@
hit_duration = 4
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
-/obj/item/projectile/hallucination/disabler/hal_apply_effect()
+/obj/projectile/hallucination/disabler/hal_apply_effect()
hal_target.adjustStaminaLoss(25)
-/obj/item/projectile/hallucination/ebow
+/obj/projectile/hallucination/ebow
name = "bolt"
damage_type = TOX
hal_icon_state = "cbbolt"
@@ -198,12 +198,12 @@
hal_impact_effect = null
hal_impact_effect_wall = null
-/obj/item/projectile/hallucination/ebow/hal_apply_effect()
+/obj/projectile/hallucination/ebow/hal_apply_effect()
hal_target.Paralyze(100)
hal_target.stuttering += 5
hal_target.adjustStaminaLoss(8)
-/obj/item/projectile/hallucination/change
+/obj/projectile/hallucination/change
name = "bolt of change"
damage_type = BURN
hal_icon_state = "ice_1"
@@ -213,10 +213,10 @@
hal_impact_effect = null
hal_impact_effect_wall = null
-/obj/item/projectile/hallucination/change/hal_apply_effect()
+/obj/projectile/hallucination/change/hal_apply_effect()
new /datum/hallucination/self_delusion(hal_target, TRUE, wabbajack = FALSE)
-/obj/item/projectile/hallucination/death
+/obj/projectile/hallucination/death
name = "bolt of death"
damage_type = BURN
hal_icon_state = "pulse1_bl"
@@ -226,5 +226,5 @@
hal_impact_effect = null
hal_impact_effect_wall = null
-/obj/item/projectile/hallucination/death/hal_apply_effect()
+/obj/projectile/hallucination/death/hal_apply_effect()
new /datum/hallucination/death(hal_target, TRUE)
diff --git a/code/modules/projectiles/projectile/special/ion.dm b/code/modules/projectiles/projectile/special/ion.dm
index a9c326ec6ac..0a494054ca8 100644
--- a/code/modules/projectiles/projectile/special/ion.dm
+++ b/code/modules/projectiles/projectile/special/ion.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/ion
+/obj/projectile/ion
name = "ion bolt"
icon_state = "ion"
damage = 0
@@ -8,10 +8,10 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/ion
var/emp_radius = 1
-/obj/item/projectile/ion/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/ion/on_hit(atom/target, blocked = FALSE)
..()
empulse(target, emp_radius, emp_radius)
return BULLET_ACT_HIT
-/obj/item/projectile/ion/weak
+/obj/projectile/ion/weak
emp_radius = 0
diff --git a/code/modules/projectiles/projectile/special/meteor.dm b/code/modules/projectiles/projectile/special/meteor.dm
index c2dd715f9c1..464d7c11b66 100644
--- a/code/modules/projectiles/projectile/special/meteor.dm
+++ b/code/modules/projectiles/projectile/special/meteor.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/meteor
+/obj/projectile/meteor
name = "meteor"
icon = 'icons/obj/meteor.dmi'
icon_state = "small1"
@@ -7,7 +7,7 @@
nodamage = TRUE
flag = "bullet"
-/obj/item/projectile/meteor/Bump(atom/A)
+/obj/projectile/meteor/Bump(atom/A)
if(A == firer)
forceMove(A.loc)
return
diff --git a/code/modules/projectiles/projectile/special/mindflayer.dm b/code/modules/projectiles/projectile/special/mindflayer.dm
index ac4488cae06..6a4669998d3 100644
--- a/code/modules/projectiles/projectile/special/mindflayer.dm
+++ b/code/modules/projectiles/projectile/special/mindflayer.dm
@@ -1,7 +1,7 @@
-/obj/item/projectile/beam/mindflayer
+/obj/projectile/beam/mindflayer
name = "flayer ray"
-/obj/item/projectile/beam/mindflayer/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/beam/mindflayer/on_hit(atom/target, blocked = FALSE)
. = ..()
if(ishuman(target))
var/mob/living/carbon/human/M = target
diff --git a/code/modules/projectiles/projectile/special/neurotoxin.dm b/code/modules/projectiles/projectile/special/neurotoxin.dm
index fc7928c88d7..9eb3b8478ad 100644
--- a/code/modules/projectiles/projectile/special/neurotoxin.dm
+++ b/code/modules/projectiles/projectile/special/neurotoxin.dm
@@ -1,11 +1,11 @@
-/obj/item/projectile/bullet/neurotoxin
+/obj/projectile/bullet/neurotoxin
name = "neurotoxin spit"
icon_state = "neurotoxin"
damage = 5
damage_type = TOX
paralyze = 100
-/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = FALSE)
if(isalien(target))
paralyze = 0
nodamage = TRUE
diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm
index b1ae7e4fab1..01e46a05d34 100644
--- a/code/modules/projectiles/projectile/special/plasma.dm
+++ b/code/modules/projectiles/projectile/special/plasma.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/plasma
+/obj/projectile/plasma
name = "plasma blast"
icon_state = "plasmacutter"
damage_type = BRUTE
@@ -11,7 +11,7 @@
muzzle_type = /obj/effect/projectile/muzzle/plasma_cutter
impact_type = /obj/effect/projectile/impact/plasma_cutter
-/obj/item/projectile/plasma/on_hit(atom/target)
+/obj/projectile/plasma/on_hit(atom/target)
. = ..()
if(ismineralturf(target))
var/turf/closed/mineral/M = target
@@ -22,17 +22,17 @@
if(range > 0)
return BULLET_ACT_FORCE_PIERCE
-/obj/item/projectile/plasma/adv
+/obj/projectile/plasma/adv
damage = 7
range = 5
mine_range = 5
-/obj/item/projectile/plasma/adv/mech
+/obj/projectile/plasma/adv/mech
damage = 10
range = 9
mine_range = 3
-/obj/item/projectile/plasma/turret
+/obj/projectile/plasma/turret
//Between normal and advanced for damage, made a beam so not the turret does not destroy glass
name = "plasma beam"
damage = 24
diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm
index 6ff9d45b3fe..a8329b6fc8e 100644
--- a/code/modules/projectiles/projectile/special/rocket.dm
+++ b/code/modules/projectiles/projectile/special/rocket.dm
@@ -1,14 +1,14 @@
-/obj/item/projectile/bullet/gyro
+/obj/projectile/bullet/gyro
name ="explosive bolt"
icon_state= "bolter"
damage = 50
-/obj/item/projectile/bullet/gyro/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/gyro/on_hit(atom/target, blocked = FALSE)
..()
explosion(target, -1, 0, 2)
return BULLET_ACT_HIT
-/obj/item/projectile/bullet/a84mm
+/obj/projectile/bullet/a84mm
name ="\improper HEDP rocket"
desc = "USE A WEEL GUN"
icon_state= "84mm-hedp"
@@ -17,7 +17,7 @@
armour_penetration = 100
dismemberment = 100
-/obj/item/projectile/bullet/a84mm/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/a84mm/on_hit(atom/target, blocked = FALSE)
..()
explosion(target, -1, 1, 3, 1, 0, flame_range = 4)
@@ -29,14 +29,14 @@
S.take_overall_damage(anti_armour_damage*0.75, anti_armour_damage*0.25)
return BULLET_ACT_HIT
-/obj/item/projectile/bullet/a84mm_he
+/obj/projectile/bullet/a84mm_he
name ="\improper HE missile"
desc = "Boom."
icon_state = "missile"
damage = 30
ricochets_max = 0 //it's a MISSILE
-/obj/item/projectile/bullet/a84mm_he/on_hit(atom/target, blocked=0)
+/obj/projectile/bullet/a84mm_he/on_hit(atom/target, blocked=0)
..()
if(!isliving(target)) //if the target isn't alive, so is a wall or something
explosion(target, 0, 1, 2, 4)
@@ -44,7 +44,7 @@
explosion(target, 0, 0, 2, 4)
return BULLET_ACT_HIT
-/obj/item/projectile/bullet/a84mm_br
+/obj/projectile/bullet/a84mm_br
name ="\improper HE missile"
desc = "Boom."
icon_state = "missile"
@@ -65,7 +65,7 @@
w_class = WEIGHT_CLASS_TINY
-/obj/item/projectile/bullet/a84mm_br/on_hit(atom/target, blocked=0)
+/obj/projectile/bullet/a84mm_br/on_hit(atom/target, blocked=0)
..()
for(var/i in sturdy)
if(istype(target, i))
diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm
index ab851177538..dbabf2f8ef8 100644
--- a/code/modules/projectiles/projectile/special/temperature.dm
+++ b/code/modules/projectiles/projectile/special/temperature.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/temp
+/obj/projectile/temp
name = "freeze beam"
icon_state = "ice_2"
damage = 0
@@ -7,21 +7,21 @@
flag = "energy"
var/temperature = 100
-/obj/item/projectile/temp/on_hit(atom/target, blocked = 0)
+/obj/projectile/temp/on_hit(atom/target, blocked = 0)
. = ..()
if(isliving(target))
var/mob/living/L = target
L.adjust_bodytemperature(((100-blocked)/100)*(temperature - L.bodytemperature)) // the new body temperature is adjusted by 100-blocked % of the delta between body temperature and the bullet's effect temperature
-/obj/item/projectile/temp/hot
+/obj/projectile/temp/hot
name = "heat beam"
temperature = 400
-/obj/item/projectile/temp/cryo
+/obj/projectile/temp/cryo
name = "cryo beam"
range = 3
-/obj/item/projectile/temp/cryo/on_range()
+/obj/projectile/temp/cryo/on_range()
var/turf/T = get_turf(src)
if(isopenturf(T))
var/turf/open/O = T
diff --git a/code/modules/projectiles/projectile/special/wormhole.dm b/code/modules/projectiles/projectile/special/wormhole.dm
index 07b56a133fb..ad15e0bdfd1 100644
--- a/code/modules/projectiles/projectile/special/wormhole.dm
+++ b/code/modules/projectiles/projectile/special/wormhole.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/beam/wormhole
+/obj/projectile/beam/wormhole
name = "bluespace beam"
icon_state = "spark"
hitsound = "sparks"
@@ -12,18 +12,18 @@
muzzle_type = /obj/effect/projectile/muzzle/wormhole
hitscan = TRUE
-/obj/item/projectile/beam/wormhole/orange
+/obj/projectile/beam/wormhole/orange
name = "orange bluespace beam"
color = "#FF6600"
-/obj/item/projectile/beam/wormhole/Initialize(mapload, obj/item/ammo_casing/energy/wormhole/casing)
+/obj/projectile/beam/wormhole/Initialize(mapload, obj/item/ammo_casing/energy/wormhole/casing)
. = ..()
if(casing)
gun = casing.gun
-/obj/item/projectile/beam/wormhole/on_hit(atom/target)
+/obj/projectile/beam/wormhole/on_hit(atom/target)
if(!gun)
qdel(src)
- return
+ return
gun.create_portal(src, get_turf(src))
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 728ab773351..8efcbe80de9 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -81,7 +81,7 @@
..() //extend the zap
boom()
-/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/P)
+/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/projectile/P)
. = ..()
if(!QDELETED(src)) //wasn't deleted by the projectile's effects.
if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE)))
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index 8195e46d277..700bb3926f6 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -484,7 +484,7 @@
/atom/movable/proc/CanEnterDisposals()
return TRUE
-/obj/item/projectile/CanEnterDisposals()
+/obj/projectile/CanEnterDisposals()
return
/obj/effect/CanEnterDisposals()
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 018fae01a2a..fa7eca37141 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -361,7 +361,7 @@
if(MT)
visible_message("[src] dangerously overheats, launching a flaming fuel orb!")
investigate_log("Experimentor has launched a fireball at [M]!", INVESTIGATE_EXPERIMENTOR)
- var/obj/item/projectile/magic/aoe/fireball/FB = new /obj/item/projectile/magic/aoe/fireball(start)
+ var/obj/projectile/magic/aoe/fireball/FB = new /obj/projectile/magic/aoe/fireball(start)
FB.preparePixelProjectile(MT, start)
FB.fire()
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
index bdc6c8ef631..40fc43bde22 100644
--- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
@@ -101,9 +101,9 @@ Slimecrossing Weapons
return 1
/obj/item/ammo_casing/magic/bloodchill
- projectile_type = /obj/item/projectile/magic/bloodchill
+ projectile_type = /obj/projectile/magic/bloodchill
-/obj/item/projectile/magic/bloodchill
+/obj/projectile/magic/bloodchill
name = "blood ball"
icon_state = "pulse0_bl"
damage = 0
@@ -111,7 +111,7 @@ Slimecrossing Weapons
nodamage = TRUE
hitsound = 'sound/effects/splat.ogg'
-/obj/item/projectile/magic/bloodchill/on_hit(mob/living/target)
+/obj/projectile/magic/bloodchill/on_hit(mob/living/target)
. = ..()
if(isliving(target))
target.apply_status_effect(/datum/status_effect/bloodchill)
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index bf2ee4a6acb..4829a12f767 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -6,7 +6,7 @@
/obj/machinery/power/emitter/energycannon/magical
name = "wabbajack statue"
desc = "Who am I? What is my purpose in life? What do I mean by who am I?"
- projectile_type = /obj/item/projectile/magic/change
+ projectile_type = /obj/projectile/magic/change
icon = 'icons/obj/machines/magic_emitter.dmi'
icon_state = "wabbajack_statue"
icon_state_on = "wabbajack_statue_on"
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index a9e047e90d8..6c6c49a1198 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
/obj/item/warp_cube,
/obj/machinery/rnd/production, //print tracking beacons, send shuttle
/obj/machinery/autolathe, //same
- /obj/item/projectile/beam/wormhole,
+ /obj/projectile/beam/wormhole,
/obj/effect/portal,
/obj/item/shared_storage,
/obj/structure/extraction_point,
diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm
index 319419c884b..782d63edbac 100644
--- a/code/modules/spells/spell_types/aimed.dm
+++ b/code/modules/spells/spell_types/aimed.dm
@@ -1,7 +1,7 @@
/obj/effect/proc_holder/spell/aimed
name = "aimed projectile spell"
- var/projectile_type = /obj/item/projectile/magic/teleport
+ var/projectile_type = /obj/projectile/magic/teleport
var/deactive_msg = "You discharge your projectile..."
var/active_msg = "You charge your projectile!"
var/base_icon_state = "projectile"
@@ -75,7 +75,7 @@
/obj/effect/proc_holder/spell/aimed/proc/fire_projectile(mob/living/user, atom/target)
current_amount--
for(var/i in 1 to projectiles_per_fire)
- var/obj/item/projectile/P = new projectile_type(user.loc)
+ var/obj/projectile/P = new projectile_type(user.loc)
P.firer = user
P.preparePixelProjectile(target, user)
for(var/V in projectile_var_overrides)
@@ -85,7 +85,7 @@
P.fire()
return TRUE
-/obj/effect/proc_holder/spell/aimed/proc/ready_projectile(obj/item/projectile/P, atom/target, mob/user, iteration)
+/obj/effect/proc_holder/spell/aimed/proc/ready_projectile(obj/projectile/P, atom/target, mob/user, iteration)
return
/obj/effect/proc_holder/spell/aimed/lightningbolt
@@ -104,7 +104,7 @@
projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_flags" = TESLA_MOB_DAMAGE)
active_msg = "You energize your hand with arcane lightning!"
deactive_msg = "You let the energy flow out of your hands back into yourself..."
- projectile_type = /obj/item/projectile/magic/aoe/lightning
+ projectile_type = /obj/projectile/magic/aoe/lightning
/obj/effect/proc_holder/spell/aimed/fireball
name = "Fireball"
@@ -116,7 +116,7 @@
invocation_type = "shout"
range = 20
cooldown_min = 20 //10 deciseconds reduction per rank
- projectile_type = /obj/item/projectile/magic/aoe/fireball
+ projectile_type = /obj/projectile/magic/aoe/fireball
base_icon_state = "fireball"
action_icon_state = "fireball0"
sound = 'sound/magic/fireball.ogg'
@@ -141,7 +141,7 @@
cooldown_min = 10
projectile_amount = 5
projectiles_per_fire = 7
- projectile_type = /obj/item/projectile/spellcard
+ projectile_type = /obj/projectile/spellcard
base_icon_state = "spellcard"
action_icon_state = "spellcard0"
var/datum/weakref/current_target_weakref
@@ -169,7 +169,7 @@
/obj/effect/proc_holder/spell/aimed/spell_cards/on_deactivation(mob/M)
QDEL_NULL(lockon_component)
-/obj/effect/proc_holder/spell/aimed/spell_cards/ready_projectile(obj/item/projectile/P, atom/target, mob/user, iteration)
+/obj/effect/proc_holder/spell/aimed/spell_cards/ready_projectile(obj/projectile/P, atom/target, mob/user, iteration)
if(current_target_weakref)
var/atom/A = current_target_weakref.resolve()
if(A && get_dist(A, user) < 7)
diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm
index bad4c477a73..a4bff8fa452 100644
--- a/code/modules/spells/spell_types/conjure.dm
+++ b/code/modules/spells/spell_types/conjure.dm
@@ -50,11 +50,10 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/summonEdSwarm //test purposes - Also a lot of fun
name = "Dispense Wizard Justice"
desc = "This spell dispenses wizard justice."
-
summon_type = list(/mob/living/simple_animal/bot/secbot/ed209)
summon_amt = 10
range = 3
- newVars = list("emagged" = 2, "remote_disabled" = 1, "projectile" = /obj/item/projectile/beam/laser, "declare_arrests" = 0,"name" = "Wizard's Justicebot")
+ newVars = list("emagged" = 2, "remote_disabled" = 1,"shoot_sound" = 'sound/weapons/laser.ogg',"projectile" = /obj/projectile/beam/laser, "declare_arrests" = 0,"name" = "Wizard's Justicebot")
/obj/effect/proc_holder/spell/aoe_turf/conjure/linkWorlds
name = "Link Worlds"
diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm
index 43813beb7f9..3835c3fa252 100644
--- a/code/modules/spells/spell_types/construct_spells.dm
+++ b/code/modules/spells/spell_types/construct_spells.dm
@@ -152,9 +152,9 @@
max_targets = 6
action_icon_state = "magicm"
action_background_icon_state = "bg_demon"
- proj_type = /obj/item/projectile/magic/spell/magic_missile/lesser
+ proj_type = /obj/projectile/magic/spell/magic_missile/lesser
-/obj/item/projectile/magic/spell/magic_missile/lesser
+/obj/projectile/magic/spell/magic_missile/lesser
color = "red" //Looks more culty this way
range = 10
@@ -291,7 +291,7 @@
/obj/effect/proc_holder/spell/targeted/projectile/dumbfire/juggernaut
name = "Gauntlet Echo"
desc = "Channels energy into your gauntlet - firing its essence forward in a slow moving, yet devastating, attack."
- proj_type = /obj/item/projectile/magic/spell/juggernaut
+ proj_type = /obj/projectile/magic/spell/juggernaut
charge_max = 350
clothes_req = FALSE
action_icon = 'icons/mob/actions/actions_cult.dmi'
@@ -299,7 +299,7 @@
action_background_icon_state = "bg_demon"
sound = 'sound/weapons/resonator_blast.ogg'
-/obj/item/projectile/magic/spell/juggernaut
+/obj/projectile/magic/spell/juggernaut
name = "Gauntlet Echo"
icon_state = "cultfist"
alpha = 180
@@ -313,7 +313,7 @@
range = 15
speed = 7
-/obj/item/projectile/magic/spell/juggernaut/on_hit(atom/target, blocked)
+/obj/projectile/magic/spell/juggernaut/on_hit(atom/target, blocked)
. = ..()
var/turf/T = get_turf(src)
playsound(T, 'sound/weapons/resonator_blast.ogg', 100, FALSE)
diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm
index c06987aa29f..fdfc7d84f64 100644
--- a/code/modules/spells/spell_types/devil.dm
+++ b/code/modules/spells/spell_types/devil.dm
@@ -84,7 +84,7 @@
invocation_type = "shout"
range = 2
- projectile_type = /obj/item/projectile/magic/aoe/fireball/infernal
+ projectile_type = /obj/projectile/magic/aoe/fireball/infernal
action_background_icon_state = "bg_demon"
diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm
index 64304999948..49f596135bf 100644
--- a/code/modules/spells/spell_types/mime.dm
+++ b/code/modules/spells/spell_types/mime.dm
@@ -180,7 +180,7 @@
invocation_type = "emote"
invocation_emote_self = "You fire your finger gun!"
range = 20
- projectile_type = /obj/item/projectile/bullet/mime
+ projectile_type = /obj/projectile/bullet/mime
projectile_amount = 3
sound = null
active_msg = "You draw your fingers!"
diff --git a/code/modules/spells/spell_types/projectile.dm b/code/modules/spells/spell_types/projectile.dm
index 72d8c8208fb..f3942f2dda1 100644
--- a/code/modules/spells/spell_types/projectile.dm
+++ b/code/modules/spells/spell_types/projectile.dm
@@ -1,6 +1,6 @@
-/obj/item/projectile/magic/spell
+/obj/projectile/magic/spell
name = "custom spell projectile"
var/list/ignored_factions //Do not hit these
var/check_holy = FALSE
@@ -14,19 +14,19 @@
var/trail_icon_state = "trail"
//todo unify this and magic/aoe under common path
-/obj/item/projectile/magic/spell/Range()
+/obj/projectile/magic/spell/Range()
if(trigger_range > 1)
for(var/mob/living/L in range(trigger_range, get_turf(src)))
if(can_hit_target(L, ignore_loc = TRUE))
return Bump(L)
. = ..()
-/obj/item/projectile/magic/spell/Moved(atom/OldLoc, Dir)
+/obj/projectile/magic/spell/Moved(atom/OldLoc, Dir)
. = ..()
if(trail)
create_trail()
-/obj/item/projectile/magic/spell/proc/create_trail()
+/obj/projectile/magic/spell/proc/create_trail()
if(!trajectory)
return
var/datum/point/vector/previous = trajectory.return_vector_after_increments(1,-1)
@@ -40,7 +40,7 @@
trail.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
QDEL_IN(trail, trail_lifespan)
-/obj/item/projectile/magic/spell/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
+/obj/projectile/magic/spell/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
. = ..()
if(linger && target != original)
return FALSE
@@ -58,11 +58,11 @@
name = "Projectile"
desc = "This spell summons projectiles which try to hit the targets."
-
- var/proj_type = /obj/item/projectile/magic/spell //IMPORTANT use only subtypes of this
-
-
+
+ var/proj_type = /obj/projectile/magic/spell //IMPORTANT use only subtypes of this
+
+
var/update_projectile = FALSE //So you want to admin abuse magic bullets ? This is for you
//Below only apply if update_projectile is true
var/proj_icon = 'icons/obj/projectiles.dmi'
@@ -83,8 +83,8 @@
var/check_holy = FALSE
/obj/effect/proc_holder/spell/targeted/projectile/proc/fire_projectile(atom/target, mob/user)
- var/obj/item/projectile/magic/spell/projectile = new proj_type()
-
+ var/obj/projectile/magic/spell/projectile = new proj_type()
+
if(update_projectile)
//Generally these should already be set on the projectile, this is mostly here for varedited spells.
projectile.icon = proj_icon
diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm
index a245fac4af0..d934de4ff8b 100644
--- a/code/modules/spells/spell_types/wizard.dm
+++ b/code/modules/spells/spell_types/wizard.dm
@@ -10,11 +10,11 @@
range = 7
cooldown_min = 60 //35 deciseconds reduction per rank
max_targets = 0
- proj_type = /obj/item/projectile/magic/spell/magic_missile
+ proj_type = /obj/projectile/magic/spell/magic_missile
action_icon_state = "magicm"
sound = 'sound/magic/magic_missile.ogg'
-/obj/item/projectile/magic/spell/magic_missile
+/obj/projectile/magic/spell/magic_missile
name = "magic missile"
icon_state = "magicm"
range = 20
@@ -29,7 +29,7 @@
trail_lifespan = 5
trail_icon_state = "magicmd"
-/obj/item/projectile/magic/spell/magic_missile/on_hit(target)
+/obj/projectile/magic/spell/magic_missile/on_hit(target)
. = ..()
if(ismob(target))
var/mob/M = target
diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm
index ded15eb7683..0d7781be03e 100644
--- a/code/modules/vehicles/atv.dm
+++ b/code/modules/vehicles/atv.dm
@@ -88,7 +88,7 @@
smoke.set_up(0, src)
smoke.start()
-/obj/vehicle/ridden/atv/bullet_act(obj/item/projectile/P)
+/obj/vehicle/ridden/atv/bullet_act(obj/projectile/P)
if(prob(50) && buckled_mobs)
for(var/mob/M in buckled_mobs)
M.bullet_act(P)
diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm
index 16d362f2872..46305334d86 100644
--- a/code/modules/vehicles/secway.dm
+++ b/code/modules/vehicles/secway.dm
@@ -46,7 +46,7 @@
STOP_PROCESSING(SSobj,src)
return ..()
-/obj/vehicle/ridden/secway/bullet_act(obj/item/projectile/P)
+/obj/vehicle/ridden/secway/bullet_act(obj/projectile/P)
if(prob(60) && buckled_mobs)
for(var/mob/M in buckled_mobs)
M.bullet_act(P)