/obj/item/projectile --> /obj/projectile (#30411)

* yers

* vars

* map changes

* some comments (clearly not stolen from items)

* fix component

* summary
This commit is contained in:
kyunkyunkyun
2025-11-12 15:23:20 +05:00
committed by GitHub
parent e92a45369a
commit f96b26b75a
169 changed files with 858 additions and 851 deletions
@@ -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
@@ -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
@@ -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
@@ -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!
@@ -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
@@ -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 ..()
@@ -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
@@ -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("<span class='danger'>[P.name] was repelled by [name]'s girth!</span>")
@@ -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("<span class='danger'>[P] has a reduced effect on [src]!</span>")
@@ -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)
@@ -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)