mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-30 23:48:28 +01:00
/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:
@@ -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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user