diff --git a/_maps/map_files/RandomRuins/SpaceRuins/submaps/telecomns_returns_submap.dmm b/_maps/map_files/RandomRuins/SpaceRuins/submaps/telecomns_returns_submap.dmm
index dfbebdb425f..1148fca9dc1 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/submaps/telecomns_returns_submap.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/submaps/telecomns_returns_submap.dmm
@@ -198,7 +198,7 @@
lethal = 1;
scan_range = 12;
faction = "malf_drone";
- initial_eprojectile = /obj/item/projectile/beam/laser/ai_turret/heavylaser;
+ initial_eprojectile = /obj/projectile/beam/laser/ai_turret/heavylaser;
ailock = 1;
check_borgs = 1
},
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm
index ab2312887aa..2d76c6f5467 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm
@@ -560,7 +560,7 @@
lethal = 1;
scan_range = 12;
faction = "malf_drone";
- initial_eprojectile = /obj/item/projectile/beam/laser/ai_turret/heavylaser;
+ initial_eprojectile = /obj/projectile/beam/laser/ai_turret/heavylaser;
ailock = 1;
check_borgs = 1
},
diff --git a/code/__DEFINES/dcs/atom_signals.dm b/code/__DEFINES/dcs/atom_signals.dm
index e388110c76a..0208eea5aab 100644
--- a/code/__DEFINES/dcs/atom_signals.dm
+++ b/code/__DEFINES/dcs/atom_signals.dm
@@ -96,7 +96,7 @@
#define COMSIG_ATOM_HITBY "atom_hitby"
/// Called when an atom is sharpened or dulled.
#define COMSIG_ATOM_UPDATE_SHARPNESS "atom_update_sharpness"
-///from base of atom/atom_prehit(obj/item/projectile/P):
+///from base of atom/atom_prehit(obj/projectile/P):
#define COMSIG_ATOM_PREHIT "atom_prehit"
#define ATOM_PREHIT_SUCCESS (1<<0)
#define ATOM_PREHIT_FAILURE (1<<1)
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 7826847a04c..8947a87be90 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -76,7 +76,7 @@
#define ismask(A) (istype(A, /obj/item/clothing/mask))
-#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_helpers.dm b/code/__HELPERS/radiation_helpers.dm
index 017d29a78cd..0ac09e8e445 100644
--- a/code/__HELPERS/radiation_helpers.dm
+++ b/code/__HELPERS/radiation_helpers.dm
@@ -9,7 +9,7 @@
/mob/dead,
/obj/effect,
/obj/docking_port,
- /obj/item/projectile,
+ /obj/projectile,
/atom/movable/emissive_blocker,
))
var/list/processing_list = list(location)
@@ -54,7 +54,7 @@
/mob/dead,
/obj/effect,
/obj/docking_port,
- /obj/item/projectile,
+ /obj/projectile,
/atom/movable/emissive_blocker,
))
var/list/processing_list = list(location)
@@ -109,7 +109,7 @@
/mob/dead,
/obj/effect,
/obj/docking_port,
- /obj/item/projectile,
+ /obj/projectile,
/atom/movable/emissive_blocker,
))
var/list/processing_list = list(location) + location.contents
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 151fdc5a924..4f2f1fcdcda 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1548,7 +1548,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
/obj/item/organ/internal = "INT_ORG",
/obj/item/organ = "ORGAN",
/obj/item/pda = "PDA",
- /obj/item/projectile = "PROJ",
+ /obj/projectile = "PROJ",
/obj/item/radio/headset = "HEADSET",
/obj/item/reagent_containers/glass/beaker = "BEAKER",
/obj/item/reagent_containers/glass/bottle = "BOTTLE",
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 441a53667fb..187fb1918bf 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -443,7 +443,7 @@
var/turf/T = get_turf(src)
var/turf/U = get_turf(A)
- var/obj/item/projectile/beam/LE = new /obj/item/projectile/beam(loc)
+ var/obj/projectile/beam/LE = new /obj/projectile/beam(loc)
LE.icon = 'icons/effects/genetics.dmi'
LE.icon_state = "eyelasers"
playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1)
diff --git a/code/datums/components/debris.dm b/code/datums/components/debris.dm
index 57bd8c8e32f..aed2a45ebe5 100644
--- a/code/datums/components/debris.dm
+++ b/code/datums/components/debris.dm
@@ -26,11 +26,11 @@
if(parent)
UnregisterSignal(parent, COMSIG_ATOM_BULLET_ACT)
-/datum/component/debris/proc/register_for_impact(datum/source, obj/item/projectile/proj)
+/datum/component/debris/proc/register_for_impact(datum/source, obj/projectile/proj)
SIGNAL_HANDLER // COMSIG_ATOM_BULLET_ACT
INVOKE_ASYNC(src, PROC_REF(on_impact), proj)
-/datum/component/debris/proc/on_impact(obj/item/projectile/P)
+/datum/component/debris/proc/on_impact(obj/projectile/P)
var/angle = !isnull(P.Angle) ? P.Angle : round(get_angle(P.starting, parent), 1)
var/x_component = sin(angle) * debris_velocity
var/y_component = cos(angle) * debris_velocity
diff --git a/code/datums/components/riding/riding_vehicle.dm b/code/datums/components/riding/riding_vehicle.dm
index e91b41f73ed..2b2ff091bef 100644
--- a/code/datums/components/riding/riding_vehicle.dm
+++ b/code/datums/components/riding/riding_vehicle.dm
@@ -148,7 +148,7 @@
if(rider.m_intent == MOVE_INTENT_WALK)
vehicle_move_delay += 0.6
-/datum/component/riding/vehicle/scooter/skateboard/proc/check_knockoff(datum/source, obj/item/projectile)
+/datum/component/riding/vehicle/scooter/skateboard/proc/check_knockoff(datum/source, obj/projectile)
SIGNAL_HANDLER // COMSIG_ATOM_BULLET_ACT
if(!istype(parent, /obj/tgvehicle/scooter/skateboard))
return
diff --git a/code/datums/components/shielded.dm b/code/datums/components/shielded.dm
index 862cc5ea372..010e675e98a 100644
--- a/code/datums/components/shielded.dm
+++ b/code/datums/components/shielded.dm
@@ -154,7 +154,7 @@
var/charge_loss = 1 // how many charges do we lose
if(isprojectile(hitby))
- var/obj/item/projectile/P = hitby
+ var/obj/projectile/P = hitby
if(P.shield_buster)
charge_loss = 3
if(lose_multiple_charges)
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 0583c1f8a4f..ff7301435bb 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -94,7 +94,7 @@
if(I.flags & ABSTRACT)
return
if(isprojectile(entered))
- var/obj/item/projectile/P = entered
+ var/obj/projectile/P = entered
if(P.original != parent)
return
if(ismob(source))
diff --git a/code/datums/diseases/wizard_diseases.dm b/code/datums/diseases/wizard_diseases.dm
index e27e6cda287..2208317452e 100644
--- a/code/datums/diseases/wizard_diseases.dm
+++ b/code/datums/diseases/wizard_diseases.dm
@@ -156,7 +156,7 @@
/datum/disease/wand_rot/proc/sneeze_fireballs()
var/fuck_you_dir = pick(GLOB.alldirs)
var/turf/target_tile = get_edge_target_turf(affected_mob, fuck_you_dir)
- var/obj/item/projectile/magic/fireball/FB = new /obj/item/projectile/magic/fireball(affected_mob.loc)
+ var/obj/projectile/magic/fireball/FB = new /obj/projectile/magic/fireball(affected_mob.loc)
FB.current = get_turf(affected_mob)
FB.original = target_tile
FB.firer = affected_mob
diff --git a/code/datums/elements/relay_attackers.dm b/code/datums/elements/relay_attackers.dm
index 524bb619b8f..4b21b241fe3 100644
--- a/code/datums/elements/relay_attackers.dm
+++ b/code/datums/elements/relay_attackers.dm
@@ -65,7 +65,7 @@
return
/// Even if another component blocked this hit, someone still shot at us
-/datum/element/relay_attackers/proc/on_bullet_act(atom/target, obj/item/projectile/hit_projectile)
+/datum/element/relay_attackers/proc/on_bullet_act(atom/target, obj/projectile/hit_projectile)
SIGNAL_HANDLER // COMSIG_ATOM_BULLET_ACT
if(!hit_projectile.is_hostile_projectile())
return
diff --git a/code/datums/proximity/singulo_proximity_monitor.dm b/code/datums/proximity/singulo_proximity_monitor.dm
index e7b870ba346..3d9e09d5c61 100644
--- a/code/datums/proximity/singulo_proximity_monitor.dm
+++ b/code/datums/proximity/singulo_proximity_monitor.dm
@@ -8,7 +8,7 @@
var/angle_to_singulo = ATAN2(host.y - source.y, host.x - source.x)
var/distance_to_singulo = get_dist(source, host)
- var/obj/item/projectile/P = entered
+ var/obj/projectile/P = entered
var/distance = distance_to_singulo
var/projectile_angle = P.Angle
var/angle_to_projectile = angle_to_singulo
diff --git a/code/datums/spells/alien_spells/neurotoxin_spit.dm b/code/datums/spells/alien_spells/neurotoxin_spit.dm
index 55048177d82..79290eacacf 100644
--- a/code/datums/spells/alien_spells/neurotoxin_spit.dm
+++ b/code/datums/spells/alien_spells/neurotoxin_spit.dm
@@ -5,7 +5,7 @@
plasma_cost = 50
selection_activated_message = "Your prepare some neurotoxin!"
selection_deactivated_message = "You swallow your prepared neurotoxin."
- var/neurotoxin_type = /obj/item/projectile/bullet/neurotoxin
+ var/neurotoxin_type = /obj/projectile/bullet/neurotoxin
action_icon_state = "alien_neurotoxin_0"
/datum/spell/alien_spell/neurotoxin/create_new_targeting()
@@ -24,7 +24,7 @@
if(!istype(U) || !istype(T))
return FALSE
- var/obj/item/projectile/bullet/neurotoxin/neurotoxin = new neurotoxin_type(user.loc)
+ var/obj/projectile/bullet/neurotoxin/neurotoxin = new neurotoxin_type(user.loc)
neurotoxin.current = get_turf(user)
neurotoxin.original = target
neurotoxin.firer = user
@@ -36,5 +36,5 @@
/datum/spell/alien_spell/neurotoxin/death_to_xenos
desc = "This ability allows you to fire some neurotoxin. Knocks aliens down."
- neurotoxin_type = /obj/item/projectile/bullet/anti_alien_toxin
+ neurotoxin_type = /obj/projectile/bullet/anti_alien_toxin
base_cooldown = 2 SECONDS
diff --git a/code/datums/spells/construct_spells.dm b/code/datums/spells/construct_spells.dm
index e1b2c59643e..78937804090 100644
--- a/code/datums/spells/construct_spells.dm
+++ b/code/datums/spells/construct_spells.dm
@@ -126,7 +126,7 @@
holy_area_cancast = FALSE //Stops cult magic from working on holy ground eg: chapel
proj_lifespan = 10
proj_step_delay = 5
- proj_type = /obj/item/projectile/magic/magic_missile/lesser
+ proj_type = /obj/projectile/magic/magic_missile/lesser
/datum/spell/projectile/magic_missile/lesser/create_new_targeting()
var/datum/spell_targeting/targeted/T = new()
@@ -135,7 +135,7 @@
T.max_targets = 6
return T
-/obj/item/projectile/magic/magic_missile/lesser
+/obj/projectile/magic/magic_missile/lesser
name = "lesser magic missile"
knockdown = 6 SECONDS
weaken = 0
diff --git a/code/datums/spells/infinite_guns.dm b/code/datums/spells/infinite_guns.dm
index 108cd977291..73778f8eef9 100644
--- a/code/datums/spells/infinite_guns.dm
+++ b/code/datums/spells/infinite_guns.dm
@@ -44,5 +44,5 @@
ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/fireball
/obj/item/ammo_casing/magic/arcane_barrage/fireball
- projectile_type = /obj/item/projectile/magic/fireball
+ projectile_type = /obj/projectile/magic/fireball
muzzle_flash_effect = null
diff --git a/code/datums/spells/projectile_spell.dm b/code/datums/spells/projectile_spell.dm
index 07e83ec6686..192a65d4365 100644
--- a/code/datums/spells/projectile_spell.dm
+++ b/code/datums/spells/projectile_spell.dm
@@ -25,7 +25,7 @@
for(var/mob/living/target in targets)
spawn(0)
- var/obj/item/projectile/projectile = new proj_type(get_turf(user))
+ var/obj/projectile/projectile = new proj_type(get_turf(user))
projectile.icon = proj_icon
projectile.icon_state = proj_icon_state
projectile.dir = get_dir(target, projectile)
diff --git a/code/datums/spells/wizard_spells.dm b/code/datums/spells/wizard_spells.dm
index c8fd91e7374..53bafc0f5a9 100644
--- a/code/datums/spells/wizard_spells.dm
+++ b/code/datums/spells/wizard_spells.dm
@@ -10,7 +10,7 @@
proj_icon_state = "magicm"
proj_name = "a magic missile"
proj_lingering = 1
- proj_type = /obj/item/projectile/magic/magic_missile
+ proj_type = /obj/projectile/magic/magic_missile
proj_lifespan = 20
proj_step_delay = 2
@@ -29,7 +29,7 @@
T.max_targets = INFINITY
return T
-/obj/item/projectile/magic/magic_missile
+/obj/projectile/magic/magic_missile
name = "Magic Missile"
hitsound = 'sound/magic/mm_hit.ogg'
weaken = 6 SECONDS
@@ -48,7 +48,7 @@
proj_icon_state = "bike_horn"
proj_name = "A bike horn"
proj_lingering = 1
- proj_type = /obj/item/projectile/magic/magic_missile/honk_missile
+ proj_type = /obj/projectile/magic/magic_missile/honk_missile
proj_lifespan = 20
proj_step_delay = 5
@@ -68,7 +68,7 @@
T.max_targets = INFINITY
return T
-/obj/item/projectile/magic/magic_missile/honk_missile
+/obj/projectile/magic/magic_missile/honk_missile
name = "Funny Missile"
hitsound = 'sound/items/bikehorn.ogg'
@@ -324,7 +324,7 @@
selection_activated_message = "You prepare to cast your fireball spell! Left-click to cast at a target!"
selection_deactivated_message = "You extinguish your fireball...for now."
- var/fireball_type = /obj/item/projectile/magic/fireball
+ var/fireball_type = /obj/projectile/magic/fireball
action_icon_state = "fireball0"
sound = 'sound/magic/fireball.ogg'
@@ -350,7 +350,7 @@
if(!isturf(U) || !isturf(T))
return FALSE
- var/obj/item/projectile/magic/fireball/FB = new fireball_type(user.loc)
+ var/obj/projectile/magic/fireball/FB = new fireball_type(user.loc)
FB.current = get_turf(user)
FB.original = target
FB.firer = user
@@ -364,7 +364,7 @@
name = "Homing Toolbox"
desc = "This spell summons and throws a magical homing toolbox at your opponent."
sound = 'sound/weapons/smash.ogg'
- fireball_type = /obj/item/projectile/homing/magic/toolbox
+ fireball_type = /obj/projectile/homing/magic/toolbox
invocation = "ROBUSTIO!"
selection_activated_message = "You prepare to cast your homing toolbox! Left-click to cast at a target!"
@@ -374,7 +374,7 @@
name = "Greater Homing Fireball"
desc = "This spell fires a strong homing fireball at a target."
invocation = "ZI-ONI SOMA"
- fireball_type = /obj/item/projectile/homing/magic/homing_fireball
+ fireball_type = /obj/projectile/homing/magic/homing_fireball
selection_activated_message = "You prepare to cast your greater homing fireball spell! Left-click to cast at a target!"
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index 0d5f225e486..794d90b7444 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -922,8 +922,8 @@
if(L.affects_vampire(owner))
L.adjust_bodytemperature(-1.5 * TEMPERATURE_DAMAGE_COEFFICIENT)
continue
- if(istype(AM, /obj/item/projectile))
- var/obj/item/projectile/P = AM
+ if(istype(AM, /obj/projectile))
+ var/obj/projectile/P = AM
if(P.flag == ENERGY || P.flag == LASER)
P.damage *= 0.85
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index acc3ea44fe5..eacca1640af 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -381,7 +381,7 @@
/atom/proc/water_act(volume, temperature, source, method = REAGENT_TOUCH) //amount of water acting : temperature of water in kelvin : object that called it (for shennagins)
return TRUE
-/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)
@@ -1213,7 +1213,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
/atom/proc/zap_act(power, zap_flags)
return
-/atom/proc/handle_ricochet(obj/item/projectile/ricocheting_projectile)
+/atom/proc/handle_ricochet(obj/projectile/ricocheting_projectile)
var/turf/p_turf = get_turf(ricocheting_projectile)
var/face_direction = get_dir(src, p_turf) || get_dir(src, ricocheting_projectile)
var/face_angle = dir2angle(face_direction)
@@ -1451,7 +1451,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
. = !density
-/atom/proc/atom_prehit(obj/item/projectile/P)
+/atom/proc/atom_prehit(obj/projectile/P)
return SEND_SIGNAL(src, COMSIG_ATOM_PREHIT, P)
/// Passes Stat Browser Panel clicks to the game and calls client click on an atom
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 1f33e89a855..bcb138e8cfe 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -461,7 +461,7 @@
// Hit by a projectile
if(isprojectile(hitby))
- var/obj/item/projectile/P = hitby
+ var/obj/projectile/P = hitby
var/shatter_chance = 0 // Percent chance of the shield shattering on a projectile hit
var/threshold // Depends on the damage Type (Brute or Burn)
if(P.damage_type == BRUTE)
@@ -663,17 +663,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
muzzle_flash_effect = /obj/effect/temp_visual/emp/cult
-/obj/item/projectile/magic/arcane_barrage/blood
+/obj/projectile/magic/arcane_barrage/blood
name = "blood bolt"
icon_state = "blood_bolt"
damage_type = BRUTE
impact_effect_type = /obj/effect/temp_visual/dir_setting/bloodsplatter
hitsound = 'sound/effects/splat.ogg'
-/obj/item/projectile/magic/arcane_barrage/blood/prehit(atom/target)
+/obj/projectile/magic/arcane_barrage/blood/prehit(atom/target)
if(IS_CULTIST(target))
damage = 0
nodamage = TRUE
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index a13c4ed2fc8..9e6758e28b5 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -359,7 +359,7 @@
var/turf/T = get_turf(turret)
if(is_station_level(T.z))
turret.health += 30
- turret.eprojectile = /obj/item/projectile/beam/laser/ai_turret/heavylaser //Once you see it, you will know what it means to FEAR.
+ turret.eprojectile = /obj/projectile/beam/laser/ai_turret/heavylaser //Once you see it, you will know what it means to FEAR.
turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
AI.turrets_upgraded = TRUE
@@ -691,7 +691,7 @@
//If turrets are already upgraded, beef it up
if(user.turrets_upgraded)
turret.health += 30
- turret.eprojectile = /obj/item/projectile/beam/laser/ai_turret/heavylaser //Big gun
+ turret.eprojectile = /obj/projectile/beam/laser/ai_turret/heavylaser //Big gun
turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
if(do_after_once(user, 5 SECONDS, target = T, allow_moving = TRUE)) //Once this is done, turret is armed and dangerous
diff --git a/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm b/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm
index c68be3da098..5a75c97211a 100644
--- a/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm
+++ b/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm
@@ -201,7 +201,7 @@
name = "Shadow Grapple"
desc = "Fire one of your hands, if it hits a person it pulls them in. If you hit a structure you get pulled to the structure. Any light source hit with this will be disabled in a two tile radius."
base_cooldown = 10 SECONDS
- fireball_type = /obj/item/projectile/magic/shadow_hand
+ fireball_type = /obj/projectile/magic/shadow_hand
selection_activated_message = "You raise your hand, full of demonic energy! Left-click to cast at a target!"
selection_deactivated_message = "You re-absorb the energy...for now."
@@ -215,20 +215,20 @@
/datum/spell/fireball/shadow_grapple/update_spell_icon()
return
-/obj/item/projectile/magic/shadow_hand
+/obj/projectile/magic/shadow_hand
name = "shadow hand"
icon_state = "shadow_hand"
plane = FLOOR_PLANE
hitsound = 'sound/shadowdemon/shadowattack1.ogg' // Plays when hitting something living or a light
var/hit = FALSE
-/obj/item/projectile/magic/shadow_hand/pixel_move(trajectory_multiplier, hitscanning)
+/obj/projectile/magic/shadow_hand/pixel_move(trajectory_multiplier, hitscanning)
. = ..()
var/obj/machinery/light/floor/floor_light = locate(/obj/machinery/light/floor) in get_turf(src)
if(floor_light)
Bump(floor_light)
-/obj/item/projectile/magic/shadow_hand/fire(setAngle)
+/obj/projectile/magic/shadow_hand/fire(setAngle)
if(firer)
var/mob/living/simple_animal/demon/shadow/current_demon = firer
if(istype(current_demon))
@@ -236,7 +236,7 @@
firer.Beam(src, icon_state = "grabber_beam", time = INFINITY, maxdistance = INFINITY, beam_type = /obj/effect/ebeam/floor)
return ..()
-/obj/item/projectile/magic/shadow_hand/on_hit(atom/target, blocked, hit_zone)
+/obj/projectile/magic/shadow_hand/on_hit(atom/target, blocked, hit_zone)
if(hit)
return
hit = TRUE // to prevent double hits from the pull
@@ -258,12 +258,12 @@
L.apply_damage(40, BRUTE, BODY_ZONE_CHEST)
L.throw_at(get_step(firer, get_dir(firer, target)), 50, 10)
-/obj/item/projectile/magic/shadow_hand/Destroy()
+/obj/projectile/magic/shadow_hand/Destroy()
if(!hit)
unblock_shadowdemon_crawl()
return ..()
-/obj/item/projectile/magic/shadow_hand/proc/unblock_shadowdemon_crawl()
+/obj/projectile/magic/shadow_hand/proc/unblock_shadowdemon_crawl()
var/mob/living/simple_animal/demon/shadow/current_demon = firer
if(istype(current_demon))
current_demon.unblock_shadow_crawl()
diff --git a/code/game/gamemodes/miniantags/guardian/types/protector.dm b/code/game/gamemodes/miniantags/guardian/types/protector.dm
index 39db9deeb97..6ab3420209c 100644
--- a/code/game/gamemodes/miniantags/guardian/types/protector.dm
+++ b/code/game/gamemodes/miniantags/guardian/types/protector.dm
@@ -127,7 +127,7 @@
return TRUE
return FALSE
-/obj/effect/guardianshield/bullet_act(obj/item/projectile/P)
+/obj/effect/guardianshield/bullet_act(obj/projectile/P)
if(!P)
return
linked_guardian.apply_damage(P.damage, P.damage_type)
diff --git a/code/game/gamemodes/miniantags/guardian/types/ranged.dm b/code/game/gamemodes/miniantags/guardian/types/ranged.dm
index 31796fb0a11..d82d279097e 100644
--- a/code/game/gamemodes/miniantags/guardian/types/ranged.dm
+++ b/code/game/gamemodes/miniantags/guardian/types/ranged.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/guardian
+/obj/projectile/guardian
name = "crystal spray"
icon_state = "guardian"
damage = 20
@@ -8,7 +8,7 @@
friendly = "quietly assesses"
melee_damage_lower = 10
melee_damage_upper = 10
- projectiletype = /obj/item/projectile/guardian
+ projectiletype = /obj/projectile/guardian
ranged_cooldown_time = 5 //fast!
projectilesound = 'sound/effects/hit_on_shattered_glass.ogg'
ranged = TRUE
diff --git a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm
index f83fefaa147..19b69942a0d 100644
--- a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm
+++ b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm
@@ -829,10 +829,10 @@
/mob/living/simple_animal/demon/pulse_demon/CanPass(atom/movable/mover, border_dir)
. = ..()
- if(istype(mover, /obj/item/projectile/ion))
+ if(istype(mover, /obj/projectile/ion))
return FALSE
-/mob/living/simple_animal/demon/pulse_demon/bullet_act(obj/item/projectile/proj)
+/mob/living/simple_animal/demon/pulse_demon/bullet_act(obj/projectile/proj)
if(proj.damage_type == BURN)
regen_lock = max(regen_lock, 1)
return ..()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 8f197336525..01954660639 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -65,7 +65,7 @@
else if(isprojectile(mover))
if(!anchored)
return TRUE
- var/obj/item/projectile/proj = mover
+ var/obj/projectile/proj = mover
if(directional_blockage)
if(one_eighty_check(mover))
return FALSE
@@ -275,7 +275,7 @@
..()
take_damage(40 / severity, BRUTE) //chances are the EMP will also hit the generator, we don't want it to double up too heavily
-/obj/structure/barricade/dropwall/bullet_act(obj/item/projectile/P)
+/obj/structure/barricade/dropwall/bullet_act(obj/projectile/P)
if(P.shield_buster)
qdel(src)
else
@@ -381,7 +381,7 @@
else
return ..()
-/obj/structure/dropwall_generator/bullet_act(obj/item/projectile/P)
+/obj/structure/dropwall_generator/bullet_act(obj/projectile/P)
if(!protected)
return ..()
else
@@ -455,7 +455,7 @@
/obj/structure/barricade/dropwall/firewall/proc/on_atom_entered(datum/source, atom/movable/entered)
if(!isprojectile(entered))
return
- var/obj/item/projectile/P = entered
+ var/obj/projectile/P = entered
P.immolate ++
/obj/item/grenade/turret
@@ -497,7 +497,7 @@
. += "It would need [(5 - foam_level)] more blobs of foam to fully block the airlock."
/obj/structure/barricade/foam/CanPass(atom/movable/mover, border_dir)
- return istype(mover, /obj/item/projectile/c_foam) // Only c_foam blobs hit the airlock underneat/pass through the foam. The rest is hitting the barricade
+ return istype(mover, /obj/projectile/c_foam) // Only c_foam blobs hit the airlock underneat/pass through the foam. The rest is hitting the barricade
/obj/structure/barricade/foam/welder_act(mob/user, obj/item/I)
return FALSE
diff --git a/code/game/machinery/portable_tag_turret.dm b/code/game/machinery/portable_tag_turret.dm
index 276c70c0d0c..a5499f30b1d 100644
--- a/code/game/machinery/portable_tag_turret.dm
+++ b/code/game/machinery/portable_tag_turret.dm
@@ -36,16 +36,16 @@
)
return data
-/obj/machinery/porta_turret/tag/bullet_act(obj/item/projectile/P)
+/obj/machinery/porta_turret/tag/bullet_act(obj/projectile/P)
..()
if(!disabled)
if(team_color == "blue")
- if(istype(P, /obj/item/projectile/beam/lasertag/redtag))
+ if(istype(P, /obj/projectile/beam/lasertag/redtag))
disabled = TRUE
spawn(100)
disabled = FALSE
else if(team_color == "red")
- if(istype(P, /obj/item/projectile/beam/lasertag/bluetag))
+ if(istype(P, /obj/projectile/beam/lasertag/bluetag))
disabled = TRUE
spawn(100)
disabled = FALSE
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index b4603fad18a..2600b0fddb0 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -150,7 +150,7 @@
if(/obj/item/gun/energy/laser/practice)
lethal_is_configurable = FALSE
iconholder = 1
- eprojectile = /obj/item/projectile/beam
+ eprojectile = /obj/projectile/beam
if(/obj/item/gun/energy/laser/retro)
iconholder = 1
@@ -163,26 +163,26 @@
if(/obj/item/gun/energy/taser)
lethal_is_configurable = FALSE
- eprojectile = /obj/item/projectile/beam
+ eprojectile = /obj/projectile/beam
eshot_sound = 'sound/weapons/laser.ogg'
if(/obj/item/gun/energy/gun)
- eprojectile = /obj/item/projectile/beam //If it has, going to kill mode
+ eprojectile = /obj/projectile/beam //If it has, going to kill mode
eshot_sound = 'sound/weapons/laser.ogg'
egun = 1
if(/obj/item/gun/energy/gun/nuclear)
- eprojectile = /obj/item/projectile/beam //If it has, going to kill mode
+ eprojectile = /obj/projectile/beam //If it has, going to kill mode
eshot_sound = 'sound/weapons/laser.ogg'
egun = 1
if(/obj/item/gun/energy/gun/turret)
- eprojectile = /obj/item/projectile/beam //If it has, going to copypaste mode
+ eprojectile = /obj/projectile/beam //If it has, going to copypaste mode
eshot_sound = 'sound/weapons/laser.ogg'
egun = 1
if(/obj/item/gun/energy/pulse/turret)
- eprojectile = /obj/item/projectile/beam/pulse/hitscan
+ eprojectile = /obj/projectile/beam/pulse/hitscan
eshot_sound = 'sound/weapons/pulse.ogg'
if(initial_eprojectile)
eprojectile = initial_eprojectile
@@ -535,7 +535,7 @@
if(health <= 0)
Destroy()
-/obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/porta_turret/bullet_act(obj/projectile/Proj)
if(Proj.damage_type == STAMINA)
return
@@ -835,7 +835,7 @@
return
update_icon(UPDATE_ICON_STATE)
- var/obj/item/projectile/A
+ var/obj/projectile/A
if(emagged || lethal)
if(eprojectile)
A = new eprojectile(loc)
@@ -868,11 +868,11 @@
return A
/obj/machinery/porta_turret/ai_turret
- initial_eprojectile = /obj/item/projectile/beam/laser/ai_turret
+ initial_eprojectile = /obj/projectile/beam/laser/ai_turret
/obj/machinery/porta_turret/ai_turret/disable
name = "hallway turret"
- initial_projectile = /obj/item/projectile/beam/disabler
+ initial_projectile = /obj/projectile/beam/disabler
/obj/machinery/porta_turret/centcom
name = "\improper Centcomm turret"
@@ -1123,8 +1123,8 @@
/obj/machinery/porta_turret/syndicate
icon_state = "syndie_off"
base_icon_state = "syndie"
- projectile = /obj/item/projectile/bullet
- eprojectile = /obj/item/projectile/bullet
+ projectile = /obj/projectile/bullet
+ eprojectile = /obj/projectile/bullet
// Syndicate turrets *always* operate in lethal mode.
// So, nothing, not even emagging them, makes them switch bullet type.
// So, its best to always have their projectile and eprojectile settings be the same. That way, you know what they will shoot.
@@ -1187,14 +1187,14 @@
/obj/machinery/porta_turret/syndicate/pod
health = 90
- projectile = /obj/item/projectile/bullet/weakbullet3
- eprojectile = /obj/item/projectile/bullet/weakbullet3
+ projectile = /obj/projectile/bullet/weakbullet3
+ eprojectile = /obj/projectile/bullet/weakbullet3
/obj/machinery/porta_turret/syndicate/interior
name = "machine gun turret (.45)"
desc = "Syndicate interior defense turret chambered for .45 rounds. Designed to down intruders without damaging the hull."
- projectile = /obj/item/projectile/bullet/midbullet
- eprojectile = /obj/item/projectile/bullet/midbullet
+ projectile = /obj/projectile/bullet/midbullet
+ eprojectile = /obj/projectile/bullet/midbullet
/obj/machinery/porta_turret/syndicate/exterior
name = "machine gun turret (7.62)"
@@ -1203,21 +1203,21 @@
/obj/machinery/porta_turret/syndicate/turret_outpost
name = "machine gun turret (5.56x45mm)"
desc = "Syndicate exterior defense turret chambered for 5.56x45mm rounds. Designed to down intruders with rifle caliber bullets."
- projectile = /obj/item/projectile/bullet/heavybullet2
- eprojectile = /obj/item/projectile/bullet/heavybullet2
+ projectile = /obj/projectile/bullet/heavybullet2
+ eprojectile = /obj/projectile/bullet/heavybullet2
/obj/machinery/porta_turret/syndicate/grenade
name = "mounted grenade launcher (40mm)"
desc = "Syndicate 40mm grenade launcher defense turret. If you've had this much time to look at it, you're probably already dead."
- projectile = /obj/item/projectile/bullet/a40mm
- eprojectile = /obj/item/projectile/bullet/a40mm
+ projectile = /obj/projectile/bullet/a40mm
+ eprojectile = /obj/projectile/bullet/a40mm
/obj/machinery/porta_turret/syndicate/assault_pod
name = "machine gun turret (4.6x30mm)"
desc = "Syndicate exterior defense turret chambered for 4.6x30mm rounds. Designed to be fitted to assault pods, it uses low calliber bullets to save space."
health = 150
- projectile = /obj/item/projectile/bullet/weakbullet3
- eprojectile = /obj/item/projectile/bullet/weakbullet3
+ projectile = /obj/projectile/bullet/weakbullet3
+ eprojectile = /obj/projectile/bullet/weakbullet3
/obj/machinery/porta_turret/syndicate/pod/nuke_ship_interior
health = 150
@@ -1227,8 +1227,8 @@
desc = "Looks cheaply made on the defensive side but the gun barrel still shoots."
icon_state = "syndie_off"
base_icon_state = "syndie"
- projectile = /obj/item/projectile/bullet/weakbullet3
- eprojectile = /obj/item/projectile/bullet/weakbullet3
+ projectile = /obj/projectile/bullet/weakbullet3
+ eprojectile = /obj/projectile/bullet/weakbullet3
shot_sound = 'sound/weapons/gunshots/gunshot_mg.ogg'
eshot_sound = 'sound/weapons/gunshots/gunshot_mg.ogg'
health = 100
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 2ed5256816d..6ef847ec2b8 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -454,7 +454,7 @@
deactivate()
return ..()
-/obj/machinery/shieldwallgen/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/shieldwallgen/bullet_act(obj/projectile/Proj)
stored_power -= Proj.damage
..()
return
@@ -506,7 +506,7 @@
gen_secondary.stored_power = max(gen_secondary.stored_power - 10, 0)
-/obj/machinery/shieldwall/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/shieldwall/bullet_act(obj/projectile/Proj)
if(needs_power)
var/obj/machinery/shieldwallgen/G
if(prob(50))
@@ -590,7 +590,7 @@
phaseout()
return ..()
-/obj/machinery/shieldwall/syndicate/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/shieldwall/syndicate/bullet_act(obj/projectile/Proj)
phaseout()
return ..()
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index b6a82bb2f19..05467ae7e6c 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -41,7 +41,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.firer_source_atom = src
A.original = target
@@ -75,7 +75,7 @@
icon_state = "mecha_firedart"
origin_tech = "magnets=3;combat=3;engineering=3"
energy_drain = 30
- projectile = /obj/item/projectile/beam
+ projectile = /obj/projectile/beam
fire_sound = 'sound/weapons/laser.ogg'
harmful = TRUE
@@ -85,7 +85,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
@@ -94,7 +94,7 @@
icon_state = "mecha_solaris"
origin_tech = "magnets=4;combat=4;engineering=3"
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/shotgun_disabler
@@ -104,7 +104,7 @@
icon_state = "mecha_disabler_shotgun"
origin_tech = "materials=4;combat=5;"
energy_drain = 30 // This is per shot + 1x cost, so 300 per shot
- projectile = /obj/item/projectile/beam/disabler/pellet
+ projectile = /obj/projectile/beam/disabler/pellet
projectiles_per_shot = 9
variance = 40
fire_sound = 'sound/weapons/taser2.ogg'
@@ -116,7 +116,7 @@
icon_state = "mecha_laser_shotgun"
origin_tech = "materials=4;combat=5;"
energy_drain = 35 // This is per shot + 1x cost, so 560 per shot
- projectile = /obj/item/projectile/beam/scatter/eshotgun
+ projectile = /obj/projectile/beam/scatter/eshotgun
projectiles_per_shot = 15
variance = 40
fire_sound = 'sound/weapons/lasercannonfire.ogg'
@@ -128,7 +128,7 @@
icon_state = "mecha_ion"
origin_tech = "materials=4;combat=5;magnets=4"
energy_drain = 215 // This is per shot + 1x cost, so ~1500 per shotgun shot
- projectile = /obj/item/projectile/ion/weak
+ projectile = /obj/projectile/ion/weak
projectiles_per_shot = 6
variance = 40
fire_sound = 'sound/weapons/ionrifle.ogg'
@@ -145,7 +145,7 @@
icon_state = "mecha_teslacannon"
origin_tech = "materials=4;engineering=4;combat=6;magnets=6"
energy_drain = 500
- projectile = /obj/item/projectile/energy/tesla_bolt
+ projectile = /obj/projectile/energy/tesla_bolt
fire_sound = 'sound/magic/lightningbolt.ogg'
harmful = TRUE
@@ -156,7 +156,7 @@
icon_state = "mecha_xray"
origin_tech = "materials=3;combat=5;magnets=2;syndicate=2"
energy_drain = 80
- projectile = /obj/item/projectile/beam/xray
+ projectile = /obj/projectile/beam/xray
fire_sound = 'sound/weapons/laser3.ogg'
harmful = TRUE
@@ -172,7 +172,7 @@
icon_state = "mecha_immolator"
origin_tech = "materials=4;engineering=4;combat=6;magnets=6"
energy_drain = 80
- projectile = /obj/item/projectile/beam/immolator
+ projectile = /obj/projectile/beam/immolator
fire_sound = 'sound/weapons/laser3.ogg'
harmful = TRUE
@@ -182,18 +182,18 @@
icon_state = "mecha_pulse"
energy_drain = 120
origin_tech = "materials=3;combat=6;powerstorage=4"
- projectile = /obj/item/projectile/beam/pulse/hitscan/heavy
+ projectile = /obj/projectile/beam/pulse/hitscan/heavy
fire_sound = 'sound/weapons/marauder.ogg'
harmful = TRUE
-/obj/item/projectile/beam/pulse/hitscan/heavy
+/obj/projectile/beam/pulse/hitscan/heavy
name = "heavy pulse laser"
icon_state = "pulse1_bl"
var/life = 20
-/obj/item/projectile/beam/pulse/hitscan/heavy/Bump(atom/A)
+/obj/projectile/beam/pulse/hitscan/heavy/Bump(atom/A)
A.bullet_act(src, def_zone)
life -= 10
if(ismob(A))
@@ -212,7 +212,7 @@
icon_state = "mecha_taser"
origin_tech = "combat=3"
energy_drain = 20
- projectile = /obj/item/projectile/energy/electrode
+ projectile = /obj/projectile/energy/electrode
fire_sound = 'sound/weapons/taser.ogg'
size = 1
@@ -303,7 +303,7 @@
name = "\improper FNX-66 Carbine"
icon_state = "mecha_carbine"
origin_tech = "materials=4;combat=4"
- projectile = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath
+ projectile = /obj/projectile/bullet/incendiary/shell/dragonsbreath
fire_sound = 'sound/weapons/gunshots/gunshot_rifle.ogg'
projectiles = 24
projectile_energy_cost = 15
@@ -314,7 +314,7 @@
name = "\improper S.H.H. \"Quietus\" Carbine"
fire_sound = 'sound/weapons/gunshots/gunshot_silenced.ogg'
icon_state = "mecha_mime"
- projectile = /obj/item/projectile/bullet/mime/nonlethal
+ projectile = /obj/projectile/bullet/mime/nonlethal
projectiles = 20
projectile_energy_cost = 50
@@ -328,7 +328,7 @@
name = "\improper LBX AC 10 \"Scattershot\""
icon_state = "mecha_scatter"
origin_tech = "combat=4"
- projectile = /obj/item/projectile/bullet/midbullet2
+ projectile = /obj/projectile/bullet/midbullet2
fire_sound = 'sound/weapons/gunshots/gunshot_shotgun.ogg'
projectiles = 40
projectile_energy_cost = 25
@@ -340,14 +340,14 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/syndie //Version used for Dark Gygax
name = "\improper LBX AC 20-r \"Scattershot .45\""
origin_tech = "combat=4;syndicate=2" //Crew is not going to get it normally anyways
- projectile = /obj/item/projectile/bullet/midbullet
+ projectile = /obj/projectile/bullet/midbullet
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
equip_cooldown = 1 SECONDS
name = "\improper Ultra AC 2"
icon_state = "mecha_uac2"
origin_tech = "combat=4"
- projectile = /obj/item/projectile/bullet/weakbullet3
+ projectile = /obj/projectile/bullet/weakbullet3
fire_sound = 'sound/weapons/gunshots/gunshot_mg.ogg'
projectiles = 300
projectile_energy_cost = 20
@@ -365,7 +365,7 @@
name = "\improper SRM-8 Light Missile Rack"
icon_state = "mecha_missilerack_six"
origin_tech = "combat=5;materials=4;engineering=4"
- projectile = /obj/item/projectile/missile/light
+ projectile = /obj/projectile/missile/light
fire_sound = 'sound/effects/bang.ogg'
projectiles = 6
projectile_energy_cost = 1000
@@ -376,7 +376,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/heavy
name = "\improper SRX-13 Heavy Missile Launcher"
icon_state = "mecha_missilerack"
- projectile = /obj/item/projectile/missile
+ projectile = /obj/projectile/missile
projectiles = 9
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
@@ -564,7 +564,7 @@
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
energy_drain = 30
origin_tech = "materials=3;plasmatech=4;engineering=3"
- projectile = /obj/item/projectile/plasma/adv/mech
+ projectile = /obj/projectile/plasma/adv/mech
fire_sound = 'sound/weapons/laser.ogg'
harmful = TRUE
equip_cooldown = 1 SECONDS
@@ -579,7 +579,7 @@
name = "\improper \"Little boy\" Mining Grenade Launcher"
icon_state = "mining_launcher"
origin_tech = "combat=5;materials=4;engineering=4"
- projectile = /obj/item/projectile/bullet/reusable/mining_bomb/mecha
+ projectile = /obj/projectile/bullet/reusable/mining_bomb/mecha
fire_sound = 'sound/effects/bang.ogg'
energy_drain = 150 // cost a lot, but powerful miner tool
equip_cooldown = 2 SECONDS
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index edf2eaf7ccd..bbcb846ebb3 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -642,7 +642,7 @@
add_attack_logs(locateUID(I.thrownby), OCCUPANT_LOGGING, "threw [AM] at mech [src]")
. = ..()
-/obj/mecha/bullet_act(obj/item/projectile/Proj) //wrapper
+/obj/mecha/bullet_act(obj/projectile/Proj) //wrapper
log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).")
add_attack_logs(Proj.firer, OCCUPANT_LOGGING, "shot [Proj.name]([Proj.flag]) at mech [src]")
if(Proj.shield_buster && istype(selected, /obj/item/mecha_parts/mecha_equipment/pulse_shield))
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index 7490f7ca50e..50ed4b56edd 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -464,7 +464,7 @@
var/turf/U = get_turf(target)
if(!T || !U)
return
- var/obj/item/projectile/temp/basilisk/O = new /obj/item/projectile/temp/basilisk(T)
+ var/obj/projectile/temp/basilisk/O = new /obj/projectile/temp/basilisk(T)
playsound(get_turf(src), 'sound/weapons/taser2.ogg', 75, TRUE)
if(drops_core)
O.stun = 0.5 SECONDS
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index 4199d27440e..96847ec399a 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -129,8 +129,8 @@
causes_coughing = TRUE
/obj/effect/particle_effect/smoke/bad/CanPass(atom/movable/mover, border_dir)
- 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 TRUE
diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm
index b3582b7a471..ab5b40d5cd8 100644
--- a/code/game/objects/effects/effects.dm
+++ b/code/game/objects/effects/effects.dm
@@ -61,7 +61,7 @@
armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, RAD = 100, FIRE = 100, ACID = 100)
// Most of these overrides procs below are overkill, but better safe than sorry.
-/obj/effect/abstract/bullet_act(obj/item/projectile/P)
+/obj/effect/abstract/bullet_act(obj/projectile/P)
return
/obj/effect/abstract/decompile_act(obj/item/matter_decompiler/C, mob/user)
diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm
index b3ffde3d1df..0ca168b027e 100644
--- a/code/game/objects/explosion.dm
+++ b/code/game/objects/explosion.dm
@@ -286,10 +286,10 @@
* Creates an explosion of shrapnel at a turf.
* - /turf/epicenter - where the explosion occurs
* - shrapnel_number - the amount of shrapnel to create
- * - /obj/item/projectile/shrapnel_type - the type of shrapnel bullets to shoot
+ * - /obj/projectile/shrapnel_type - the type of shrapnel bullets to shoot
* - chance_to_hit_same_turf - the probability to hit someone on the same turf, doubled for someone lying down
*/
-/proc/create_shrapnel(turf/epicenter, shrapnel_number = 10, obj/item/projectile/shrapnel_type = /obj/item/projectile/bullet/shrapnel, chance_to_hit_same_turf = 50)
+/proc/create_shrapnel(turf/epicenter, shrapnel_number = 10, obj/projectile/shrapnel_type = /obj/projectile/bullet/shrapnel, chance_to_hit_same_turf = 50)
epicenter = get_turf(epicenter)
if(!epicenter || !shrapnel_number || !shrapnel_type)
return
@@ -306,7 +306,7 @@
mob_lying_on_turf = M
for(var/i in 1 to shrapnel_number)
- var/obj/item/projectile/Shrapnel = new shrapnel_type(epicenter)
+ var/obj/projectile/Shrapnel = new shrapnel_type(epicenter)
// You can't just stand over a shrapnel explosion to avoid it
if(mob_standing_on_turf && prob(chance_to_hit_same_turf))
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 6bd6bc7a0d7..6c68c48fb62 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -217,6 +217,8 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
new path(src)
if(isstorage(loc)) //marks all items in storage as being such
in_storage = TRUE
+ if(sharp)
+ AddComponent(/datum/component/surgery_initiator)
/// This proc is used to add text for items with ABSTRACT flag after default examine text.
/obj/item/proc/customised_abstract_text(mob/living/carbon/owner)
diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm
index 1a156199a53..fde5ba4fe2f 100644
--- a/code/game/objects/items/cardboard_cutouts.dm
+++ b/code/game/objects/items/cardboard_cutouts.dm
@@ -64,7 +64,7 @@
if(prob(I.force))
push_over()
-/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P)
+/obj/item/cardboard_cutout/bullet_act(obj/projectile/P)
visible_message("[src] is hit by [P]!")
playsound(src, 'sound/weapons/slice.ogg', 50, 1)
if(prob(P.damage))
diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm
index e081b8c9477..58c7c8dc9fb 100644
--- a/code/game/objects/items/latexballoon.dm
+++ b/code/game/objects/items/latexballoon.dm
@@ -49,7 +49,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/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index 88f712cb6a5..e5431ef8987 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -78,11 +78,11 @@
#define DECALTYPE_SCORCH 1
#define DECALTYPE_BULLET 2
-/obj/item/target/bullet_act(obj/item/projectile/P)
+/obj/item/target/bullet_act(obj/projectile/P)
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)
@@ -96,7 +96,7 @@
bullet_hole.pixel_x = p_x - 1 //offset correction
bullet_hole.pixel_y = p_y - 1
if(decaltype == DECALTYPE_SCORCH)
- if(P.damage >= 20 || istype(P, /obj/item/projectile/beam/practice))
+ if(P.damage >= 20 || istype(P, /obj/projectile/beam/practice))
bullet_hole.dir = pick(NORTH,SOUTH,EAST,WEST) // random scorch design. light_scorch does not have different directions
else
bullet_hole.icon_state = "light_scorch"
diff --git a/code/game/objects/items/weapons/c_foam_launcher.dm b/code/game/objects/items/weapons/c_foam_launcher.dm
index 1c9ae12fcad..793ea31ceef 100644
--- a/code/game/objects/items/weapons/c_foam_launcher.dm
+++ b/code/game/objects/items/weapons/c_foam_launcher.dm
@@ -20,12 +20,12 @@
/obj/item/gun/projectile/c_foam_launcher/update_icon_state()
icon_state = "c_foam_launcher[magazine ? "_loaded" : ""]"
-/obj/item/projectile/c_foam
+/obj/projectile/c_foam
name = "blob of foam"
icon_state = "foam_blob"
damage = 0
-/obj/item/projectile/c_foam/on_hit(atom/target, blocked, hit_zone)
+/obj/projectile/c_foam/on_hit(atom/target, blocked, hit_zone)
. = ..()
if(isairlock(target))
var/obj/machinery/door/airlock = target
diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm
index 518ad8a757c..47972cd1f1c 100644
--- a/code/game/objects/items/weapons/chrono_eraser.dm
+++ b/code/game/objects/items/weapons/chrono_eraser.dm
@@ -117,7 +117,7 @@
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
@@ -125,21 +125,21 @@
nodamage = 1
var/obj/item/gun/energy/chrono_gun/gun = null
-/obj/item/projectile/energy/chrono_beam/fire()
+/obj/projectile/energy/chrono_beam/fire()
gun = firer.get_active_hand()
if(istype(gun))
return ..()
else
return 0
-/obj/item/projectile/energy/chrono_beam/on_hit(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)
/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
muzzle_flash_color = null
icon = 'icons/obj/projectiles.dmi'
icon_state = "chronobolt"
@@ -228,9 +228,9 @@
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/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 8fb177ff5d2..da68ea7167e 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -292,7 +292,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("[attack_text] hits the fueltank on [owner]'s [src], rupturing it! What a shot!")
var/turf/target_turf = get_turf(owner)
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index e8d5d406c68..a9fe2c2a708 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -115,7 +115,7 @@
prime()
/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("[hitby] hits [owner]'s [name], setting it off! What a shot!")
var/turf/T = get_turf(src)
diff --git a/code/game/objects/items/weapons/grenades/frag.dm b/code/game/objects/items/weapons/grenades/frag.dm
index a6c997cf2da..62c41fe1ba2 100644
--- a/code/game/objects/items/weapons/grenades/frag.dm
+++ b/code/game/objects/items/weapons/grenades/frag.dm
@@ -8,7 +8,7 @@
/// How much shrapnel the grenade will launch.
var/shrapnel_contained = 20
/// The type of projectile that will fired.
- var/embedded_type = /obj/item/projectile/bullet/shrapnel
+ var/embedded_type = /obj/projectile/bullet/shrapnel
/obj/item/grenade/frag/prime()
update_mob()
@@ -22,7 +22,7 @@
icon_state = "stinger"
modifiable_timer = FALSE
shrapnel_contained = 50
- embedded_type = /obj/item/projectile/bullet/pellet/rubber/stinger
+ embedded_type = /obj/projectile/bullet/pellet/rubber/stinger
/obj/item/grenade/frag/stinger/prime()
update_mob()
@@ -33,7 +33,7 @@
/**
* Shrapnel that flies through the air and hits you
*/
-/obj/item/projectile/bullet/shrapnel
+/obj/projectile/bullet/shrapnel
name = "shrapnel"
icon_state = "magspear"
gender = PLURAL
@@ -42,7 +42,7 @@
var/embed_prob = 100 //reduced by armor
var/embedded_type = /obj/item/shrapnel
-/obj/item/projectile/bullet/shrapnel/on_hit(atom/target, blocked)
+/obj/projectile/bullet/shrapnel/on_hit(atom/target, blocked)
. = ..()
var/obj/item/new_possible_embed = new embedded_type(get_turf(src)) // drop it on the floor if we hit somethig non-living
if(!.)
@@ -56,7 +56,7 @@
return
human.try_embed_object(new_possible_embed)
-/obj/item/projectile/bullet/shrapnel/on_range()
+/obj/projectile/bullet/shrapnel/on_range()
var/obj/item/we_missed = new embedded_type(get_turf(src)) // we missed, lets toss the shrapnel
var/range = gaussian(4, 2)
if(range > 0)
diff --git a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm
index e4404d7810e..5a9eabfe6a2 100644
--- a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm
+++ b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm
@@ -311,7 +311,7 @@
if(!.) // they did not block the attack
return
if(isprojectile(hitby))
- var/obj/item/projectile/P = hitby
+ var/obj/projectile/P = hitby
if(P.reflectability == REFLECTABILITY_ENERGY)
owner.visible_message("[owner] parries [attack_text] with [src]!")
add_attack_logs(P.firer, src, "hit by [P.type] but got parried by [src]")
diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm
index 865e757f1cb..f4cd0aab451 100644
--- a/code/game/objects/items/weapons/shields.dm
+++ b/code/game/objects/items/weapons/shields.dm
@@ -94,7 +94,7 @@
/obj/item/shield/energy/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(isprojectile(hitby))
- var/obj/item/projectile/P = hitby
+ var/obj/projectile/P = hitby
if(P.shield_buster && active)
toggle(owner, TRUE)
to_chat(owner, "[hitby] overloaded your [src]!")
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index 0d8cb40b684..d63596800e0 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -85,7 +85,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]!")
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 90f989a81c2..f5d9a8517ee 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -60,8 +60,6 @@
armor = getArmor()
else if(!istype(armor, /datum/armor))
stack_trace("Invalid type [armor.type] found in .armor during /obj Initialize()")
- if(sharp)
- AddComponent(/datum/component/surgery_initiator)
if(obj_integrity == null)
obj_integrity = max_integrity
@@ -296,7 +294,7 @@
C.take_organ_damage(damage)
C.KnockDown(3 SECONDS)
-/obj/handle_ricochet(obj/item/projectile/P)
+/obj/handle_ricochet(obj/projectile/P)
. = ..()
if(. && receive_ricochet_damage_coeff)
// pass along receive_ricochet_damage_coeff damage to the structure for the ricochet
diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm
index 934f5feced7..53ee749d84c 100644
--- a/code/game/objects/structures/crates_lockers/closets/coffin.dm
+++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm
@@ -50,7 +50,7 @@
igniting = FALSE
return ITEM_INTERACT_COMPLETE
-/obj/structure/closet/coffin/vampire/bullet_act(obj/item/projectile/P)
+/obj/structure/closet/coffin/vampire/bullet_act(obj/projectile/P)
if(!P.immolate)
return ..()
fire_act()
diff --git a/code/game/objects/structures/holosigns.dm b/code/game/objects/structures/holosigns.dm
index 840330adf00..c9bb8d3c870 100644
--- a/code/game/objects/structures/holosigns.dm
+++ b/code/game/objects/structures/holosigns.dm
@@ -106,11 +106,11 @@
max_integrity = 10
allow_walk = FALSE
-/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.
/obj/structure/holosign/barrier/cyborg/hacked
@@ -119,7 +119,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.
/obj/structure/holosign/barrier/cyborg/hacked/proc/cooldown()
diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm
index b69b523b9ed..2891e79533c 100644
--- a/code/game/objects/structures/lavaland/necropolis_tendril.dm
+++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm
@@ -47,7 +47,7 @@ GLOBAL_LIST_EMPTY(tendrils)
. = ..()
SEND_SIGNAL(src, COMSIG_SPAWNER_SET_TARGET, user)
-/obj/structure/spawner/lavaland/bullet_act(obj/item/projectile/P)
+/obj/structure/spawner/lavaland/bullet_act(obj/projectile/P)
. = ..()
if(P.firer)
SEND_SIGNAL(src, COMSIG_SPAWNER_SET_TARGET, P.firer)
diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm
index 92ce2edecc2..abac74a4b70 100644
--- a/code/game/objects/structures/reflector.dm
+++ b/code/game/objects/structures/reflector.dm
@@ -14,10 +14,10 @@
if(mapload)
anchored = TRUE
-/obj/structure/reflector/bullet_act(obj/item/projectile/P)
+/obj/structure/reflector/bullet_act(obj/projectile/P)
var/turf/reflector_turf = get_turf(src)
var/turf/reflect_turf
- if(!istype(P, /obj/item/projectile/beam))
+ if(!istype(P, /obj/projectile/beam))
return ..()
var/new_dir = get_reflection(dir, P.dir)
if(new_dir && anchored)
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 195d6e21a04..cb77dcf8f86 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -94,7 +94,7 @@
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
-/obj/structure/statue/plasma/bullet_act(obj/item/projectile/P)
+/obj/structure/statue/plasma/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)))
if(P.firer)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index f430de16a51..9283fb880cb 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -129,7 +129,7 @@
return
/obj/structure/table/CanPass(atom/movable/mover, border_dir)
- if(istype(mover,/obj/item/projectile))
+ if(istype(mover,/obj/projectile))
return check_cover(mover, border_dir)
var/mob/living/living_mover = mover
@@ -163,7 +163,7 @@
* * P - The projectile trying to cross.
* * proj_dir - The incoming direction of the projectile.
*/
-/obj/structure/table/proc/check_cover(obj/item/projectile/P, proj_dir)
+/obj/structure/table/proc/check_cover(obj/projectile/P, proj_dir)
. = TRUE
if(!flipped)
return
diff --git a/code/game/turfs/simulated/floor/chasm.dm b/code/game/turfs/simulated/floor/chasm.dm
index 1e288e42677..06a58abac66 100644
--- a/code/game/turfs/simulated/floor/chasm.dm
+++ b/code/game/turfs/simulated/floor/chasm.dm
@@ -17,7 +17,7 @@
/obj/docking_port,
/obj/structure/lattice,
/obj/structure/stone_tile,
- /obj/item/projectile,
+ /obj/projectile,
/obj/effect/portal,
/obj/effect/hotspot,
/obj/effect/landmark,
diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm
index a4253b4efbf..e620a822e38 100644
--- a/code/game/turfs/simulated/walls_mineral.dm
+++ b/code/game/turfs/simulated/walls_mineral.dm
@@ -124,12 +124,12 @@
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
-/turf/simulated/wall/mineral/plasma/bullet_act(obj/item/projectile/Proj)
+/turf/simulated/wall/mineral/plasma/bullet_act(obj/projectile/Proj)
if(Proj.damage == 0)//lasertag guns and so on don't set off plasma anymore. can't use nodamage here because lasertag guns actually don't have it.
return
- if(istype(Proj,/obj/item/projectile/beam))
+ 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_misc.dm b/code/game/turfs/simulated/walls_misc.dm
index 4d343d72d2e..d73b19feddb 100644
--- a/code/game/turfs/simulated/walls_misc.dm
+++ b/code/game/turfs/simulated/walls_misc.dm
@@ -16,7 +16,7 @@
new /obj/effect/temp_visual/cult/turf(src)
icon_state = GET_CULT_DATA(cult_wall_icon_state, initial(icon_state))
-/turf/simulated/wall/cult/bullet_act(obj/item/projectile/Proj)
+/turf/simulated/wall/cult/bullet_act(obj/projectile/Proj)
. = ..()
new /obj/effect/temp_visual/cult/turf(src)
@@ -58,7 +58,7 @@
new /obj/effect/temp_visual/ratvar/wall(src)
new /obj/effect/temp_visual/ratvar/beam(src)
-/turf/simulated/wall/clockwork/bullet_act(obj/item/projectile/Proj)
+/turf/simulated/wall/clockwork/bullet_act(obj/projectile/Proj)
. = ..()
new /obj/effect/temp_visual/ratvar/wall(get_turf(src))
new /obj/effect/temp_visual/ratvar/beam(get_turf(src))
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 78640958434..bc43a0120d9 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -206,8 +206,8 @@
else if(our_rpd.mode == RPD_DELETE_MODE)
our_rpd.delete_all_pipes(user, src)
-/turf/bullet_act(obj/item/projectile/Proj)
- if(istype(Proj, /obj/item/projectile/bullet/gyro))
+/turf/bullet_act(obj/projectile/Proj)
+ if(istype(Proj, /obj/projectile/bullet/gyro))
explosion(src, -1, 0, 2, cause = "[Proj.type] fired by [key_name(Proj.firer)] (hit turf)")
..()
return FALSE
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 0fb06849d78..3afcdfab2ae 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -253,7 +253,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 = 'icons/obj/projectiles.dmi'
icon_state = "tentacle_end"
@@ -269,7 +269,7 @@
gun = null
return ..()
-/obj/item/projectile/tentacle
+/obj/projectile/tentacle
name = "tentacle"
icon_state = "tentacle_end"
damage = 0
@@ -278,11 +278,11 @@
reflectability = REFLECTABILITY_NEVER //Let us not reflect this ever. It's not quite a bullet, and a cling should never wrap its tentacle around itself, it controls its body well
var/obj/item/ammo_casing/magic/tentacle/source //the item that shot it
-/obj/item/projectile/tentacle/New(obj/item/ammo_casing/magic/tentacle/tentacle_casing)
+/obj/projectile/tentacle/New(obj/item/ammo_casing/magic/tentacle/tentacle_casing)
source = tentacle_casing
..()
-/obj/item/projectile/tentacle/fire(setAngle)
+/obj/projectile/tentacle/fire(setAngle)
if(firer)
chain = firer.Beam(src, icon_state = "tentacle", time = INFINITY, maxdistance = INFINITY)
..()
@@ -298,7 +298,7 @@
I.melee_attack_chain(src, C)//Hits the victim with whatever they are holding that is no the zero force tentacle
-/obj/item/projectile/tentacle/on_hit(atom/target, blocked = 0)
+/obj/projectile/tentacle/on_hit(atom/target, blocked = 0)
var/mob/living/carbon/human/H = firer
source.gun.hit_something = TRUE
source.gun.check_should_delete()
@@ -369,7 +369,7 @@
C.throw_at(get_step_towards(H,C), 8, 2, callback=CALLBACK(H, TYPE_PROC_REF(/mob, tentacle_stab), C))
return TRUE
-/obj/item/projectile/tentacle/Destroy()
+/obj/projectile/tentacle/Destroy()
qdel(chain)
source = null
return ..()
diff --git a/code/modules/antagonists/mind_flayer/powers/flayer_weapon_powers.dm b/code/modules/antagonists/mind_flayer/powers/flayer_weapon_powers.dm
index c5fa4fb08c3..09283f9878f 100644
--- a/code/modules/antagonists/mind_flayer/powers/flayer_weapon_powers.dm
+++ b/code/modules/antagonists/mind_flayer/powers/flayer_weapon_powers.dm
@@ -133,7 +133,7 @@
/obj/item/ammo_casing/magic/grapple_ammo
name = "grapple"
desc = "a hand"
- projectile_type = /obj/item/projectile/tether/flayer
+ projectile_type = /obj/projectile/tether/flayer
icon = 'icons/obj/clothing/modsuit/mod_modules.dmi'
icon_state = "flayer_claw"
caliber = "grapple"
@@ -149,7 +149,7 @@
. = ..()
grapple = null
-/obj/item/projectile/tether/flayer
+/obj/projectile/tether/flayer
name = "Grapple Arm"
range = 10
damage = 15
@@ -160,20 +160,20 @@
/// The ammo this came from
var/obj/item/ammo_casing/magic/grapple_ammo/ammo
-/obj/item/projectile/tether/flayer/Initialize(mapload, obj/item/ammo_casing/magic/grapple_ammo/grapple_casing)
+/obj/projectile/tether/flayer/Initialize(mapload, obj/item/ammo_casing/magic/grapple_ammo/grapple_casing)
. = ..()
ammo = grapple_casing
-/obj/item/projectile/tether/flayer/fire(setAngle)
+/obj/projectile/tether/flayer/fire(setAngle)
. = ..()
make_chain()
SEND_SIGNAL(firer, COMSIG_FLAYER_RETRACT_IMPLANTS)
-/obj/item/projectile/tether/flayer/Destroy()
+/obj/projectile/tether/flayer/Destroy()
. = ..()
ammo = null
-/obj/item/projectile/tether/flayer/on_hit(atom/target, blocked = 0)
+/obj/projectile/tether/flayer/on_hit(atom/target, blocked = 0)
. = ..()
playsound(target, 'sound/items/zip.ogg', 75, TRUE)
if(isliving(target) && blocked < 100)
diff --git a/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm b/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm
index bd0a16cceba..56ce0626c87 100644
--- a/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm
+++ b/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm
@@ -129,7 +129,7 @@
desc = "Summon a hand of demonic energy, snaring and throwing its target around, based on your intent. Disarm pushes, grab pulls."
gain_desc = "You have gained the ability to snare and disrupt people with demonic appendages."
base_cooldown = 30 SECONDS
- fireball_type = /obj/item/projectile/magic/demonic_grasp
+ fireball_type = /obj/projectile/magic/demonic_grasp
selection_activated_message = "You raise your hand, full of demonic energy! Left-click to cast at a target!"
selection_deactivated_message = "You re-absorb the energy...for now."
@@ -149,17 +149,17 @@
V.required_blood = 20
return V
-/obj/item/projectile/magic/demonic_grasp
+/obj/projectile/magic/demonic_grasp
name = "demonic grasp"
// parry this you filthy casual
reflectability = REFLECTABILITY_NEVER
icon_state = null
-/obj/item/projectile/magic/demonic_grasp/pixel_move(trajectory_multiplier)
+/obj/projectile/magic/demonic_grasp/pixel_move(trajectory_multiplier)
. = ..()
new /obj/effect/temp_visual/demonic_grasp(loc)
-/obj/item/projectile/magic/demonic_grasp/on_hit(atom/target, blocked, hit_zone)
+/obj/projectile/magic/demonic_grasp/on_hit(atom/target, blocked, hit_zone)
. = ..()
if(!.)
return
@@ -184,7 +184,7 @@
throw_target = get_step(firer, get_dir(firer, L))
L.throw_at(throw_target, 2, 5, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(src, PROC_REF(create_snare), L)) // pull towards
-/obj/item/projectile/magic/demonic_grasp/proc/create_snare(mob/target)
+/obj/projectile/magic/demonic_grasp/proc/create_snare(mob/target)
new /obj/effect/temp_visual/demonic_snare(target.loc)
/obj/effect/temp_visual/demonic_grasp
diff --git a/code/modules/antagonists/vampire/vampire_powers/umbrae_powers.dm b/code/modules/antagonists/vampire/vampire_powers/umbrae_powers.dm
index c603ef914dc..cdb8d941306 100644
--- a/code/modules/antagonists/vampire/vampire_powers/umbrae_powers.dm
+++ b/code/modules/antagonists/vampire/vampire_powers/umbrae_powers.dm
@@ -323,7 +323,7 @@
for(var/mob/living/L in view(8, owner))
if(L.affects_vampire(owner))
L.adjust_bodytemperature(-3 * TEMPERATURE_DAMAGE_COEFFICIENT) //The dark is cold and unforgiving. Equivelnt to -60 with previous values.
- for(var/obj/item/projectile/P in view(8, owner))
+ for(var/obj/projectile/P in view(8, owner))
if(P.flag == ENERGY || P.flag == LASER)
P.damage *= 0.7
diff --git a/code/modules/awaymissions/cordon.dm b/code/modules/awaymissions/cordon.dm
index 512ef2b6a93..37c71c8610a 100644
--- a/code/modules/awaymissions/cordon.dm
+++ b/code/modules/awaymissions/cordon.dm
@@ -24,7 +24,7 @@
/turf/cordon/TerraformTurf(path, list/new_baseturfs, flags)
return
-/turf/cordon/bullet_act(obj/item/projectile/hitting_projectile, def_zone, piercing_hit)
+/turf/cordon/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit)
SHOULD_CALL_PARENT(FALSE) // Fuck you
return
diff --git a/code/modules/awaymissions/mission_code/ruins/deepstorage.dm b/code/modules/awaymissions/mission_code/ruins/deepstorage.dm
index 6c850c76278..8893052c8d6 100644
--- a/code/modules/awaymissions/mission_code/ruins/deepstorage.dm
+++ b/code/modules/awaymissions/mission_code/ruins/deepstorage.dm
@@ -229,7 +229,7 @@
ranged = TRUE
retreat_distance = 5
minimum_distance = 5
- projectiletype = /obj/item/projectile/neurotox
+ projectiletype = /obj/projectile/neurotox
projectilesound = 'sound/weapons/pierce.ogg'
// Below here is ruin specific code
diff --git a/code/modules/awaymissions/mission_code/ruins/sieged_lab.dm b/code/modules/awaymissions/mission_code/ruins/sieged_lab.dm
index 8bc2689482f..eeea5b50585 100644
--- a/code/modules/awaymissions/mission_code/ruins/sieged_lab.dm
+++ b/code/modules/awaymissions/mission_code/ruins/sieged_lab.dm
@@ -37,7 +37,7 @@
icon_state = "syndicate_harbinger"
icon_living = "syndicate_harbinger"
speak_emote = list("snarls")
- projectiletype = /obj/item/projectile/bullet/heavybullet
+ projectiletype = /obj/projectile/bullet/heavybullet
projectilesound = 'sound/weapons/gunshots/gunshot_rifle.ogg'
internal_gps = null
faction = list("syndicate", "spawned_corpse")
diff --git a/code/modules/awaymissions/mission_code/ruins/telecomns.dm b/code/modules/awaymissions/mission_code/ruins/telecomns.dm
index 027333914b2..9255ac83b9e 100644
--- a/code/modules/awaymissions/mission_code/ruins/telecomns.dm
+++ b/code/modules/awaymissions/mission_code/ruins/telecomns.dm
@@ -190,7 +190,7 @@ GLOBAL_LIST_EMPTY(telecomms_trap_tank)
GLOB.telecomms_trap_tank -= src
return ..()
-/obj/structure/telecomms_trap_tank/bullet_act(obj/item/projectile/P)
+/obj/structure/telecomms_trap_tank/bullet_act(obj/projectile/P)
explode()
/obj/structure/telecomms_trap_tank/proc/explode()
@@ -337,7 +337,7 @@ GLOBAL_LIST_EMPTY(telecomms_trap_tank)
maxHealth = 200
faction = list("malf_drone")
speed = 0.5
- projectile_type = /obj/item/projectile/beam/disabler/weak
+ projectile_type = /obj/projectile/beam/disabler/weak
projectile_sound = 'sound/weapons/taser2.ogg'
ranged_burst_count = 2
gold_core_spawnable = NO_SPAWN // Could you imagine xenobio with this? lmao.
diff --git a/code/modules/awaymissions/mission_code/ruins/watcher_grave.dm b/code/modules/awaymissions/mission_code/ruins/watcher_grave.dm
index 398eda18c09..32c6226b6c4 100644
--- a/code/modules/awaymissions/mission_code/ruins/watcher_grave.dm
+++ b/code/modules/awaymissions/mission_code/ruins/watcher_grave.dm
@@ -150,7 +150,7 @@
/// Datum which keeps us hanging out with our parent
var/datum/movement_detector/tracker
/// Type of projectile we fire
- var/projectile_type = /obj/item/projectile/baby_watcher_blast
+ var/projectile_type = /obj/projectile/baby_watcher_blast
/// Sound to make when we shoot
var/projectile_sound = 'sound/weapons/pierce.ogg'
/// Time between taking potshots at goliaths
@@ -193,7 +193,7 @@
var/turf/U = get_turf(target)
if(!T || !U)
return
- var/obj/item/projectile/O = new projectile_type(T)
+ var/obj/projectile/O = new projectile_type(T)
playsound(get_turf(src), projectile_sound, 75, TRUE)
O.firer = parent // no hitting owner.
O.current = T
@@ -253,6 +253,6 @@
/// Beam fired by a baby watcher, doesn't actually do less damage than its parent
-/obj/item/projectile/baby_watcher_blast
+/obj/projectile/baby_watcher_blast
name = "hatchling beam"
icon_state = "ice_2"
diff --git a/code/modules/clothing/suits/armor_suits.dm b/code/modules/clothing/suits/armor_suits.dm
index a8c50b63d4d..906d7279d99 100644
--- a/code/modules/clothing/suits/armor_suits.dm
+++ b/code/modules/clothing/suits/armor_suits.dm
@@ -454,8 +454,8 @@
/obj/item/clothing/suit/armor/reactive/proc/reaction_check(hitby)
if(prob(hit_reaction_chance))
if(isprojectile(hitby))
- var/obj/item/projectile/P = hitby
- if(istype(P, /obj/item/projectile/ion))
+ var/obj/projectile/P = hitby
+ if(istype(P, /obj/projectile/ion))
return FALSE
if(!P.nodamage || P.stun || P.weaken)
return TRUE
@@ -550,7 +550,7 @@
var/turf/U = get_turf(target)
if(!T || !U)
return
- var/obj/item/projectile/temp/basilisk/O = new /obj/item/projectile/temp/basilisk(T)
+ var/obj/projectile/temp/basilisk/O = new /obj/projectile/temp/basilisk(T)
playsound(get_turf(src), 'sound/weapons/taser2.ogg', 75, TRUE)
O.current = T
O.yo = U.y - T.y
diff --git a/code/modules/events/blob/theblob.dm b/code/modules/events/blob/theblob.dm
index c845a48aba6..cd38bf57611 100644
--- a/code/modules/events/blob/theblob.dm
+++ b/code/modules/events/blob/theblob.dm
@@ -75,8 +75,8 @@ GLOBAL_LIST_EMPTY(blob_minions)
/obj/structure/blob/blob_act(obj/structure/blob/B)
return
-/obj/structure/blob/bullet_act(obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/kinetic))
+/obj/structure/blob/bullet_act(obj/projectile/P)
+ if(istype(P, /obj/projectile/kinetic))
P.damage /= 2
return ..()
diff --git a/code/modules/events/demon_incursion.dm b/code/modules/events/demon_incursion.dm
index bbeba50d97b..d1e0318b1fb 100644
--- a/code/modules/events/demon_incursion.dm
+++ b/code/modules/events/demon_incursion.dm
@@ -225,7 +225,7 @@
. = ..()
SEND_SIGNAL(src, COMSIG_SPAWNER_SET_TARGET, user)
-/obj/structure/spawner/nether/demon_incursion/bullet_act(obj/item/projectile/P)
+/obj/structure/spawner/nether/demon_incursion/bullet_act(obj/projectile/P)
. = ..()
if(P.firer)
SEND_SIGNAL(src, COMSIG_SPAWNER_SET_TARGET, P.firer)
diff --git a/code/modules/hallucinations/effects/major.dm b/code/modules/hallucinations/effects/major.dm
index ec088a1b2ae..1fcf559b0fe 100644
--- a/code/modules/hallucinations/effects/major.dm
+++ b/code/modules/hallucinations/effects/major.dm
@@ -501,7 +501,7 @@
/obj/effect/hallucination/sniper/proc/fire_bullet(turf/shot_loc, mob/living/carbon/target)
// Fire the bullet
- var/obj/item/projectile/bullet/sniper/penetrator/hallucination/bullet = new(shot_loc)
+ var/obj/projectile/bullet/sniper/penetrator/hallucination/bullet = new(shot_loc)
bullet.hallucinator = target
bullet.def_zone = BODY_ZONE_HEAD
bullet.suppressed = TRUE
@@ -537,7 +537,7 @@
hallucination_icon_state = pick("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
-/obj/item/projectile/bullet/sniper/penetrator/hallucination
+/obj/projectile/bullet/sniper/penetrator/hallucination
nodamage = TRUE
invisibility = INVISIBILITY_MAXIMUM // You no see boolet
/// The hallucinator
@@ -545,7 +545,7 @@
/// Handles only the victim seeing it
var/image/bullet_image = null
-/obj/item/projectile/bullet/sniper/penetrator/hallucination/on_hit(atom/target, blocked, hit_zone)
+/obj/projectile/bullet/sniper/penetrator/hallucination/on_hit(atom/target, blocked, hit_zone)
if(!isliving(target))
return
if(target != hallucinator)
@@ -560,7 +560,7 @@
new /obj/effect/hallucination/sniper_bloodsplatter(get_turf(src), hit_target)
to_chat(hit_target, "You're shot by \a [src][organ_hit_text]!")
-/obj/item/projectile/bullet/sniper/penetrator/hallucination/Bump(atom/A, yes)
+/obj/projectile/bullet/sniper/penetrator/hallucination/Bump(atom/A, yes)
if(!yes) // prevents double bumps.
return
var/turf/target_turf = get_turf(A)
diff --git a/code/modules/hydroponics/hydroponics_tray.dm b/code/modules/hydroponics/hydroponics_tray.dm
index b08dbadebdd..42e38d2a97b 100644
--- a/code/modules/hydroponics/hydroponics_tray.dm
+++ b/code/modules/hydroponics/hydroponics_tray.dm
@@ -169,13 +169,13 @@
update_state()
-/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))
mut_beamed = TRUE
return ..()
- else if(istype(Proj ,/obj/item/projectile/energy/florayield))
+ else if(istype(Proj ,/obj/projectile/energy/florayield))
yield_beamed = TRUE
return ..()
else
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 4b5e820d986..a0e3f5a3faf 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -174,8 +174,8 @@
if("weed chance")
adjust_weed_chance(mod)
-/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 03de0bf0e33..bee64aa4256 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -118,7 +118,7 @@
var/turf/proj_turf = get_turf_for_projectile(user)
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)
@@ -197,7 +197,7 @@
update_action_buttons()
//destablizing force
-/obj/item/projectile/destabilizer
+/obj/projectile/destabilizer
name = "destabilizing force"
icon_state = "pulse1"
nodamage = TRUE
@@ -207,11 +207,11 @@
log_override = TRUE
var/obj/item/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
@@ -279,7 +279,7 @@
/obj/item/crusher_trophy/proc/on_melee_hit(mob/living/target, mob/living/user) //the target and the user
return
-/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
return
/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
@@ -346,7 +346,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"
@@ -479,7 +479,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/loot/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm
index 8f721222a35..7974445f834 100644
--- a/code/modules/mining/lavaland/loot/colossus_loot.dm
+++ b/code/modules/mining/lavaland/loot/colossus_loot.dm
@@ -34,9 +34,9 @@
ActivationReaction(user, "weapon")
return ..()
-/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, "magic", P.damage_type)
return
ActivationReaction(P.firer, P.flag, P.damage_type)
@@ -140,16 +140,16 @@
/// Generates a projectile when interacted with
/obj/machinery/anomalous_crystal/emitter
cooldown_add = 50
- var/generated_projectile = /obj/item/projectile/beam/emitter
+ var/generated_projectile = /obj/projectile/beam/emitter
/obj/machinery/anomalous_crystal/emitter/Initialize(mapload)
. = ..()
- generated_projectile = pick(/obj/item/projectile/magic/fireball/infernal,
- /obj/item/projectile/bullet/meteorshot, /obj/item/projectile/beam/xray, /obj/item/projectile/colossus)
+ generated_projectile = pick(/obj/projectile/magic/fireball/infernal,
+ /obj/projectile/bullet/meteorshot, /obj/projectile/beam/xray, /obj/projectile/colossus)
/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.dir = dir
switch(dir)
if(NORTH)
diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm
index edde0108c51..933780e329f 100644
--- a/code/modules/mining/lavaland/loot/tendril_loot.dm
+++ b/code/modules/mining/lavaland/loot/tendril_loot.dm
@@ -349,13 +349,13 @@
/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 = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "hook"
muzzle_flash_effect = null
-/obj/item/projectile/hook
+/obj/projectile/hook
name = "hook"
icon_state = "hook"
icon = 'icons/obj/lavaland/artefacts.dmi'
@@ -365,13 +365,13 @@
weaken = 1 SECONDS
knockdown = 6 SECONDS
-/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(isliving(target))
var/mob/living/L = target
@@ -382,7 +382,7 @@
L.forceMove(get_turf(firer))
L.density = old_density
-/obj/item/projectile/hook/Destroy()
+/obj/projectile/hook/Destroy()
QDEL_NULL(chain)
return ..()
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index e3fcfc653e3..5a230dfe38e 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -243,7 +243,7 @@
if(berserk_active)
return
if(isprojectile(hitby))
- var/obj/item/projectile/P = hitby
+ var/obj/projectile/P = hitby
if(P.damage_type == STAMINA)
return //no disabler rage
var/berserk_value = damage * DAMAGE_TO_CHARGE_SCALE
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 51cdee2a420..a6a84193957 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -311,7 +311,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
else
..()
-/obj/item/gibtonite/bullet_act(obj/item/projectile/P)
+/obj/item/gibtonite/bullet_act(obj/projectile/P)
GibtoniteReaction(P.firer)
..()
@@ -416,7 +416,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
materials = list(MAT_PLASMA = 400)
credits = 80
-/obj/item/coin/plasma/bullet_act(obj/item/projectile/P)
+/obj/item/coin/plasma/bullet_act(obj/projectile/P)
if(!QDELETED(src) && !P.nodamage && (P.damage_type == BURN))
log_and_set_aflame(P.firer, P)
diff --git a/code/modules/mob/living/basic/hostile/alien/alien_mob_queen.dm b/code/modules/mob/living/basic/hostile/alien/alien_mob_queen.dm
index 242441696df..5b98d6d4b41 100644
--- a/code/modules/mob/living/basic/hostile/alien/alien_mob_queen.dm
+++ b/code/modules/mob/living/basic/hostile/alien/alien_mob_queen.dm
@@ -12,7 +12,7 @@
ai_controller = /datum/ai_controller/basic_controller/alien/queen
is_ranged = TRUE
- projectile_type = /obj/item/projectile/neurotox
+ projectile_type = /obj/projectile/neurotox
projectile_sound = 'sound/weapons/pierce.ogg'
ranged_cooldown = 3 SECONDS
diff --git a/code/modules/mob/living/basic/hostile/alien/alien_mob_sentinel.dm b/code/modules/mob/living/basic/hostile/alien/alien_mob_sentinel.dm
index 3514258cf9b..8002719a29f 100644
--- a/code/modules/mob/living/basic/hostile/alien/alien_mob_sentinel.dm
+++ b/code/modules/mob/living/basic/hostile/alien/alien_mob_sentinel.dm
@@ -11,7 +11,7 @@
ai_controller = /datum/ai_controller/basic_controller/alien/sentinel
is_ranged = TRUE
- projectile_type = /obj/item/projectile/neurotox
+ projectile_type = /obj/projectile/neurotox
projectile_sound = 'sound/weapons/pierce.ogg'
ranged_cooldown = 3 SECONDS
diff --git a/code/modules/mob/living/basic/hostile/hivebot.dm b/code/modules/mob/living/basic/hostile/hivebot.dm
index c01e6821d29..d1d06974cec 100644
--- a/code/modules/mob/living/basic/hostile/hivebot.dm
+++ b/code/modules/mob/living/basic/hostile/hivebot.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/hivebotbullet
+/obj/projectile/hivebotbullet
/mob/living/basic/hivebot
name = "Hivebot"
@@ -28,7 +28,7 @@
basic_mob_flags = DEL_ON_DEATH
step_type = FOOTSTEP_MOB_CLAW
ai_controller = /datum/ai_controller/basic_controller/hivebot
- projectile_type = /obj/item/projectile/hivebotbullet
+ projectile_type = /obj/projectile/hivebotbullet
projectile_sound = 'sound/weapons/gunshots/gunshot.ogg'
/mob/living/basic/hivebot/range
diff --git a/code/modules/mob/living/basic/hostile/pirate.dm b/code/modules/mob/living/basic/hostile/pirate.dm
index f00080b1da9..d7f578002a7 100644
--- a/code/modules/mob/living/basic/hostile/pirate.dm
+++ b/code/modules/mob/living/basic/hostile/pirate.dm
@@ -59,7 +59,7 @@
icon_state = "piratespaceranged"
icon_living = "piratespaceranged"
is_ranged = TRUE
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
projectile_sound = 'sound/weapons/laser.ogg'
ranged_burst_count = 2
ranged_burst_interval = 0.5 SECONDS // Same fire rate as people!
diff --git a/code/modules/mob/living/basic/hostile/vox_raiders.dm b/code/modules/mob/living/basic/hostile/vox_raiders.dm
index f56b0c66ca1..7af9b16430d 100644
--- a/code/modules/mob/living/basic/hostile/vox_raiders.dm
+++ b/code/modules/mob/living/basic/hostile/vox_raiders.dm
@@ -36,7 +36,7 @@
step_type = FOOTSTEP_MOB_SHOE
is_ranged = TRUE
- projectile_type = /obj/item/projectile/plasma/adv
+ projectile_type = /obj/projectile/plasma/adv
projectile_sound = 'sound/weapons/laser.ogg'
ranged_cooldown = 1.75 SECONDS
@@ -73,7 +73,7 @@
icon_state = "vox_foreman"
icon_living = "vox_foreman"
ai_controller = /datum/ai_controller/basic_controller/simple/vox_foreman
- projectile_type = /obj/item/projectile/bullet/spike
+ projectile_type = /obj/projectile/bullet/spike
projectile_sound = 'sound/weapons/bladeslice.ogg'
ranged_burst_count = 2
ranged_burst_interval = 0.5 SECONDS
diff --git a/code/modules/mob/living/basic/minebots/minebot.dm b/code/modules/mob/living/basic/minebots/minebot.dm
index cc5b8880bcf..dfefd41084c 100644
--- a/code/modules/mob/living/basic/minebots/minebot.dm
+++ b/code/modules/mob/living/basic/minebots/minebot.dm
@@ -130,14 +130,14 @@
return ..()
/mob/living/basic/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/mob/living/basic/mining/basilisk.dm b/code/modules/mob/living/basic/mining/basilisk.dm
index fb51260d6bb..33d15a6d6f6 100644
--- a/code/modules/mob/living/basic/mining/basilisk.dm
+++ b/code/modules/mob/living/basic/mining/basilisk.dm
@@ -25,7 +25,7 @@
ai_controller = /datum/ai_controller/basic_controller/watcher
is_ranged = TRUE
ranged_cooldown = 3 SECONDS
- projectile_type = /obj/item/projectile/temp/basilisk
+ projectile_type = /obj/projectile/temp/basilisk
projectile_sound = 'sound/weapons/pierce.ogg'
loot = list(/obj/item/stack/ore/diamond{layer = ABOVE_MOB_LAYER},
@@ -35,12 +35,12 @@
. = ..()
AddElement(/datum/element/ai_retaliate)
-/obj/item/projectile/temp/basilisk
+/obj/projectile/temp/basilisk
name = "freezing blast"
icon_state = "ice_2"
temperature = 50
-/obj/item/projectile/temp/basilisk/on_hit(atom/target, blocked)
+/obj/projectile/temp/basilisk/on_hit(atom/target, blocked)
..()
if(isrobot(target))
var/mob/living/silicon/robot/cyborg = target
@@ -94,7 +94,7 @@
light_range = 3
light_power = 2.5
light_color = LIGHT_COLOR_LAVA
- projectile_type = /obj/item/projectile/temp/basilisk/magmawing
+ projectile_type = /obj/projectile/temp/basilisk/magmawing
crusher_loot = /obj/item/crusher_trophy/blaster_tubes/magma_wing
crusher_drop_mod = 100 // These things are extremely rare (1/133 per spawner). You shouldn't have to hope for another stroke of luck to get it's trophy after finding it
@@ -107,12 +107,12 @@
icon_dead = "watcher_icewing_dead"
maxHealth = 170
health = 170
- projectile_type = /obj/item/projectile/temp/basilisk/icewing
+ projectile_type = /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 = 100 // These things are extremely rare (1/400 per spawner). You shouldn't have to hope for another stroke of luck to get it's trophy after finding it
-/obj/item/projectile/temp/basilisk/magmawing
+/obj/projectile/temp/basilisk/magmawing
name = "scorching blast"
icon_state = "lava"
damage = 5
@@ -120,11 +120,11 @@
temperature = 500 // Heats you up!
immolate = 1
-/obj/item/projectile/temp/basilisk/icewing
+/obj/projectile/temp/basilisk/icewing
damage = 5
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/basic/mining/goldgrub/goldgrub.dm b/code/modules/mob/living/basic/mining/goldgrub/goldgrub.dm
index c4b580f2db1..a95254d08d6 100644
--- a/code/modules/mob/living/basic/mining/goldgrub/goldgrub.dm
+++ b/code/modules/mob/living/basic/mining/goldgrub/goldgrub.dm
@@ -48,7 +48,7 @@
for(var/obj/item/stack/ore/ore in src)
ore.forceMove(loc)
-/mob/living/basic/mining/goldgrub/bullet_act(obj/item/projectile/P)
+/mob/living/basic/mining/goldgrub/bullet_act(obj/projectile/P)
if(P.armor_penetration_flat + P.armor_penetration_percentage >= 100)
return ..()
visible_message("[P.name] was repelled by [name]'s girth!")
diff --git a/code/modules/mob/living/basic/mining/mining_mobs.dm b/code/modules/mob/living/basic/mining/mining_mobs.dm
index efa770edc16..4bc709c10f9 100644
--- a/code/modules/mob/living/basic/mining/mining_mobs.dm
+++ b/code/modules/mob/living/basic/mining/mining_mobs.dm
@@ -27,7 +27,7 @@
/// Message to output if throwing damage is absorbed
var/throw_blocked_message = "bounces off"
-/mob/living/basic/mining/bullet_act(obj/item/projectile/P) // Reduces damage from most projectiles to curb off-screen kills
+/mob/living/basic/mining/bullet_act(obj/projectile/P) // Reduces damage from most projectiles to curb off-screen kills
if(P.damage < 30 && P.damage_type != BRUTE && has_laser_resist)
P.damage = (P.damage / 3)
visible_message("[P] has a reduced effect on [src]!")
diff --git a/code/modules/mob/living/basic/nether_mobs/nether_mobs.dm b/code/modules/mob/living/basic/nether_mobs/nether_mobs.dm
index 8b72354c24c..0bdd7bdf478 100644
--- a/code/modules/mob/living/basic/nether_mobs/nether_mobs.dm
+++ b/code/modules/mob/living/basic/nether_mobs/nether_mobs.dm
@@ -30,7 +30,7 @@
/mob/living/basic/netherworld/Initialize(mapload)
. = ..()
if(prob(grappler_chance))
- AddComponent(/datum/component/ranged_attacks, projectile_type = /obj/item/projectile/energy/demonic_grappler, projectile_sound = 'sound/weapons/wave.ogg')
+ AddComponent(/datum/component/ranged_attacks, projectile_type = /obj/projectile/energy/demonic_grappler, projectile_sound = 'sound/weapons/wave.ogg')
name = "grappling " + name
ai_controller = new /datum/ai_controller/basic_controller/simple/simple_skirmisher/prowler(src)
update_appearance(UPDATE_NAME)
diff --git a/code/modules/mob/living/basic/retaliate/combat_drone.dm b/code/modules/mob/living/basic/retaliate/combat_drone.dm
index b0b08cd82df..21d1c33583c 100644
--- a/code/modules/mob/living/basic/retaliate/combat_drone.dm
+++ b/code/modules/mob/living/basic/retaliate/combat_drone.dm
@@ -15,7 +15,7 @@
is_ranged = TRUE
ranged_burst_count = 3
ranged_burst_interval = 0.4
- projectile_type = /obj/item/projectile/beam/immolator/weak/hitscan
+ projectile_type = /obj/projectile/beam/immolator/weak/hitscan
projectile_sound = 'sound/weapons/laser3.ogg'
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)
minimum_survivable_temperature = 0
@@ -88,7 +88,7 @@
update_icons()
/// We overide the basic effect, as malfunctioning drones are in space, and use jets to dodge. Also lets us do cool effects.
-/mob/living/basic/malf_drone/advanced_bullet_dodge(mob/living/source, obj/item/projectile/hitting_projectile)
+/mob/living/basic/malf_drone/advanced_bullet_dodge(mob/living/source, obj/projectile/hitting_projectile)
if(HAS_TRAIT(source, TRAIT_IMMOBILIZED))
return NONE
if(source.stat != CONSCIOUS)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 5411923516d..004f6b5d1af 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -8,7 +8,7 @@ emp_act
*/
-/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.species.bullet_act(P, src, def_zone))
add_attack_logs(P.firer, src, "hit by [P.type] but got deflected by species '[dna.species]'")
P.reflect_back(src) //It has to be here, not on species. Why? Who knows. Testing showed me no reason why it doesn't work on species, and neither did tracing. It has to be here, or it gets qdel'd by bump.
@@ -21,7 +21,7 @@ emp_act
if(1) // proper reflection
reflected = TRUE
if(2) //If target is holding a toy sword
- var/static/list/safe_list = list(/obj/item/projectile/beam/lasertag, /obj/item/projectile/beam/practice)
+ var/static/list/safe_list = list(/obj/projectile/beam/lasertag, /obj/projectile/beam/practice)
reflected = is_type_in_list(P, safe_list) //And it's safe
if(reflected)
@@ -147,7 +147,7 @@ emp_act
log_game("[key_name(user)] set [key_name(src)] on fire with [I]")
-/mob/living/carbon/human/check_projectile_dismemberment(obj/item/projectile/P, def_zone)
+/mob/living/carbon/human/check_projectile_dismemberment(obj/projectile/P, def_zone)
var/obj/item/organ/external/affecting = get_organ(check_zone(def_zone))
if(affecting && !(affecting.limb_flags & CANNOT_DISMEMBER) && affecting.get_damage() >= (affecting.max_damage - P.dismemberment))
var/damtype = DROPLIMB_SHARP
@@ -826,7 +826,7 @@ emp_act
return FALSE
return TRUE
-/mob/living/carbon/human/projectile_hit_check(obj/item/projectile/P)
+/mob/living/carbon/human/projectile_hit_check(obj/projectile/P)
return (HAS_TRAIT(src, TRAIT_FLOORED) || HAS_TRAIT(src, TRAIT_NOKNOCKDOWNSLOWDOWN)) && !density && !(P.always_hit_living_nondense && (stat != DEAD) && !isLivingSSD(src)) // hit mobs that are intentionally lying down to prevent combat crawling.
/mob/living/carbon/human/canBeHandcuffed()
diff --git a/code/modules/mob/living/carbon/human/human_mob.dm b/code/modules/mob/living/carbon/human/human_mob.dm
index 0524833feb8..ca60e468bba 100644
--- a/code/modules/mob/living/carbon/human/human_mob.dm
+++ b/code/modules/mob/living/carbon/human/human_mob.dm
@@ -95,7 +95,7 @@
var/last_hit = 0
var/timer_id = TIMER_ID_NULL
-/mob/living/carbon/human/dummy/bullet_act(obj/item/projectile/P, def_zone)
+/mob/living/carbon/human/dummy/bullet_act(obj/projectile/P, def_zone)
if(!first_hit)
first_hit = world.time
visible_message("Started tracking hit at time [first_hit]!")
diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm
index 3b477391507..aa174f54e36 100644
--- a/code/modules/mob/living/carbon/human/species/_species.dm
+++ b/code/modules/mob/living/carbon/human/species/_species.dm
@@ -1071,7 +1071,7 @@ It'll return null if the organ doesn't correspond, so include null checks when u
/datum/species/proc/water_act(mob/living/carbon/human/M, volume, temperature, source, method = REAGENT_TOUCH)
M.adjust_bodytemperature(clamp((temperature + M.bodytemperature) * 0.5 - M.bodytemperature, BODYTEMP_COOLING_MAX, BODYTEMP_HEATING_MAX)) // Approximation for gradual heating or cooling.
-/datum/species/proc/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) //return TRUE if hit, FALSE if stopped/reflected/etc
+/datum/species/proc/bullet_act(obj/projectile/P, mob/living/carbon/human/H) //return TRUE if hit, FALSE if stopped/reflected/etc
return TRUE
/datum/species/proc/spec_hitby(atom/movable/AM, mob/living/carbon/human/H)
diff --git a/code/modules/mob/living/carbon/human/species/diona_species.dm b/code/modules/mob/living/carbon/human/species/diona_species.dm
index 746ba23bc6f..bf656aa6390 100644
--- a/code/modules/mob/living/carbon/human/species/diona_species.dm
+++ b/code/modules/mob/living/carbon/human/species/diona_species.dm
@@ -114,8 +114,8 @@
H.adjustBruteLoss(2)
..()
-/datum/species/diona/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H, def_zone)
- if(istype(P, /obj/item/projectile/energy/floramut))
+/datum/species/diona/bullet_act(obj/projectile/P, mob/living/carbon/human/H, def_zone)
+ if(istype(P, /obj/projectile/energy/floramut))
P.nodamage = TRUE
H.Weaken(1 SECONDS)
if(prob(80))
@@ -123,7 +123,7 @@
else
randmutg(H)
H.visible_message("[H] writhes for a moment as [H.p_their()] nymphs squirm and mutate.", "All of you squirm uncomfortably for a moment as you feel your genes changing.")
- else if(istype(P, /obj/item/projectile/energy/florayield))
+ else if(istype(P, /obj/projectile/energy/florayield))
P.nodamage = TRUE
var/obj/item/organ/external/organ = H.get_organ(check_zone(def_zone))
if(!organ)
diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm
index 185bf606ef9..c1b86ca1992 100644
--- a/code/modules/mob/living/carbon/human/species/golem.dm
+++ b/code/modules/mob/living/carbon/human/species/golem.dm
@@ -384,7 +384,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) && P.armor_penetration_percentage < 100)
playsound(H, 'sound/effects/shovel_dig.ogg', 70, 1)
@@ -418,7 +418,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.is_reflectable(REFLECTABILITY_ENERGY))
H.visible_message("[P] gets reflected by [H]'s glass skin!", \
@@ -485,7 +485,7 @@
if(world.time > last_teleport + teleport_cooldown && user != H)
reactive_teleport(H)
-/datum/species/golem/bluespace/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/bluespace/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
if(world.time > last_teleport + teleport_cooldown)
reactive_teleport(H)
return TRUE
@@ -604,7 +604,7 @@
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
last_banana = world.time
-/datum/species/golem/bananium/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
+/datum/species/golem/bananium/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
if(world.time > last_banana + banana_cooldown)
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
last_banana = world.time
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index a924c29823d..e7df7231330 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -46,7 +46,7 @@
/mob/living/proc/is_eyes_covered(check_glasses = TRUE, check_head = TRUE, check_mask = TRUE)
return FALSE
-/mob/living/bullet_act(obj/item/projectile/P, def_zone)
+/mob/living/bullet_act(obj/projectile/P, def_zone)
SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, P, def_zone)
//Armor
var/armor = run_armor_check(def_zone, P.flag, armor_penetration_flat = P.armor_penetration_flat, armor_penetration_percentage = P.armor_penetration_percentage)
@@ -57,7 +57,7 @@
return P.on_hit(src, armor, def_zone)
/// Tries to dodge incoming bullets if we aren't disabled for any reasons. Advised to overide with advanced effects, this is as basic example admins can apply.
-/mob/living/proc/advanced_bullet_dodge(mob/living/source, obj/item/projectile/hitting_projectile)
+/mob/living/proc/advanced_bullet_dodge(mob/living/source, obj/projectile/hitting_projectile)
SIGNAL_HANDLER
if(HAS_TRAIT(source, TRAIT_IMMOBILIZED))
@@ -79,7 +79,7 @@
advanced_bullet_dodge_chance = 0
return ATOM_PREHIT_FAILURE
-/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
///As the name suggests, this should be called to apply electric shocks.
diff --git a/code/modules/mob/living/silicon/ai/ai_mob.dm b/code/modules/mob/living/silicon/ai/ai_mob.dm
index 7218b738e8f..bbff7675a25 100644
--- a/code/modules/mob/living/silicon/ai/ai_mob.dm
+++ b/code/modules/mob/living/silicon/ai/ai_mob.dm
@@ -904,7 +904,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(target)
open_nearest_door(target)
-/mob/living/silicon/ai/bullet_act(obj/item/projectile/Proj)
+/mob/living/silicon/ai/bullet_act(obj/projectile/Proj)
..(Proj)
return 2
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index b011e02b1af..1e794197fec 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -393,7 +393,7 @@
. += msg
-/mob/living/silicon/pai/bullet_act(obj/item/projectile/Proj)
+/mob/living/silicon/pai/bullet_act(obj/projectile/Proj)
..(Proj)
if(stat != 2)
spawn(1)
diff --git a/code/modules/mob/living/silicon/robot/robot_mob.dm b/code/modules/mob/living/silicon/robot/robot_mob.dm
index e0c078655eb..82ff3460ea1 100644
--- a/code/modules/mob/living/silicon/robot/robot_mob.dm
+++ b/code/modules/mob/living/silicon/robot/robot_mob.dm
@@ -929,7 +929,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
return
-/mob/living/silicon/robot/bullet_act(obj/item/projectile/Proj)
+/mob/living/silicon/robot/bullet_act(obj/projectile/Proj)
..(Proj)
if(prob(75) && Proj.damage > 0) spark_system.start()
return 2
@@ -1212,7 +1212,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if(emagged)
to_chat(user, "The emag sparks, and flashes red. [src] has already been emagged!")
return
-
+
if(wiresexposed)
to_chat(user, "You must close the wiring panel first!")
return
@@ -1614,7 +1614,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
else
to_chat(src, "Your allegiance has not been compromised. Keep serving all Syndicate agents to the best of your abilities.")
to_chat(src, "Warning: Remote lockdown and detonation protections have been disabled due to system instability.")
-
+
if(module)
module.emag_act(flayer)
module.module_type = "Malf" // For the cool factor.
@@ -1626,7 +1626,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
/mob/living/silicon/robot/proc/remove_robot_mindslave()
clear_zeroth_law()
- if(mind)
+ if(mind)
mind.remove_antag_datum(/datum/antagonist/mindslave/malf_robot)
mind.remove_antag_datum(/datum/antagonist/mindslave/emagged_robot)
mind.remove_antag_datum(/datum/antagonist/mindslave/mindflayer_mindslave_robot)
@@ -1683,7 +1683,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
radio.recalculateChannels()
playsound(get_turf(src), 'sound/mecha/nominalnano.ogg', 75, FALSE)
-/mob/living/silicon/robot/deathsquad/bullet_act(obj/item/projectile/P)
+/mob/living/silicon/robot/deathsquad/bullet_act(obj/projectile/P)
if(istype(P) && P.is_reflectable(REFLECTABILITY_ENERGY) && P.starting)
visible_message("[P] gets reflected by [src]!", "[P] gets reflected by [src]!")
P.reflect_back(src)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index beec2010df6..351d0729b6b 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -421,7 +421,7 @@
if(!current_syringes || chambered?.BB)
return
- chambered.BB = new /obj/item/projectile/bullet/dart/syringe/heavyduty(src)
+ chambered.BB = new /obj/projectile/bullet/dart/syringe/heavyduty(src)
chambered.BB.reagents.add_reagent_list(list("toxin" = 2))
chambered.BB.name = "heavy duty syringe"
current_syringes--
diff --git a/code/modules/mob/living/silicon/silicon_mob.dm b/code/modules/mob/living/silicon/silicon_mob.dm
index d52ad84faa5..55b67a49a40 100644
--- a/code/modules/mob/living/silicon/silicon_mob.dm
+++ b/code/modules/mob/living/silicon/silicon_mob.dm
@@ -284,7 +284,7 @@
user.visible_message("[user] patches some dents on [src] with [I].")
-/mob/living/silicon/bullet_act(obj/item/projectile/Proj)
+/mob/living/silicon/bullet_act(obj/projectile/Proj)
if(!Proj.nodamage)
var/damage = run_armor(Proj.damage, Proj.damage_type, Proj.flag, 0, Proj.armor_penetration_flat, Proj.armor_penetration_percentage)
switch(Proj.damage_type)
diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm
index 8d80e665ced..ce1fe8109cc 100644
--- a/code/modules/mob/living/simple_animal/animal_defense.dm
+++ b/code/modules/mob/living/simple_animal/animal_defense.dm
@@ -83,7 +83,7 @@
apply_damage(damage, damagetype, null, getarmor(armor_type = armorcheck))
return TRUE
-/mob/living/simple_animal/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/bullet_act(obj/projectile/Proj)
if(!Proj)
return
apply_damage(Proj.damage, Proj.damage_type)
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 12fdc97d080..a4390d38651 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -515,7 +515,7 @@
add_fingerprint(user)
user.visible_message("[user] repairs [src]!","You repair [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, 1, src)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index b8b78faac8e..f92bc1f9c42 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -38,7 +38,7 @@
var/weapons_check = TRUE //If true, arrest people for weapons if they don't have access
var/check_records = TRUE //Does it check security records?
var/no_handcuffs = FALSE //If true, don't handcuff
- var/projectile = /obj/item/projectile/beam/disabler //Holder for projectile type
+ var/projectile = /obj/projectile/beam/disabler //Holder for projectile type
var/shoot_sound = 'sound/weapons/taser.ogg'
var/baton_delayed = FALSE
var/obj/item/melee/baton/infinite_cell/baton = null // stunbaton bot uses to melee attack
@@ -200,15 +200,15 @@
icon_state = "[lasercolor]ed209[on]"
set_weapon()
-/mob/living/simple_animal/bot/ed209/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/bot/ed209/bullet_act(obj/projectile/Proj)
if(!disabled)
var/lasertag_check = FALSE
if(lasercolor == "b")
- if(istype(Proj, /obj/item/projectile/beam/lasertag/redtag))
+ if(istype(Proj, /obj/projectile/beam/lasertag/redtag))
lasertag_check = TRUE
else if(lasercolor == "r")
- if(istype(Proj, /obj/item/projectile/beam/lasertag/bluetag))
+ if(istype(Proj, /obj/projectile/beam/lasertag/bluetag))
lasertag_check = TRUE
if(lasertag_check)
@@ -219,7 +219,7 @@
addtimer(CALLBACK(src, PROC_REF(unset_disabled)), 10 SECONDS)
return TRUE
- if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
+ 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)
retaliate(Proj.firer)
@@ -440,16 +440,16 @@
shoot_sound = 'sound/weapons/laser.ogg'
if(emagged)
if(lasercolor)
- projectile = /obj/item/projectile/beam/disabler
+ projectile = /obj/projectile/beam/disabler
else
- projectile = /obj/item/projectile/beam
+ projectile = /obj/projectile/beam
else
if(!lasercolor)
- projectile = /obj/item/projectile/beam/disabler
+ projectile = /obj/projectile/beam/disabler
else if(lasercolor == "b")
- projectile = /obj/item/projectile/beam/lasertag/bluetag
+ projectile = /obj/projectile/beam/lasertag/bluetag
else if(lasercolor == "r")
- projectile = /obj/item/projectile/beam/lasertag/redtag
+ projectile = /obj/projectile/beam/lasertag/redtag
/mob/living/simple_animal/bot/ed209/proc/shootAt(mob/target)
if(lastfired && world.time - lastfired < shot_delay)
@@ -469,7 +469,7 @@
if(!isturf(U))
return
- var/obj/item/projectile/A = new projectile(loc)
+ var/obj/projectile/A = new projectile(loc)
playsound(loc, shoot_sound, 50, 1)
A.current = U
A.yo = U.y - T.y
diff --git a/code/modules/mob/living/simple_animal/bot/griefsky.dm b/code/modules/mob/living/simple_animal/bot/griefsky.dm
index e122750b31e..e2b333a103d 100644
--- a/code/modules/mob/living/simple_animal/bot/griefsky.dm
+++ b/code/modules/mob/living/simple_animal/bot/griefsky.dm
@@ -69,7 +69,7 @@
var/mob/living/carbon/C = A
sword_attack(C)
-/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized
+/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/projectile/P) //so uncivilized
retaliate(P.firer)
if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on
visible_message("[src] deflects [P] with its energy swords!")
diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm
index c29d9d2a7b9..2855cef2cc7 100644
--- a/code/modules/mob/living/simple_animal/bot/honkbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm
@@ -156,8 +156,8 @@
if(HAS_TRAIT(src, TRAIT_CMAGGED))
. += "Yellow ooze seems to be seeping from the case..."
-/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)
..()
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index ff0fed1d89c..75b333a951c 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -223,7 +223,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))
unload(0)
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index 01bf64f0104..89928abf395 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -207,14 +207,14 @@
declare_arrests = FALSE
icon_state = "[base_icon][on]"
-/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)
retaliate(Proj.firer)
..()
-/mob/living/simple_animal/bot/secbot/projectile_hit_check(obj/item/projectile/P)
+/mob/living/simple_animal/bot/secbot/projectile_hit_check(obj/projectile/P)
return FALSE
diff --git a/code/modules/mob/living/simple_animal/bot/syndicate_bots.dm b/code/modules/mob/living/simple_animal/bot/syndicate_bots.dm
index 6b09e40452b..ddc4def7093 100644
--- a/code/modules/mob/living/simple_animal/bot/syndicate_bots.dm
+++ b/code/modules/mob/living/simple_animal/bot/syndicate_bots.dm
@@ -150,7 +150,7 @@
if(lastfired && world.time - lastfired < shot_delay)
return
lastfired = world.time
- var/obj/item/projectile/P = new projectile(loc)
+ var/obj/projectile/P = new projectile(loc)
playsound(loc, shoot_sound, 100, 1)
P.current = loc
P.starting = loc
@@ -176,7 +176,7 @@
qdel(src)
/mob/living/simple_animal/bot/ed209/syndicate/set_weapon()
- projectile = /obj/item/projectile/bullet/a40mm
+ projectile = /obj/projectile/bullet/a40mm
/mob/living/simple_animal/bot/ed209/syndicate/emp_act(severity)
return
diff --git a/code/modules/mob/living/simple_animal/clockwork_constructs.dm b/code/modules/mob/living/simple_animal/clockwork_constructs.dm
index 5fd4b91745f..942e38dae78 100644
--- a/code/modules/mob/living/simple_animal/clockwork_constructs.dm
+++ b/code/modules/mob/living/simple_animal/clockwork_constructs.dm
@@ -61,7 +61,7 @@
damage_shield()
playsound(src,'sound/hallucinations/veryfar_noise.ogg', 40, 1)
-/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/bullet_act(obj/projectile/Proj)
if(shield_health > 0)
damage_shield()
to_chat(src, "Your shield blocks the attack!")
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index a2e9479bf26..a3c5c6c3c9f 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -138,7 +138,7 @@
AIStatus = AI_ON
environment_smash = 1 //only token destruction, don't smash the cult wall NO STOP
-/mob/living/simple_animal/hostile/construct/armoured/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/construct/armoured/bullet_act(obj/projectile/P)
if(P.is_reflectable(REFLECTABILITY_ENERGY))
if(P.damage_type == BRUTE || P.damage_type == BURN)
adjustBruteLoss(P.damage * 0.8) // 16 hit with security laser gun
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 82c6bc9dce8..2e00076bdf8 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -621,7 +621,7 @@
var/turf/U = get_turf(target)
if(!T || !U)
return
- var/obj/item/projectile/beam/A = new /obj/item/projectile/beam(loc)
+ var/obj/projectile/beam/A = new /obj/projectile/beam(loc)
A.icon = 'icons/effects/genetics.dmi'
A.icon_state = "eyelasers"
playsound(src.loc, 'sound/weapons/taser2.ogg', 75, 1)
diff --git a/code/modules/mob/living/simple_animal/hostile/headslug.dm b/code/modules/mob/living/simple_animal/hostile/headslug.dm
index 4dcdc0e41d5..380059e147d 100644
--- a/code/modules/mob/living/simple_animal/hostile/headslug.dm
+++ b/code/modules/mob/living/simple_animal/hostile/headslug.dm
@@ -63,7 +63,7 @@
to_chat(src, "With our egg laid, our death approaches rapidly...")
addtimer(CALLBACK(src, PROC_REF(death)), 25 SECONDS)
-/mob/living/simple_animal/hostile/headslug/projectile_hit_check(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/headslug/projectile_hit_check(obj/projectile/P)
return (stat || FALSE)
/obj/item/organ/internal/body_egg/changeling_egg
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 3a424121441..2bd407df65d 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -122,7 +122,7 @@
if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client && user)
FindTarget(list(user), 1)
-/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)
@@ -397,7 +397,7 @@
playsound(src, projectilesound, 100, 1)
casing.fire(targeted_atom, src, zone_override = ran_zone(), firer_source_atom = src)
else if(projectiletype)
- var/obj/item/projectile/P = new projectiletype(startloc)
+ var/obj/projectile/P = new projectiletype(startloc)
playsound(src, projectilesound, 100, 1)
P.current = startloc
P.starting = startloc
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm
index 45241004609..e7a85631280 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm
@@ -359,7 +359,7 @@ Difficulty: Hard
addtimer(CALLBACK(src, PROC_REF(body_shield)), BODY_SHIELD_COOLDOWN_TIME)
-/mob/living/simple_animal/hostile/megafauna/ancient_robot/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/megafauna/ancient_robot/bullet_act(obj/projectile/P)
if(!body_shield_enabled)
return ..()
do_sparks(2, 1, src)
@@ -435,7 +435,7 @@ Difficulty: Hard
var/turf/S = get_turf(src)
if(!S || !T)
return
- var/obj/item/projectile/energy/tesla_bolt/O = new /obj/item/projectile/energy/tesla_bolt(S)
+ var/obj/projectile/energy/tesla_bolt/O = new /obj/projectile/energy/tesla_bolt(S)
O.current = S
O.yo = T.y - S.y
O.xo = T.x - S.x
@@ -488,7 +488,7 @@ Difficulty: Hard
var/turf/T = get_turf(target)
if(!spot || !T)
return
- var/obj/item/projectile/bullet/rock/O = new /obj/item/projectile/bullet/rock(spot)
+ var/obj/projectile/bullet/rock/O = new /obj/projectile/bullet/rock(spot)
O.current = spot
O.yo = T.y - spot.y
O.xo = T.x - spot.x
@@ -662,7 +662,7 @@ Difficulty: Hard
check_friendly_fire = 1
ranged = TRUE
projectilesound = 'sound/weapons/gunshots/gunshot.ogg'
- projectiletype = /obj/item/projectile/bullet/ancient_robot_bullet
+ projectiletype = /obj/projectile/bullet/ancient_robot_bullet
attacktext = "stomps on"
armor_penetration_percentage = 50
melee_damage_lower = 15
@@ -707,7 +707,7 @@ Difficulty: Hard
..()
health_and_snap_check(TRUE)
-/mob/living/simple_animal/hostile/ancient_robot_leg/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/ancient_robot_leg/bullet_act(obj/projectile/P)
if(core.stat == CONSCIOUS && !core.target && core.AIStatus != AI_OFF && !core.client)
if(P.firer && get_dist(core, P.firer) <= core.aggro_vision_range)
core.FindTarget(list(P.firer), 1)
@@ -809,10 +809,10 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/ancient_robot_leg/electrocute_act(shock_damage, source, siemens_coeff, flags)
return
-/obj/item/projectile/bullet/ancient_robot_bullet
+/obj/projectile/bullet/ancient_robot_bullet
damage = 8
-/obj/item/projectile/bullet/rock
+/obj/projectile/bullet/rock
name= "thrown rock"
damage = 25
icon = 'icons/obj/meteor.dmi'
@@ -827,7 +827,7 @@ Difficulty: Hard
/// Leaving here for adminbus / so vetus still uses it.
-/obj/item/projectile/energy/tesla_bolt
+/obj/projectile/energy/tesla_bolt
name = "shock bolt"
icon_state = "purple_laser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser
@@ -838,16 +838,16 @@ Difficulty: Hard
/obj/item/ammo_casing/energy/tesla_bolt/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
..()
- var/obj/item/projectile/energy/tesla_bolt/P = BB
+ var/obj/projectile/energy/tesla_bolt/P = BB
spawn(1)
P.chain = P.Beam(user, icon_state = "purple_lightning", icon = 'icons/effects/effects.dmi', time = 1000, maxdistance = 30)
-/obj/item/projectile/energy/tesla_bolt/on_hit(atom/target)
+/obj/projectile/energy/tesla_bolt/on_hit(atom/target)
. = ..()
tesla_zap(src, zap_range, power, zap_flags)
qdel(src)
-/obj/item/projectile/energy/tesla_bolt/Bump(atom/A) // Don't want the projectile hitting the legs
+/obj/projectile/energy/tesla_bolt/Bump(atom/A) // Don't want the projectile hitting the legs
if(!istype(/mob/living/simple_animal/hostile/ancient_robot_leg, A))
return ..()
var/turf/target_turf = get_turf(A)
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 d7d96239e68..783398915bc 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
@@ -32,7 +32,7 @@ Difficulty: Medium
light_color = "#E4C7C5"
speak_emote = list("roars")
speed = 3
- projectiletype = /obj/item/projectile/kinetic/miner
+ projectiletype = /obj/projectile/kinetic/miner
projectilesound = 'sound/weapons/kenetic_accel.ogg'
ranged = TRUE
ranged_cooldown_time = 16
@@ -120,13 +120,13 @@ Difficulty: Medium
..()
target.remove_stun_absorption("miner")
-/obj/item/projectile/kinetic/miner
+/obj/projectile/kinetic/miner
damage = 20
speed = 0.9
icon_state = "ka_tracer"
range = MINER_DASH_RANGE
-/obj/item/projectile/kinetic/miner/enraged
+/obj/projectile/kinetic/miner/enraged
damage = 35
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/adjustHealth(amount, updating_health = TRUE)
@@ -201,7 +201,7 @@ Difficulty: Medium
miner_saw = new /obj/item/melee/energy/cleaving_saw(src) //Real saw for real men.
dash_cooldown_to_use = 0.5 SECONDS //Becomes a teleporting shit.
ranged_cooldown_time = 5 //They got some cooldown mods.
- projectiletype = /obj/item/projectile/kinetic/miner/enraged
+ projectiletype = /obj/projectile/kinetic/miner/enraged
maxHealth = 1800
health = 1800 //Bit more of a challenge.
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 fb738453aa2..1541c5fb335 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -513,7 +513,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)
@@ -654,7 +654,7 @@ Difficulty: Hard
second_life = TRUE
enraged = TRUE
rapid_melee = 12
- projectiletype = /obj/item/projectile/magic/arcane_barrage/blood
+ projectiletype = /obj/projectile/magic/arcane_barrage/blood
projectilesound = 'sound/effects/splat.ogg'
deathmessage = null
death_sound = 'sound/hallucinations/veryfar_noise.ogg'
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 8523928e320..db9392c0fce 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -222,7 +222,7 @@ Difficulty: Very Hard
if(!startloc || !endloc || endloc == loc)
return
- var/obj/item/projectile/P = new /obj/item/projectile/colossus(startloc)
+ var/obj/projectile/P = new /obj/projectile/colossus(startloc)
P.preparePixelProjectile(endloc, startloc)
P.firer = src
P.firer_source_atom = src
@@ -334,7 +334,7 @@ Difficulty: Very Hard
target = new_target
INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, 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 == CONSCIOUS)
var/obj/effect/temp_visual/at_shield/AT = new /obj/effect/temp_visual/at_shield(loc, src)
var/random_x = rand(-32, 32)
@@ -356,14 +356,14 @@ Difficulty: Very Hard
for(var/I in 1 to 2)
loot += pick_n_take(choices)
-/obj/item/projectile/colossus
+/obj/projectile/colossus
name = "death bolt"
icon_state = "chronobolt"
damage = 25
armor_penetration_percentage = 100
speed = 2
-/obj/item/projectile/colossus/on_hit(atom/target, blocked = 0)
+/obj/projectile/colossus/on_hit(atom/target, blocked = 0)
. = ..()
if(isturf(target) || isobj(target))
target.ex_act(EXPLODE_HEAVY)
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 bf5ee946c59..6fa856fb7a4 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -549,7 +549,7 @@ Difficulty: Hard
burst_range = initial(burst_range) + round(anger_modifier * 0.08)
beam_range = initial(beam_range) + round(anger_modifier * 0.12)
-/mob/living/simple_animal/hostile/megafauna/hierophant/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/hostile/megafauna/hierophant/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)
@@ -608,7 +608,7 @@ Difficulty: Hard
if(mover == caster.pulledby)
return TRUE
if(isprojectile(mover))
- var/obj/item/projectile/P = mover
+ var/obj/projectile/P = mover
if(P.firer == caster)
return TRUE
if(mover == caster)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining/abandoned_minebot.dm b/code/modules/mob/living/simple_animal/hostile/mining/abandoned_minebot.dm
index 76531edc994..e94419e8135 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining/abandoned_minebot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining/abandoned_minebot.dm
@@ -19,7 +19,7 @@
environment_smash = ENVIRONMENT_SMASH_STRUCTURES
attacktext = "drills into"
attack_sound = 'sound/weapons/circsawhit.ogg'
- projectiletype = /obj/item/projectile/kinetic
+ projectiletype = /obj/projectile/kinetic
projectilesound = 'sound/weapons/kenetic_accel.ogg'
speak_emote = list("states")
throw_message = "does not go through the armor of"
@@ -70,9 +70,9 @@
. += "[rand(-30, 110)]% mod capacity remaining.\nThere is a module installed, using [rand(-5, 35)]% capacity.\n...or at least you think so."
/mob/living/simple_animal/hostile/asteroid/abandoned_minebot/CanPass(atom/movable/O)
- if(!istype(O, /obj/item/projectile/kinetic))
+ if(!istype(O, /obj/projectile/kinetic))
return ..()
- var/obj/item/projectile/kinetic/K = O
+ 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
diff --git a/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm
index 697e3cdecca..96d32d9f5df 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm
@@ -128,7 +128,7 @@
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/shoot_projectile(turf/marker, set_angle, is_teleshot, is_trishot)
var/turf/startloc = get_turf(src)
if(!is_teleshot)
- var/obj/item/projectile/H = new /obj/item/projectile/herald(startloc)
+ var/obj/projectile/H = new /obj/projectile/herald(startloc)
H.preparePixelProjectile(marker, startloc)
H.firer = src
H.firer_source_atom = src
@@ -139,7 +139,7 @@
shoot_projectile(marker, set_angle + 15, FALSE, FALSE)
shoot_projectile(marker, set_angle - 15, FALSE, FALSE)
else
- var/obj/item/projectile/H = new /obj/item/projectile/herald/teleshot(startloc)
+ var/obj/projectile/H = new /obj/projectile/herald/teleshot(startloc)
H.preparePixelProjectile(marker, startloc)
H.firer = src
H.firer_source_atom = src
@@ -222,19 +222,19 @@
my_master = null
. = ..()
-/obj/item/projectile/herald
+/obj/projectile/herald
name = "death bolt"
icon_state = "chronobolt"
damage = 15
armor_penetration_percentage = 50
speed = 2
-/obj/item/projectile/herald/teleshot
+/obj/projectile/herald/teleshot
name = "golden bolt"
damage = 0
color = rgb(255,255,102)
-/obj/item/projectile/herald/prehit(atom/target)
+/obj/projectile/herald/prehit(atom/target)
if(ismob(target) && ismob(firer))
var/mob/living/mob_target = target
if(mob_target.faction_check_mob(firer))
@@ -244,13 +244,13 @@
if(mob_target.buckled && mob_target.stat == DEAD)
mob_target.dust() //no body cheese
-/obj/item/projectile/herald/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/herald/on_hit(atom/target, blocked = FALSE)
. = ..()
if(ismineralturf(target))
var/turf/simulated/mineral/M = target
M.gets_drilled()
-/obj/item/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE)
. = ..()
if(!istype(target, /mob/living/simple_animal/hostile/asteroid/elite/herald))
firer.forceMove(get_turf(src))
diff --git a/code/modules/mob/living/simple_animal/hostile/mining/mining.dm b/code/modules/mob/living/simple_animal/hostile/mining/mining.dm
index 4ba267e3448..689cf8c8b5e 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining/mining.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining/mining.dm
@@ -32,7 +32,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 == CONSCIOUS)
Aggro()
if(P.damage < 30 && P.damage_type != BRUTE && has_laser_resist)
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm
index 47357d0a897..5bc8b1275c1 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm
@@ -511,7 +511,7 @@
return ..()
-/mob/living/simple_animal/hostile/syndicate/bullet_act(obj/item/projectile/Proj)
+/mob/living/simple_animal/hostile/syndicate/bullet_act(obj/projectile/Proj)
if(!Proj)
return
if(((melee_type == MELEE_WEAPON_DSWORD || syndie_flags & ESHIELD) || (melee_type == MELEE_WEAPON_ESWORD && prob(reflect_chance))) && Proj.is_reflectable(REFLECTABILITY_ENERGY))
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
index 49032fa3112..45003d25e2d 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
@@ -172,7 +172,7 @@
/obj/structure/spider/terrorweb/CanPass(atom/movable/mover, border_dir)
if(isterrorspider(mover))
return TRUE
- if(istype(mover, /obj/item/projectile/terrorqueenspit))
+ if(istype(mover, /obj/projectile/terrorqueenspit))
return TRUE
if(isliving(mover))
var/mob/living/M = mover
@@ -202,7 +202,7 @@
if(!QDELETED(C) && C.loc == loc)
qdel(src)
-/obj/structure/spider/terrorweb/bullet_act(obj/item/projectile/Proj)
+/obj/structure/spider/terrorweb/bullet_act(obj/projectile/Proj)
if(Proj.damage_type != BRUTE && Proj.damage_type != BURN)
visible_message("[src] is undamaged by [Proj]!")
// Webs don't care about disablers, tasers, etc. Or toxin damage. They're organic, but not alive.
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress_terror.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress_terror.dm
index 5ce6056da41..90c09fa1dd6 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress_terror.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress_terror.dm
@@ -22,7 +22,7 @@
ai_playercontrol_allowtype = 0
canlay = 1000
spider_tier = TS_TIER_5
- projectiletype = /obj/item/projectile/terrorqueenspit/empress
+ projectiletype = /obj/projectile/terrorqueenspit/empress
icon = 'icons/mob/terrorspider64.dmi'
pixel_x = -16
mob_size = MOB_SIZE_LARGE
@@ -107,6 +107,6 @@
qdel(T)
to_chat(src, "All Terror Spiders, except yourself, will die off shortly.")
-/obj/item/projectile/terrorqueenspit/empress
+/obj/projectile/terrorqueenspit/empress
damage = 90
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen_terror.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen_terror.dm
index d359fa58e56..a96be22ea2f 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen_terror.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen_terror.dm
@@ -33,7 +33,7 @@
retreat_distance = 5
minimum_distance = 5
projectilesound = 'sound/weapons/pierce.ogg'
- projectiletype = /obj/item/projectile/terrorqueenspit
+ projectiletype = /obj/projectile/terrorqueenspit
spider_tier = TS_TIER_4
loudspeaker = TRUE
spider_opens_doors = 2
@@ -352,7 +352,7 @@
if(is_station_level((get_turf(src)).z) && stat != DEAD)
return list(ASSIGNMENT_SECURITY = 3, ASSIGNMENT_CREW = 30, ASSIGNMENT_MEDICAL = 2)
-/obj/item/projectile/terrorqueenspit
+/obj/projectile/terrorqueenspit
name = "acid spit"
damage = 40
icon_state = "toxin"
diff --git a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm
index e4b7ae82da3..b28dd794cd2 100644
--- a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm
@@ -49,7 +49,7 @@
ranged = TRUE
retreat_distance = 5
minimum_distance = 5
- projectiletype = /obj/item/projectile/snowball
+ projectiletype = /obj/projectile/snowball
/mob/living/simple_animal/hostile/winter/reindeer
name = "reindeer"
@@ -104,7 +104,7 @@
maxHealth = 200 //DID YOU REALLY BELIEVE IT WOULD BE THIS EASY!??!!
health = 200
ranged = TRUE
- projectiletype = /obj/item/projectile/ornament
+ projectiletype = /obj/projectile/ornament
retreat_distance = 5
minimum_distance = 5
@@ -118,7 +118,7 @@
ranged = TRUE
rapid = 3
speed = 0 //he's lost some weight from the fighting
- projectiletype = /obj/item/projectile/ornament
+ projectiletype = /obj/projectile/ornament
retreat_distance = 3
minimum_distance = 3
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 22f8854565b..a26ec5a2e05 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -192,7 +192,7 @@
drop_held_item(FALSE)
//Bullets
-/mob/living/simple_animal/parrot/bullet_act(obj/item/projectile/P)
+/mob/living/simple_animal/parrot/bullet_act(obj/projectile/P)
..()
if(stat == CONSCIOUS && !client)
if(parrot_state == PARROT_PERCH)
diff --git a/code/modules/mob/living/simple_animal/slime/slime_mob.dm b/code/modules/mob/living/simple_animal/slime/slime_mob.dm
index eb76f36d791..f329ebb7df3 100644
--- a/code/modules/mob/living/simple_animal/slime/slime_mob.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime_mob.dm
@@ -263,7 +263,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)
if(!Proj)
return
attacked += 10
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 301ffaed121..a9f4ae5ca17 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -20,7 +20,7 @@
return TRUE
return (!mover.density || !density || horizontal)
-/mob/proc/projectile_hit_check(obj/item/projectile/P)
+/mob/proc/projectile_hit_check(obj/projectile/P)
return !(P.always_hit_living_nondense && (stat != DEAD) && !isLivingSSD(src)) && !density
/client/verb/toggle_throw_mode()
diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm
index 37618b86127..7189ffde5d2 100644
--- a/code/modules/mod/modules/modules_antag.dm
+++ b/code/modules/mod/modules/modules_antag.dm
@@ -318,7 +318,7 @@
return
unstealth(source)
-/obj/item/mod/module/stealth/proc/on_bullet_act(datum/source, obj/item/projectile)
+/obj/item/mod/module/stealth/proc/on_bullet_act(datum/source, obj/projectile)
SIGNAL_HANDLER
unstealth(source)
diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm
index 4ec0a69fdbd..9d52eb4ccd2 100644
--- a/code/modules/mod/modules/modules_engineering.dm
+++ b/code/modules/mod/modules/modules_engineering.dm
@@ -119,16 +119,16 @@
. = ..()
if(!.)
return
- var/obj/item/projectile/tether = new /obj/item/projectile/tether(get_turf(mod.wearer))
+ var/obj/projectile/tether = new /obj/projectile/tether(get_turf(mod.wearer))
tether.original = target
tether.firer = mod.wearer
tether.preparePixelProjectile(target, mod.wearer)
tether.fire()
playsound(src, 'sound/weapons/batonextend.ogg', 25, TRUE)
- INVOKE_ASYNC(tether, TYPE_PROC_REF(/obj/item/projectile/tether, make_chain))
+ INVOKE_ASYNC(tether, TYPE_PROC_REF(/obj/projectile/tether, make_chain))
drain_power(use_power_cost)
-/obj/item/projectile/tether
+/obj/projectile/tether
name = "tether"
icon_state = "tether_projectile"
icon = 'icons/obj/clothing/modsuit/mod_modules.dmi'
@@ -141,18 +141,18 @@
///How fast the tether will throw the user at the target
var/yank_speed = 1
-/obj/item/projectile/tether/proc/make_chain()
+/obj/projectile/tether/proc/make_chain()
if(firer)
chain = Beam(firer, chain_icon_state, icon, time = 10 SECONDS, maxdistance = range)
-/obj/item/projectile/tether/on_hit(atom/target)
+/obj/projectile/tether/on_hit(atom/target)
. = ..()
if(firer && isliving(firer))
var/mob/living/L = firer
L.apply_status_effect(STATUS_EFFECT_IMPACT_IMMUNE)
L.throw_at(target, 15, yank_speed, L, FALSE, FALSE, callback = CALLBACK(L, TYPE_PROC_REF(/mob/living, remove_status_effect), STATUS_EFFECT_IMPACT_IMMUNE), block_movement = FALSE)
-/obj/item/projectile/tether/Destroy()
+/obj/projectile/tether/Destroy()
QDEL_NULL(chain)
return ..()
diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm
index 795717a8432..b0bcc241eae 100644
--- a/code/modules/mod/modules/modules_supply.dm
+++ b/code/modules/mod/modules/modules_supply.dm
@@ -474,7 +474,7 @@
. = ..()
if(!.)
return
- var/obj/item/projectile/bomb = new /obj/item/projectile/bullet/reusable/mining_bomb(get_turf(mod.wearer))
+ var/obj/projectile/bomb = new /obj/projectile/bullet/reusable/mining_bomb(get_turf(mod.wearer))
bomb.original = target
bomb.firer = mod.wearer
bomb.preparePixelProjectile(target, mod.wearer)
@@ -494,7 +494,7 @@
return
on_deactivation()
-/obj/item/projectile/bullet/reusable/mining_bomb
+/obj/projectile/bullet/reusable/mining_bomb
name = "mining bomb"
desc = "A bomb. Why are you staring at this?"
icon_state = "mine_bomb"
@@ -506,7 +506,7 @@
light_color = LIGHT_COLOR_ORANGE
ammo_type = /obj/structure/mining_bomb
-/obj/item/projectile/bullet/reusable/mining_bomb/handle_drop()
+/obj/projectile/bullet/reusable/mining_bomb/handle_drop()
if(!dropped)
new ammo_type(loc, firer)
dropped = TRUE
@@ -566,7 +566,7 @@
object.take_damage(damage, BRUTE, BOMB)
qdel(src)
-/obj/item/projectile/bullet/reusable/mining_bomb/mecha
+/obj/projectile/bullet/reusable/mining_bomb/mecha
ammo_type = /obj/structure/mining_bomb/mecha
/obj/structure/mining_bomb/mecha
diff --git a/code/modules/power/engines/singularity/emitter.dm b/code/modules/power/engines/singularity/emitter.dm
index 13ffc61892a..41c5fc1fb7b 100644
--- a/code/modules/power/engines/singularity/emitter.dm
+++ b/code/modules/power/engines/singularity/emitter.dm
@@ -33,7 +33,7 @@
/// Locked by an ID card
var/locked = FALSE
- var/projectile_type = /obj/item/projectile/beam/emitter/hitscan
+ var/projectile_type = /obj/projectile/beam/emitter/hitscan
var/projectile_sound = 'sound/weapons/emitter.ogg'
var/datum/effect_system/spark_spread/sparks
@@ -282,7 +282,7 @@
return FALSE
/obj/machinery/power/emitter/proc/fire_beam()
- 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/engines/singularity/field_generator.dm b/code/modules/power/engines/singularity/field_generator.dm
index d10420963a4..0cfa4965708 100644
--- a/code/modules/power/engines/singularity/field_generator.dm
+++ b/code/modules/power/engines/singularity/field_generator.dm
@@ -180,7 +180,7 @@ field_generator energy 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 && !Proj.nodamage)
energy = min(energy + Proj.damage, FIELD_GENERATOR_MAX_ENERGY)
check_energy_level()
diff --git a/code/modules/power/engines/singularity/singularity.dm b/code/modules/power/engines/singularity/singularity.dm
index 225feefc09e..dd050246370 100644
--- a/code/modules/power/engines/singularity/singularity.dm
+++ b/code/modules/power/engines/singularity/singularity.dm
@@ -129,7 +129,7 @@ GLOBAL_VAR_INIT(global_singulo_id, 1)
return
-/obj/singularity/bullet_act(obj/item/projectile/P)
+/obj/singularity/bullet_act(obj/projectile/P)
qdel(P)
return 0 //Will there be an impact? Who knows. Will we see it? No.
diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm
index 4ca433d3072..fef121f8caf 100644
--- a/code/modules/power/engines/supermatter/supermatter.dm
+++ b/code/modules/power/engines/supermatter/supermatter.dm
@@ -692,11 +692,11 @@
countdown()
return 1
-/obj/machinery/atmospherics/supermatter_crystal/bullet_act(obj/item/projectile/proj)
+/obj/machinery/atmospherics/supermatter_crystal/bullet_act(obj/projectile/proj)
var/turf/L = loc
if(!istype(L))
return FALSE
- if(!istype(proj, /obj/item/projectile/beam/emitter/hitscan) && power_changes)
+ if(!istype(proj, /obj/projectile/beam/emitter/hitscan) && power_changes)
investigate_log("has been hit by [proj] fired by [key_name(proj.firer)]", INVESTIGATE_SUPERMATTER)
if(proj.flag != BULLET)
if(power_changes) //This needs to be here I swear
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index fed0e72ce9a..7f170a742fb 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -11,7 +11,7 @@
var/casing_drop_sound = "casingdrop" //What sound should play when this ammo hits the ground
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/delay = 0 //Delay for energy weapons
diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm
index d2dce8c6b87..219634d28b5 100644
--- a/code/modules/projectiles/ammunition/ammo_casings.dm
+++ b/code/modules/projectiles/ammunition/ammo_casings.dm
@@ -3,7 +3,7 @@
desc = "A .357 magnum cartridge, often used in revolvers. Very deadly."
icon_state = "magnum_steel"
caliber = "357"
- projectile_type = /obj/item/projectile/bullet
+ projectile_type = /obj/projectile/bullet
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
@@ -12,44 +12,44 @@
desc = "A 9mm pistol cartridge. This one has a rubber tip for less-lethal takedowns."
icon_state = "pistol_brass_rubber"
caliber = "9mm"
- projectile_type = /obj/item/projectile/bullet/weakbullet4
+ projectile_type = /obj/projectile/bullet/weakbullet4
/obj/item/ammo_casing/a762
name = "7.62mm round"
desc = "A 7.62mm rifle cartridge, often used in Soviet rifles."
icon_state = "rifle_brass"
caliber = "a762"
- projectile_type = /obj/item/projectile/bullet
+ projectile_type = /obj/projectile/bullet
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
/obj/item/ammo_casing/a762/enchanted
name = "enchanted 7.62 round"
desc = "A 7.62mm rifle cartridge. It sparkles with magic."
- projectile_type = /obj/item/projectile/bullet/weakbullet3
+ projectile_type = /obj/projectile/bullet/weakbullet3
/obj/item/ammo_casing/a50
name = ".50 AE round"
desc = "A .50AE pistol cartridge, used in large caliber handguns."
icon_state = "magnum_steel"
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet
+ projectile_type = /obj/projectile/bullet
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
/obj/item/ammo_casing/c38/invisible
- projectile_type = /obj/item/projectile/bullet/mime
+ projectile_type = /obj/projectile/bullet/mime
muzzle_flash_effect = null // invisible eh
/obj/item/ammo_casing/c38/invisible/fake
- projectile_type = /obj/item/projectile/bullet/mime/fake
+ projectile_type = /obj/projectile/bullet/mime/fake
/obj/item/ammo_casing/c10mm
name = "10mm round"
desc = "A 10mm pistol cartridge, commonly used in Syndicate sidearms."
icon_state = "pistol_steel"
caliber = "10mm"
- projectile_type = /obj/item/projectile/bullet/midbullet3
+ projectile_type = /obj/projectile/bullet/midbullet3
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -57,51 +57,51 @@
name = "10mm armor piercing round"
desc = "A 10mm pistol cartridge, with a Teflon coating to increase armor penetration, at the cost of damage."
icon_state = "pistol_steel_ap"
- projectile_type = /obj/item/projectile/bullet/midbullet3/ap
+ projectile_type = /obj/projectile/bullet/midbullet3/ap
/obj/item/ammo_casing/c10mm/fire
name = "10mm incendiary round"
desc = "A 10mm pistol cartridge, containing a payload of flammable chemicals."
icon_state = "pistol_steel_incin"
- projectile_type = /obj/item/projectile/bullet/midbullet3/fire
+ projectile_type = /obj/projectile/bullet/midbullet3/fire
muzzle_flash_color = LIGHT_COLOR_FIRE
/obj/item/ammo_casing/c10mm/hp
name = "10mm hollow point round"
desc = "A 10mm pistol cartridge, with an expanding tip that greatly increases stopping power, at the cost of armor penetration."
icon_state = "pistol_steel_hollow"
- projectile_type = /obj/item/projectile/bullet/midbullet3/hp
+ projectile_type = /obj/projectile/bullet/midbullet3/hp
/obj/item/ammo_casing/overgrown
name = "overgrown round"
desc = "A pistol cartridge... probably. Why does it resemble a pea?"
- projectile_type = /obj/item/projectile/bullet/midbullet3/overgrown
+ projectile_type = /obj/projectile/bullet/midbullet3/overgrown
icon_state = "peashooter_bullet"
/obj/item/ammo_casing/c9mm
name = "9mm round"
desc = "A 9mm pistol cartridge, commonly used in handguns and submachine guns."
caliber = "9mm"
- projectile_type = /obj/item/projectile/bullet/weakbullet3
+ projectile_type = /obj/projectile/bullet/weakbullet3
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
/obj/item/ammo_casing/c9mm/ap
name = "9mm armor piercing round"
desc = "A 9mm pistol cartridge, with a Teflon coating to increase armor penetration, at the cost of stopping power."
icon_state = "pistol_brass_ap"
- projectile_type = /obj/item/projectile/bullet/armourpiercing
+ projectile_type = /obj/projectile/bullet/armourpiercing
/obj/item/ammo_casing/c9mm/tox
name = "9mm toxic round"
desc = "A 9mm pistol cartridge, tipped with lethal toxins. Likely a war crime."
icon_state = "pistol_brass_toxin"
- projectile_type = /obj/item/projectile/bullet/toxinbullet
+ projectile_type = /obj/projectile/bullet/toxinbullet
/obj/item/ammo_casing/c9mm/inc
name = "9mm incendiary round"
desc = "A 9mm pistol cartridge, tipped with an incendiary chemical payload."
icon_state = "pistol_brass_incin"
- projectile_type = /obj/item/projectile/bullet/incendiary/firebullet
+ projectile_type = /obj/projectile/bullet/incendiary/firebullet
muzzle_flash_color = LIGHT_COLOR_FIRE
/obj/item/ammo_casing/c46x30mm
@@ -109,26 +109,26 @@
desc = "A 4.6x30mm PDW cartridge, commonly used in submachine guns and small-caliber rifles."
icon_state = "magnum_brass"
caliber = "4.6x30mm"
- projectile_type = /obj/item/projectile/bullet/weakbullet3
+ projectile_type = /obj/projectile/bullet/weakbullet3
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
/obj/item/ammo_casing/c46x30mm/ap
name = "4.6x30mm armor piercing round"
desc = "A 4.6x30mm PDW cartridge, with a tungsten core to increase armor penetration, at the cost of stopping power."
icon_state = "magnum_brass_ap"
- projectile_type = /obj/item/projectile/bullet/armourpiercing/wt550
+ projectile_type = /obj/projectile/bullet/armourpiercing/wt550
/obj/item/ammo_casing/c46x30mm/tox
name = "4.6x30mm toxic round"
desc = "A 4.6x30mm PDW cartridge, tipped with lethal toxins. Probably a war crime."
icon_state = "magnum_brass_toxin"
- projectile_type = /obj/item/projectile/bullet/toxinbullet
+ projectile_type = /obj/projectile/bullet/toxinbullet
/obj/item/ammo_casing/c46x30mm/inc
name = "4.6x30 incendiary round"
desc = "a 4.6x30mm PDW cartridge, tipped with an incendiary chemical payload."
icon_state = "magnum_brass_incin"
- projectile_type = /obj/item/projectile/bullet/incendiary/firebullet
+ projectile_type = /obj/projectile/bullet/incendiary/firebullet
muzzle_flash_color = LIGHT_COLOR_FIRE
/obj/item/ammo_casing/rubber45
@@ -136,7 +136,7 @@
desc = "A .45 caliber pistol cartridge. Features a rubber bullet for less-lethal takedowns."
icon_state = "pistol_steel_rubber"
caliber = ".45"
- projectile_type = /obj/item/projectile/bullet/midbullet_r
+ projectile_type = /obj/projectile/bullet/midbullet_r
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -145,26 +145,26 @@
desc = "A .45 caliber pistol cartridge, commonly used in pistols and submachine guns."
icon_state = "pistol_steel"
caliber = ".45"
- projectile_type = /obj/item/projectile/bullet/midbullet
+ projectile_type = /obj/projectile/bullet/midbullet
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
/obj/item/ammo_casing/c45/nostamina
- projectile_type = /obj/item/projectile/bullet/weakbullet3
+ projectile_type = /obj/projectile/bullet/weakbullet3
/obj/item/ammo_casing/n762
name = "7.62x38mmR round"
desc = "A 7.62x38mmR pistol cartridge, commonly used by antique revolvers."
icon_state = "magnum_brass"
caliber = "n762"
- projectile_type = /obj/item/projectile/bullet
+ projectile_type = /obj/projectile/bullet
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
/obj/item/ammo_casing/caseless/magspear
name = "magnetic spear"
desc = "A reusable spear that is typically loaded into kinetic spearguns."
- projectile_type = /obj/item/projectile/bullet/reusable/magspear
+ projectile_type = /obj/projectile/bullet/reusable/magspear
caliber = "speargun"
icon_state = "magspear"
throwforce = 15 //still deadly when thrown
@@ -177,7 +177,7 @@
icon_state = "slug"
caliber = "shotgun"
casing_drop_sound = 'sound/weapons/gun_interactions/shotgun_fall.ogg'
- projectile_type = /obj/item/projectile/bullet
+ projectile_type = /obj/projectile/bullet
materials = list(MAT_METAL=4000)
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
@@ -186,7 +186,7 @@
name = "buckshot shell"
desc = "A 12 gauge buckshot shell. Fires a spread of lethal shot."
icon_state = "buckshot"
- projectile_type = /obj/item/projectile/bullet/pellet
+ projectile_type = /obj/projectile/bullet/pellet
pellets = 6
variance = 25
@@ -194,7 +194,7 @@
name = "rubbershot shell"
desc = "A 12 gauge shell filled with densely-packed rubber balls, used to incapacitate crowds from a distance."
icon_state = "rubbershot"
- projectile_type = /obj/item/projectile/bullet/pellet/rubber
+ projectile_type = /obj/projectile/bullet/pellet/rubber
pellets = 6
variance = 25
materials = list(MAT_METAL=4000)
@@ -203,7 +203,7 @@
name = "beanbag slug"
desc = "A 12 gauge shell loaded with a beanbag slug for less-lethal takedowns."
icon_state = "beanbag"
- projectile_type = /obj/item/projectile/bullet/weakbullet
+ projectile_type = /obj/projectile/bullet/weakbullet
materials = list(MAT_METAL=250)
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -212,7 +212,7 @@
name = "taser slug"
desc = "A 12 gauge shell loaded with a taser cartridge, somehow."
icon_state = "taser"
- projectile_type = /obj/item/projectile/bullet/stunshot
+ projectile_type = /obj/projectile/bullet/stunshot
materials = list(MAT_METAL=250)
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -223,33 +223,33 @@
name = "meteorslug shell"
desc = "A 12 gauge shell rigged with CMC technology, which launches a massive slug when fired."
icon_state = "meteor"
- projectile_type = /obj/item/projectile/bullet/meteorshot
+ projectile_type = /obj/projectile/bullet/meteorshot
/obj/item/ammo_casing/shotgun/pulseslug
name = "proto pulse slug"
desc = "A 12 gauge shell loaded with a powerful energy emitter, firing a devastating pulse blast."
icon_state = "pulse"
- projectile_type = /obj/item/projectile/beam/pulse/shot
+ projectile_type = /obj/projectile/beam/pulse/shot
muzzle_flash_color = LIGHT_COLOR_DARKBLUE
/obj/item/ammo_casing/shotgun/incendiary
name = "incendiary slug"
desc = "A 12 gauge slug shell containing an incendiary chemical payload."
icon_state = "incendiary"
- projectile_type = /obj/item/projectile/bullet/incendiary/shell
+ projectile_type = /obj/projectile/bullet/incendiary/shell
muzzle_flash_color = LIGHT_COLOR_FIRE
/obj/item/ammo_casing/shotgun/frag12
name = "\improper FRAG-12 slug"
desc = "A 12 gauge shell, loaded with a high-explosive slug."
icon_state = "frag"
- projectile_type = /obj/item/projectile/bullet/frag12
+ projectile_type = /obj/projectile/bullet/frag12
/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
name = "dragonsbreath shell"
desc = "A 12 gauge shell which fires a spread of incendiary pellets."
icon_state = "dragonsbreath"
- projectile_type = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath
+ projectile_type = /obj/projectile/bullet/incendiary/shell/dragonsbreath
pellets = 4
variance = 35
@@ -257,7 +257,7 @@
name = "ion shell"
desc = "An advanced 12 gauge shell that fires a spread of ion bolts."
icon_state = "ion"
- projectile_type = /obj/item/projectile/ion/weak
+ projectile_type = /obj/projectile/ion/weak
pellets = 6
variance = 40
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
@@ -268,7 +268,7 @@
name = "laser slug"
desc = "A rudimentary 12 gauge shotgun shell that replicates the effects of a laser weapon with a low-powered laser."
icon_state = "improvised"
- projectile_type = /obj/item/projectile/beam/laser
+ projectile_type = /obj/projectile/beam/laser
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
muzzle_flash_color = LIGHT_COLOR_DARKRED
@@ -277,7 +277,7 @@
name = "lasershot"
desc = "An advanced 12 gauge shell that uses a multitude of lenses to split a high-powered laser into eight small beams."
icon_state = "laser"
- projectile_type = /obj/item/projectile/beam/scatter
+ projectile_type = /obj/projectile/beam/scatter
pellets = 8
variance = 25
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
@@ -295,7 +295,7 @@
desc = "A 12 gauge shell loaded with a hypodermic needle. Can be injected with up to 30 units of any chemical."
icon_state = "dart"
container_type = OPENCONTAINER
- projectile_type = /obj/item/projectile/bullet/dart
+ projectile_type = /obj/projectile/bullet/dart
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -321,7 +321,7 @@
name = "tranquilizer dart"
desc = "A 12 gauge dart shell loaded with powerful tranquilizers."
icon_state = "dart"
- projectile_type = /obj/item/projectile/bullet/dart/syringe/tranquilizer
+ projectile_type = /obj/projectile/bullet/dart/syringe/tranquilizer
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
materials = list(MAT_METAL=250)
@@ -330,7 +330,7 @@
name = "holy water dart"
desc = "A 12 gauge dart shell loaded with holy water."
icon_state = "holydart"
- projectile_type = /obj/item/projectile/bullet/dart/syringe/holy
+ projectile_type = /obj/projectile/bullet/dart/syringe/holy
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
materials = list(MAT_METAL=250)
@@ -339,11 +339,11 @@
name = "confettishot"
desc = "A 12 gauge shell loaded with... confetti?"
icon_state = "confetti"
- projectile_type = /obj/item/projectile/bullet/confetti
+ projectile_type = /obj/projectile/bullet/confetti
/obj/item/ammo_casing/shotgun/shrapnel
name = "shrapnel rounds"
- projectile_type = /obj/item/projectile/bullet/shrapnel
+ projectile_type = /obj/projectile/bullet/shrapnel
pellets = 3
variance = 20
@@ -352,7 +352,7 @@
desc = "A 5.56mm rifle round, produced in incredible quantities by the Trans-Solar Federation."
icon_state = "rifle_steel"
caliber = "a556"
- projectile_type = /obj/item/projectile/bullet/heavybullet
+ projectile_type = /obj/projectile/bullet/heavybullet
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -361,7 +361,7 @@
desc = "A 5.45x39mm rifle round, used by the elite marines of the USSP."
icon_state = "rifle_brass"
caliber = "a545"
- projectile_type = /obj/item/projectile/bullet/midbullet3
+ projectile_type = /obj/projectile/bullet/midbullet3
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -369,7 +369,7 @@
name = "beanbag shell"
desc = "A 12 gauge beanbag slug. Smells strongly of alcohol."
icon_state = "beanbag"
- projectile_type = /obj/item/projectile/bullet/weakbullet/booze
+ projectile_type = /obj/projectile/bullet/weakbullet/booze
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
@@ -377,7 +377,7 @@
name = "rocket propelled grenade"
desc = "A high explosive rocket meant to be fired from a launcher."
icon_state = "rocket"
- projectile_type = /obj/item/projectile/missile
+ projectile_type = /obj/projectile/missile
caliber = "rocket"
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
@@ -396,7 +396,7 @@
desc = "A .75 caliber gyrojet cartridge, for use in experimental weaponry. There's a Sunburst Heavy Industries logo on the side."
icon_state = "magnum_steel"
caliber = "75"
- projectile_type = /obj/item/projectile/bullet/gyro
+ projectile_type = /obj/projectile/bullet/gyro
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
@@ -405,14 +405,14 @@
desc = "A 40mm high-explosive grenade round, meant to be fired from a grenade launcher."
icon_state = "40mmHE"
caliber = "40mm"
- projectile_type = /obj/item/projectile/bullet/a40mm
+ projectile_type = /obj/projectile/bullet/a40mm
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
/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
muzzle_flash_effect = null
caliber = "foam_force"
icon = 'icons/obj/guns/toy.dmi'
@@ -437,7 +437,7 @@
/obj/item/ammo_casing/caseless/foam_dart/attackby__legacy__attackchain(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((is_pen(A)) && modified && !FD.pen)
if(!user.unequip(A)) // forceMove happens in add_pen
return
@@ -448,7 +448,7 @@
if(modified)
return
- var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
+ var/obj/projectile/bullet/reusable/foam_dart/FD = BB
I.play_tool_sound(src)
modified = TRUE
FD.damage_type = BRUTE
@@ -456,7 +456,7 @@
return TRUE
/obj/item/ammo_casing/caseless/foam_dart/proc/add_pen(obj/item/pen/P)
- var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
+ var/obj/projectile/bullet/reusable/foam_dart/FD = BB
harmful = TRUE
P.forceMove(FD)
FD.log_override = FALSE
@@ -465,7 +465,7 @@
FD.nodamage = FALSE
/obj/item/ammo_casing/caseless/foam_dart/attack_self__legacy__attackchain(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)
@@ -476,14 +476,14 @@
/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"
/obj/item/ammo_casing/caseless/foam_dart/sniper
name = "foam sniper dart"
desc = "For the big nerf! Ages 8 and up."
caliber = "foam_force_sniper"
- projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/sniper
+ projectile_type = /obj/projectile/bullet/reusable/foam_dart/sniper
icon_state = "foamdartsniper"
@@ -505,13 +505,13 @@
/obj/item/ammo_casing/caseless/foam_dart/sniper/riot
name = "riot foam sniper dart"
desc = "For the bigger brother of the crowd control toy. Ages 18 and up."
- projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/sniper/riot
+ projectile_type = /obj/projectile/bullet/reusable/foam_dart/sniper/riot
icon_state = "foamdartsniper_riot"
/obj/item/ammo_casing/shotgun/assassination
name = "assassination shell"
desc = "A 12 gauge buckshot shell containing a powerful silencing toxin."
- projectile_type = /obj/item/projectile/bullet/pellet/assassination
+ projectile_type = /obj/projectile/bullet/pellet/assassination
muzzle_flash_effect = null
icon_state = "buckshot"
pellets = 6
@@ -521,7 +521,7 @@
name = "cap"
desc = "A cap for children toys."
caliber = "cap"
- projectile_type = /obj/item/projectile/bullet/cap
+ projectile_type = /obj/projectile/bullet/cap
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
harmful = FALSE
@@ -530,7 +530,7 @@
name = "caseless laser round"
desc = "An experimental laser casing, designed to vaporize when fired."
caliber = "laser"
- projectile_type = /obj/item/projectile/beam/laser/ik //Subtype that breaks on firing if emp'd
+ projectile_type = /obj/projectile/beam/laser/ik //Subtype that breaks on firing if emp'd
muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash/energy
muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL
muzzle_flash_color = LIGHT_COLOR_DARKRED
@@ -540,5 +540,5 @@
name = "\improper C-Foam blob"
desc = "You shouldn't see this! Make an issue report on Github!"
caliber = "c_foam"
- projectile_type = /obj/item/projectile/c_foam
+ projectile_type = /obj/projectile/c_foam
muzzle_flash_color = LIGHT_COLOR_DARKRED
diff --git a/code/modules/projectiles/ammunition/energy_lens.dm b/code/modules/projectiles/ammunition/energy_lens.dm
index 6f93734f386..5083ed714c3 100644
--- a/code/modules/projectiles/ammunition/energy_lens.dm
+++ b/code/modules/projectiles/ammunition/energy_lens.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'
@@ -13,7 +13,7 @@
var/lens_speed_multiplier = 1
/obj/item/ammo_casing/energy/laser
- projectile_type = /obj/item/projectile/beam/laser
+ projectile_type = /obj/projectile/beam/laser
muzzle_flash_color = LIGHT_COLOR_DARKRED
select_name = "kill"
@@ -22,7 +22,7 @@
e_cost = 250
/obj/item/ammo_casing/energy/lasergun
- projectile_type = /obj/item/projectile/beam/laser
+ projectile_type = /obj/projectile/beam/laser
muzzle_flash_color = LIGHT_COLOR_DARKRED
e_cost = 83
select_name = "kill"
@@ -34,18 +34,18 @@
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/eshotgun
- projectile_type = /obj/item/projectile/beam/scatter/eshotgun
+ projectile_type = /obj/projectile/beam/scatter/eshotgun
pellets = 6
variance = 25
delay = 1 SECONDS
@@ -54,51 +54,51 @@
e_cost = 500
/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/sparker
- projectile_type = /obj/item/projectile/beam/laser/sparker
+ projectile_type = /obj/projectile/beam/laser/sparker
select_name = "spark"
e_cost = (100 / 3) * 2 // 15 * 12.5 damage = 187.5 damage. Almost as much as a base laser gun, but takes longer to get all the shots out.
/obj/item/ammo_casing/energy/laser/pulse
- projectile_type = /obj/item/projectile/beam/pulse/hitscan
+ projectile_type = /obj/projectile/beam/pulse/hitscan
muzzle_flash_color = LIGHT_COLOR_DARKBLUE
e_cost = 200
select_name = "DESTROY"
fire_sound = 'sound/weapons/pulse.ogg'
/obj/item/ammo_casing/energy/laser/scatter/pulse
- projectile_type = /obj/item/projectile/beam/pulse/hitscan
+ projectile_type = /obj/projectile/beam/pulse/hitscan
e_cost = 200
select_name = "ANNIHILATE"
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
muzzle_flash_color = LIGHT_COLOR_BLUE
select_name = "bluetag"
harmful = FALSE
/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/xray
- projectile_type = /obj/item/projectile/beam/xray
+ projectile_type = /obj/projectile/beam/xray
muzzle_flash_color = LIGHT_COLOR_GREEN
fire_sound = 'sound/weapons/laser3.ogg'
/obj/item/ammo_casing/energy/immolator
- projectile_type = /obj/item/projectile/beam/immolator
+ projectile_type = /obj/projectile/beam/immolator
fire_sound = 'sound/weapons/laser3.ogg'
e_cost = 125
/obj/item/ammo_casing/energy/immolator/strong
- projectile_type = /obj/item/projectile/beam/immolator/strong
+ projectile_type = /obj/projectile/beam/immolator/strong
select_name = "precise"
/obj/item/ammo_casing/energy/immolator/strong/cyborg
@@ -106,7 +106,7 @@
e_cost = 1000 // 5x that of the standard laser, for 2.25x the damage (if 1/1 shots hit) plus ignite. Not energy-efficient, but can be used for sniping.
/obj/item/ammo_casing/energy/immolator/scatter
- projectile_type = /obj/item/projectile/beam/immolator/weak
+ projectile_type = /obj/projectile/beam/immolator/weak
pellets = 6
variance = 25
select_name = "scatter"
@@ -116,7 +116,7 @@
e_cost = 1000 // 5x that of the standard laser, for 7.5x the damage (if 6/6 shots hit) plus ignite. Efficient only if you hit with at least 4/6 of the shots.
/obj/item/ammo_casing/energy/electrode
- projectile_type = /obj/item/projectile/energy/electrode
+ projectile_type = /obj/projectile/energy/electrode
muzzle_flash_color = "#FFFF00"
select_name = "stun"
fire_sound = 'sound/weapons/taser.ogg'
@@ -124,23 +124,23 @@
harmful = FALSE
/obj/item/ammo_casing/energy/ion
- projectile_type = /obj/item/projectile/ion
+ projectile_type = /obj/projectile/ion
muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE
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
muzzle_flash_color = LIGHT_COLOR_GREEN
select_name = "declone"
fire_sound = 'sound/weapons/pulse3.ogg'
/obj/item/ammo_casing/energy/mindflayer
- projectile_type = /obj/item/projectile/energy/mindflayer
+ projectile_type = /obj/projectile/energy/mindflayer
muzzle_flash_color = LIGHT_COLOR_PURPLE
select_name = "mindflayer"
fire_sound = 'sound/weapons/pulse3.ogg'
@@ -151,15 +151,15 @@
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
fire_sound = 'sound/weapons/pulse3.ogg'
var/temp = 300
@@ -171,13 +171,13 @@
..(temp)
/obj/item/ammo_casing/energy/meteor
- projectile_type = /obj/item/projectile/meteor
+ projectile_type = /obj/projectile/meteor
muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash
muzzle_flash_color = null
select_name = "goddamn meteor"
/obj/item/ammo_casing/energy/disabler
- projectile_type = /obj/item/projectile/beam/disabler
+ projectile_type = /obj/projectile/beam/disabler
muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE
select_name = "disable"
e_cost = 50
@@ -186,7 +186,7 @@
delay = 0.6 SECONDS
/obj/item/ammo_casing/energy/disabler/smg
- projectile_type = /obj/item/projectile/beam/disabler/weak
+ projectile_type = /obj/projectile/beam/disabler/weak
e_cost = 25
fire_sound = 'sound/weapons/taser3.ogg'
click_cooldown_override = 2
@@ -195,11 +195,11 @@
delay = 0
/obj/item/ammo_casing/energy/disabler/fake
- projectile_type = /obj/item/projectile/beam/disabler/fake
+ projectile_type = /obj/projectile/beam/disabler/fake
e_cost = 100
/obj/item/ammo_casing/energy/disabler/eshotgun
- projectile_type = /obj/item/projectile/beam/disabler/pellet
+ projectile_type = /obj/projectile/beam/disabler/pellet
e_cost = 75
delay = 1 SECONDS
pellets = 6
@@ -213,7 +213,7 @@
e_cost = 60
/obj/item/ammo_casing/energy/plasma
- projectile_type = /obj/item/projectile/plasma
+ projectile_type = /obj/projectile/plasma
muzzle_flash_color = LIGHT_COLOR_PURPLE
select_name = "plasma burst"
fire_sound = 'sound/weapons/pulse.ogg'
@@ -221,12 +221,12 @@
e_cost = 75
/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
/obj/item/ammo_casing/energy/wormhole
- projectile_type = /obj/item/projectile/beam/wormhole
+ projectile_type = /obj/projectile/beam/wormhole
muzzle_flash_color = "#33CCFF"
delay = 10
fire_sound = 'sound/weapons/pulse3.ogg'
@@ -239,12 +239,12 @@
return ..()
/obj/item/ammo_casing/energy/wormhole/orange
- projectile_type = /obj/item/projectile/beam/wormhole/orange
+ projectile_type = /obj/projectile/beam/wormhole/orange
muzzle_flash_color = "#FF6600"
select_name = "orange"
/obj/item/ammo_casing/energy/bolt
- projectile_type = /obj/item/projectile/energy/bolt
+ projectile_type = /obj/projectile/energy/bolt
muzzle_flash_color = null
muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash
select_name = "bolt"
@@ -252,21 +252,21 @@
fire_sound = 'sound/weapons/genhit.ogg'
/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"
/obj/item/ammo_casing/energy/instakill
- projectile_type = /obj/item/projectile/beam/instakill
+ projectile_type = /obj/projectile/beam/instakill
muzzle_flash_color = LIGHT_COLOR_PURPLE
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
muzzle_flash_color = LIGHT_COLOR_DARKBLUE
/obj/item/ammo_casing/energy/instakill/red
- projectile_type = /obj/item/projectile/beam/instakill/red
+ projectile_type = /obj/projectile/beam/instakill/red
muzzle_flash_color = LIGHT_COLOR_DARKRED
/obj/item/ammo_casing/energy/tesla_bolt
@@ -274,13 +274,13 @@
e_cost = 200
select_name = "lightning beam"
muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE
- projectile_type = /obj/item/projectile/energy/tesla_bolt
+ projectile_type = /obj/projectile/energy/tesla_bolt
/obj/item/ammo_casing/energy/arc_revolver
fire_sound = 'sound/magic/lightningbolt.ogg' //New sound
select_name = "lightning beam" //I guess
muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE // Depends on sprite
- projectile_type = /obj/item/projectile/energy/arc_revolver
+ projectile_type = /obj/projectile/energy/arc_revolver
///This number is randomly generated when the arc revolver is made. This ensures the beams only link to beams from the gun, one lower or higher than the number on the boosted object.
var/random_link_number
@@ -290,32 +290,32 @@
/obj/item/ammo_casing/energy/arc_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
..()
- var/obj/item/projectile/energy/arc_revolver/P = BB
+ var/obj/projectile/energy/arc_revolver/P = BB
P.charge_number = random_link_number
random_link_number++
/obj/item/ammo_casing/energy/weak_plasma
- projectile_type = /obj/item/projectile/energy/weak_plasma
+ projectile_type = /obj/projectile/energy/weak_plasma
e_cost = 75 // With no charging, 162.5 damage from 13 shots.
muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE
fire_sound = 'sound/weapons/taser2.ogg'
select_name = null //If the select name is null, it does not send a message of switching modes to the user, important on the pistol.
/obj/item/ammo_casing/energy/charged_plasma
- projectile_type = /obj/item/projectile/homing/charged_plasma
+ projectile_type = /obj/projectile/homing/charged_plasma
e_cost = 0 //Charge is used when you charge the gun. Prevents issues.
muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE
fire_sound = 'sound/weapons/marauder.ogg' //Should be different enough to get attention
select_name = null
/obj/item/ammo_casing/energy/clown
- projectile_type = /obj/item/projectile/clown
+ projectile_type = /obj/projectile/clown
muzzle_flash_effect = null
fire_sound = 'sound/weapons/gunshots/gunshot_smg.ogg'
select_name = "clown"
/obj/item/ammo_casing/energy/emitter
- projectile_type = /obj/item/projectile/beam/emitter
+ projectile_type = /obj/projectile/beam/emitter
muzzle_flash_color = LIGHT_COLOR_GREEN
fire_sound = 'sound/weapons/emitter.ogg'
delay = 2 SECONDS // Lasers fire twice every second for 40 dps, this fires every 2 seconds for 15 dps. Seems fair, since every cyborg will have this with more shots?
@@ -331,7 +331,7 @@
delay = 2 SECONDS
/obj/item/ammo_casing/energy/bsg
- projectile_type = /obj/item/projectile/energy/bsg
+ projectile_type = /obj/projectile/energy/bsg
muzzle_flash_color = LIGHT_COLOR_DARKBLUE
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
@@ -341,7 +341,7 @@
delay = 4 SECONDS //Looooooong cooldown // Used to be 10 seconds, has been rebalanced to be normal firing rate now
/obj/item/ammo_casing/energy/teleport
- projectile_type = /obj/item/projectile/energy/teleport
+ projectile_type = /obj/projectile/energy/teleport
muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE
fire_sound = 'sound/weapons/wave.ogg'
e_cost = 250
@@ -356,7 +356,7 @@
..(teleport_target)
/obj/item/ammo_casing/energy/mimic
- projectile_type = /obj/item/projectile/mimic
+ projectile_type = /obj/projectile/mimic
muzzle_flash_effect = null
fire_sound = 'sound/weapons/bite.ogg'
select_name = "gun mimic"
@@ -370,22 +370,22 @@
..(mimic_type)
/obj/item/ammo_casing/energy/detective
- projectile_type = /obj/item/projectile/beam/laser/detective
+ projectile_type = /obj/projectile/beam/laser/detective
fire_sound = 'sound/weapons/gunshots/gunshot_det_energy.ogg'
select_name = "disabler"
/obj/item/ammo_casing/energy/detective/tracker_warrant
- projectile_type = /obj/item/projectile/beam/laser/detective/tracker_warrant_shot
+ projectile_type = /obj/projectile/beam/laser/detective/tracker_warrant_shot
e_cost = 50
select_name = "tracker and warrant generator"
/obj/item/ammo_casing/energy/detective/overcharge
- projectile_type = /obj/item/projectile/beam/laser/detective/overcharged
+ projectile_type = /obj/projectile/beam/laser/detective/overcharged
e_cost = 200
select_name = "overcharged"
/obj/item/ammo_casing/energy/silencer_ammo
- projectile_type = /obj/item/projectile/beam/silencer
+ projectile_type = /obj/projectile/beam/silencer
muzzle_flash_effect = null
select_name = "silencing dissidents"
e_cost = 50 // 16 shots
diff --git a/code/modules/projectiles/ammunition/special_ammo.dm b/code/modules/projectiles/ammunition/special_ammo.dm
index 2885ff9f15b..90338278387 100644
--- a/code/modules/projectiles/ammunition/special_ammo.dm
+++ b/code/modules/projectiles/ammunition/special_ammo.dm
@@ -1,45 +1,45 @@
/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
muzzle_flash_color = COLOR_BLUE_GRAY
muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash/magic
/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/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/fireball
+ projectile_type = /obj/projectile/magic/fireball
/obj/item/ammo_casing/magic/chaos
- projectile_type = /obj/item/projectile/magic/chaos
+ projectile_type = /obj/projectile/magic/chaos
/obj/item/ammo_casing/magic/slipping
- projectile_type = /obj/item/projectile/magic/slipping
+ projectile_type = /obj/projectile/magic/slipping
/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/forcebolt
- projectile_type = /obj/item/projectile/forcebolt
+ projectile_type = /obj/projectile/forcebolt
/obj/item/ammo_casing/syringegun
name = "syringe gun spring"
@@ -48,7 +48,7 @@
muzzle_flash_effect = null
/obj/item/ammo_casing/energy/c3dbullet
- projectile_type = /obj/item/projectile/bullet/midbullet3
+ projectile_type = /obj/projectile/bullet/midbullet3
select_name = "spraydown"
fire_sound = 'sound/weapons/gunshots/gunshot_mg.ogg'
e_cost = 20
diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm
index e6f28e618b7..cb69b3a5583 100644
--- a/code/modules/projectiles/firing.dm
+++ b/code/modules/projectiles/firing.dm
@@ -94,7 +94,7 @@
* - deviation: (Optional) How the trajectory should deviate from the target in degrees.
* - //Spread is FORCED!
*/
-/obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, list/modifiers = null, deviation = 0)
+/obj/projectile/proc/preparePixelProjectile(atom/target, atom/source, list/modifiers = null, deviation = 0)
if(!(isnull(modifiers) || islist(modifiers)))
stack_trace("WARNING: Projectile [type] fired with non-list modifiers, likely was passed click params.")
modifiers = null
diff --git a/code/modules/projectiles/guns/chaos_bolt.dm b/code/modules/projectiles/guns/chaos_bolt.dm
index 1f4be0bc7d0..888cb0fbc84 100644
--- a/code/modules/projectiles/guns/chaos_bolt.dm
+++ b/code/modules/projectiles/guns/chaos_bolt.dm
@@ -5,7 +5,7 @@
#define CHAOS_STAFF_GIFT_CHANCE 15
#define CHAOS_STAFF_GREAT_GIFT_CHANCE 5
-/obj/item/projectile/magic/chaos
+/obj/projectile/magic/chaos
name = "chaos bolt"
icon_state = "ice_1"
impact_effect_type = /obj/effect/temp_visual/impact_effect/chaos
@@ -16,7 +16,7 @@
/// Name of random effect to be applied on target mob.
var/chaos_effect
-/obj/item/projectile/magic/chaos/on_hit(atom/target, blocked = 0)
+/obj/projectile/magic/chaos/on_hit(atom/target, blocked = 0)
. = ..()
if(!.)
return
@@ -31,7 +31,7 @@
return
chaos_chaos(L)
-/obj/item/projectile/magic/chaos/Initialize(mapload)
+/obj/projectile/magic/chaos/Initialize(mapload)
. = ..()
icon_state = pick("bluespace", "pulse1", "magicm", "declone", "fireball", "blood_bolt", "arcane_barrage", "laser", "u_laser")
@@ -45,7 +45,7 @@
* Arguments:
* * target - mob/living that will have effect applied on them
*/
-/obj/item/projectile/magic/chaos/proc/chaos_chaos(mob/living/target)
+/obj/projectile/magic/chaos/proc/chaos_chaos(mob/living/target)
var/category = pick(prob(CHAOS_STAFF_LETHAL_CHANCE);"lethal", prob(CHAOS_STAFF_NEGATIVE_CHANCE);"negative", prob(CHAOS_STAFF_MISC_CHANCE);"misc",\
prob(CHAOS_STAFF_GIFT_CHANCE);"gift", prob(CHAOS_STAFF_GREAT_GIFT_CHANCE);"great gift")
switch(category)
@@ -96,7 +96,7 @@
/**
* Picks and apply a lethal effect on mob/living/target. Some are more instantaneous than others.
*/
-/obj/item/projectile/magic/chaos/proc/apply_lethal_effect(mob/living/target)
+/obj/projectile/magic/chaos/proc/apply_lethal_effect(mob/living/target)
if(!ishuman(target))
target.visible_message("[target] suddenly dies!", "Game over!")
target.death(FALSE)
@@ -176,7 +176,7 @@
/**
* Picks and apply a negative effect on mob/living/target. Usually causes damage and/or incapacitating effect.
*/
-/obj/item/projectile/magic/chaos/proc/apply_negative_effect(mob/living/target)
+/obj/projectile/magic/chaos/proc/apply_negative_effect(mob/living/target)
if(!ishuman(target))
if(prob(50))
target.apply_damage(CHAOS_STAFF_DAMAGE, BRUTE)
@@ -263,7 +263,7 @@
/**
* Picks and apply a random miscellaneous effect on mob/living/target. Can be negative or mildly positive.
*/
-/obj/item/projectile/magic/chaos/proc/apply_misc_effect(mob/living/target)
+/obj/projectile/magic/chaos/proc/apply_misc_effect(mob/living/target)
if(!ishuman(target))
chaos_effect = pick("recolor", "bark", "confetti", "smoke", "wand of nothing", "bike horn")
else
@@ -314,7 +314,7 @@
/**
* Picks a random gift to be given to mob/living/target. Should be mildly useful and/or funny.
*/
-/obj/item/projectile/magic/chaos/proc/apply_gift_effect(mob/living/target)
+/obj/projectile/magic/chaos/proc/apply_gift_effect(mob/living/target)
chaos_effect = pick("toy sword", "toy revolver", "cheese", "food", "medkit", "tarot pack", \
"insulated gloves", "wand of doors", "golden bike horn", "ban hammer", "banana")
switch(chaos_effect)
@@ -354,7 +354,7 @@
/**
* Picks a random gift to be given to mob/living/target. Should be valuable and/or threatening to the wizard.
*/
-/obj/item/projectile/magic/chaos/proc/apply_great_gift_effect(mob/living/target)
+/obj/projectile/magic/chaos/proc/apply_great_gift_effect(mob/living/target)
chaos_effect = pick("esword", "emag", "chaos wand", "revolver", "aeg", "tarot deck", \
"bluespace banana", "banana grenade", "disco ball", "syndicate minibomb", "crystal ball")
switch(chaos_effect)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index bae4390c3c0..bb9217415ae 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -71,7 +71,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
@@ -183,7 +183,7 @@
//Casing
/obj/item/ammo_casing/energy/kinetic
- projectile_type = /obj/item/projectile/kinetic
+ projectile_type = /obj/projectile/kinetic
muzzle_flash_color = null
select_name = "kinetic"
e_cost = 500
@@ -197,10 +197,10 @@
//Malf casing
/obj/item/ammo_casing/energy/kinetic/malf
- projectile_type = /obj/item/projectile/kinetic/malf
+ projectile_type = /obj/projectile/kinetic/malf
//Projectiles
-/obj/item/projectile/kinetic
+/obj/projectile/kinetic
name = "kinetic force"
icon_state = null
damage = 40
@@ -211,23 +211,23 @@
var/pressure_decrease = 0.25
var/obj/item/gun/energy/kinetic_accelerator/kinetic_gun
-/obj/item/projectile/kinetic/malf
+/obj/projectile/kinetic/malf
pressure_decrease = 1
color = "#FFFFFF"
icon_state = "ka_tracer"
-/obj/item/projectile/kinetic/pod
+/obj/projectile/kinetic/pod
range = 4
-/obj/item/projectile/kinetic/pod/regular
+/obj/projectile/kinetic/pod/regular
damage = 50
pressure_decrease = 0.5
-/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)
@@ -240,15 +240,15 @@
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)
@@ -362,19 +362,19 @@
accelerator.modkits -= src
return ..()
-/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)
return
//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)
return
//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)
return
//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)
return
//Range
@@ -383,7 +383,7 @@
desc = "Increases the range of a kinetic accelerator when installed."
cost = 24 //so you can fit four plus a tracer cosmetic
-/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
@@ -393,7 +393,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
@@ -448,7 +448,7 @@
turf_aoe = initial(turf_aoe)
stats_stolen = FALSE
-/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/pka_explosion(target_turf)
@@ -494,7 +494,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
@@ -514,7 +514,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)
@@ -528,7 +528,7 @@
denied_type = /obj/item/borg/upgrade/modkit/resonator_blasts
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)
@@ -545,7 +545,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)
@@ -556,7 +556,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])
@@ -584,7 +584,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
@@ -648,7 +648,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 74a22854f90..664e978937e 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -181,17 +181,17 @@
. += "At any rate, Nanotrasen is looking to sell these to sniper units who will undoubtedly appreciate the devastating effect that one of these can have when given proper operating distance."
/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 = "heavylaser"
range = 255
damage = 6
-/obj/item/projectile/beam/laser/accelerator/Range()
+/obj/projectile/beam/laser/accelerator/Range()
..()
damage = min(damage+7, 100)
@@ -250,7 +250,7 @@
return //no manual ammo changing.
/obj/item/ammo_casing/energy/laser/sniper
- projectile_type = /obj/item/projectile/beam/laser/sniper
+ projectile_type = /obj/projectile/beam/laser/sniper
muzzle_flash_color = LIGHT_COLOR_PINK
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
@@ -259,9 +259,9 @@
delay = 2 SECONDS
/obj/item/ammo_casing/energy/laser/sniper/pierce
- projectile_type = /obj/item/projectile/beam/laser/sniper/pierce
+ projectile_type = /obj/projectile/beam/laser/sniper/pierce
-/obj/item/projectile/beam/laser/sniper
+/obj/projectile/beam/laser/sniper
name = "sniper laser"
icon_state = "sniperlaser"
range = 255
@@ -271,18 +271,18 @@
forced_accuracy = TRUE
var/can_knockdown = TRUE
-/obj/item/projectile/beam/laser/sniper/Range()
+/obj/projectile/beam/laser/sniper/Range()
..()
damage = min(damage + 5, 100)
-/obj/item/projectile/beam/laser/sniper/on_hit(atom/target, blocked = 0, hit_zone)
+/obj/projectile/beam/laser/sniper/on_hit(atom/target, blocked = 0, hit_zone)
..()
var/mob/living/carbon/human/H = target
if(istype(H) && damage >= 40 && can_knockdown)
H.KnockDown(2 SECONDS * (damage / 10))
can_knockdown = FALSE //Projectiles that pierce can not knockdown, no wall knockdowns.
-/obj/item/projectile/beam/laser/sniper/pierce
+/obj/projectile/beam/laser/sniper/pierce
forcedodge = 1 // Can pierce one non wall thing.
speed = 0.5
always_hit_living_nondense = TRUE //This means if you are scoped in sniping at crit xenomorphs or crit humans, you can always hit them even if you do not directly click on them
@@ -290,7 +290,7 @@
var/hit_a_r_wall = FALSE
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSGIRDER
-/obj/item/projectile/beam/laser/sniper/pierce/prehit(atom/target)
+/obj/projectile/beam/laser/sniper/pierce/prehit(atom/target)
if(istype(target, /turf/simulated/wall/r_wall))
if(!hit_a_r_wall)
hit_a_r_wall = TRUE
diff --git a/code/modules/projectiles/guns/energy/special_eguns.dm b/code/modules/projectiles/guns/energy/special_eguns.dm
index 18189029eaa..1335edc96f5 100644
--- a/code/modules/projectiles/guns/energy/special_eguns.dm
+++ b/code/modules/projectiles/guns/energy/special_eguns.dm
@@ -345,7 +345,7 @@
if(blue)
blue.target = null
-/obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/item/projectile/beam/wormhole/W)
+/obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/projectile/beam/wormhole/W)
var/obj/effect/portal/P = new /obj/effect/portal(get_turf(W), null, src)
P.precision = 0
P.failchance = 0
@@ -1084,12 +1084,12 @@
/obj/item/ammo_casing/energy/spike
name = "alloy spike"
desc = "A broadhead spike made out of a weird silvery metal."
- projectile_type = /obj/item/projectile/bullet/spike
+ projectile_type = /obj/projectile/bullet/spike
muzzle_flash_effect = null
select_name = "spike"
fire_sound = 'sound/weapons/bladeslice.ogg'
-/obj/item/projectile/bullet/spike
+/obj/projectile/bullet/spike
name = "alloy spike"
desc = "It's about a foot of weird silvery metal with a wicked point."
damage = 25
@@ -1097,7 +1097,7 @@
armor_penetration_flat = 30
icon_state = "magspear"
-/obj/item/projectile/bullet/spike/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/spike/on_hit(atom/target, blocked = 0)
if((blocked < 100) && ishuman(target))
var/mob/living/carbon/human/H = target
H.bleed(50)
@@ -1120,7 +1120,7 @@
cell_type = /obj/item/stock_parts/cell/infinite
/obj/item/ammo_casing/energy/vortex_blast
- projectile_type = /obj/item/projectile/energy/vortex_blast
+ projectile_type = /obj/projectile/energy/vortex_blast
muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash/vortex_blast
variance = 70
pellets = 8
@@ -1128,7 +1128,7 @@
select_name = "vortex blast"
fire_sound = 'sound/weapons/wave.ogg'
-/obj/item/projectile/energy/vortex_blast
+/obj/projectile/energy/vortex_blast
name = "vortex blast"
hitscan = TRUE
damage = 2
@@ -1138,7 +1138,7 @@
hitsound_wall = null
suppressed = TRUE
-/obj/item/projectile/energy/vortex_blast/prehit(atom/target)
+/obj/projectile/energy/vortex_blast/prehit(atom/target)
. = ..()
if(ishuman(target))
return
@@ -1147,7 +1147,7 @@
return
damage *= 6 //objects tend to fall apart as atoms are ripped up
-/obj/item/projectile/energy/vortex_blast/on_hit(atom/target, blocked = 0)
+/obj/projectile/energy/vortex_blast/on_hit(atom/target, blocked = 0)
if(blocked >= 100)
return ..()
if(ishuman(target))
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index 399e76d295b..7e3716b7e5d 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -278,7 +278,7 @@ CONTENTS:
"Would you like a glass of water?", "What fun is there in making sense?", "Maybe you ought to go back home and crawl under your bed.", \
"Time to dual wield chaos wands!", "Sixty percent of the time, it works every time.", "Cheese for everyone!", "You hear a deep voice cackling.", \
"Xom bursts into laughter!", "Xom thinks this is hilarious!")]")
- var/obj/item/projectile/magic/chaos/proj = new /obj/item/projectile/magic/chaos(src)
+ var/obj/projectile/magic/chaos/proj = new /obj/projectile/magic/chaos(src)
proj.chaos_chaos(user)
qdel(proj)
charges--
diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm
index 91f581a53c6..c18a2919a14 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -89,11 +89,11 @@
var/turf/targturf = get_turf(target)
message_admins("Blast wave fired from [ADMIN_COORDJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_COORDJMP(targturf)] ([target.name]) by [key_name_admin(user)] with power [heavy]/[medium]/[light].")
log_game("Blast wave fired from ([starting.x], [starting.y], [starting.z]) ([get_area_name(user, TRUE)]) at ([target.x], [target.y], [target.z]) ([target]) 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.preparePixelProjectile(target, get_turf(src), params2list(params), 0)
BW.fire()
-/obj/item/projectile/blastwave
+/obj/projectile/blastwave
name = "blast wave"
icon_state = "blastwave"
damage = 0
@@ -103,13 +103,13 @@
var/mediumr = 0
var/lightr = 0
-/obj/item/projectile/blastwave/New(loc, _h, _m, _l)
+/obj/projectile/blastwave/New(loc, _h, _m, _l)
..()
heavyr = _h
mediumr = _m
lightr = _l
-/obj/item/projectile/blastwave/Range()
+/obj/projectile/blastwave/Range()
..()
var/amount_destruction = 0
if(heavyr)
@@ -132,5 +132,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/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm
index fbc66707f3f..42f5147b96d 100644
--- a/code/modules/projectiles/guns/projectile/bow.dm
+++ b/code/modules/projectiles/guns/projectile/bow.dm
@@ -65,7 +65,7 @@
max_ammo = 1
-/obj/item/projectile/bullet/reusable/arrow
+/obj/projectile/bullet/reusable/arrow
name = "arrow"
icon_state = "arrow"
ammo_type = /obj/item/ammo_casing/caseless/arrow
@@ -77,7 +77,7 @@
desc = "Stab, stab, stab."
icon_state = "arrow"
force = 10
- projectile_type = /obj/item/projectile/bullet/reusable/arrow
+ projectile_type = /obj/projectile/bullet/reusable/arrow
muzzle_flash_effect = null
caliber = "arrow"
diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm
index eeab5c8440d..ede5876c778 100644
--- a/code/modules/projectiles/guns/projectile/saw.dm
+++ b/code/modules/projectiles/guns/projectile/saw.dm
@@ -70,34 +70,34 @@
//ammo//
-/obj/item/projectile/bullet/saw
+/obj/projectile/bullet/saw
damage = 45
armor_penetration_flat = 5
-/obj/item/projectile/bullet/saw/bleeding
+/obj/projectile/bullet/saw/bleeding
damage = 20
armor_penetration_flat = 0
-/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone)
+/obj/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone)
. = ..()
if((blocked != 100) && iscarbon(target))
var/mob/living/carbon/C = target
C.bleed(35)
-/obj/item/projectile/bullet/saw/hollow
+/obj/projectile/bullet/saw/hollow
damage = 60
armor_penetration_flat = -30
-/obj/item/projectile/bullet/saw/ap
+/obj/projectile/bullet/saw/ap
damage = 40
armor_penetration_percentage = 100
-/obj/item/projectile/bullet/saw/incen
+/obj/projectile/bullet/saw/incen
damage = 7
armor_penetration_flat = 0
immolate = 3
-/obj/item/projectile/bullet/saw/incen/Move()
+/obj/projectile/bullet/saw/incen/Move()
..()
var/turf/location = get_turf(src)
if(location)
@@ -144,7 +144,7 @@
desc = "A 7.62x51mm full-metal jacket rifle cartridge, commonly used in general-purpose machine guns."
icon_state = "rifle_brass"
caliber = "mm762x51"
- projectile_type = /obj/item/projectile/bullet/saw
+ projectile_type = /obj/projectile/bullet/saw
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
@@ -152,23 +152,23 @@
name = "7.62x51mm 'Shredder' round"
desc = "A 7.62x51mm 'Shredder' cartridge, with a heavily serrated tip intended to cause massive bleeding."
icon_state = "rifle_brass_surplus"
- projectile_type = /obj/item/projectile/bullet/saw/bleeding
+ projectile_type = /obj/projectile/bullet/saw/bleeding
/obj/item/ammo_casing/mm762x51/hollow
name = "7.62x51mm hollow point round"
desc = "A 7.62x51mm rifle cartridge designed to cause more damage to unarmored targets."
icon_state = "rifle_brass_hollow"
- projectile_type = /obj/item/projectile/bullet/saw/hollow
+ projectile_type = /obj/projectile/bullet/saw/hollow
/obj/item/ammo_casing/mm762x51/ap
name = "7.62x51mm armor-piercing round"
desc = "A 7.62x51mm rifle cartridge with a hardened tungsten core to increase armor penetration."
icon_state = "rifle_brass_ap"
- projectile_type = /obj/item/projectile/bullet/saw/ap
+ projectile_type = /obj/projectile/bullet/saw/ap
/obj/item/ammo_casing/mm762x51/incen
name = "7.62x51mm incendiary round"
desc = "A 7.62x51mm rifle cartridge with an incendiary chemical payload."
icon_state = "rifle_brass_incin"
- projectile_type = /obj/item/projectile/bullet/saw/incen
+ projectile_type = /obj/projectile/bullet/saw/incen
muzzle_flash_color = LIGHT_COLOR_FIRE
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index ef13f55bf29..14ede20dbeb 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -24,8 +24,8 @@
AddComponent(/datum/component/scope, range_modifier = 2, flags = SCOPE_TURF_ONLY | SCOPE_NEED_ACTIVE_HAND)
/obj/item/gun/projectile/automatic/sniper_rifle/process_fire(atom/target, mob/living/user, message = TRUE, params, zone_override, bonus_spread = 0)
- if(istype(chambered.BB, /obj/item/projectile/bullet/sniper) && !HAS_TRAIT(user, TRAIT_SCOPED))
- var/obj/item/projectile/bullet/sniper/S = chambered.BB
+ if(istype(chambered.BB, /obj/projectile/bullet/sniper) && !HAS_TRAIT(user, TRAIT_SCOPED))
+ var/obj/projectile/bullet/sniper/S = chambered.BB
if(S.non_zoom_spread)
to_chat(user, "[src] must be zoomed in to fire this ammunition accurately!")
bonus_spread += S.non_zoom_spread
@@ -62,11 +62,11 @@
desc = "A .50 BMG rifle cartridge, commonly used in anti-materiel rifles and heavy machine guns."
icon_state = "heavy_steel"
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/sniper
+ projectile_type = /obj/projectile/bullet/sniper
muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG
muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG
-/obj/item/projectile/bullet/sniper
+/obj/projectile/bullet/sniper
damage = 70
weaken = 10 SECONDS
armor_penetration_flat = 70
@@ -86,14 +86,14 @@
desc = "A .50 BMG high-explosive cartridge. Does not actually contain antimatter."
icon_state = "heavy_steel_incin"
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/sniper/antimatter
+ projectile_type = /obj/projectile/bullet/sniper/antimatter
-/obj/item/projectile/bullet/sniper/antimatter
+/obj/projectile/bullet/sniper/antimatter
name = "antimatter bullet"
dismemberment = 50
non_zoom_spread = 60
-/obj/item/projectile/bullet/sniper/antimatter/on_hit(atom/target, blocked = 0, hit_zone)
+/obj/projectile/bullet/sniper/antimatter/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && (!ismob(target)))
target.ex_act(rand(1,2))
@@ -113,15 +113,15 @@
desc = "A .50 BMG hypodermic cartridge, loaded with sedatives for instant incapacitation."
icon_state = "heavy_steel_rubber"
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/sniper/soporific
+ projectile_type = /obj/projectile/bullet/sniper/soporific
harmful = FALSE
-/obj/item/projectile/bullet/sniper/soporific
+/obj/projectile/bullet/sniper/soporific
armor_penetration_flat = 0
nodamage = 1
weaken = 0
-/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone)
+/obj/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && isliving(target))
var/mob/living/L = target
L.SetSleeping(40 SECONDS)
@@ -141,14 +141,14 @@
desc = "A .50 BMG 'Shredder' cartridge, with a heavily serrated bullet intended to cause massive blood loss."
icon_state = "heavy_steel_hollow"
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/sniper/haemorrhage
+ projectile_type = /obj/projectile/bullet/sniper/haemorrhage
-/obj/item/projectile/bullet/sniper/haemorrhage
+/obj/projectile/bullet/sniper/haemorrhage
armor_penetration_flat = 25
damage = 45
weaken = 6 SECONDS
-/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone)
+/obj/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && iscarbon(target))
var/mob/living/carbon/C = target
C.bleed(150)
@@ -169,9 +169,9 @@
desc = "A .50 BMG Sabot Penetrator cartridge, capable of punching through just about anything."
icon_state = "heavy_steel_ap"
caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/sniper/penetrator
+ projectile_type = /obj/projectile/bullet/sniper/penetrator
-/obj/item/projectile/bullet/sniper/penetrator
+/obj/projectile/bullet/sniper/penetrator
icon_state = "gauss"
name = "penetrator round"
damage = 60
diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm
index fb822613e80..5b975eaa8c9 100644
--- a/code/modules/projectiles/guns/syringe_gun.dm
+++ b/code/modules/projectiles/guns/syringe_gun.dm
@@ -319,7 +319,7 @@
if(!S)
return
- chambered.BB = new /obj/item/projectile/bullet/dart/syringe/pierce_ignore(src)
+ chambered.BB = new /obj/projectile/bullet/dart/syringe/pierce_ignore(src)
update_loaded_syringe()
chambered.BB.name = S.name
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 2707f9b5d2f..12b85863a6b 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,25 +15,25 @@
ricochets_max = 50 //Honk!
ricochet_chance = 80
-/obj/item/projectile/beam/laser
+/obj/projectile/beam/laser
-/obj/item/projectile/beam/laser/ik
+/obj/projectile/beam/laser/ik
-/obj/item/projectile/beam/laser/ik/emp_act(severity)
+/obj/projectile/beam/laser/ik/emp_act(severity)
if(prob(40 / severity))
range = 0
-/obj/item/projectile/beam/laser/ik/on_range() //Should spark out of the gun. Theoretically, one could emp projectiles out of the air. However, its more practical to EMP the guns, rather than projectiles in flight
+/obj/projectile/beam/laser/ik/on_range() //Should spark out of the gun. Theoretically, one could emp projectiles out of the air. However, its more practical to EMP the guns, rather than projectiles in flight
do_sparks(1, 1, src)
..()
-/obj/item/projectile/beam/laser/heavylaser
+/obj/projectile/beam/laser/heavylaser
name = "heavy laser"
icon_state = "heavylaser"
damage = 40
-/obj/item/projectile/beam/laser/ai_turret
+/obj/projectile/beam/laser/ai_turret
damage = 17.5 //Slight loss in damage because hitscan
forcedodge = 1
hitscan = TRUE
@@ -50,7 +50,7 @@
impact_light_range = 2.5
impact_light_color_override = LIGHT_COLOR_DARKRED
-/obj/item/projectile/beam/laser/ai_turret/prehit(atom/target)
+/obj/projectile/beam/laser/ai_turret/prehit(atom/target)
if(is_ai(target))
damage = 0 //cheater cheater I don't want AI to die to stupid placement eater
nodamage = 1
@@ -58,31 +58,31 @@
forcedodge = 0 //no peircing after hitting a mob to avoid rooms destroying itself. If someone does monkey chair on AI sat though, I swear to god
..()
-/obj/item/projectile/beam/laser/ai_turret/heavylaser
+/obj/projectile/beam/laser/ai_turret/heavylaser
damage = 35
muzzle_type = /obj/effect/projectile/muzzle/heavy_laser
tracer_type = /obj/effect/projectile/tracer/heavy_laser
impact_type = /obj/effect/projectile/impact/heavy_laser
-/obj/item/projectile/beam/practice
+/obj/projectile/beam/practice
name = "practice laser"
damage = 0
nodamage = 1
log_override = TRUE
-/obj/item/projectile/beam/scatter
+/obj/projectile/beam/scatter
name = "laser pellet"
icon_state = "scatterlaser"
damage = 5
-/obj/item/projectile/beam/scatter/eshotgun
+/obj/projectile/beam/scatter/eshotgun
damage = 6
tile_dropoff = 0.5
tile_dropoff_s = 0.5
range = 8
-/obj/item/projectile/beam/xray
+/obj/projectile/beam/xray
name = "xray beam"
icon_state = "xray"
damage = 15
@@ -93,7 +93,7 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
light_color = LIGHT_COLOR_GREEN
-/obj/item/projectile/beam/disabler
+/obj/projectile/beam/disabler
name = "disabler beam"
icon_state = "omnilaser"
damage = 30
@@ -104,25 +104,25 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
light_color = LIGHT_COLOR_CYAN
-/obj/item/projectile/beam/disabler/weak
+/obj/projectile/beam/disabler/weak
name = "weakened disabler beam"
damage = 15
armor_penetration_flat = -10
light_color = LIGHT_COLOR_BLUE
-/obj/item/projectile/beam/disabler/fake
+/obj/projectile/beam/disabler/fake
name = "weakened disabler beam"
nodamage = 1
damage = 0
-/obj/item/projectile/beam/disabler/pellet
+/obj/projectile/beam/disabler/pellet
name = "split disabler beam"
icon_state = "scatterdisabler"
damage = 10
light_color = LIGHT_COLOR_BLUE
range = 8
-/obj/item/projectile/beam/pulse
+/obj/projectile/beam/pulse
name = "pulse"
icon_state = "u_laser"
damage = 50
@@ -131,7 +131,7 @@
/// If this shot can immediately destroy rwalls or not
var/weakened_against_rwalls = FALSE
-/obj/item/projectile/beam/pulse/hitscan
+/obj/projectile/beam/pulse/hitscan
impact_effect_type = null
light_color = null
hitscan = TRUE
@@ -147,26 +147,26 @@
impact_light_range = 2.5
impact_light_color_override = LIGHT_COLOR_DARKBLUE
-/obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = 0)
+/obj/projectile/beam/pulse/on_hit(atom/target, blocked = 0)
if(isreinforcedwallturf(target) && weakened_against_rwalls)
target.ex_act(EXPLODE_LIGHT)
else if(isturf(target) || isstructure(target) || ismachinery(target))
target.ex_act(EXPLODE_HEAVY)
..()
-/obj/item/projectile/beam/pulse/shot
+/obj/projectile/beam/pulse/shot
name = "proto pulse"
damage = 40
weakened_against_rwalls = TRUE
-/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/hitscan
+/obj/projectile/beam/emitter/hitscan
hitscan = TRUE
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter
tracer_type = /obj/effect/projectile/tracer/laser/emitter
@@ -181,10 +181,10 @@
impact_light_range = 2.5
impact_light_color_override = 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 = 'sound/weapons/tap.ogg'
@@ -196,7 +196,7 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
light_color = LIGHT_COLOR_DARKBLUE
-/obj/item/projectile/beam/lasertag/on_hit(atom/target, blocked = 0)
+/obj/projectile/beam/lasertag/on_hit(atom/target, blocked = 0)
. = ..()
if(ishuman(target))
var/mob/living/carbon/human/M = target
@@ -205,34 +205,34 @@
M.apply_damage(34, STAMINA)
return 1
-/obj/item/projectile/beam/lasertag/omni
+/obj/projectile/beam/lasertag/omni
-/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
light_color = LIGHT_COLOR_DARKRED
-/obj/item/projectile/beam/lasertag/bluetag
+/obj/projectile/beam/lasertag/bluetag
icon_state = "bluelaser"
suit_types = list(/obj/item/clothing/suit/redtag)
light_color = LIGHT_COLOR_BLUE
-/obj/item/projectile/beam/immolator
+/obj/projectile/beam/immolator
name = "immolation beam"
immolate = 1
-/obj/item/projectile/beam/immolator/strong
+/obj/projectile/beam/immolator/strong
name = "heavy immolation beam"
damage = 45
icon_state = "heavylaser"
-/obj/item/projectile/beam/immolator/weak
+/obj/projectile/beam/immolator/weak
name = "light immolation beam"
damage = 8
icon_state = "scatterlaser"
-/obj/item/projectile/beam/immolator/weak/hitscan
+/obj/projectile/beam/immolator/weak/hitscan
color = LIGHT_COLOR_FIRE
hitscan = TRUE
muzzle_type = /obj/effect/projectile/muzzle/laser
@@ -248,7 +248,7 @@
impact_light_range = 2.5
impact_light_color_override = LIGHT_COLOR_FIRE
-/obj/item/projectile/beam/instakill
+/obj/projectile/beam/instakill
name = "instagib laser"
icon_state = "purple_laser"
damage = 200
@@ -256,24 +256,24 @@
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_DARKBLUE
-/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_DARKRED
-/obj/item/projectile/beam/instakill/on_hit(atom/target)
+/obj/projectile/beam/instakill/on_hit(atom/target)
. = ..()
if(isliving(target))
var/mob/living/L = target
L.visible_message("[L] explodes!")
L.quick_explode_gib()
-/obj/item/projectile/beam/laser/detective
+/obj/projectile/beam/laser/detective
name = "energy revolver shot"
icon_state = "omnilaser"
light_color = LIGHT_COLOR_CYAN
@@ -282,7 +282,7 @@
stamina = 25
eyeblur = 2 SECONDS
-/obj/item/projectile/beam/laser/detective/overcharged
+/obj/projectile/beam/laser/detective/overcharged
name = "overcharged shot"
icon_state = "spark"
light_color = LIGHT_COLOR_DARKRED
@@ -292,7 +292,7 @@
stamina = 15
eyeblur = 4 SECONDS
-/obj/item/projectile/beam/laser/detective/tracker_warrant_shot
+/obj/projectile/beam/laser/detective/tracker_warrant_shot
name = "tracker shot"
icon_state = "yellow_laser"
light_color = LIGHT_COLOR_YELLOW
@@ -300,7 +300,7 @@
stamina = 0
reflectability = REFLECTABILITY_PHYSICAL //No mr cult juggernaught, please don't set me to search!
-/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/on_hit(atom/target)
+/obj/projectile/beam/laser/detective/tracker_warrant_shot/on_hit(atom/target)
. = ..()
if(!ishuman(target))
no_worky(target)
@@ -308,7 +308,7 @@
start_tracking(target)
set_warrant(target)
-/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/proc/start_tracking(atom/target)
+/obj/projectile/beam/laser/detective/tracker_warrant_shot/proc/start_tracking(atom/target)
var/obj/item/gun/energy/detective/D = firer_source_atom
if(!D)
no_worky(target)
@@ -318,7 +318,7 @@
return
D.start_pointing(target.UID())
-/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/proc/set_warrant(atom/target)
+/obj/projectile/beam/laser/detective/tracker_warrant_shot/proc/set_warrant(atom/target)
var/mob/living/carbon/human/target_to_mark = target
var/perpname = target_to_mark.get_visible_name(TRUE)
if(!perpname || perpname == "Unknown")
@@ -330,7 +330,7 @@
return
set_criminal_status(firer, R, SEC_RECORD_STATUS_SEARCH, "Target tagged by Detective Revolver", "Detective Revolver")
-/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/proc/no_worky(atom/target, tracking_already, warrant_fail)
+/obj/projectile/beam/laser/detective/tracker_warrant_shot/proc/no_worky(atom/target, tracking_already, warrant_fail)
if(tracking_already)
to_chat(firer, "Weapon Alert: You are already tracking a target!")
return
@@ -339,7 +339,7 @@
return
to_chat(firer, "Weapon Alert: unable to track [target]!")
-/obj/item/projectile/beam/silencer
+/obj/projectile/beam/silencer
name = "energy beam" //Keep it vague? It's not a laser, but it's silenced, does a person know what it is?
icon_state = "omnilaser"
stamina = 30
@@ -351,13 +351,13 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
light_color = LIGHT_COLOR_CYAN
-/obj/item/projectile/beam/laser/sparker
+/obj/projectile/beam/laser/sparker
name = "sparker beam"
icon_state = "scatterlaser"
damage = 12.5
range = 12
-/obj/item/projectile/beam/laser/sparker/on_range()
+/obj/projectile/beam/laser/sparker/on_range()
new /obj/effect/particle_effect/sparks(get_turf(src))
return ..()
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 6e48c342558..f14cd4db7dc 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -1,16 +1,16 @@
-/obj/item/projectile/bullet
+/obj/projectile/bullet
name = "bullet"
damage = 60
hitsound_wall = "ricochet"
impact_effect_type = /obj/effect/temp_visual/impact_effect
/// beanbag, heavy stamina damage
-/obj/item/projectile/bullet/weakbullet
+/obj/projectile/bullet/weakbullet
name = "beanbag slug"
damage = 5
stamina = 40
-/obj/item/projectile/bullet/weakbullet/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/weakbullet/on_hit(atom/target, blocked = 0)
. = ..()
if(isliving(target))
var/mob/living/L = target
@@ -18,9 +18,9 @@
var/atom/throw_target = get_edge_target_turf(L, get_dir(src, get_step_away(L, starting)))
L.throw_at(throw_target, 1, 2)
-/obj/item/projectile/bullet/weakbullet/booze
+/obj/projectile/bullet/weakbullet/booze
-/obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0)
if(..(target, blocked))
var/mob/living/M = target
M.AdjustDizzy(40 SECONDS)
@@ -37,57 +37,57 @@
M.AdjustDrowsy(20 SECONDS)
A.volume += 5 //Because we can
-/obj/item/projectile/bullet/weakbullet2
+/obj/projectile/bullet/weakbullet2
name = "rubber bullet"
damage = 5
stamina = 35
icon_state = "bullet-r"
-/obj/item/projectile/bullet/weakbullet3
+/obj/projectile/bullet/weakbullet3
damage = 20
-/obj/item/projectile/bullet/weakbullet4
+/obj/projectile/bullet/weakbullet4
name = "rubber bullet"
damage = 5
stamina = 30
icon_state = "bullet-r"
-/obj/item/projectile/bullet/toxinbullet
+/obj/projectile/bullet/toxinbullet
damage = 15
damage_type = TOX
color = COLOR_GREEN
-/obj/item/projectile/bullet/incendiary
+/obj/projectile/bullet/incendiary
immolate = 1
-/obj/item/projectile/bullet/incendiary/firebullet
+/obj/projectile/bullet/incendiary/firebullet
damage = 10
-/obj/item/projectile/bullet/armourpiercing
+/obj/projectile/bullet/armourpiercing
damage = 17
armor_penetration_flat = 10
-/obj/item/projectile/bullet/armourpiercing/wt550
+/obj/projectile/bullet/armourpiercing/wt550
damage = 15
armor_penetration_percentage = 50
armor_penetration_flat = 25
-/obj/item/projectile/bullet/pellet
+/obj/projectile/bullet/pellet
name = "pellet"
damage = 12.5
tile_dropoff = 0.75
tile_dropoff_s = 1.25
armor_penetration_flat = -20
-/obj/item/projectile/bullet/pellet/rubber
+/obj/projectile/bullet/pellet/rubber
name = "rubber pellet"
damage = 3
stamina = 12.5
icon_state = "bullet-r"
armor_penetration_flat = -10
-/obj/item/projectile/bullet/pellet/rubber/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/pellet/rubber/on_hit(atom/target, blocked = 0)
. = ..()
if(!ishuman(target))
return
@@ -96,62 +96,62 @@
if(initial(range) - range <= 5 && H.getStaminaLoss() >= 60)
H.KnockDown(8 SECONDS)
-/obj/item/projectile/bullet/pellet/rubber/stinger
+/obj/projectile/bullet/pellet/rubber/stinger
name = "stingball"
damage = 1
-/obj/item/projectile/bullet/pellet/assassination
+/obj/projectile/bullet/pellet/assassination
damage = 12
tile_dropoff = 1 // slightly less damage and greater damage falloff compared to normal buckshot
-/obj/item/projectile/bullet/pellet/assassination/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/pellet/assassination/on_hit(atom/target, blocked = 0)
if(..(target, blocked))
var/mob/living/M = target
M.AdjustSilence(4 SECONDS) // HELP MIME KILLING ME IN MAINT
-/obj/item/projectile/bullet/midbullet
+/obj/projectile/bullet/midbullet
damage = 20
stamina = 45 // Three rounds from the c20r knocks unarmoured people down, four for people with bulletproof
-/obj/item/projectile/bullet/midbullet_r
+/obj/projectile/bullet/midbullet_r
damage = 5
stamina = 75 //Still two rounds to knock people down
-/obj/item/projectile/bullet/midbullet2
+/obj/projectile/bullet/midbullet2
damage = 25
-/obj/item/projectile/bullet/midbullet3
+/obj/projectile/bullet/midbullet3
damage = 30
-/obj/item/projectile/bullet/midbullet3/hp
+/obj/projectile/bullet/midbullet3/hp
damage = 40
armor_penetration_flat = -40
-/obj/item/projectile/bullet/midbullet3/ap
+/obj/projectile/bullet/midbullet3/ap
damage = 27
armor_penetration_flat = 40
-/obj/item/projectile/bullet/midbullet3/fire
+/obj/projectile/bullet/midbullet3/fire
immolate = 1
-/obj/item/projectile/bullet/midbullet3/overgrown
+/obj/projectile/bullet/midbullet3/overgrown
icon = 'icons/obj/ammo.dmi'
icon_state = "peashooter_bullet"
damage = 25
-/obj/item/projectile/bullet/midbullet3/overgrown/prehit(atom/target)
+/obj/projectile/bullet/midbullet3/overgrown/prehit(atom/target)
if(HAS_TRAIT(target, TRAIT_I_WANT_BRAINS))
damage += 10
return ..()
-/obj/item/projectile/bullet/heavybullet
+/obj/projectile/bullet/heavybullet
damage = 35
-/obj/item/projectile/bullet/heavybullet2
+/obj/projectile/bullet/heavybullet2
damage = 40
/// taser slugs for shotguns, nothing special
-/obj/item/projectile/bullet/stunshot
+/obj/projectile/bullet/stunshot
name = "stunshot"
damage = 5
weaken = 10 SECONDS
@@ -161,11 +161,11 @@
icon_state = "spark"
color = "#FFFF00"
-/obj/item/projectile/bullet/incendiary/shell
+/obj/projectile/bullet/incendiary/shell
name = "incendiary slug"
damage = 20
-/obj/item/projectile/bullet/incendiary/shell/Move()
+/obj/projectile/bullet/incendiary/shell/Move()
..()
var/turf/location = get_turf(src)
if(location)
@@ -174,11 +174,11 @@
hotspot.recolor()
location.hotspot_expose(700, 50)
-/obj/item/projectile/bullet/incendiary/shell/dragonsbreath
+/obj/projectile/bullet/incendiary/shell/dragonsbreath
name = "dragonsbreath round"
damage = 5
-/obj/item/projectile/bullet/meteorshot
+/obj/projectile/bullet/meteorshot
name = "meteor"
icon = 'icons/obj/meteor.dmi'
icon_state = "dust"
@@ -186,7 +186,7 @@
knockdown = 8 SECONDS
hitsound = 'sound/effects/meteorimpact.ogg'
-/obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0)
..()
if(ismovable(target))
var/atom/movable/M = target
@@ -194,15 +194,15 @@
var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src)))
M.throw_at(throw_target, 3, 2)
-/obj/item/projectile/bullet/meteorshot/New()
+/obj/projectile/bullet/meteorshot/New()
..()
SpinAnimation()
-/obj/item/projectile/bullet/mime
+/obj/projectile/bullet/mime
damage = 40
var/special_effects = TRUE
-/obj/item/projectile/bullet/mime/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/mime/on_hit(atom/target, blocked = 0)
..(target, blocked)
if(special_effects)
if(iscarbon(target))
@@ -215,28 +215,28 @@
for(var/obj/item/mecha_parts/mecha_equipment/weapon/honker in chassis.equipment)
honker.set_ready_state(0)
-/obj/item/projectile/bullet/mime/nonlethal
+/obj/projectile/bullet/mime/nonlethal
damage = 0 /// We deal no normal damage...
stamina = 40 /// ...Rather a large amount of stamina damage. Used in the mime mecha
-/obj/item/projectile/bullet/mime/fake
+/obj/projectile/bullet/mime/fake
damage = 0
nodamage = TRUE
special_effects = FALSE
log_override = TRUE
-/obj/item/projectile/bullet/dart
+/obj/projectile/bullet/dart
name = "dart"
icon_state = "cbbolt"
damage = 6
var/penetrate_thick = FALSE
-/obj/item/projectile/bullet/dart/New()
+/obj/projectile/bullet/dart/New()
..()
create_reagents(50)
reagents.set_reacting(FALSE)
-/obj/item/projectile/bullet/dart/on_hit(atom/target, blocked = 0, hit_zone)
+/obj/projectile/bullet/dart/on_hit(atom/target, blocked = 0, hit_zone)
if(iscarbon(target))
var/mob/living/carbon/M = target
if(blocked != INFINITY)
@@ -255,39 +255,39 @@
reagents.handle_reactions()
return TRUE
-/obj/item/projectile/bullet/dart/metalfoam
+/obj/projectile/bullet/dart/metalfoam
-/obj/item/projectile/bullet/dart/metalfoam/New()
+/obj/projectile/bullet/dart/metalfoam/New()
..()
reagents.add_reagent("aluminum", 15)
reagents.add_reagent("fluorosurfactant", 5)
reagents.add_reagent("sacid", 5)
//This one is for future syringe guns update
-/obj/item/projectile/bullet/dart/syringe
+/obj/projectile/bullet/dart/syringe
name = "syringe"
icon = 'icons/obj/chemical.dmi'
icon_state = "syringeproj"
-/obj/item/projectile/bullet/dart/syringe/heavyduty
+/obj/projectile/bullet/dart/syringe/heavyduty
damage = 20
-/obj/item/projectile/bullet/dart/syringe/pierce_ignore
+/obj/projectile/bullet/dart/syringe/pierce_ignore
penetrate_thick = TRUE
-/obj/item/projectile/bullet/dart/syringe/tranquilizer
+/obj/projectile/bullet/dart/syringe/tranquilizer
-/obj/item/projectile/bullet/dart/syringe/tranquilizer/New()
+/obj/projectile/bullet/dart/syringe/tranquilizer/New()
..()
reagents.add_reagent("haloperidol", 15)
-/obj/item/projectile/bullet/dart/syringe/holy
+/obj/projectile/bullet/dart/syringe/holy
-/obj/item/projectile/bullet/dart/syringe/holy/New()
+/obj/projectile/bullet/dart/syringe/holy/New()
..()
reagents.add_reagent("holywater", 10)
-/obj/item/projectile/bullet/neurotoxin
+/obj/projectile/bullet/neurotoxin
name = "neurotoxin spit"
icon_state = "neurotoxin"
damage = 5
@@ -295,28 +295,28 @@
stamina = 40
knockdown = 10 SECONDS
-/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = 0)
if(isalien(target))
knockdown = 0
nodamage = TRUE
. = ..() // Execute the rest of the code.
-/obj/item/projectile/bullet/anti_alien_toxin
+/obj/projectile/bullet/anti_alien_toxin
name = "neurotoxin spit"
icon_state = "neurotoxin"
damage = 15 // FRENDLY FIRE FRENDLY FIRE
damage_type = BURN
-/obj/item/projectile/bullet/anti_alien_toxin/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/anti_alien_toxin/on_hit(atom/target, blocked = 0)
if(isalien(target))
stun = 10 SECONDS
. = ..()
-/obj/item/projectile/bullet/cap
+/obj/projectile/bullet/cap
name = "cap"
damage = 0
nodamage = 1
-/obj/item/projectile/bullet/cap/fire()
+/obj/projectile/bullet/cap/fire()
loc = null
qdel(src)
diff --git a/code/modules/projectiles/projectile/energy_projectiles.dm b/code/modules/projectiles/projectile/energy_projectiles.dm
index a31bbc2c611..7e2371944c3 100644
--- a/code/modules/projectiles/projectile/energy_projectiles.dm
+++ b/code/modules/projectiles/projectile/energy_projectiles.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/energy
+/obj/projectile/energy
name = "energy"
icon_state = "spark"
damage = 0
@@ -6,7 +6,7 @@
flag = "energy"
reflectability = REFLECTABILITY_ENERGY
-/obj/item/projectile/energy/electrode
+/obj/projectile/energy/electrode
name = "electrode"
color = "#FFFF00"
nodamage = 1
@@ -17,7 +17,7 @@
range = 7
//Damage will be handled on the MOB side, to prevent window shattering.
-/obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = 0)
+/obj/projectile/energy/electrode/on_hit(atom/target, blocked = 0)
. = ..()
if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks!
do_sparks(1, 1, src)
@@ -30,11 +30,11 @@
spawn(5)
C.Jitter(jitter)
-/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
+/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, 1, src)
..()
-/obj/item/projectile/energy/declone
+/obj/projectile/energy/declone
name = "declone"
icon_state = "declone"
damage = 20
@@ -42,7 +42,7 @@
irradiate = 10
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
-/obj/item/projectile/energy/bolt
+/obj/projectile/energy/bolt
name = "bolt"
icon_state = "cbbolt"
damage = 15
@@ -52,12 +52,12 @@
knockdown = 2 SECONDS
slur = 10 SECONDS
-/obj/item/projectile/energy/bolt/large
+/obj/projectile/energy/bolt/large
damage = 20
#define BSG_BASE_DAMAGE 90
-/obj/item/projectile/energy/bsg
+/obj/projectile/energy/bsg
name = "orb of pure bluespace energy"
icon_state = "bluespace"
impact_effect_type = /obj/effect/temp_visual/bsg_kaboom
@@ -71,23 +71,23 @@
/obj/item/ammo_casing/energy/bsg/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
..()
- var/obj/item/projectile/energy/bsg/P = BB
- addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/item/projectile/energy/bsg, make_chain), P, user), 1)
+ var/obj/projectile/energy/bsg/P = BB
+ addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/projectile/energy/bsg, make_chain), P, user), 1)
-/obj/item/projectile/energy/bsg/proc/make_chain(obj/item/projectile/P, mob/user)
+/obj/projectile/energy/bsg/proc/make_chain(obj/projectile/P, mob/user)
P.chain = P.Beam(user, icon_state = "sm_arc_supercharged", icon = 'icons/effects/beam.dmi', time = 10 SECONDS, maxdistance = 30)
-/obj/item/projectile/energy/bsg/on_hit(atom/target)
+/obj/projectile/energy/bsg/on_hit(atom/target)
. = ..()
kaboom(target)
qdel(src)
-/obj/item/projectile/energy/bsg/on_range()
+/obj/projectile/energy/bsg/on_range()
kaboom()
new /obj/effect/temp_visual/bsg_kaboom(loc)
..()
-/obj/item/projectile/energy/bsg/proc/kaboom(atom/target)
+/obj/projectile/energy/bsg/proc/kaboom(atom/target)
// If a lens is modifying the damage of the projectile, the AOE should be impacted as well
var/damage_multiplier = damage / BSG_BASE_DAMAGE
playsound(src, 'sound/weapons/bsg_explode.ogg', 75, TRUE)
@@ -122,12 +122,12 @@
#undef BSG_BASE_DAMAGE
-/obj/item/projectile/energy/weak_plasma
+/obj/projectile/energy/weak_plasma
name = "plasma bolt"
icon_state = "plasma_light"
damage = 12.5
-/obj/item/projectile/homing/charged_plasma
+/obj/projectile/homing/charged_plasma
name = "charged plasma bolt"
icon_state = "plasma_heavy"
damage = 45
@@ -137,7 +137,7 @@
shield_buster = TRUE
var/reached_target = FALSE
-/obj/item/projectile/homing/charged_plasma/pixel_move(trajectory_multiplier)
+/obj/projectile/homing/charged_plasma/pixel_move(trajectory_multiplier)
homing_active = FALSE
if(isturf(original))
return ..() //It gets weird if it is a turf. Turfs don't move anyway.
@@ -155,13 +155,13 @@
#define ARC_REVOLVER_BASE_DAMAGE 10
-/obj/item/projectile/energy/arc_revolver
+/obj/projectile/energy/arc_revolver
name = "arc emitter"
icon_state = "plasma_light"
damage = ARC_REVOLVER_BASE_DAMAGE
var/charge_number = null
-/obj/item/projectile/energy/arc_revolver/on_hit(atom/target)
+/obj/projectile/energy/arc_revolver/on_hit(atom/target)
. = ..()
for(var/obj/effect/E in target)
if(istype(E, /obj/effect/abstract/arc_revolver))
diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm
index 919d65797b8..0102a0600f9 100644
--- a/code/modules/projectiles/projectile/force.dm
+++ b/code/modules/projectiles/projectile/force.dm
@@ -1,12 +1,12 @@
-/obj/item/projectile/forcebolt
+/obj/projectile/forcebolt
name = "force bolt"
icon_state = "ice_1"
damage = 20
flag = "energy"
-/obj/item/projectile/forcebolt/strong
+/obj/projectile/forcebolt/strong
-/obj/item/projectile/forcebolt/on_hit(atom/movable/target, blocked = 0)
+/obj/projectile/forcebolt/on_hit(atom/movable/target, blocked = 0)
. = ..()
if(istype(target) && blocked < 100)
var/throwdir = get_dir(firer, target)
diff --git a/code/modules/projectiles/projectile/homing_projectiles.dm b/code/modules/projectiles/projectile/homing_projectiles.dm
index 45fab1fb5d6..671bae61416 100644
--- a/code/modules/projectiles/projectile/homing_projectiles.dm
+++ b/code/modules/projectiles/projectile/homing_projectiles.dm
@@ -1,8 +1,8 @@
-/obj/item/projectile/homing
+/obj/projectile/homing
name = "smart bullet"
var/homing_active = TRUE
-/obj/item/projectile/homing/pixel_move(trajectory_multiplier)
+/obj/projectile/homing/pixel_move(trajectory_multiplier)
. = ..()
if(!homing_active)
return
@@ -21,7 +21,7 @@
var/angle = ATAN2(dy, dx)
set_angle(angle)
-/obj/item/projectile/homing/magic
+/obj/projectile/homing/magic
name = "bolt of nothing"
icon_state = "energy"
damage = 0
@@ -32,7 +32,7 @@
antimagic_flags = MAGIC_RESISTANCE
antimagic_charge_cost = 1
-/obj/item/projectile/homing/magic/toolbox
+/obj/projectile/homing/magic/toolbox
name = "magic toolbox"
icon = 'icons/obj/storage.dmi'
icon_state = "toolbox_default"
@@ -41,11 +41,11 @@
nodamage = FALSE
damage_type = BRUTE
-/obj/item/projectile/homing/magic/toolbox/on_range()
+/obj/projectile/homing/magic/toolbox/on_range()
. = ..()
new /obj/item/storage/toolbox(get_turf(src))
-/obj/item/projectile/homing/magic/toolbox/on_hit(atom/target, blocked, hit_zone)
+/obj/projectile/homing/magic/toolbox/on_hit(atom/target, blocked, hit_zone)
. = ..()
var/obj/item/storage/toolbox/T = new /obj/item/storage/toolbox(get_turf(src))
if(ishuman(target))
@@ -53,7 +53,7 @@
var/obj/item/organ/external/E = pick(H.bodyparts)
E.add_embedded_object(T)
-/obj/item/projectile/homing/magic/homing_fireball
+/obj/projectile/homing/magic/homing_fireball
name = "greater bolt of fireball"
icon_state = "fireball"
damage = 20
@@ -67,7 +67,7 @@
var/explosion_flash = 4
var/explosion_fire = 3
-/obj/item/projectile/homing/magic/homing_fireball/on_hit(mob/living/target)
+/obj/projectile/homing/magic/homing_fireball/on_hit(mob/living/target)
. = ..()
if(ismob(target))
if(!.)
diff --git a/code/modules/projectiles/projectile/magic_projectiles.dm b/code/modules/projectiles/projectile/magic_projectiles.dm
index c8fba685cf9..ecb4bffdaf6 100644
--- a/code/modules/projectiles/projectile/magic_projectiles.dm
+++ b/code/modules/projectiles/projectile/magic_projectiles.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/magic
+/obj/projectile/magic
name = "bolt of nothing"
icon_state = "energy"
damage = 0
@@ -9,7 +9,7 @@
antimagic_flags = MAGIC_RESISTANCE
antimagic_charge_cost = 1
-/obj/item/projectile/magic/death
+/obj/projectile/magic/death
name = "bolt of death"
icon_state = null
hitscan = TRUE
@@ -25,7 +25,7 @@
impact_light_range = 2.5
impact_light_color_override = LIGHT_COLOR_PURPLE
-/obj/item/projectile/magic/death/on_hit(mob/living/carbon/target)
+/obj/projectile/magic/death/on_hit(mob/living/carbon/target)
. = ..()
if(!.)
return .
@@ -43,7 +43,7 @@
target.visible_message("[target] topples backwards as the death bolt impacts [target.p_them()]!")
-/obj/item/projectile/magic/fireball
+/obj/projectile/magic/fireball
name = "bolt of fireball"
icon_state = "fireball"
damage = 10
@@ -58,7 +58,7 @@
var/exp_flash = 3
var/exp_fire = 2
-/obj/item/projectile/magic/fireball/Range()
+/obj/projectile/magic/fireball/Range()
var/turf/T1 = get_step(src,turn(dir, -45))
var/turf/T2 = get_step(src,turn(dir, 45))
var/turf/T3 = get_step(src,dir)
@@ -76,7 +76,7 @@
return
..()
-/obj/item/projectile/magic/fireball/on_hit(target)
+/obj/projectile/magic/fireball/on_hit(target)
. = ..()
if(ismob(target))
if(!.)
@@ -87,18 +87,18 @@
M.adjustFireLoss(10) // between this 10 burn, the 10 brute, the explosion brute, and the onfire burn, your at about 65 damage if you stop drop and roll immediately
-/obj/item/projectile/magic/fireball/infernal
+/obj/projectile/magic/fireball/infernal
name = "infernal fireball"
exp_heavy = -1
exp_light = -1
exp_flash = 4
exp_fire= 5
-/obj/item/projectile/magic/resurrection
+/obj/projectile/magic/resurrection
name = "bolt of resurrection"
icon_state = "ion"
-/obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
+/obj/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
. = ..()
if(!.)
return .
@@ -120,13 +120,13 @@
else
to_chat(target, "You rise with a start, you're alive!!!")
-/obj/item/projectile/magic/teleport
+/obj/projectile/magic/teleport
name = "bolt of teleportation"
icon_state = "bluespace"
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(!.)
return .
@@ -142,13 +142,13 @@
smoke.set_up(max(round(10 - teleammount), 1), FALSE, stuff) //Smoke drops off if a lot of stuff is moved for the sake of sanity
smoke.start()
-/obj/item/projectile/magic/door
+/obj/projectile/magic/door
name = "bolt of door creation"
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)
. = ..()
var/atom/T = target.loc
if(isturf(target) && target.density)
@@ -162,30 +162,30 @@
else if(istype(target, /obj/structure/closet))
OpenCloset(target)
-/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/simulated/floor/plasteel)
D.operate()
-/obj/item/projectile/magic/door/proc/OpenDoor(obj/machinery/door/D)
+/obj/projectile/magic/door/proc/OpenDoor(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/door/proc/OpenCloset(obj/structure/closet/C)
+/obj/projectile/magic/door/proc/OpenCloset(obj/structure/closet/C)
if(istype(C, /obj/structure/closet/secure_closet))
var/obj/structure/closet/secure_closet/SC = C
SC.locked = FALSE
C.open()
-/obj/item/projectile/magic/change
+/obj/projectile/magic/change
name = "bolt of change"
icon_state = "ice_1"
damage_type = BURN
-/obj/item/projectile/magic/change/on_hit(atom/change)
+/obj/projectile/magic/change/on_hit(atom/change)
. = ..()
if(!.)
return .
@@ -342,12 +342,12 @@ GLOBAL_LIST_INIT(wabbajack_docile_animals, list(
qdel(M)
return new_mob
-/obj/item/projectile/magic/animate
+/obj/projectile/magic/animate
name = "bolt of animation"
icon_state = "red_1"
damage_type = BURN
-/obj/item/projectile/magic/animate/Bump(atom/change)
+/obj/projectile/magic/animate/Bump(atom/change)
if(isitem(change) || isstructure(change) && !is_type_in_list(change, GLOB.protected_objects))
if(istype(change, /obj/structure/closet/statue))
for(var/mob/living/carbon/human/H in change.contents)
@@ -377,7 +377,7 @@ GLOBAL_LIST_INIT(wabbajack_docile_animals, list(
C.ChangeOwner(firer)
return ..()
-/obj/item/projectile/magic/slipping
+/obj/projectile/magic/slipping
name = "magical banana"
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "banana"
@@ -385,11 +385,11 @@ GLOBAL_LIST_INIT(wabbajack_docile_animals, list(
var/slip_weaken = 10 SECONDS
hitsound = 'sound/items/bikehorn.ogg'
-/obj/item/projectile/magic/slipping/New()
+/obj/projectile/magic/slipping/New()
..()
SpinAnimation()
-/obj/item/projectile/magic/slipping/on_hit(atom/target, blocked = 0)
+/obj/projectile/magic/slipping/on_hit(atom/target, blocked = 0)
. = ..()
if(!.)
return .
@@ -408,7 +408,7 @@ GLOBAL_LIST_INIT(wabbajack_docile_animals, list(
L.Weaken(slip_weaken)
L.Stun(slip_stun)
-/obj/item/projectile/magic/arcane_barrage
+/obj/projectile/magic/arcane_barrage
name = "arcane bolt"
icon_state = "arcane_barrage"
damage = 20
diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm
index 60c5e828a1e..7a6b10d9440 100644
--- a/code/modules/projectiles/projectile/reusable.dm
+++ b/code/modules/projectiles/projectile/reusable.dm
@@ -1,31 +1,31 @@
-/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 = 0
impact_effect_type = null
-/obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/reusable/on_hit(atom/target, blocked = 0)
. = ..()
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)
new ammo_type(loc)
dropped = 1
-/obj/item/projectile/bullet/reusable/magspear
+/obj/projectile/bullet/reusable/magspear
name = "magnetic spear"
desc = "WHITE WHALE, HOLY GRAIL!"
damage = 30 //takes 3 spears to kill a mega carp, one to kill a normal carp
icon_state = "magspear"
ammo_type = /obj/item/ammo_casing/caseless/magspear
-/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.
@@ -38,7 +38,7 @@
var/obj/item/pen/pen = null
log_override = TRUE//it won't log even when there's a pen inside, but since the damage will be so low, I don't think there's any point in making it any more complex
-/obj/item/projectile/bullet/reusable/foam_dart/handle_drop()
+/obj/projectile/bullet/reusable/foam_dart/handle_drop()
if(dropped)
return
dropped = 1
@@ -51,11 +51,11 @@
pen = null
newdart.update_appearance(UPDATE_DESC|UPDATE_ICON_STATE)
-/obj/item/projectile/bullet/reusable/foam_dart/Destroy()
+/obj/projectile/bullet/reusable/foam_dart/Destroy()
QDEL_NULL(pen)
return ..()
-/obj/item/projectile/bullet/reusable/foam_dart/riot
+/obj/projectile/bullet/reusable/foam_dart/riot
name = "riot foam dart"
icon_state = "foamdart_riot"
damage = 25
@@ -64,13 +64,13 @@
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
log_override = FALSE
-/obj/item/projectile/bullet/reusable/foam_dart/sniper
+/obj/projectile/bullet/reusable/foam_dart/sniper
name = "foam sniper dart"
icon_state = "foamdartsniper"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper
range = 30
-/obj/item/projectile/bullet/reusable/foam_dart/sniper/riot
+/obj/projectile/bullet/reusable/foam_dart/sniper/riot
name = "riot sniper foam dart"
icon_state = "foamdartsniper_riot"
damage = 100
diff --git a/code/modules/projectiles/projectile/special_projectiles.dm b/code/modules/projectiles/projectile/special_projectiles.dm
index 45e42f80bc4..c51298c1574 100644
--- a/code/modules/projectiles/projectile/special_projectiles.dm
+++ b/code/modules/projectiles/projectile/special_projectiles.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/ion
+/obj/projectile/ion
name = "ion bolt"
icon_state = "ion"
damage = 0
@@ -10,38 +10,38 @@
var/strong_emp = 1
var/weak_emp = 1
-/obj/item/projectile/ion/on_hit(atom/target, blocked = 0)
+/obj/projectile/ion/on_hit(atom/target, blocked = 0)
..()
empulse(target, strong_emp, weak_emp, TRUE, cause = "[type] fired by [key_name(firer)]")
return TRUE
-/obj/item/projectile/ion/weak
+/obj/projectile/ion/weak
strong_emp = -1
weak_emp = 0
-/obj/item/projectile/bullet/gyro
+/obj/projectile/bullet/gyro
name ="explosive bolt"
icon_state= "bolter"
damage = 50
alwayslog = TRUE
-/obj/item/projectile/bullet/gyro/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/gyro/on_hit(atom/target, blocked = 0)
..()
explosion(target, -1, 0, 2, cause = "[type] fired by [key_name(firer)]")
return TRUE
-/obj/item/projectile/bullet/a40mm
+/obj/projectile/bullet/a40mm
name ="40mm grenade"
desc = "USE A WEEL GUN."
icon_state= "bolter"
alwayslog = TRUE
-/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0)
..()
explosion(target, -1, 0, 2, 1, 0, flame_range = 3, cause = "[type] fired by [key_name(firer)]")
return TRUE
-/obj/item/projectile/temp
+/obj/projectile/temp
name = "temperature beam"
icon_state = "temp_4"
damage = 0
@@ -51,7 +51,7 @@
var/temperature = 300
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
-/obj/item/projectile/temp/New(loc, shot_temp)
+/obj/projectile/temp/New(loc, shot_temp)
..()
if(!isnull(shot_temp))
temperature = shot_temp
@@ -88,7 +88,7 @@
icon_state = "temp_4"
-/obj/item/projectile/temp/on_hit(atom/target, blocked = 0)//These two could likely check temp protection on the mob
+/obj/projectile/temp/on_hit(atom/target, blocked = 0)//These two could likely check temp protection on the mob
..()
if(isliving(target))
var/mob/living/M = target
@@ -99,14 +99,14 @@
playsound(M.loc, 'sound/effects/bamf.ogg', 50, 0)
return 1
-/obj/item/projectile/meteor
+/obj/projectile/meteor
name = "meteor"
icon = 'icons/obj/meteor.dmi'
icon_state = "small"
damage = 0
nodamage = 1
-/obj/item/projectile/meteor/Bump(atom/A)
+/obj/projectile/meteor/Bump(atom/A)
if(A == firer)
loc = A.loc
return
@@ -116,14 +116,14 @@
shake_camera(M, 3, 1)
qdel(src)
-/obj/item/projectile/missile
+/obj/projectile/missile
icon = 'icons/obj/grenade.dmi'
icon_state = "missile"
damage = 50
///If the missile will have a heavy, or light explosion.
var/heavy = TRUE
-/obj/item/projectile/missile/on_hit(atom/target, blocked, hit_zone)
+/obj/projectile/missile/on_hit(atom/target, blocked, hit_zone)
..()
if(heavy)
explosion(target, 1, 2, 3, cause = "[type] fired by [key_name(firer)]")
@@ -131,47 +131,47 @@
explosion(target, -1, 0, 2, cause = "[type] fired by [key_name(firer)]")
return TRUE
-/obj/item/projectile/missile/light
+/obj/projectile/missile/light
damage = 15
heavy = FALSE
-/obj/item/projectile/energy/floramut
+/obj/projectile/energy/floramut
name = "alpha somatoray"
icon_state = "energy"
damage_type = TOX
nodamage = TRUE
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
-/obj/item/projectile/energy/florayield
+/obj/projectile/energy/florayield
name = "beta somatoray"
icon_state = "energy2"
damage_type = TOX
nodamage = TRUE
impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser
-/obj/item/projectile/energy/mindflayer
+/obj/projectile/energy/mindflayer
name = "flayer ray"
-/obj/item/projectile/energy/mindflayer/on_hit(atom/target, blocked = 0)
+/obj/projectile/energy/mindflayer/on_hit(atom/target, blocked = 0)
. = ..()
if(ishuman(target))
var/mob/living/carbon/human/M = target
M.adjustBrainLoss(20)
M.AdjustHallucinate(20 SECONDS)
-/obj/item/projectile/clown
+/obj/projectile/clown
name = "snap-pop"
icon = 'icons/obj/toy.dmi'
icon_state = "snappop"
-/obj/item/projectile/clown/Bump(atom/A as mob|obj|turf|area)
+/obj/projectile/clown/Bump(atom/A as mob|obj|turf|area)
do_sparks(3, 1, src)
new /obj/effect/decal/cleanable/ash(loc)
visible_message("[src] explodes!","You hear a snap!")
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)
-/obj/item/projectile/beam/wormhole
+/obj/projectile/beam/wormhole
name = "wormhole beam"
icon_state = "spark"
hitsound = "sparks"
@@ -180,16 +180,16 @@
color = "#33CCFF"
nodamage = TRUE
-/obj/item/projectile/beam/wormhole/orange
+/obj/projectile/beam/wormhole/orange
name = "orange wormhole beam"
color = "#FF6600"
-/obj/item/projectile/beam/wormhole/New(obj/item/ammo_casing/energy/wormhole/casing)
+/obj/projectile/beam/wormhole/New(obj/item/ammo_casing/energy/wormhole/casing)
..()
if(istype(casing))
gun = casing.gun
-/obj/item/projectile/beam/wormhole/on_hit(atom/target)
+/obj/projectile/beam/wormhole/on_hit(atom/target)
if(ismob(target))
if(is_teleport_allowed(target.z))
var/turf/portal_destination = pick(orange(6, src))
@@ -199,30 +199,30 @@
qdel(src)
gun.create_portal(src)
-/obj/item/projectile/bullet/frag12
+/obj/projectile/bullet/frag12
name ="explosive slug"
damage = 15
alwayslog = TRUE
-/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0)
+/obj/projectile/bullet/frag12/on_hit(atom/target, blocked = 0)
..()
explosion(target, -1, 0, 1, cause = "frag 12 fired by [key_name(firer)]")
return TRUE
-/obj/item/projectile/bullet/confetti
+/obj/projectile/bullet/confetti
name = "confetti shot"
damage = 0
range = 3
-/obj/item/projectile/bullet/confetti/on_range()
+/obj/projectile/bullet/confetti/on_range()
confettisize(src, 7, 3)
..()
-/obj/item/projectile/bullet/confetti/on_hit(atom/target, blocked, hit_zone)
+/obj/projectile/bullet/confetti/on_hit(atom/target, blocked, hit_zone)
confettisize(src, 7, 3)
..()
-/obj/item/projectile/plasma
+/obj/projectile/plasma
name = "plasma blast"
icon_state = "plasmacutter"
damage = 5
@@ -243,14 +243,14 @@
impact_light_range = 2.5
impact_light_color_override = LIGHT_COLOR_CYAN
-/obj/item/projectile/plasma/prehit(atom/target)
+/obj/projectile/plasma/prehit(atom/target)
. = ..()
if(!lavaland_equipment_pressure_check(get_turf(target)))
name = "weakened [name]"
dismemberment = 0
sharp = FALSE
-/obj/item/projectile/plasma/on_hit(atom/target)
+/obj/projectile/plasma/on_hit(atom/target)
. = ..()
if(ismineralturf(target))
if(is_ancient_rock(target))
@@ -263,27 +263,27 @@
else
forcedodge = 0
-/obj/item/projectile/plasma/adv
+/obj/projectile/plasma/adv
damage = 7
range = 5
-/obj/item/projectile/plasma/adv/mech
+/obj/projectile/plasma/adv/mech
damage = 10
range = 9
-/obj/item/projectile/energy/teleport
+/obj/projectile/energy/teleport
name = "teleportation burst"
icon_state = "bluespace"
nodamage = 1
alwayslog = TRUE
var/obj/item/beacon/teleport_target
-/obj/item/projectile/energy/teleport/New(loc, tele_target)
+/obj/projectile/energy/teleport/New(loc, tele_target)
..(loc)
if(tele_target)
teleport_target = tele_target
-/obj/item/projectile/energy/teleport/on_hit(atom/target, blocked = 0)
+/obj/projectile/energy/teleport/on_hit(atom/target, blocked = 0)
var/turf/target_turf = get_turf(teleport_target)
if(isliving(target))
if(istype(target_turf) && (target_turf.z == target.z || teleport_target.emagged))
@@ -293,13 +293,13 @@
add_attack_logs(firer, target, "Shot with a [type] [teleport_target ? "(Destination: [teleport_target])" : ""]")
return ..()
-/obj/item/projectile/energy/demonic_grappler
+/obj/projectile/energy/demonic_grappler
name = "demonic grappler"
icon_state = "bluespace"
nodamage = 1
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
-/obj/item/projectile/energy/demonic_grappler/on_hit(atom/target, blocked = 0)
+/obj/projectile/energy/demonic_grappler/on_hit(atom/target, blocked = 0)
if(isliving(target))
var/turf/source_turf = get_turf(firer)
do_teleport(target, source_turf)
@@ -308,31 +308,31 @@
do_teleport(firer, miss_turf)
return ..()
-/obj/item/projectile/snowball
+/obj/projectile/snowball
name = "snowball"
icon_state = "snowball"
hitsound = 'sound/items/dodgeball.ogg'
damage = 4
damage_type = BURN
-/obj/item/projectile/snowball/on_hit(atom/target) //chilling
+/obj/projectile/snowball/on_hit(atom/target) //chilling
. = ..()
if(isliving(target))
var/mob/living/M = target
M.bodytemperature = max(0, M.bodytemperature - 50) //each hit will drop your body temp, so don't get surrounded!
M.ExtinguishMob() //bright side, they counter being on fire!
-/obj/item/projectile/ornament
+/obj/projectile/ornament
name = "ornament"
icon_state = "ornament-1"
hitsound = 'sound/effects/glasshit.ogg'
damage = 7
-/obj/item/projectile/ornament/New()
+/obj/projectile/ornament/New()
icon_state = pick("ornament-1", "ornament-2")
..()
-/obj/item/projectile/ornament/on_hit(atom/target) //knockback
+/obj/projectile/ornament/on_hit(atom/target) //knockback
..()
if(isturf(target))
return 0
@@ -341,7 +341,7 @@
T.throw_at(get_edge_target_turf(target, throwdir),10,10)
return 1
-/obj/item/projectile/mimic
+/obj/projectile/mimic
name = "googly-eyed gun"
hitsound = 'sound/weapons/genhit1.ogg'
damage = 0
@@ -350,7 +350,7 @@
flag = "melee"
var/obj/item/gun/stored_gun
-/obj/item/projectile/mimic/New(loc, mimic_type)
+/obj/projectile/mimic/New(loc, mimic_type)
..(loc)
if(mimic_type)
stored_gun = new mimic_type(src)
@@ -359,7 +359,7 @@
overlays = stored_gun.overlays
SpinAnimation(20, -1)
-/obj/item/projectile/mimic/on_hit(atom/target)
+/obj/projectile/mimic/on_hit(atom/target)
..()
var/turf/T = get_turf(src)
var/obj/item/gun/G = stored_gun
diff --git a/code/modules/projectiles/projectile/spit.dm b/code/modules/projectiles/projectile/spit.dm
index e61049179a2..b1f038224b9 100644
--- a/code/modules/projectiles/projectile/spit.dm
+++ b/code/modules/projectiles/projectile/spit.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/neurotox
+/obj/projectile/neurotox
name = "neurotoxin"
damage = 30
icon_state = "toxin"
diff --git a/code/modules/projectiles/projectile_base.dm b/code/modules/projectiles/projectile_base.dm
index f43567df7f3..181876eba44 100644
--- a/code/modules/projectiles/projectile_base.dm
+++ b/code/modules/projectiles/projectile_base.dm
@@ -3,7 +3,7 @@
/// How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers.
#define MUZZLE_EFFECT_PIXEL_INCREMENT 17
-/obj/item/projectile
+/obj/projectile
name = "projectile"
icon = 'icons/obj/projectiles.dmi'
icon_state = "bullet"
@@ -11,7 +11,15 @@
anchored = TRUE //There's a reason this is here, Mport. God fucking damn it -Agouri. Find&Fix by Pete. The reason this is here is to stop the curving of emitter shots.
flags = ABSTRACT
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- hitsound = 'sound/weapons/pierce.ogg'
+ blocks_emissive = EMISSIVE_BLOCK_GENERIC
+ pass_flags = PASSTABLE
+ animate_movement = NO_STEPS
+ /// Flat armor reduction, occurs after percentage armor penetration.
+ var/armor_penetration_flat
+ /// Percentage armor reduction, happens before flat armor reduction.
+ var/armor_penetration_percentage
+ /// Hit sound to play when we hit something
+ var/hitsound = 'sound/weapons/pierce.ogg'
var/hitsound_wall = ""
var/def_zone = "" //Aiming at
var/mob/firer = null//Who shot it
@@ -31,7 +39,6 @@
var/Angle = null
var/original_angle = null //Angle at firing
var/spread = 0 //amount (in degrees) of projectile spread
- animate_movement = NO_STEPS
var/ignore_source_check = FALSE
@@ -41,7 +48,7 @@
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 //Cael - bio and rad are also valid
- var/projectile_type = "/obj/item/projectile"
+ var/projectile_type = "/obj/projectile"
var/range = 50 //This will de-increment every step. When 0, it will delete the projectile.
/// Determines the reflectability level of a projectile, either REFLECTABILITY_NEVER, REFLECTABILITY_PHYSICAL, REFLECTABILITY_ENERGY in order of ease to reflect.
var/reflectability = REFLECTABILITY_PHYSICAL
@@ -138,17 +145,17 @@
/// determines the drain cost on the antimagic item
var/antimagic_charge_cost
-/obj/item/projectile/New()
+/obj/projectile/New()
return ..()
-/obj/item/projectile/Initialize(mapload)
+/obj/projectile/Initialize(mapload)
. = ..()
var/static/list/loc_connections = list(
COMSIG_ATOM_ENTERED = PROC_REF(on_atom_entered)
)
AddElement(/datum/element/connect_loc, loc_connections)
-/obj/item/projectile/proc/Range()
+/obj/projectile/proc/Range()
range--
if(damage && tile_dropoff)
damage = max(0, damage - tile_dropoff) // decrement projectile damage based on dropoff value for each tile it moves
@@ -159,10 +166,10 @@
if(!damage && !stamina && (tile_dropoff || tile_dropoff_s))
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)
-/obj/item/projectile/proc/prehit(atom/target)
+/obj/projectile/proc/prehit(atom/target)
if(isliving(target))
var/mob/living/victim = target
if(victim.can_block_magic(antimagic_flags, antimagic_charge_cost))
@@ -172,7 +179,7 @@
return FALSE
return TRUE
-/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone)
+/obj/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone)
var/turf/target_loca = get_turf(target)
var/hitx
var/hity
@@ -263,7 +270,7 @@
return were_affects_applied
-/obj/item/projectile/proc/get_splatter_blockage(turf/step_over, atom/target, splatter_dir, target_loca) //Check whether the place we want to splatter blood is blocked (i.e. by windows).
+/obj/projectile/proc/get_splatter_blockage(turf/step_over, atom/target, splatter_dir, target_loca) //Check whether the place we want to splatter blood is blocked (i.e. by windows).
var/turf/step_cardinal = !(splatter_dir in list(NORTH, SOUTH, EAST, WEST)) ? get_step(target_loca, get_cardinal_dir(target_loca, step_over)) : null
if(step_over.density && !step_over.CanPass(target, step_over, 1)) //Preliminary simple check.
@@ -272,18 +279,18 @@
if(border_obstacle.flags&ON_BORDER && get_dir(step_cardinal ? step_cardinal : target_loca, step_over) == turn(border_obstacle.dir, 180))
return TRUE
-/obj/item/projectile/proc/vol_by_damage()
+/obj/projectile/proc/vol_by_damage()
if(damage)
return clamp((damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100
else
return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume
-/obj/item/projectile/proc/store_hitscan_collision(datum/point_precise/point_cache)
+/obj/projectile/proc/store_hitscan_collision(datum/point_precise/point_cache)
beam_segments[beam_index] = point_cache
beam_index = point_cache
beam_segments[beam_index] = null
-/obj/item/projectile/Bump(atom/A)
+/obj/projectile/Bump(atom/A)
if(check_ricochet(A) && check_ricochet_flag(A) && ricochets < ricochets_max && is_reflectable(REFLECTABILITY_PHYSICAL))
if(hitscan && ricochets_max > 10)
ricochets_max = 10 //I do not want a chucklefuck editing this higher, sorry.
@@ -341,10 +348,10 @@
picked_mob.bullet_act(src, def_zone)
qdel(src)
-/obj/item/projectile/Process_Spacemove(movement_dir = 0, continuous_move = FALSE)
+/obj/projectile/Process_Spacemove(movement_dir = 0, continuous_move = FALSE)
return 1 //Bullets don't drift in space
-/obj/item/projectile/process()
+/obj/projectile/process()
if(!loc || !trajectory)
return PROCESS_KILL
if(paused || !isturf(loc))
@@ -364,7 +371,7 @@
for(var/i in 1 to required_moves)
pixel_move(1)
-/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
@@ -408,7 +415,7 @@
animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW)
Range()
-/obj/item/projectile/proc/fire(setAngle)
+/obj/projectile/proc/fire(setAngle)
if(setAngle)
Angle = setAngle
if(!current || loc == current)
@@ -431,7 +438,7 @@
START_PROCESSING(SSprojectiles, src)
pixel_move(1, FALSE)
-/obj/item/projectile/proc/reflect_back(atom/source, list/position_modifiers = list(0, 0, 0, 0, 0, -1, 1, -2, 2))
+/obj/projectile/proc/reflect_back(atom/source, list/position_modifiers = list(0, 0, 0, 0, 0, -1, 1, -2, 2))
if(!starting)
return
var/new_x = starting.x + pick(position_modifiers)
@@ -452,14 +459,14 @@
set_angle(get_angle(curloc, original))
/// A mob moving on a tile with a projectile is hit by it.
-/obj/item/projectile/proc/on_atom_entered(datum/source, atom/movable/entered)
+/obj/projectile/proc/on_atom_entered(datum/source, atom/movable/entered)
if(!isliving(entered))
return
var/mob/living_entered = entered
if(((living_entered.density || !living_entered.projectile_hit_check(src))) && !checkpass(PASSMOB) && !(living_entered in permutated) && (living_entered.loc == loc))
Bump(entered, 1)
-/obj/item/projectile/Destroy()
+/obj/projectile/Destroy()
if(hitscan)
finalize_hitscan_and_generate_tracers()
STOP_PROCESSING(SSprojectiles, src)
@@ -468,12 +475,12 @@
firer = null
return ..()
-/obj/item/projectile/proc/dumbfire(dir)
+/obj/projectile/proc/dumbfire(dir)
current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better.
fire()
-/obj/item/projectile/proc/on_ricochet(atom/A)
+/obj/projectile/proc/on_ricochet(atom/A)
if(!ricochet_auto_aim_angle || !ricochet_auto_aim_range)
return
@@ -490,12 +497,12 @@
if(unlucky_sob)
set_angle(get_angle(src, unlucky_sob.loc))
-/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((flag in list(ENERGY, LASER)) && (A.flags_ricochet & RICOCHET_SHINY))
return TRUE
@@ -504,7 +511,7 @@
return FALSE
-/obj/item/projectile/set_angle(new_angle)
+/obj/projectile/set_angle(new_angle)
..()
Angle = new_angle
@@ -517,7 +524,7 @@
store_hitscan_collision(point_cache)
return TRUE
-/obj/item/projectile/proc/set_angle_centered(new_angle)
+/obj/projectile/proc/set_angle_centered(new_angle)
set_angle(new_angle)
var/list/coordinates = trajectory.return_coordinates()
trajectory.set_location(coordinates[1], coordinates[2], coordinates[3]) // Sets the trajectory to the center of the tile it bounced at
@@ -528,10 +535,10 @@
store_hitscan_collision(point_cache)
return TRUE
-/obj/item/projectile/experience_pressure_difference()
+/obj/projectile/experience_pressure_difference()
return // Immune to gas flow.
-/obj/item/projectile/forceMove(atom/target)
+/obj/projectile/forceMove(atom/target)
. = ..()
if(QDELETED(src)) // we coulda bumped something
return
@@ -542,20 +549,20 @@
if(hitscan)
record_hitscan_start(RETURN_PRECISE_POINT(src))
-/obj/item/projectile/proc/is_reflectable(desired_reflectability_level)
+/obj/projectile/proc/is_reflectable(desired_reflectability_level)
if(reflectability == REFLECTABILITY_NEVER) //You'd trust coders not to try and override never reflectable things, but heaven help us I do not
return FALSE
if(reflectability < desired_reflectability_level)
return FALSE
return TRUE
-/obj/item/projectile/proc/record_hitscan_start(datum/point_precise/point_cache)
+/obj/projectile/proc/record_hitscan_start(datum/point_precise/point_cache)
if(point_cache)
beam_segments = list()
beam_index = point_cache
beam_segments[beam_index] = null //record start.
-/obj/item/projectile/proc/process_hitscan()
+/obj/projectile/proc/process_hitscan()
//Safety here is to make hitscan stop if something goes wrong. Why is it equal to range * 10, when range is the maximum amount of tiles it can go? No clue.
var/safety = range * 10
record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
@@ -571,13 +578,13 @@
return //Kill!
pixel_move(1, TRUE)
-/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_precise/point_cache = trajectory.copy_to()
beam_segments[beam_index] = point_cache
generate_hitscan_tracers(null, hitscan_duration, 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)
@@ -607,7 +614,7 @@
if(cleanup)
cleanup_beam_segments()
-/obj/item/projectile/proc/cleanup_beam_segments()
+/obj/projectile/proc/cleanup_beam_segments()
QDEL_LIST_ASSOC(beam_segments)
/**
@@ -618,7 +625,7 @@
* This is NOT used for pacifist checks, that's handled by [/obj/item/ammo_casing/var/harmful]
* This is used in places such as AI responses to determine if they're being threatened or not (among other places)
*/
-/obj/item/projectile/proc/is_hostile_projectile()
+/obj/projectile/proc/is_hostile_projectile()
if(damage > 0 || stamina > 0)
return TRUE
@@ -633,7 +640,7 @@
playsound(src, sound, vol = 100, vary = TRUE)
var/turf/startloc = get_turf(src)
- var/obj/item/projectile/bullet = new projectile_type(startloc)
+ var/obj/projectile/bullet = new projectile_type(startloc)
bullet.starting = startloc
bullet.firer = firer || src
bullet.firer_source_atom = src
diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm
index 9c5ac733b23..3fba1d49534 100644
--- a/code/modules/reagents/chemistry/reagents/drugs.dm
+++ b/code/modules/reagents/chemistry/reagents/drugs.dm
@@ -977,7 +977,7 @@
new /obj/effect/temp_visual/decoy/mephedrone_afterimage(old_loc, L, overdosed ? 1.25 SECONDS : 0.75 SECONDS)
/// Tries to dodge incoming bullets if we aren't disabled for any reasons
-/datum/reagent/mephedrone/proc/dodge_bullets(mob/living/carbon/human/source, obj/item/projectile/hitting_projectile)
+/datum/reagent/mephedrone/proc/dodge_bullets(mob/living/carbon/human/source, obj/projectile/hitting_projectile)
SIGNAL_HANDLER
if(HAS_TRAIT(source, TRAIT_IMMOBILIZED))
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 66e7bed40dd..8ff3fca7806 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -9,7 +9,7 @@
volume = 15
var/busy = FALSE
var/mode = SYRINGE_DRAW
- var/projectile_type = /obj/item/projectile/bullet/dart/syringe
+ var/projectile_type = /obj/projectile/bullet/dart/syringe
materials = list(MAT_METAL=10, MAT_GLASS=20)
container_type = TRANSPARENT
///If this variable is true, the syringe will work through hardsuits / modsuits / biosuits.
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 9766fc9411f..961ee5ab94c 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -126,7 +126,7 @@
QDEL_NULL(rig)
return ..()
-/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/P)
+/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/projectile/P)
var/will_explode = !QDELETED(src) && !P.nodamage && (P.damage_type == BURN || P.damage_type == BRUTE)
if(will_explode) // Log here while you have the information needed
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 7ad147bc507..62a50c14a8d 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -600,7 +600,7 @@
H.LoseTarget()
stopped_atoms |= M
else if(isprojectile(A))
- var/obj/item/projectile/P = A
+ var/obj/projectile/P = A
P.paused = TRUE
stopped_atoms |= P
@@ -614,7 +614,7 @@
for(var/mob/living/M in stopped_atoms)
unfreeze_mob(M)
- for(var/obj/item/projectile/P in stopped_atoms)
+ for(var/obj/projectile/P in stopped_atoms)
P.paused = FALSE
qdel(src)
return
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index a0c044a0643..4e28c8337a8 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -892,8 +892,8 @@
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light), 0), 0.25 SECONDS)
if(isprojectile(hitby))
- var/obj/item/projectile/P = hitby
- if(P.shield_buster || istype(P, /obj/item/projectile/ion)) //EMP's and unpariable attacks, after all.
+ var/obj/projectile/P = hitby
+ if(P.shield_buster || istype(P, /obj/projectile/ion)) //EMP's and unpariable attacks, after all.
return FALSE
if(P.reflectability == REFLECTABILITY_NEVER) //only 1 magic spell does this, but hey, needed
owner.visible_message("[owner] blocks [attack_text] with [src]!")
diff --git a/code/modules/vehicle/vehicle.dm b/code/modules/vehicle/vehicle.dm
index 5e914e6a0d9..4dd0a685206 100644
--- a/code/modules/vehicle/vehicle.dm
+++ b/code/modules/vehicle/vehicle.dm
@@ -163,7 +163,7 @@
..()
handle_vehicle_offsets()
-/obj/vehicle/bullet_act(obj/item/projectile/Proj)
+/obj/vehicle/bullet_act(obj/projectile/Proj)
if(!has_buckled_mobs())
return ..()
for(var/m in buckled_mobs)