/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 10:23:20 +00:00
committed by GitHub
parent e92a45369a
commit f96b26b75a
169 changed files with 858 additions and 851 deletions
+9 -9
View File
@@ -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("<span class='chaosverybad'>[target] suddenly dies!</span>", "<span class='chaosverybad'>Game over!</span>")
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)
@@ -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
+10 -10
View File
@@ -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
@@ -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))
+1 -1
View File
@@ -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!")]</span>")
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--
@@ -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
@@ -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"
+12 -12
View File
@@ -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
@@ -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, "<span class='warning'>[src] must be zoomed in to fire this ammunition accurately!</span>")
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
+1 -1
View File
@@ -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