mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 05:51:56 +01:00
Repathed /obj/item/projectile to /obj/projectile (#19693)
Repathed /obj/item/projectile to /obj/projectile, same as TG and Bay, that's pretty much it.
This commit is contained in:
@@ -190,7 +190,7 @@
|
||||
attack_living(victim)
|
||||
attack_time = world.time
|
||||
|
||||
/obj/effect/blob/bullet_act(var/obj/item/projectile/Proj)
|
||||
/obj/effect/blob/bullet_act(var/obj/projectile/Proj)
|
||||
if(!Proj)
|
||||
return
|
||||
|
||||
|
||||
@@ -393,12 +393,12 @@
|
||||
matter = list()
|
||||
|
||||
fire_sound = 'sound/weapons/gunshot/gunshot1.ogg'
|
||||
projectile_type = /obj/item/projectile/chameleon
|
||||
projectile_type = /obj/projectile/chameleon
|
||||
charge_meter = 0
|
||||
charge_cost = 20 //uses next to no power, since it's just holograms
|
||||
max_shots = 50
|
||||
|
||||
var/obj/item/projectile/copy_projectile
|
||||
var/obj/projectile/copy_projectile
|
||||
var/global/list/gun_choices
|
||||
|
||||
/obj/item/gun/energy/chameleon/Initialize()
|
||||
@@ -411,7 +411,7 @@
|
||||
src.gun_choices[initial(G.name)] = gun_type
|
||||
|
||||
/obj/item/gun/energy/chameleon/consume_next_projectile()
|
||||
var/obj/item/projectile/P = ..()
|
||||
var/obj/projectile/P = ..()
|
||||
if(P && ispath(copy_projectile))
|
||||
P.name = initial(copy_projectile.name)
|
||||
P.icon = initial(copy_projectile.icon)
|
||||
|
||||
@@ -286,8 +286,8 @@
|
||||
if(!material || unbreakable)
|
||||
return
|
||||
|
||||
if(istype(source, /obj/item/projectile))
|
||||
var/obj/item/projectile/P = source
|
||||
if(istype(source, /obj/projectile))
|
||||
var/obj/projectile/P = source
|
||||
if(P.pass_flags & PASSGLASS)
|
||||
if(material.opacity - 0.3 <= 0)
|
||||
return // Lasers ignore 'fully' transparent material.
|
||||
@@ -319,8 +319,8 @@
|
||||
return ..()
|
||||
|
||||
if(material.reflectivity)
|
||||
if(istype(damage_source, /obj/item/projectile/energy) || istype(damage_source, /obj/item/projectile/beam))
|
||||
var/obj/item/projectile/P = damage_source
|
||||
if(istype(damage_source, /obj/projectile/energy) || istype(damage_source, /obj/projectile/beam))
|
||||
var/obj/projectile/P = damage_source
|
||||
|
||||
var/reflectchance = 40 - round(damage/3)
|
||||
if(!(def_zone in list(BP_CHEST, BP_GROIN)))
|
||||
|
||||
@@ -404,7 +404,7 @@
|
||||
else
|
||||
var/turf/T = get_turf(user)
|
||||
user.visible_message(SPAN_DANGER("\The [user] crackles with energy!"))
|
||||
var/obj/item/projectile/beam/tesla/LE = new (T)
|
||||
var/obj/projectile/beam/tesla/LE = new (T)
|
||||
LE.launch_projectile(A, user.zone_sel? user.zone_sel.selecting : null, user)
|
||||
spark(src, 3, GLOB.alldirs)
|
||||
playsound(user.loc, 'sound/magic/LightningShock.ogg', 75, 1)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
/obj/item/tray/proc/attempt_load_item(var/obj/item/I, var/mob/user, var/messages = TRUE, var/click_params)
|
||||
if(!I || (I in contents))
|
||||
return
|
||||
if(I == src || I.anchored || istype(I, /obj/item/projectile))
|
||||
if(I == src || I.anchored || istype(I, /obj/projectile))
|
||||
return
|
||||
if(istype(I, /obj/item/tray))
|
||||
var/obj/item/tray/T = I
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = -1
|
||||
fire_sound = 'sound/weapons/kinetic_accel.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 1, TECH_PHORON = 2)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel02
|
||||
@@ -27,7 +27,7 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = -2
|
||||
fire_sound = 'sound/weapons/kinetic_accel.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 3, TECH_PHORON = 2)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel03
|
||||
@@ -43,7 +43,7 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = -3
|
||||
fire_sound = 'sound/weapons/resonator_fire.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 3,TECH_MAGNET = 3, TECH_PHORON = 3)
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = -4
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 3,TECH_MAGNET = 5, TECH_PHORON = 4)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel05
|
||||
@@ -76,7 +76,7 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = -5
|
||||
fire_sound = 'sound/weapons/resonator_blast.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 5,TECH_MAGNET = 6, TECH_PHORON = 5)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/illegal
|
||||
@@ -92,7 +92,7 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = 0
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
projectile_type = /obj/item/projectile/beam/midlaser
|
||||
projectile_type = /obj/projectile/beam/midlaser
|
||||
origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 4,TECH_MAGNET = 4,TECH_COMBAT = 5,TECH_ILLEGAL = 5)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel02_alt
|
||||
@@ -109,7 +109,7 @@
|
||||
capacity_increase = -2
|
||||
aoe_increase = -100
|
||||
fire_sound = 'sound/weapons/kinetic_accel.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 3, TECH_PHORON = 2)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/phoron
|
||||
@@ -125,7 +125,7 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = -5
|
||||
fire_sound = 'sound/weapons/marauder.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 5,TECH_MAGNET = 6, TECH_PHORON = 6)
|
||||
disallow_chip = TRUE
|
||||
|
||||
@@ -142,6 +142,6 @@
|
||||
cell_increase = 0
|
||||
capacity_increase = -5
|
||||
fire_sound = 'sound/weapons/pulse2.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 8,TECH_ENGINEERING = 8,TECH_MAGNET = 8, TECH_ILLEGAL = 8)
|
||||
disallow_chip = TRUE
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
dispersion = list(0)
|
||||
reliability = 100
|
||||
|
||||
var/obj/item/projectile/projectile_type = /obj/item/projectile/kinetic
|
||||
var/obj/projectile/projectile_type = /obj/projectile/kinetic
|
||||
|
||||
needspin = FALSE
|
||||
|
||||
@@ -242,8 +242,8 @@
|
||||
if(T)
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
var/pressure = (environment)? environment.return_pressure() : 0
|
||||
if(ispath(installed_barrel.projectile_type, /obj/item/projectile/kinetic))
|
||||
var/obj/item/projectile/kinetic/shot_projectile = new installed_barrel.projectile_type(get_turf(src))
|
||||
if(ispath(installed_barrel.projectile_type, /obj/projectile/kinetic))
|
||||
var/obj/projectile/kinetic/shot_projectile = new installed_barrel.projectile_type(get_turf(src))
|
||||
shot_projectile.damage = damage_increase
|
||||
shot_projectile.range = range_increase
|
||||
shot_projectile.aoe = max(1, aoe_increase)
|
||||
@@ -255,8 +255,8 @@
|
||||
shot_projectile.base_damage = damage_increase
|
||||
return shot_projectile
|
||||
|
||||
if(ispath(installed_barrel.projectile_type, /obj/item/projectile/beam))
|
||||
var/obj/item/projectile/beam/shot_projectile = new installed_barrel.projectile_type(get_turf(src))
|
||||
if(ispath(installed_barrel.projectile_type, /obj/projectile/beam))
|
||||
var/obj/projectile/beam/shot_projectile = new installed_barrel.projectile_type(get_turf(src))
|
||||
shot_projectile.damage = damage_increase
|
||||
shot_projectile.range = range_increase
|
||||
return shot_projectile
|
||||
@@ -549,7 +549,7 @@
|
||||
capacity_increase = 0
|
||||
mod_limit_increase = 0
|
||||
var/fire_sound = 'sound/weapons/kinetic_accel.ogg'
|
||||
var/projectile_type = /obj/item/projectile/kinetic
|
||||
var/projectile_type = /obj/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 2,TECH_ENGINEERING = 2,TECH_MAGNET = 2)
|
||||
|
||||
/obj/item/custom_ka_upgrade/upgrade_chips
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Projectiles
|
||||
/obj/item/projectile/kinetic
|
||||
/obj/projectile/kinetic
|
||||
name = "kinetic force"
|
||||
icon_state = null
|
||||
damage = 0 //Base damage handled elsewhere.
|
||||
@@ -11,21 +11,21 @@
|
||||
var/aoe_shot = FALSE
|
||||
ignore_source_check = TRUE
|
||||
|
||||
/obj/item/projectile/kinetic/mech
|
||||
/obj/projectile/kinetic/mech
|
||||
damage = 40
|
||||
aoe = 5
|
||||
|
||||
/obj/item/projectile/kinetic/mech/burst
|
||||
/obj/projectile/kinetic/mech/burst
|
||||
damage = 25
|
||||
|
||||
/obj/item/projectile/kinetic/on_impact(var/atom/A)
|
||||
/obj/projectile/kinetic/on_impact(var/atom/A)
|
||||
var/turf/target_turf = get_turf(A)
|
||||
if(!target_turf)
|
||||
target_turf = get_turf(src)
|
||||
if(istype(target_turf))
|
||||
strike_thing(target_turf)
|
||||
|
||||
/obj/item/projectile/kinetic/proc/do_damage(var/turf/T, var/living_damage = 1, var/mineral_damage = 1)
|
||||
/obj/projectile/kinetic/proc/do_damage(var/turf/T, var/living_damage = 1, var/mineral_damage = 1)
|
||||
if(!istype(T)) return
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
living_damage *= max(1 - (environment.return_pressure() / 100) * 0.75, 0)
|
||||
@@ -37,7 +37,7 @@
|
||||
var/turf/simulated/mineral/M = T
|
||||
M.kinetic_hit(mineral_damage)
|
||||
|
||||
/obj/item/projectile/kinetic/proc/strike_thing(var/turf/target_turf)
|
||||
/obj/projectile/kinetic/proc/strike_thing(var/turf/target_turf)
|
||||
for(var/new_target in RANGE_TURFS(aoe, target_turf))
|
||||
var/turf/aoe_turf = new_target
|
||||
do_damage(aoe_turf, max(base_damage - base_damage * get_dist(aoe_turf, target_turf) * 0.25, 0), damage)
|
||||
|
||||
@@ -96,19 +96,19 @@
|
||||
use_external_power = TRUE
|
||||
self_recharge = TRUE
|
||||
has_safety = FALSE
|
||||
projectile_type = /obj/item/projectile/beam/heavylaser/mech
|
||||
projectile_type = /obj/projectile/beam/heavylaser/mech
|
||||
|
||||
/obj/item/gun/energy/pulse/mounted/mech
|
||||
use_external_power = TRUE
|
||||
self_recharge = TRUE
|
||||
has_safety = FALSE
|
||||
projectile_type = /obj/item/projectile/beam/pulse/mech
|
||||
projectile_type = /obj/projectile/beam/pulse/mech
|
||||
|
||||
/obj/item/gun/energy/xray/mounted/mech
|
||||
use_external_power = TRUE
|
||||
self_recharge = TRUE
|
||||
has_safety = FALSE
|
||||
projectile_type = /obj/item/projectile/beam/xray/mech
|
||||
projectile_type = /obj/projectile/beam/xray/mech
|
||||
|
||||
/*Launchers*/
|
||||
|
||||
@@ -409,7 +409,7 @@
|
||||
else
|
||||
icon_state = "shield_null"
|
||||
|
||||
/obj/aura/mechshield/bullet_act(obj/item/projectile/P, var/def_zone)
|
||||
/obj/aura/mechshield/bullet_act(obj/projectile/P, var/def_zone)
|
||||
if(!active)
|
||||
return
|
||||
if(shields?.charge)
|
||||
|
||||
@@ -354,7 +354,7 @@
|
||||
/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if (istype(mover,/obj/item) && mover.throwing)
|
||||
var/obj/item/I = mover
|
||||
if(istype(I, /obj/item/projectile))
|
||||
if(istype(I, /obj/projectile))
|
||||
return
|
||||
if(prob(50))
|
||||
I.forceMove(src.loc)
|
||||
|
||||
@@ -208,22 +208,22 @@
|
||||
connect()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/bullet_act(var/obj/item/projectile/Proj)
|
||||
/obj/machinery/portable_atmospherics/hydroponics/bullet_act(var/obj/projectile/Proj)
|
||||
|
||||
//Don't act on seeds like dionaea that shouldn't change.
|
||||
if(seed && seed.get_trait(TRAIT_IMMUTABLE) > 0)
|
||||
return
|
||||
|
||||
//Override for somatoray projectiles.
|
||||
if(istype(Proj ,/obj/item/projectile/energy/floramut)&& prob(20))
|
||||
if(istype(Proj, /obj/item/projectile/energy/floramut/gene))
|
||||
var/obj/item/projectile/energy/floramut/gene/G = Proj
|
||||
if(istype(Proj ,/obj/projectile/energy/floramut)&& prob(20))
|
||||
if(istype(Proj, /obj/projectile/energy/floramut/gene))
|
||||
var/obj/projectile/energy/floramut/gene/G = Proj
|
||||
if(seed)
|
||||
seed = seed.diverge_mutate_gene(G.gene, get_turf(loc)) //get_turf just in case it's not in a turf.
|
||||
else
|
||||
mutate(1)
|
||||
return
|
||||
else if(istype(Proj ,/obj/item/projectile/energy/florayield) && prob(20))
|
||||
else if(istype(Proj ,/obj/projectile/energy/florayield) && prob(20))
|
||||
yield_mod = min(10,yield_mod+rand(1,2))
|
||||
return
|
||||
|
||||
|
||||
@@ -129,16 +129,16 @@ var/list/mineral_can_smooth_with = list(
|
||||
GetDrilled()
|
||||
SSicon_smooth.add_to_queue_neighbors(src)
|
||||
|
||||
/turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj, /obj/item/projectile/beam/plasmacutter))
|
||||
var/obj/item/projectile/beam/plasmacutter/PC_beam = Proj
|
||||
/turf/simulated/mineral/bullet_act(var/obj/projectile/Proj)
|
||||
if(istype(Proj, /obj/projectile/beam/plasmacutter))
|
||||
var/obj/projectile/beam/plasmacutter/PC_beam = Proj
|
||||
var/list/cutter_results = PC_beam.pass_check(src)
|
||||
. = cutter_results[1]
|
||||
if(cutter_results[2]) // the cutter mined the turf, just pass on
|
||||
return
|
||||
|
||||
// Emitter blasts
|
||||
if(istype(Proj, /obj/item/projectile/beam/emitter))
|
||||
if(istype(Proj, /obj/projectile/beam/emitter))
|
||||
emitter_blasts_taken++
|
||||
|
||||
if(emitter_blasts_taken >= 3)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
sleeping = 0
|
||||
willfully_sleeping = FALSE
|
||||
|
||||
/mob/living/carbon/bullet_act(var/obj/item/projectile/P, var/def_zone)
|
||||
/mob/living/carbon/bullet_act(var/obj/projectile/P, var/def_zone)
|
||||
..(P, def_zone)
|
||||
var/show_ssd
|
||||
var/mob/living/carbon/human/H
|
||||
|
||||
@@ -2104,7 +2104,7 @@
|
||||
return BULLET_IMPACT_METAL
|
||||
return BULLET_IMPACT_MEAT
|
||||
|
||||
/mob/living/carbon/human/bullet_impact_visuals(var/obj/item/projectile/P, var/def_zone, var/damage, var/blocked_ratio)
|
||||
/mob/living/carbon/human/bullet_impact_visuals(var/obj/projectile/P, var/def_zone, var/damage, var/blocked_ratio)
|
||||
..()
|
||||
if(blocked_ratio > 0.7)
|
||||
return
|
||||
|
||||
@@ -8,7 +8,7 @@ emp_act
|
||||
|
||||
*/
|
||||
|
||||
/mob/living/carbon/human/bullet_act(var/obj/item/projectile/P, var/def_zone)
|
||||
/mob/living/carbon/human/bullet_act(var/obj/projectile/P, var/def_zone)
|
||||
var/species_check = src.species.bullet_act(P, def_zone, src)
|
||||
|
||||
if(species_check)
|
||||
|
||||
@@ -770,7 +770,7 @@
|
||||
if(!.)
|
||||
return move_trail
|
||||
|
||||
/datum/species/proc/bullet_act(var/obj/item/projectile/P, var/def_zone, var/mob/living/carbon/human/H)
|
||||
/datum/species/proc/bullet_act(var/obj/projectile/P, var/def_zone, var/mob/living/carbon/human/H)
|
||||
return 0
|
||||
|
||||
/datum/species/proc/handle_speech_problems(mob/living/carbon/human/H, message, say_verb, message_mode, message_range)
|
||||
|
||||
@@ -392,8 +392,8 @@ var/global/list/golem_types = list(
|
||||
|
||||
golem_designation = "Glass"
|
||||
|
||||
/datum/species/golem/glass/bullet_act(var/obj/item/projectile/P, var/def_zone, var/mob/living/carbon/human/H)
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
/datum/species/golem/glass/bullet_act(var/obj/projectile/P, var/def_zone, var/mob/living/carbon/human/H)
|
||||
if(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam))
|
||||
var/reflectchance = 50 - round(P.damage/3)
|
||||
if(prob(reflectchance))
|
||||
H.visible_message(SPAN_DANGER("The [P.name] gets reflected by [H]!"), \
|
||||
@@ -598,8 +598,8 @@ var/global/list/golem_types = list(
|
||||
H.update_dna()
|
||||
..()
|
||||
|
||||
/datum/species/golem/diamond/bullet_act(var/obj/item/projectile/P, var/def_zone, var/mob/living/carbon/human/H)
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
/datum/species/golem/diamond/bullet_act(var/obj/projectile/P, var/def_zone, var/mob/living/carbon/human/H)
|
||||
if(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam))
|
||||
var/reflectchance = 80 - round(P.damage/3)
|
||||
if(prob(reflectchance))
|
||||
H.visible_message(SPAN_DANGER("The [P.name] gets reflected by [H]!"), \
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
..(-abs(amount)) // Heals them
|
||||
return
|
||||
|
||||
/mob/living/carbon/slime/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/carbon/slime/bullet_act(var/obj/projectile/Proj)
|
||||
attacked += 10
|
||||
..(Proj)
|
||||
return FALSE
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
if(armor)
|
||||
. += armor
|
||||
|
||||
/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone, var/used_weapon = null)
|
||||
/mob/living/bullet_act(var/obj/projectile/P, var/def_zone, var/used_weapon = null)
|
||||
|
||||
//Being hit while using a cloaking device
|
||||
var/obj/item/cloaking_device/C = locate(/obj/item/cloaking_device) in src
|
||||
@@ -86,7 +86,7 @@
|
||||
break
|
||||
|
||||
//For visuals, blood splatters and so on.
|
||||
/mob/living/proc/bullet_impact_visuals(var/obj/item/projectile/P, var/def_zone, var/damage, var/blocked_ratio)
|
||||
/mob/living/proc/bullet_impact_visuals(var/obj/projectile/P, var/def_zone, var/damage, var/blocked_ratio)
|
||||
var/list/impact_sounds = LAZYACCESS(P.impact_sounds, get_bullet_impact_effect_type(def_zone))
|
||||
if(length(impact_sounds))
|
||||
playsound(src, pick(impact_sounds), 75)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
charge_meter = 0
|
||||
max_shots = 20
|
||||
charge_cost = 100
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
|
||||
projectile_type = /obj/projectile/bullet/pistol/medium/ap
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 5
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
charge_meter = FALSE
|
||||
max_shots = 10
|
||||
charge_cost = 300
|
||||
projectile_type = /obj/item/projectile/bullet/gyro
|
||||
projectile_type = /obj/projectile/bullet/gyro
|
||||
self_recharge = TRUE
|
||||
use_external_power = TRUE
|
||||
recharge_time = 5
|
||||
|
||||
@@ -567,7 +567,7 @@
|
||||
/mob/living/silicon/robot/restrained()
|
||||
return FALSE
|
||||
|
||||
/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/silicon/robot/bullet_act(var/obj/projectile/Proj)
|
||||
..(Proj)
|
||||
if(prob(75) && Proj.damage > 0)
|
||||
spark_system.queue()
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
/mob/living/silicon/IsAdvancedToolUser()
|
||||
return TRUE
|
||||
|
||||
/mob/living/silicon/bullet_act(obj/item/projectile/Proj)
|
||||
/mob/living/silicon/bullet_act(obj/projectile/Proj)
|
||||
if(!Proj.nodamage)
|
||||
switch(Proj.damage_type)
|
||||
if(DAMAGE_BRUTE)
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
resistance = 10
|
||||
construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser)
|
||||
|
||||
/mob/living/simple_animal/construct/armored/bullet_act(var/obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
/mob/living/simple_animal/construct/armored/bullet_act(var/obj/projectile/P)
|
||||
if(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam))
|
||||
var/reflectchance = 80 - round(P.damage / 3)
|
||||
if(prob(reflectchance))
|
||||
adjustBruteLoss(P.damage * 0.3)
|
||||
|
||||
@@ -239,7 +239,7 @@
|
||||
unburrow()
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/ice_catcher/bullet_act(obj/item/projectile/P, def_zone)
|
||||
/mob/living/simple_animal/ice_catcher/bullet_act(obj/projectile/P, def_zone)
|
||||
if(burrowed && (stat != DEAD))
|
||||
unburrow()
|
||||
..()
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
. = ..()
|
||||
set_flee_target(src.loc)
|
||||
|
||||
/mob/living/simple_animal/cat/bullet_act(var/obj/item/projectile/proj)
|
||||
/mob/living/simple_animal/cat/bullet_act(var/obj/projectile/proj)
|
||||
. = ..()
|
||||
set_flee_target(proj.firer? proj.firer : src.loc)
|
||||
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
/mob/living/simple_animal/hostile/cybernetic_schlorrgo/Initialize()
|
||||
. = ..()
|
||||
if(prob(25))
|
||||
projectiletype = /obj/item/projectile/beam/pistol
|
||||
projectiletype = /obj/projectile/beam/pistol
|
||||
projectilesound = 'sound/weapons/laser1.ogg'
|
||||
rapid = FALSE
|
||||
ranged = TRUE
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
smart_ranged = TRUE
|
||||
|
||||
ranged = TRUE
|
||||
projectiletype = /obj/item/projectile/beam/tesla/plasmageist
|
||||
projectiletype = /obj/projectile/beam/tesla/plasmageist
|
||||
projectilesound = 'sound/magic/LightningShock.ogg'
|
||||
|
||||
pass_flags = PASSTABLE|PASSRAILING
|
||||
@@ -168,7 +168,7 @@
|
||||
/mob/living/simple_animal/hostile/plasmageist/ex_act(severity)
|
||||
return
|
||||
|
||||
/obj/item/projectile/beam/tesla/plasmageist/on_impact(atom/target)
|
||||
/obj/projectile/beam/tesla/plasmageist/on_impact(atom/target)
|
||||
. = ..()
|
||||
if(isliving(target))
|
||||
explosion(target, -1, 0, 2)
|
||||
|
||||
@@ -274,7 +274,7 @@
|
||||
instant_aggro(1)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/bullet_act(obj/item/projectile/P, def_zone)//Teleport around when shot, so its harder to burst it down with a carbine
|
||||
/mob/living/simple_animal/hostile/bear/bullet_act(obj/projectile/P, def_zone)//Teleport around when shot, so its harder to burst it down with a carbine
|
||||
var/healthbefore = health
|
||||
..()
|
||||
spawn(1)
|
||||
@@ -508,7 +508,7 @@
|
||||
forceMove(target)
|
||||
spark_system.queue()
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/spatial/bullet_act(obj/item/projectile/P, def_zone)//Teleport around when shot, so its harder to burst it down with a carbine
|
||||
/mob/living/simple_animal/hostile/bear/spatial/bullet_act(obj/projectile/P, def_zone)//Teleport around when shot, so its harder to burst it down with a carbine
|
||||
..(P, def_zone)
|
||||
if (prob(P.damage*1.5))//Bear has a good chance of teleporting when shot, making it harder to burst down
|
||||
teleport_tactical()
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
melee_damage_upper = 45
|
||||
armor_penetration = 30
|
||||
ranged = 1
|
||||
projectiletype = /obj/item/projectile/bonedart/ling
|
||||
projectiletype = /obj/projectile/bonedart/ling
|
||||
projectilesound = 'sound/weapons/bloodyslice.ogg'
|
||||
resist_mod = 15
|
||||
mob_size = 25
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
change_stance(HOSTILE_STANCE_IDLE)
|
||||
audible_emote("[pick(sad_emote)].",0)
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/bullet_act(var/obj/item/projectile/P, var/def_zone)
|
||||
/mob/living/simple_animal/hostile/commanded/bullet_act(var/obj/projectile/P, var/def_zone)
|
||||
..()
|
||||
|
||||
// We forgive our master
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
ranged = TRUE
|
||||
projectilesound = 'sound/weapons/taser2.ogg'
|
||||
projectiletype = /obj/item/projectile/beam/hivebot/harmless
|
||||
projectiletype = /obj/projectile/beam/hivebot/harmless
|
||||
|
||||
attacktext = "harmlessly clawed"
|
||||
harm_intent_damage = 5 // the damage we take
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
attacktext = "slashed"
|
||||
attack_sound = /singleton/sound_category/hivebot_melee
|
||||
projectilesound = 'sound/weapons/gunshot/gunshot_suppressed.ogg'
|
||||
projectiletype = /obj/item/projectile/bullet/pistol/hivebotspike
|
||||
projectiletype = /obj/projectile/bullet/pistol/hivebotspike
|
||||
organ_names = list("head", "core", "side thruster", "bottom thruster")
|
||||
faction = "hivebot"
|
||||
min_oxy = 0
|
||||
@@ -81,9 +81,8 @@
|
||||
else
|
||||
return "blood_overlay_armed"
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj, /obj/item/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/item/projectile/beam/hivebot))
|
||||
Proj.no_attack_log = 1
|
||||
/mob/living/simple_animal/hostile/hivebot/bullet_act(var/obj/projectile/Proj)
|
||||
if(istype(Proj, /obj/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/projectile/beam/hivebot))
|
||||
return PROJECTILE_CONTINUE
|
||||
else
|
||||
return ..(Proj)
|
||||
@@ -195,9 +194,8 @@
|
||||
has_exploded = TRUE
|
||||
addtimer(CALLBACK(src, PROC_REF(burst)), 20)
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/bomber/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj, /obj/item/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/item/projectile/beam/hivebot))
|
||||
Proj.no_attack_log = 1
|
||||
/mob/living/simple_animal/hostile/hivebot/bomber/bullet_act(var/obj/projectile/Proj)
|
||||
if(istype(Proj, /obj/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/projectile/beam/hivebot))
|
||||
return PROJECTILE_CONTINUE
|
||||
else if(!has_exploded)
|
||||
has_exploded = TRUE
|
||||
@@ -217,5 +215,5 @@
|
||||
ranged = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/range/rapid
|
||||
projectiletype = /obj/item/projectile/bullet/pistol/hivebotspike/needle
|
||||
projectiletype = /obj/projectile/bullet/pistol/hivebotspike/needle
|
||||
rapid = 1
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
maxHealth = 300
|
||||
blood_type = COLOR_OIL
|
||||
projectilesound = 'sound/weapons/taser2.ogg'
|
||||
projectiletype = /obj/item/projectile/beam/hivebot
|
||||
projectiletype = /obj/projectile/beam/hivebot
|
||||
wander = 0
|
||||
stop_automated_movement = 1
|
||||
status_flags = 0
|
||||
@@ -208,9 +208,8 @@
|
||||
/mob/living/simple_animal/hostile/hivebotbeacon/AirflowCanMove(n)
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebotbeacon/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj, /obj/item/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/item/projectile/beam/hivebot))
|
||||
Proj.no_attack_log = 1
|
||||
/mob/living/simple_animal/hostile/hivebotbeacon/bullet_act(var/obj/projectile/Proj)
|
||||
if(istype(Proj, /obj/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/projectile/beam/hivebot))
|
||||
return PROJECTILE_CONTINUE
|
||||
else
|
||||
..(Proj)
|
||||
@@ -341,7 +340,7 @@
|
||||
################*/
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebotbeacon/incendiary
|
||||
projectiletype = /obj/item/projectile/beam/hivebot/incendiary
|
||||
projectiletype = /obj/projectile/beam/hivebot/incendiary
|
||||
projectilesound = 'sound/weapons/plasma_cutter.ogg'
|
||||
rapid = 0
|
||||
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
/obj/item/projectile/beam/hivebot
|
||||
/obj/projectile/beam/hivebot
|
||||
name = "electrical discharge"
|
||||
damage = 20
|
||||
damage_type = DAMAGE_BURN
|
||||
@@ -8,13 +8,13 @@
|
||||
tracer_type = /obj/effect/projectile/tracer/stun
|
||||
impact_type = /obj/effect/projectile/impact/stun
|
||||
|
||||
/obj/item/projectile/beam/hivebot/harmless
|
||||
/obj/projectile/beam/hivebot/harmless
|
||||
name = "harmless electrical discharge"
|
||||
damage = 0
|
||||
damage_type = DAMAGE_PAIN
|
||||
agony = 0
|
||||
|
||||
/obj/item/projectile/beam/hivebot/incendiary
|
||||
/obj/projectile/beam/hivebot/incendiary
|
||||
name = "archaic energy welder"
|
||||
damage_type = DAMAGE_BURN
|
||||
damage = 20
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
ranged = 1
|
||||
attacktext = "skewered"
|
||||
projectilesound = 'sound/weapons/lasercannonfire.ogg'
|
||||
projectiletype = /obj/item/projectile/beam/hivebot/incendiary/heavy
|
||||
projectiletype = /obj/projectile/beam/hivebot/incendiary/heavy
|
||||
organ_names = list("head", "core", "side thruster", "harvesting array")
|
||||
faction = "hivebot"
|
||||
min_oxy = 0
|
||||
@@ -72,9 +72,8 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/hivebotharvester/AirflowCanMove(n)
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/hivebotharvester/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj, /obj/item/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/item/projectile/beam/hivebot))
|
||||
Proj.no_attack_log = 1
|
||||
/mob/living/simple_animal/hostile/retaliate/hivebotharvester/bullet_act(var/obj/projectile/Proj)
|
||||
if(istype(Proj, /obj/projectile/bullet/pistol/hivebotspike) || istype(Proj, /obj/projectile/beam/hivebot))
|
||||
return PROJECTILE_CONTINUE
|
||||
else
|
||||
return ..(Proj)
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
/obj/item/projectile/beam/hivebot/incendiary/heavy
|
||||
/obj/projectile/beam/hivebot/incendiary/heavy
|
||||
name = "archaic mining laser"
|
||||
damage = 25
|
||||
incinerate = 10
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/item/projectile/bullet/pistol/hivebotspike
|
||||
/obj/projectile/bullet/pistol/hivebotspike
|
||||
name = "spike"
|
||||
damage = 10
|
||||
armor_penetration = 40
|
||||
sharp = 1
|
||||
embed = 0
|
||||
|
||||
/obj/item/projectile/bullet/pistol/hivebotspike/needle
|
||||
/obj/projectile/bullet/pistol/hivebotspike/needle
|
||||
name = "needle"
|
||||
damage = 5
|
||||
armor_penetration = 60
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
change_stance(HOSTILE_STANCE_ATTACKING)
|
||||
visible_message(SPAN_WARNING("\The [src] gets taunted by \the [H] and begins to retaliate!"))
|
||||
|
||||
/mob/living/simple_animal/hostile/bullet_act(var/obj/item/projectile/P, var/def_zone)
|
||||
/mob/living/simple_animal/hostile/bullet_act(var/obj/projectile/P, var/def_zone)
|
||||
..()
|
||||
if (ismob(P.firer) && target_mob != P.firer)
|
||||
target_mob = P.firer
|
||||
@@ -353,7 +353,7 @@
|
||||
return FALSE
|
||||
|
||||
var/target_hit = FALSE
|
||||
var/flags = ispath(projectiletype, /obj/item/projectile/beam) ? PASSTABLE|PASSGLASS|PASSGRILLE : PASSTABLE
|
||||
var/flags = ispath(projectiletype, /obj/projectile/beam) ? PASSTABLE|PASSGLASS|PASSGRILLE : PASSTABLE
|
||||
for(var/V in check_trajectory(target_mob, src, pass_flags=flags))
|
||||
if(V == target_mob)
|
||||
target_hit = TRUE
|
||||
@@ -376,7 +376,7 @@
|
||||
if(target == start)
|
||||
return
|
||||
|
||||
var/obj/item/projectile/A = new projectiletype(user.loc)
|
||||
var/obj/projectile/A = new projectiletype(user.loc)
|
||||
playsound(user, projectilesound, 100, 1)
|
||||
if(!A) return
|
||||
var/def_zone = get_exposed_defense_zone(target)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
maxHealth = 300
|
||||
blood_type = COLOR_OIL
|
||||
speed = 8
|
||||
projectiletype = /obj/item/projectile/beam/drone
|
||||
projectiletype = /obj/projectile/beam/drone
|
||||
projectilesound = 'sound/weapons/laser3.ogg'
|
||||
destroy_surroundings = 0
|
||||
var/datum/effect_system/ion_trail/ion_trail
|
||||
@@ -67,7 +67,7 @@
|
||||
set_light(1.2, 3, LIGHT_COLOR_BLUE)
|
||||
|
||||
if(prob(5))
|
||||
projectiletype = /obj/item/projectile/beam/pulse/drone
|
||||
projectiletype = /obj/projectile/beam/pulse/drone
|
||||
projectilesound = 'sound/weapons/pulse2.ogg'
|
||||
ion_trail = new(src)
|
||||
ion_trail.start()
|
||||
@@ -352,10 +352,10 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/projectile/beam/drone
|
||||
/obj/projectile/beam/drone
|
||||
damage = 15
|
||||
|
||||
/obj/item/projectile/beam/pulse/drone
|
||||
/obj/projectile/beam/pulse/drone
|
||||
damage = 10
|
||||
|
||||
/mob/living/simple_animal/hostile/icarus_drone/malf
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
// Copy Mimic
|
||||
//
|
||||
|
||||
var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/item/projectile/animate)
|
||||
var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/projectile/animate)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
projectilesound = 'sound/weapons/laser1.ogg'
|
||||
ranged = 1
|
||||
rapid = 1
|
||||
projectiletype = /obj/item/projectile/beam
|
||||
projectiletype = /obj/projectile/beam
|
||||
corpse = /obj/effect/landmark/mobcorpse/pirate/ranged
|
||||
weapon1 = /obj/item/gun/energy/laser
|
||||
|
||||
|
||||
@@ -122,13 +122,13 @@
|
||||
rapid = TRUE
|
||||
|
||||
projectilesound = 'sound/weapons/gunshot/gunshot_saw.ogg'
|
||||
projectiletype = /obj/item/projectile/bullet/rifle/a762
|
||||
projectiletype = /obj/projectile/bullet/rifle/a762
|
||||
casingtype = /obj/item/ammo_casing/a762/spent
|
||||
|
||||
/mob/living/simple_animal/hostile/republicon/ranged/Initialize()
|
||||
. = ..()
|
||||
if(prob(25))
|
||||
projectiletype = /obj/item/projectile/bullet/gyro/law
|
||||
projectiletype = /obj/projectile/bullet/gyro/law
|
||||
projectilesound = 'sound/effects/Explosion1.ogg'
|
||||
rapid = FALSE
|
||||
casingtype = null
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
speed = 1
|
||||
ranged = TRUE
|
||||
projectiletype = /obj/item/projectile/beam/pistol
|
||||
projectiletype = /obj/projectile/beam/pistol
|
||||
projectilesound = 'sound/weapons/laser1.ogg'
|
||||
|
||||
emote_see = list("examines","hovers","blinks")
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
attacktext = "chomped"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
speed = 4
|
||||
projectiletype = /obj/item/projectile/beam/cavern
|
||||
projectiletype = /obj/projectile/beam/cavern
|
||||
projectilesound = 'sound/magic/lightningbolt.ogg'
|
||||
break_stuff_probability = 2
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/cavern_dweller/Allow_Spacemove(var/check_drift = 0)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/beam/cavern
|
||||
/obj/projectile/beam/cavern
|
||||
name = "electrical discharge"
|
||||
icon_state = "stun"
|
||||
damage_type = DAMAGE_BURN
|
||||
@@ -67,7 +67,7 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/projectile/beam/cavern/on_hit(var/atom/target, var/blocked = 0)
|
||||
/obj/projectile/beam/cavern/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/M = target
|
||||
var/shock_damage = rand(10,20)
|
||||
@@ -95,7 +95,7 @@
|
||||
a_intent = I_HURT
|
||||
speak_emote = list("chirps","buzzes","whirrs")
|
||||
emote_hear = list("chirps cheerfully","buzzes","whirrs","hums placidly","chirps","hums")
|
||||
projectiletype = /obj/item/projectile/beam/plasmacutter
|
||||
projectiletype = /obj/projectile/beam/plasmacutter
|
||||
projectilesound = 'sound/weapons/plasma_cutter.ogg'
|
||||
destroy_surroundings = FALSE
|
||||
min_oxy = 0
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
corpse = /obj/effect/landmark/mobcorpse/russian/ranged
|
||||
weapon1 = /obj/item/gun/projectile/revolver/mateba
|
||||
ranged = 1
|
||||
projectiletype = /obj/item/projectile/bullet
|
||||
projectiletype = /obj/projectile/bullet
|
||||
projectilesound = 'sound/weapons/gunshot/gunshot1.ogg'
|
||||
casingtype = /obj/item/ammo_casing/a357
|
||||
smart_ranged = TRUE
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
minbodytemp = 0
|
||||
ranged = 1
|
||||
projectilesound = 'sound/magic/WandODeath.ogg'
|
||||
projectiletype = /obj/item/projectile/energy/thoughtbubble
|
||||
projectiletype = /obj/projectile/energy/thoughtbubble
|
||||
speak_emote = list("gargles")
|
||||
emote_hear = list("gargles")
|
||||
emote_see = list("ooozes","pulses","drips","pumps")
|
||||
@@ -358,7 +358,7 @@
|
||||
/mob/living/simple_animal/hostile/greatwormking/Move()
|
||||
return
|
||||
|
||||
/obj/item/projectile/energy/thoughtbubble
|
||||
/obj/projectile/energy/thoughtbubble
|
||||
name = "psionic blast"
|
||||
icon_state = "ion"
|
||||
nodamage = TRUE
|
||||
@@ -391,7 +391,7 @@
|
||||
"You've got a bad feeling about this."
|
||||
)
|
||||
|
||||
/obj/item/projectile/energy/thoughtbubble/on_impact(var/atom/A)
|
||||
/obj/projectile/energy/thoughtbubble/on_impact(var/atom/A)
|
||||
..()
|
||||
if(istype(A, /mob/living))
|
||||
var/mob/living/L = A
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
has_exploded = TRUE
|
||||
addtimer(CALLBACK(src, PROC_REF(explode)), 5)
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/bloater/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/simple_animal/hostile/carp/bloater/bullet_act(var/obj/projectile/Proj)
|
||||
if(!has_exploded)
|
||||
has_exploded = TRUE
|
||||
explode()
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
visible_message(SPAN_WARNING("[user] gently taps [src] with the [attacking_item]."))
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(var/obj/projectile/Proj)
|
||||
if(!Proj) return
|
||||
if(prob(65))
|
||||
src.health -= Proj.damage
|
||||
@@ -114,7 +114,7 @@
|
||||
icon_living = "syndicateranged"
|
||||
casingtype = /obj/item/ammo_casing/c10mm
|
||||
projectilesound = 'sound/weapons/gunshot/gunshot_light.ogg'
|
||||
projectiletype = /obj/item/projectile/bullet/pistol/medium
|
||||
projectiletype = /obj/projectile/bullet/pistol/medium
|
||||
|
||||
weapon1 = /obj/item/gun/projectile/automatic/c20r
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
/mob/living/simple_animal/hostile/vannatusk/proc/fire_spike(var/mob/living/target_mob)
|
||||
visible_message(SPAN_DANGER("\The [src] fires a spike at [target_mob]!"))
|
||||
playsound(get_turf(src), 'sound/weapons/bloodyslice.ogg', 50, 1)
|
||||
var/obj/item/projectile/bonedart/A = new /obj/item/projectile/bonedart(get_turf(src))
|
||||
var/obj/projectile/bonedart/A = new /obj/projectile/bonedart(get_turf(src))
|
||||
var/def_zone = get_exposed_defense_zone(target_mob)
|
||||
A.launch_projectile(target_mob, def_zone)
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
else
|
||||
return list("???")
|
||||
|
||||
/mob/living/simple_animal/illusion/bullet_act(obj/item/projectile/P)
|
||||
/mob/living/simple_animal/illusion/bullet_act(obj/projectile/P)
|
||||
if(!P)
|
||||
return
|
||||
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
return
|
||||
|
||||
//Bullets
|
||||
/mob/living/simple_animal/parrot/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/simple_animal/parrot/bullet_act(var/obj/projectile/Proj)
|
||||
..()
|
||||
if(!stat && !client)
|
||||
if(parrot_state == PARROT_PERCH)
|
||||
|
||||
@@ -651,7 +651,7 @@
|
||||
if(ismob(AM.throwing?.thrower?.resolve()))
|
||||
handle_attack_by(AM.throwing?.thrower?.resolve())
|
||||
|
||||
/mob/living/simple_animal/bullet_act(obj/item/projectile/P, def_zone)
|
||||
/mob/living/simple_animal/bullet_act(obj/projectile/P, def_zone)
|
||||
. = ..()
|
||||
if(ismob(P.firer))
|
||||
handle_attack_by(P.firer)
|
||||
@@ -962,7 +962,7 @@
|
||||
/mob/living/simple_animal/get_digestion_product()
|
||||
return /singleton/reagent/nutriment
|
||||
|
||||
/mob/living/simple_animal/bullet_impact_visuals(var/obj/item/projectile/P, var/def_zone, var/damage)
|
||||
/mob/living/simple_animal/bullet_impact_visuals(var/obj/projectile/P, var/def_zone, var/damage)
|
||||
..()
|
||||
switch(get_bullet_impact_effect_type(def_zone))
|
||||
if(BULLET_IMPACT_MEAT)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
// "Stun" weapons can cause minor damage to components (short-circuits?)
|
||||
// "Burn" damage is equally strong against internal components and exterior casing
|
||||
// "Brute" damage mostly damages the casing.
|
||||
/obj/item/modular_computer/bullet_act(var/obj/item/projectile/Proj)
|
||||
/obj/item/modular_computer/bullet_act(var/obj/projectile/Proj)
|
||||
switch(Proj.damage_type)
|
||||
if(DAMAGE_BRUTE)
|
||||
take_damage(Proj.damage, Proj.damage / 2)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/modular_computer/console/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover,/obj/item/projectile))
|
||||
if(istype(mover,/obj/projectile))
|
||||
if(prob(80))
|
||||
//Holoscreens are non solid, and the frames of the computers are thin. So projectiles will usually
|
||||
//pass through
|
||||
|
||||
@@ -347,7 +347,7 @@
|
||||
density = TRUE
|
||||
|
||||
/obj/structure/stairs_railing/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover,/obj/item/projectile))
|
||||
if(istype(mover,/obj/projectile))
|
||||
return TRUE
|
||||
if(!istype(mover) || mover.pass_flags & PASSRAILING)
|
||||
return TRUE
|
||||
@@ -425,7 +425,7 @@
|
||||
color = COLOR_DARK_GUNMETAL
|
||||
|
||||
/obj/structure/platform/CanPass(atom/movable/mover, turf/target, height, air_group)
|
||||
if(istype(mover, /obj/item/projectile))
|
||||
if(istype(mover, /obj/projectile))
|
||||
return TRUE
|
||||
if(!istype(mover) || mover.pass_flags & PASSRAILING)
|
||||
return TRUE
|
||||
|
||||
@@ -513,7 +513,7 @@
|
||||
var/obj/item/W = used_weapon
|
||||
dam_flags = W.damage_flags()
|
||||
if(isprojectile(W))
|
||||
var/obj/item/projectile/P = W
|
||||
var/obj/projectile/P = W
|
||||
if(dam_flags & DAMAGE_FLAG_BULLET)
|
||||
blunt_eligible = TRUE
|
||||
maim_bonus_to_add += P.maim_rate
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
to_chat(user,SPAN_NOTICE("You take \the [stored_item] from [src]."))
|
||||
stored_item = null
|
||||
|
||||
/obj/structure/flora/pottedplant/bullet_act(var/obj/item/projectile/Proj)
|
||||
/obj/structure/flora/pottedplant/bullet_act(var/obj/projectile/Proj)
|
||||
if (prob(Proj.damage*2))
|
||||
death()
|
||||
return 1
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
death()
|
||||
return ..()
|
||||
|
||||
/obj/item/flora/pottedplant_small/bullet_act(var/obj/item/projectile/Proj)
|
||||
/obj/item/flora/pottedplant_small/bullet_act(var/obj/projectile/Proj)
|
||||
if (prob(Proj.damage*2))
|
||||
death()
|
||||
return 1
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var/static/list/forbidden_types = typecacheof(list(
|
||||
/obj/singularity,
|
||||
/obj/structure/lattice,
|
||||
/obj/item/projectile,
|
||||
/obj/projectile,
|
||||
/obj/effect
|
||||
))
|
||||
has_resources = FALSE
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var/obj/effect/overmap/origin
|
||||
var/atom/overmap_target
|
||||
var/obj/entry_point
|
||||
var/obj/item/projectile/original_projectile
|
||||
var/obj/projectile/original_projectile
|
||||
var/heading = SOUTH
|
||||
var/range = OVERMAP_PROJECTILE_RANGE_MEDIUM
|
||||
var/mob_carry_size = 12 //How large a mob has to be to carry the shell
|
||||
@@ -202,7 +202,7 @@
|
||||
//SNOWFLAKE CODE: ACTIVATE
|
||||
//The problem is getting the projectile from the gun to the map edge. We want to do this naturally, but using process() and BYOND's walk procs makes it look very... unnatural. And also slow!
|
||||
//The solution? Let's co-opt projectile code!
|
||||
/obj/item/projectile/ship_ammo
|
||||
/obj/projectile/ship_ammo
|
||||
name = "ship ammunition"
|
||||
icon = 'icons/obj/guns/ship/physical_projectiles.dmi'
|
||||
icon_state = "small"
|
||||
@@ -214,12 +214,12 @@
|
||||
var/primed = FALSE
|
||||
var/hit_target = FALSE //First target we hit. Used to report if a hit was successful.
|
||||
|
||||
/obj/item/projectile/ship_ammo/Destroy()
|
||||
/obj/projectile/ship_ammo/Destroy()
|
||||
ammo = null
|
||||
hit_target = null
|
||||
return ..()
|
||||
|
||||
/obj/item/projectile/ship_ammo/touch_map_edge()
|
||||
/obj/projectile/ship_ammo/touch_map_edge()
|
||||
if(primed)
|
||||
for(var/mob/living/carbon/human/H in GLOB.human_mob_list)
|
||||
if(AreConnectedZLevels(H.z, z))
|
||||
@@ -231,7 +231,7 @@
|
||||
ammo.original_projectile = src
|
||||
forceMove(ammo)
|
||||
|
||||
/obj/item/projectile/ship_ammo/on_hit(atom/target, blocked, def_zone, var/is_landmark_hit = FALSE) //is_landmark_hit is TRUE when we hit a landmark on a visitable non-ship overmap object.
|
||||
/obj/projectile/ship_ammo/on_hit(atom/target, blocked, def_zone, var/is_landmark_hit = FALSE) //is_landmark_hit is TRUE when we hit a landmark on a visitable non-ship overmap object.
|
||||
if(target && !hit_target)
|
||||
hit_target = TRUE
|
||||
var/target_name = target.name
|
||||
@@ -244,11 +244,11 @@
|
||||
ammo.origin.signal_hit(hit_data)
|
||||
return ..()
|
||||
|
||||
/obj/item/projectile/ship_ammo/proc/on_translate(var/turf/entry_turf, var/target_turf) //This proc is called when the projectile enters a new ship's overmap zlevel.
|
||||
/obj/projectile/ship_ammo/proc/on_translate(var/turf/entry_turf, var/target_turf) //This proc is called when the projectile enters a new ship's overmap zlevel.
|
||||
if(ammo.burst)
|
||||
for(var/i = 1 to ammo.burst)
|
||||
var/turf/new_turf = get_random_turf_in_range(entry_turf, ammo.burst + rand(0, ammo.burst), 0, TRUE, FALSE)
|
||||
var/obj/item/projectile/ship_ammo/pellet = new type
|
||||
var/obj/projectile/ship_ammo/pellet = new type
|
||||
pellet.forceMove(new_turf)
|
||||
pellet.ammo = new ammo.type
|
||||
pellet.ammo.origin = ammo.origin
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/max_damage = 1000
|
||||
var/heavy_firing_sound = 'sound/weapons/gunshot/ship_weapons/120mm_mortar.ogg' //The sound in the immediate firing area. Very loud.
|
||||
var/light_firing_sound = 'sound/effects/explosionfar.ogg' //The sound played when you're a few walls away. Kind of loud.
|
||||
var/projectile_type = /obj/item/projectile/ship_ammo
|
||||
var/projectile_type = /obj/projectile/ship_ammo
|
||||
var/special_firing_mechanism = FALSE //If set to TRUE, the gun won't show up on normal controls.
|
||||
var/charging_sound //The sound played when the gun is charging up.
|
||||
var/caliber = SHIP_CALIBER_NONE
|
||||
@@ -221,7 +221,7 @@
|
||||
if(!barrel)
|
||||
crash_with("No barrel found for [src] at [x] [y] [z]! Cannot fire!")
|
||||
var/turf/firing_turf = get_step(barrel, barrel.dir)
|
||||
var/obj/item/projectile/ship_ammo/projectile
|
||||
var/obj/projectile/ship_ammo/projectile
|
||||
if(SA.projectile_type_override)
|
||||
projectile = new SA.projectile_type_override(firing_turf)
|
||||
else
|
||||
@@ -300,7 +300,7 @@
|
||||
M.turf_collision(src, speed)
|
||||
return
|
||||
|
||||
/obj/structure/ship_weapon_dummy/bullet_act(obj/item/projectile/P, def_zone)
|
||||
/obj/structure/ship_weapon_dummy/bullet_act(obj/projectile/P, def_zone)
|
||||
connected.bullet_act(P)
|
||||
|
||||
/obj/structure/ship_weapon_dummy/ex_act(severity)
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
. = TRUE
|
||||
//Manually stopping because this proc needs to sleep for a bit.
|
||||
prepare_for_entry()
|
||||
var/obj/item/projectile/ship_ammo/widowmaker = new ammunition.original_projectile.type
|
||||
var/obj/projectile/ship_ammo/widowmaker = new ammunition.original_projectile.type
|
||||
widowmaker.ammo = ammunition
|
||||
qdel(ammunition.original_projectile) //No longer needed.
|
||||
var/turf/laze = get_turf(entry_target)
|
||||
@@ -114,7 +114,7 @@
|
||||
else //if it's not a ship it doesn't have a fore direction, so we need to autocorrect
|
||||
ammunition.heading = entry_target.dir
|
||||
prepare_for_entry()
|
||||
var/obj/item/projectile/ship_ammo/widowmaker = new ammunition.original_projectile.type
|
||||
var/obj/projectile/ship_ammo/widowmaker = new ammunition.original_projectile.type
|
||||
widowmaker.ammo = ammunition
|
||||
qdel(ammunition.original_projectile) //No longer needed.
|
||||
ammunition.original_projectile = widowmaker
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc_extended = "Originally produced during the waning years of Solarian hegemony over much of the Orion Spur, the Model 2396 remains, despite its age, a very common piece of mining equipment in remote or underdeveloped areas of the Spur such as the former Solarian Frontier Sectors where newer equipment is either too rare to use widely. Threats from pirates and privateers have driven miners and independent merchants in these areas to long rely on field-modified M96s as improvised ship-to-ship artillery pieces as their mining charges are perfectly capable of ripping through hulls as effectively as they rip through rock. It is, however, awkward and kludgy to aim due to its nature as an improvised weapon and most discard the M96 when more modern -- or practical -- weaponry is acquired."
|
||||
icon = 'icons/obj/machinery/ship_guns/blaster.dmi'
|
||||
icon_state = "weapon_base"
|
||||
projectile_type = /obj/item/projectile/ship_ammo/blaster
|
||||
projectile_type = /obj/projectile/ship_ammo/blaster
|
||||
|
||||
heavy_firing_sound = 'sound/weapons/railgun.ogg'
|
||||
firing_effects = FIRING_EFFECT_FLAG_EXTREMELY_LOUD
|
||||
@@ -21,14 +21,14 @@
|
||||
overmap_icon_state = "med_laser"
|
||||
impact_type = SHIP_AMMO_IMPACT_BLASTER
|
||||
|
||||
/obj/item/projectile/ship_ammo/blaster
|
||||
/obj/projectile/ship_ammo/blaster
|
||||
name = "blaster charge"
|
||||
icon_state = "blaster"
|
||||
damage = 10000
|
||||
armor_penetration = 1000
|
||||
penetrating = 1
|
||||
|
||||
/obj/item/projectile/ship_ammo/blaster/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/blaster/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
. = ..()
|
||||
if(ismob(target))
|
||||
var/mob/M = target
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
heavy_firing_sound = 'sound/weapons/gunshot/cannon.ogg'
|
||||
icon_state = "weapon_base"
|
||||
max_ammo = 1
|
||||
projectile_type = /obj/item/projectile/ship_ammo/bruiser
|
||||
projectile_type = /obj/projectile/ship_ammo/bruiser
|
||||
caliber = SHIP_CALIBER_178MM
|
||||
screenshake_type = SHIP_GUN_SCREENSHAKE_SCREEN
|
||||
load_time = 4 SECONDS
|
||||
@@ -42,7 +42,7 @@
|
||||
desc = "A rough, handmade shell that should fit in a bruiser cannon. This one is filled with projectiles that easily get through the hull, but do little damage."
|
||||
icon_state = "shell_flechette"
|
||||
burst = 9
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/bruiser/flechette
|
||||
projectile_type_override = /obj/projectile/ship_ammo/bruiser/flechette
|
||||
|
||||
/obj/item/ship_ammunition/bruiser/he
|
||||
name = "makeshift bruiser explosive shell"
|
||||
@@ -54,7 +54,7 @@
|
||||
burst = 0
|
||||
cookoff_heavy = 1
|
||||
overmap_icon_state = "cannon_heavy"
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/bruiser/he
|
||||
projectile_type_override = /obj/projectile/ship_ammo/bruiser/he
|
||||
|
||||
/obj/item/ship_ammunition/bruiser/real/he
|
||||
name = "bruiser explosive shell"
|
||||
@@ -66,7 +66,7 @@
|
||||
burst = 0
|
||||
cookoff_heavy = 2
|
||||
overmap_icon_state = "cannon_heavy"
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/bruiser/real/he
|
||||
projectile_type_override = /obj/projectile/ship_ammo/bruiser/real/he
|
||||
|
||||
/obj/item/ship_ammunition/bruiser/real/ap
|
||||
name = "bruiser armor-piercing shell"
|
||||
@@ -78,7 +78,7 @@
|
||||
burst = 0
|
||||
cookoff_heavy = 2
|
||||
overmap_icon_state = "cannon_heavy"
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/bruiser/real/ap
|
||||
projectile_type_override = /obj/projectile/ship_ammo/bruiser/real/ap
|
||||
|
||||
/obj/item/ship_ammunition/bruiser/real/canister
|
||||
name = "bruiser canister shell"
|
||||
@@ -86,7 +86,7 @@
|
||||
desc = "An expensive shell designed for the Hegemony Bruiser cannon by Hephaestus Industries. This one bursts into many small pellets."
|
||||
icon_state = "shell_canister_real"
|
||||
burst = 23
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/bruiser/real/canister
|
||||
projectile_type_override = /obj/projectile/ship_ammo/bruiser/real/canister
|
||||
|
||||
/obj/item/ship_ammunition/bruiser/real/beehive
|
||||
name = "bruiser beehive shell"
|
||||
@@ -94,16 +94,16 @@
|
||||
desc = "An expensive shell designed for the Hegemony Bruiser cannon by Hephaestus Industries. Very popular among Unathi, this shell bursts into many slugger projectiles that punch through the hull with less mass, but more force."
|
||||
icon_state = "shell_flechette_real"
|
||||
burst = 9
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/bruiser/real/beehive
|
||||
projectile_type_override = /obj/projectile/ship_ammo/bruiser/real/beehive
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser
|
||||
/obj/projectile/ship_ammo/bruiser
|
||||
name = "canister shot pellet"
|
||||
icon_state = "small"
|
||||
damage = 35
|
||||
armor_penetration = 35
|
||||
penetrating = 1
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/flechette
|
||||
/obj/projectile/ship_ammo/bruiser/flechette
|
||||
name = "beehive flechette"
|
||||
icon_state = "small_burst"
|
||||
damage = 20
|
||||
@@ -113,38 +113,38 @@
|
||||
embed_chance = 40
|
||||
shrapnel_type = /obj/item/material/shard/shrapnel/flechette
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/he
|
||||
/obj/projectile/ship_ammo/bruiser/he
|
||||
name = "178mm shell"
|
||||
icon_state = "heavy"
|
||||
damage = 150
|
||||
armor_penetration = 75
|
||||
penetrating = 0
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/he/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/bruiser/he/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
. = ..()
|
||||
explosion(target, 1, 3, 6)
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/real/he
|
||||
/obj/projectile/ship_ammo/bruiser/real/he
|
||||
name = "178mm shell"
|
||||
icon_state = "heavy"
|
||||
damage = 350
|
||||
armor_penetration = 125
|
||||
penetrating = 0
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/real/ap
|
||||
/obj/projectile/ship_ammo/bruiser/real/ap
|
||||
name = "178mm shell"
|
||||
icon_state = "heavy"
|
||||
damage = 250
|
||||
armor_penetration = 250
|
||||
penetrating = 2
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/real/canister
|
||||
/obj/projectile/ship_ammo/bruiser/real/canister
|
||||
damage = 40
|
||||
armor_penetration = 40
|
||||
penetrating = 2
|
||||
stun = 2
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/real/beehive //comparable to slugger projectiles but slightly stronger
|
||||
/obj/projectile/ship_ammo/bruiser/real/beehive //comparable to slugger projectiles but slightly stronger
|
||||
name = "massive slug"
|
||||
icon_state = "heavy"
|
||||
damage = 65
|
||||
@@ -157,14 +157,14 @@
|
||||
maim_type = DROPLIMB_BLUNT
|
||||
anti_materiel_potential = 2
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/real/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/bruiser/real/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
. = ..()
|
||||
if(ammo.impact_type == SHIP_AMMO_IMPACT_HE)
|
||||
explosion(target, 3, 6, 8)
|
||||
if(ammo.impact_type == SHIP_AMMO_IMPACT_AP)
|
||||
explosion(target, 0, 2, 4)
|
||||
|
||||
/obj/item/projectile/ship_ammo/bruiser/real/beehive/on_hit(atom/movable/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/bruiser/real/beehive/on_hit(atom/movable/target, blocked, def_zone, is_landmark_hit)
|
||||
if(istype(target))
|
||||
var/throwdir = dir
|
||||
target.throw_at(get_edge_target_turf(target, throwdir),9,8)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc_extended = "Although originally an expensive blunder made by over-worked Kumar Arms designers, the Nadziak later preformed to an outstanding degree following numerous improvements. Its fame among post-War Admirals was such that its name and purpose has largely remained the same, with a new 'Type' iteration commissioned every decade or so. With the expulsion of Zavodskoi and its subsidiary from Solarian space, this aging giant and symbol of military might is under threat of being consumed by the resulting arms manufacturing vacuum."
|
||||
icon = 'icons/obj/machinery/ship_guns/sol_coilgun.dmi'
|
||||
icon_state = "weapon_base"
|
||||
projectile_type = /obj/item/projectile/ship_ammo/coilgun
|
||||
projectile_type = /obj/projectile/ship_ammo/coilgun
|
||||
|
||||
heavy_firing_sound = 'sound/weapons/railgun.ogg'
|
||||
firing_effects = FIRING_EFFECT_FLAG_EXTREMELY_LOUD
|
||||
@@ -21,14 +21,14 @@
|
||||
overmap_icon_state = "cannon"
|
||||
impact_type = SHIP_AMMO_IMPACT_HE
|
||||
|
||||
/obj/item/projectile/ship_ammo/coilgun
|
||||
/obj/projectile/ship_ammo/coilgun
|
||||
name = "high-power tungsten rod"
|
||||
icon_state = "heavy"
|
||||
damage = 10000
|
||||
armor_penetration = 1000
|
||||
penetrating = 1
|
||||
|
||||
/obj/item/projectile/ship_ammo/coilgun/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/coilgun/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
. = ..()
|
||||
if(ismob(target))
|
||||
var/mob/M = target
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
heavy_firing_sound = 'sound/weapons/gunshot/ship_weapons/rotary_fire.ogg'
|
||||
icon_state = "weapon_base"
|
||||
max_ammo = 3
|
||||
projectile_type = /obj/item/projectile/ship_ammo/francisca
|
||||
projectile_type = /obj/projectile/ship_ammo/francisca
|
||||
caliber = SHIP_CALIBER_40MM
|
||||
screenshake_type = SHIP_GUN_SCREENSHAKE_SCREEN
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
desc = "A box of AP shells for use in a Francisca rotary gun."
|
||||
icon_state = "box_ap"
|
||||
impact_type = SHIP_AMMO_IMPACT_AP
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/francisca/ap
|
||||
projectile_type_override = /obj/projectile/ship_ammo/francisca/ap
|
||||
|
||||
/obj/item/ship_ammunition/francisca/frag
|
||||
name = "40mm fragmentation ammunition box"
|
||||
@@ -43,27 +43,27 @@
|
||||
desc = "A box of fragmentation shells for use in a Francisca rotary gun."
|
||||
icon_state = "box_inc"
|
||||
impact_type = SHIP_AMMO_IMPACT_HE
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/francisca/frag
|
||||
projectile_type_override = /obj/projectile/ship_ammo/francisca/frag
|
||||
|
||||
/obj/item/projectile/ship_ammo/francisca
|
||||
/obj/projectile/ship_ammo/francisca
|
||||
name = "40mm FMJ shell"
|
||||
icon_state = "small"
|
||||
damage = 50
|
||||
armor_penetration = 50
|
||||
penetrating = 2
|
||||
|
||||
/obj/item/projectile/ship_ammo/francisca/ap
|
||||
/obj/projectile/ship_ammo/francisca/ap
|
||||
name = "40mm AP shell"
|
||||
damage = 30
|
||||
armor_penetration = 100
|
||||
penetrating = 4
|
||||
|
||||
/obj/item/projectile/ship_ammo/francisca/frag
|
||||
/obj/projectile/ship_ammo/francisca/frag
|
||||
name = "40mm FRAG shell"
|
||||
damage = 30
|
||||
armor_penetration = 50
|
||||
penetrating = 1
|
||||
|
||||
/obj/item/projectile/ship_ammo/francisca/frag/on_impact(var/atom/A)
|
||||
/obj/projectile/ship_ammo/francisca/frag/on_impact(var/atom/A)
|
||||
fragem(src, 70, 70, 1, 2, 10, 4, TRUE)
|
||||
..()
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
overmap_icon_state = "flak"
|
||||
caliber = SHIP_CALIBER_90MM
|
||||
ammunition_behaviour = SHIP_AMMO_BEHAVIOUR_DUMBFIRE
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/grauwolf
|
||||
projectile_type_override = /obj/projectile/ship_ammo/grauwolf
|
||||
burst = 4
|
||||
|
||||
/obj/item/ship_ammunition/grauwolf_bundle/ap
|
||||
@@ -28,23 +28,23 @@
|
||||
desc = "A bundle of armor-piercing flak shells."
|
||||
icon_state = "bundle_ap"
|
||||
impact_type = SHIP_AMMO_IMPACT_AP
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/grauwolf/ap
|
||||
projectile_type_override = /obj/projectile/ship_ammo/grauwolf/ap
|
||||
|
||||
/obj/item/projectile/ship_ammo/grauwolf
|
||||
/obj/projectile/ship_ammo/grauwolf
|
||||
name = "high-explosive flak"
|
||||
icon_state = "small_burst"
|
||||
damage = 100
|
||||
armor_penetration = 50
|
||||
penetrating = 0
|
||||
|
||||
/obj/item/projectile/ship_ammo/grauwolf/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/grauwolf/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
. = ..()
|
||||
if(ammo && ammo.impact_type == SHIP_AMMO_IMPACT_HE)
|
||||
explosion(target, 0, 2, 4)
|
||||
else
|
||||
explosion(target, 0, 1, 2)
|
||||
|
||||
/obj/item/projectile/ship_ammo/grauwolf/ap
|
||||
/obj/projectile/ship_ammo/grauwolf/ap
|
||||
name = "armor-piercing flak"
|
||||
damage = 50
|
||||
armor_penetration = 50
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
ammunition_behaviour = SHIP_AMMO_BEHAVIOUR_DUMBFIRE
|
||||
impact_type = SHIP_AMMO_IMPACT_PROBE
|
||||
overmap_behaviour = null // This ammo cannot hit anything
|
||||
projectile_type_override = /obj/item/projectile/ship_ammo/grauwolf_probe
|
||||
projectile_type_override = /obj/projectile/ship_ammo/grauwolf_probe
|
||||
overmap_projectile_type_override = /obj/effect/overmap/projectile/probe
|
||||
burst = 1
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
sensor_console.datalink_remove_contact(contact, ship)
|
||||
. = ..()
|
||||
|
||||
/obj/item/projectile/ship_ammo/grauwolf_probe
|
||||
/obj/projectile/ship_ammo/grauwolf_probe
|
||||
name = "sensor probe projectile"
|
||||
icon_state = "small_burst"
|
||||
damage = 0
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "One of the most common naval guns produced by the Zhurong Imperial Naval Arsenal, the ZA-98/5 is the fifth revision of a gun which has proudly served the Imperial Fleet since 2398. Produced in cooperation with Zavodskoi Interstellar, the ZA-98/5 features and updates reloading mechanism and further improvements to the ballistic profile of its shots. This naval gun is commonly seen on Imperial Fleet corvettes and frigates as their main armament, and is often seen on larger Fleet vessels as a secondary armament to support larger weaponry. It is easily capable of destroying a smaller vessel if the Goddess ensures its shot flies true."
|
||||
icon = 'icons/obj/machinery/ship_guns/lammergeier.dmi'
|
||||
icon_state = "weapon_base"
|
||||
projectile_type = /obj/item/projectile/ship_ammo/lammergeier
|
||||
projectile_type = /obj/projectile/ship_ammo/lammergeier
|
||||
|
||||
heavy_firing_sound = 'sound/weapons/railgun.ogg'
|
||||
firing_effects = FIRING_EFFECT_FLAG_EXTREMELY_LOUD
|
||||
@@ -20,14 +20,14 @@
|
||||
overmap_icon_state = "cannon"
|
||||
impact_type = SHIP_AMMO_IMPACT_HE
|
||||
|
||||
/obj/item/projectile/ship_ammo/lammergeier
|
||||
/obj/projectile/ship_ammo/lammergeier
|
||||
name = "typhoon shell"
|
||||
icon_state = "heavy"
|
||||
damage = 10000
|
||||
armor_penetration = 1000
|
||||
penetrating = 1
|
||||
|
||||
/obj/item/projectile/ship_ammo/lammergeier/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/lammergeier/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
. = ..()
|
||||
if(ismob(target))
|
||||
var/mob/M = target
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
special_firing_mechanism = TRUE
|
||||
max_damage = 10000
|
||||
|
||||
projectile_type = /obj/item/projectile/ship_ammo/leviathan
|
||||
projectile_type = /obj/projectile/ship_ammo/leviathan
|
||||
use_ammunition = FALSE
|
||||
heavy_firing_sound = 'sound/weapons/gunshot/ship_weapons/leviathan_fire.ogg'
|
||||
caliber = SHIP_CALIBER_ZAT
|
||||
@@ -136,7 +136,7 @@
|
||||
/obj/item/ship_ammunition/leviathan/get_speed()
|
||||
return 2
|
||||
|
||||
/obj/item/projectile/ship_ammo/leviathan
|
||||
/obj/projectile/ship_ammo/leviathan
|
||||
name = "zero-point artillery beam"
|
||||
desc = "A concentrated stream of pure energy."
|
||||
icon_state = "pulse"
|
||||
@@ -150,7 +150,7 @@
|
||||
tracer_type = /obj/effect/projectile/tracer/pulse
|
||||
impact_type = /obj/effect/projectile/impact/pulse
|
||||
|
||||
/obj/item/projectile/ship_ammo/leviathan/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/leviathan/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
if(!is_landmark_hit)
|
||||
if(ismob(target))
|
||||
var/mob/M = target
|
||||
@@ -162,7 +162,7 @@
|
||||
target.visible_message(SPAN_DANGER("<font size=6>A giant, purple laser descends from the sky!</font>"))
|
||||
explosion(target, 30, 30, 30)
|
||||
|
||||
/obj/item/projectile/ship_ammo/leviathan/check_penetrate(atom/A)
|
||||
/obj/projectile/ship_ammo/leviathan/check_penetrate(atom/A)
|
||||
on_hit(A)
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A Kumar Arms high-velocity cannon and flagship of <i>\"Chivalry\"</i> weapons line, developed in 2461 as an upgrade to its predecessor, the Ballista. Its upgrades include a bigger payload, a more streamlined loading process, and easier maintenance, making this cannon one of the best armaments in the Spur."
|
||||
icon_state = "weapon_base"
|
||||
|
||||
projectile_type = /obj/item/projectile/ship_ammo/longbow
|
||||
projectile_type = /obj/projectile/ship_ammo/longbow
|
||||
caliber = SHIP_CALIBER_406MM
|
||||
firing_effects = FIRING_EFFECT_FLAG_EXTREMELY_LOUD
|
||||
screenshake_type = SHIP_GUN_SCREENSHAKE_ALL_MOBS
|
||||
@@ -11,20 +11,20 @@
|
||||
/obj/machinery/ammunition_loader/longbow
|
||||
name = "longbow shell loader"
|
||||
|
||||
/obj/item/projectile/ship_ammo/longbow
|
||||
/obj/projectile/ship_ammo/longbow
|
||||
icon_state = "heavy"
|
||||
damage = 1000
|
||||
armor_penetration = 1000
|
||||
var/penetrated = FALSE
|
||||
|
||||
/obj/item/projectile/ship_ammo/longbow/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread)
|
||||
/obj/projectile/ship_ammo/longbow/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread)
|
||||
if(ammo.impact_type == SHIP_AMMO_IMPACT_AP)
|
||||
penetrating = 1
|
||||
if(ammo.impact_type == SHIP_AMMO_IMPACT_BUNKERBUSTER)
|
||||
penetrating = 3
|
||||
. = ..()
|
||||
|
||||
/obj/item/projectile/ship_ammo/longbow/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
/obj/projectile/ship_ammo/longbow/on_hit(atom/target, blocked, def_zone, is_landmark_hit)
|
||||
. = ..()
|
||||
if(ismob(target))
|
||||
var/mob/M = target
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
if(prob(10))
|
||||
cookoff(FALSE)
|
||||
|
||||
/obj/item/warhead/longbow/bullet_act(obj/item/projectile/P, def_zone)
|
||||
/obj/item/warhead/longbow/bullet_act(obj/projectile/P, def_zone)
|
||||
. = ..()
|
||||
if(P.damage > 5)
|
||||
cookoff(TRUE)
|
||||
|
||||
@@ -503,7 +503,7 @@
|
||||
else if(health < max_health * 0.75)
|
||||
. += "\The [src] shows signs of damage!"
|
||||
|
||||
/obj/machinery/shipsensors/bullet_act(var/obj/item/projectile/Proj)
|
||||
/obj/machinery/shipsensors/bullet_act(var/obj/projectile/Proj)
|
||||
take_damage(Proj.get_structure_damage())
|
||||
..()
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
owned_field.AddParticles(name, quantity)
|
||||
. = 1
|
||||
|
||||
/obj/machinery/power/fusion_core/bullet_act(obj/item/projectile/Proj)
|
||||
/obj/machinery/power/fusion_core/bullet_act(obj/projectile/Proj)
|
||||
if(owned_field)
|
||||
. = owned_field.bullet_act(Proj)
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
var/list/particle_catchers = list()
|
||||
|
||||
var/list/ignore_types = list(
|
||||
/obj/item/projectile,
|
||||
/obj/projectile,
|
||||
/obj/effect,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics,
|
||||
@@ -582,7 +582,7 @@
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
. = ..()
|
||||
|
||||
/obj/effect/fusion_em_field/bullet_act(obj/item/projectile/Proj)
|
||||
/obj/effect/fusion_em_field/bullet_act(obj/projectile/Proj)
|
||||
AddEnergy(Proj.damage)
|
||||
update_icon()
|
||||
return 0
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
density = FALSE
|
||||
name = "collector [mysize] OFF"
|
||||
|
||||
/obj/effect/fusion_particle_catcher/bullet_act(obj/item/projectile/Proj)
|
||||
/obj/effect/fusion_particle_catcher/bullet_act(obj/projectile/Proj)
|
||||
parent.AddEnergy(Proj.damage)
|
||||
update_icon()
|
||||
return FALSE
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
return rate * 10
|
||||
|
||||
/obj/machinery/power/emitter/gyrotron/get_emitter_beam()
|
||||
var/obj/item/projectile/beam/emitter/E = ..()
|
||||
var/obj/projectile/beam/emitter/E = ..()
|
||||
E.damage = mega_energy * 50
|
||||
return E
|
||||
|
||||
|
||||
@@ -507,7 +507,7 @@
|
||||
else
|
||||
user.visible_message(SPAN_WARNING("\The [user] hits \the [src], but it doesn't break."), SPAN_WARNING("You hit \the [src], but it doesn't break."), SPAN_WARNING("You hear something hitting against glass."))
|
||||
|
||||
/obj/machinery/light/bullet_act(obj/item/projectile/P, def_zone)
|
||||
/obj/machinery/light/bullet_act(obj/projectile/P, def_zone)
|
||||
bullet_ping(P)
|
||||
shatter()
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
qdel(src)
|
||||
return 50000
|
||||
|
||||
/obj/item/projectile/beam/emitter/singularity_pull()
|
||||
/obj/projectile/beam/emitter/singularity_pull()
|
||||
return
|
||||
|
||||
/obj/item/storage/backpack/holding/singularity_act(S, current_size)
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
if(prob(35))
|
||||
spark_system.queue()
|
||||
|
||||
var/obj/item/projectile/beam/emitter/A = get_emitter_beam()
|
||||
var/obj/projectile/beam/emitter/A = get_emitter_beam()
|
||||
A.damage = round(power_per_shot / EMITTER_DAMAGE_POWER_TRANSFER)
|
||||
A.launch_projectile(get_step(src, dir))
|
||||
shot_counter++
|
||||
@@ -270,7 +270,7 @@
|
||||
return 0.2 SECONDS // This value doesn't really affect normal emitters, but *does* affect subtypes like the gyrotron that can have very long delays
|
||||
|
||||
/obj/machinery/power/emitter/proc/get_emitter_beam()
|
||||
return new /obj/item/projectile/beam/emitter(get_turf(src))
|
||||
return new /obj/projectile/beam/emitter(get_turf(src))
|
||||
|
||||
#undef EMITTER_LOOSE
|
||||
#undef EMITTER_BOLTED
|
||||
|
||||
@@ -160,8 +160,8 @@ field_generator power level display
|
||||
|
||||
return 0
|
||||
|
||||
/obj/machinery/field_generator/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj, /obj/item/projectile/beam))
|
||||
/obj/machinery/field_generator/bullet_act(var/obj/projectile/Proj)
|
||||
if(istype(Proj, /obj/projectile/beam))
|
||||
power += Proj.damage * 1.25 * EMITTER_DAMAGE_POWER_TRANSFER
|
||||
update_icon()
|
||||
return 0
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
energy += round((rand(20,60)/2),1)
|
||||
return
|
||||
|
||||
/obj/singularity/bullet_act(obj/item/projectile/P)
|
||||
/obj/singularity/bullet_act(obj/projectile/P)
|
||||
return 0 //Will there be an impact? Who knows. Will we see it? No.
|
||||
|
||||
/obj/singularity/Collide(atom/A)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
wires = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/smes/buildable/bullet_act(obj/item/projectile/P, def_zone)
|
||||
/obj/machinery/power/smes/buildable/bullet_act(obj/projectile/P, def_zone)
|
||||
. = ..()
|
||||
visible_message(SPAN_WARNING("\The [src] is hit by \the [P]!"))
|
||||
health_check(P.damage)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/caliber = "" //Which kind of guns it can be loaded into
|
||||
var/max_stack = 5 // how many of us can fit in a pile
|
||||
var/projectile_type //The bullet type to create when New() is called
|
||||
var/obj/item/projectile/BB = null //The loaded bullet - make it so that the projectiles are created only when needed?
|
||||
var/obj/projectile/BB = null //The loaded bullet - make it so that the projectiles are created only when needed?
|
||||
var/spent_icon = "s-casing-spent"
|
||||
|
||||
drop_sound = /singleton/sound_category/casing_drop_sound
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
/obj/item/ammo_casing/a357
|
||||
desc = "A .357 bullet casing."
|
||||
caliber = "357"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/revolver
|
||||
projectile_type = /obj/projectile/bullet/pistol/revolver
|
||||
|
||||
/obj/item/ammo_casing/a454
|
||||
desc = "A .454 bullet casing."
|
||||
caliber = "454"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
projectile_type = /obj/projectile/bullet/pistol/strong
|
||||
|
||||
/obj/item/ammo_casing/a50
|
||||
desc = "A .50AE bullet casing."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
projectile_type = /obj/projectile/bullet/pistol/strong
|
||||
|
||||
/obj/item/ammo_casing/a75
|
||||
desc = "A 20mm bullet casing."
|
||||
caliber = "75"
|
||||
projectile_type = /obj/item/projectile/bullet/gyro
|
||||
projectile_type = /obj/projectile/bullet/gyro
|
||||
|
||||
/obj/item/ammo_casing/c38
|
||||
desc = "A .38 bullet casing."
|
||||
caliber = "38"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
projectile_type = /obj/projectile/bullet/pistol
|
||||
max_stack = 6
|
||||
|
||||
/obj/item/ammo_casing/c38/rubber
|
||||
desc = "A .38 rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
||||
projectile_type = /obj/projectile/bullet/pistol/rubber
|
||||
icon_state = "r-casing"
|
||||
spent_icon = "r-casing-spent"
|
||||
|
||||
/obj/item/ammo_casing/c38/emp
|
||||
name = ".38 haywire round"
|
||||
desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
|
||||
projectile_type = /obj/item/projectile/ion/small
|
||||
projectile_type = /obj/projectile/ion/small
|
||||
icon_state = "empcasing"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 130, MATERIAL_URANIUM = 100)
|
||||
|
||||
@@ -45,78 +45,78 @@
|
||||
desc = "hyperdense tungsten rod residue."
|
||||
icon_state = "trod"
|
||||
caliber = "trod"
|
||||
projectile_type = /obj/item/projectile/bullet/trod
|
||||
projectile_type = /obj/projectile/bullet/trod
|
||||
|
||||
/obj/item/ammo_casing/c9mm
|
||||
desc = "A 9mm bullet casing."
|
||||
caliber = "9mm"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
projectile_type = /obj/projectile/bullet/pistol
|
||||
max_stack = 15
|
||||
|
||||
/obj/item/ammo_casing/c9mm/flash
|
||||
desc = "A 9mm flash shell casing."
|
||||
projectile_type = /obj/item/projectile/energy/flash
|
||||
projectile_type = /obj/projectile/energy/flash
|
||||
|
||||
/obj/item/ammo_casing/c45/revolver
|
||||
desc = "A .45 revolver bullet casing."
|
||||
max_stack = 6
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/revolver
|
||||
projectile_type = /obj/projectile/bullet/pistol/revolver
|
||||
|
||||
/obj/item/ammo_casing/c9mm/rubber
|
||||
desc = "A 9mm rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
||||
projectile_type = /obj/projectile/bullet/pistol/rubber
|
||||
icon_state = "r-casing"
|
||||
spent_icon = "r-casing-spent"
|
||||
|
||||
/obj/item/ammo_casing/c9mm/practice
|
||||
desc = "A 9mm practice bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/practice
|
||||
projectile_type = /obj/projectile/bullet/pistol/practice
|
||||
|
||||
/obj/item/ammo_casing/c10mm
|
||||
desc = "A 10mm bullet casing."
|
||||
caliber = "10mm"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
projectile_type = /obj/projectile/bullet/pistol
|
||||
max_stack = 10
|
||||
|
||||
/obj/item/ammo_casing/c10mm/rubber
|
||||
desc = "A 10mm rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
||||
projectile_type = /obj/projectile/bullet/pistol/rubber
|
||||
|
||||
/obj/item/ammo_casing/c45
|
||||
desc = "A .45 bullet casing."
|
||||
caliber = ".45"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
projectile_type = /obj/projectile/bullet/pistol/medium
|
||||
max_stack = 10
|
||||
|
||||
/obj/item/ammo_casing/c45/practice
|
||||
desc = "A .45 practice bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/practice
|
||||
projectile_type = /obj/projectile/bullet/pistol/practice
|
||||
|
||||
/obj/item/ammo_casing/c45/rubber
|
||||
desc = "A .45 rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
||||
projectile_type = /obj/projectile/bullet/pistol/rubber
|
||||
icon_state = "r-casing"
|
||||
spent_icon = "r-casing-spent"
|
||||
|
||||
/obj/item/ammo_casing/c45/flash
|
||||
desc = "A .45 flash shell casing."
|
||||
projectile_type = /obj/item/projectile/energy/flash
|
||||
projectile_type = /obj/projectile/energy/flash
|
||||
|
||||
/obj/item/ammo_casing/a12mm
|
||||
desc = "A 12mm bullet casing."
|
||||
caliber = "12mm"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
projectile_type = /obj/projectile/bullet/pistol/medium
|
||||
max_stack = 7
|
||||
|
||||
/obj/item/ammo_casing/smg10mm
|
||||
desc = "A 10mm bullet casing."
|
||||
caliber = "10mm"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
projectile_type = /obj/projectile/bullet/pistol
|
||||
|
||||
/obj/item/ammo_casing/c46mm
|
||||
desc = "A 4.6mm bullet casing."
|
||||
caliber = "4.6mm"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
projectile_type = /obj/projectile/bullet/pistol
|
||||
max_stack = 15
|
||||
|
||||
/obj/item/ammo_casing/shotgun
|
||||
@@ -125,7 +125,7 @@
|
||||
icon_state = "slshell"
|
||||
spent_icon = "slshell-spent"
|
||||
caliber = "shotgun"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun
|
||||
projectile_type = /obj/projectile/bullet/shotgun
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 360)
|
||||
reload_sound = /singleton/sound_category/shotgun_reload
|
||||
drop_sound = /singleton/sound_category/casing_drop_sound_shotgun
|
||||
@@ -142,7 +142,7 @@
|
||||
desc = "A 12-gauge shell."
|
||||
icon_state = "gshell"
|
||||
spent_icon = "gshell-spent"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun
|
||||
projectile_type = /obj/projectile/bullet/pellet/shotgun
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 360)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/pellet/used/Initialize()
|
||||
@@ -156,7 +156,7 @@
|
||||
desc = "A 12-gauge blank shell."
|
||||
icon_state = "blshell"
|
||||
spent_icon = "blshell-spent"
|
||||
projectile_type = /obj/item/projectile/bullet/blank
|
||||
projectile_type = /obj/projectile/bullet/blank
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 90)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/practice
|
||||
@@ -164,7 +164,7 @@
|
||||
desc = "A 12-gauge practice shell."
|
||||
icon_state = "pshell"
|
||||
spent_icon = "pshell-spent"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun/practice
|
||||
projectile_type = /obj/projectile/bullet/shotgun/practice
|
||||
matter = list(MATERIAL_STEEL = 90)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/beanbag
|
||||
@@ -172,7 +172,7 @@
|
||||
desc = "A 12-gauge beanbag shell."
|
||||
icon_state = "bshell"
|
||||
spent_icon = "bshell-spent"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun/beanbag
|
||||
projectile_type = /obj/projectile/bullet/shotgun/beanbag
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 180)
|
||||
|
||||
//Can stun in one hit if aimed at the head, but
|
||||
@@ -182,7 +182,7 @@
|
||||
desc = "A 12-gauge taser cartridge."
|
||||
icon_state = "stunshell"
|
||||
spent_icon = "stunshell-spent"
|
||||
projectile_type = /obj/item/projectile/energy/electrode/stunshot
|
||||
projectile_type = /obj/projectile/energy/electrode/stunshot
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 360, MATERIAL_GLASS = 720)
|
||||
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
desc = "A 12-gauge chemical shell used to signal distress or provide illumination."
|
||||
icon_state = "fshell"
|
||||
spent_icon = "fshell-spent"
|
||||
projectile_type = /obj/item/projectile/energy/flash/flare
|
||||
projectile_type = /obj/projectile/energy/flash/flare
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 90, MATERIAL_GLASS = 90)
|
||||
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
desc = "A 12-gauge incendiary shell."
|
||||
icon_state = "ishell"
|
||||
spent_icon = "ishell-spent"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun/incendiary
|
||||
projectile_type = /obj/projectile/bullet/shotgun/incendiary
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 450)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/emp
|
||||
@@ -217,7 +217,7 @@
|
||||
desc = "A 12-gauge shotgun slug fitted with a single-use ion pulse generator."
|
||||
icon_state = "empshell"
|
||||
spent_icon = "empshell-spent"
|
||||
projectile_type = /obj/item/projectile/ion
|
||||
projectile_type = /obj/projectile/ion
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 260, MATERIAL_URANIUM = 200)
|
||||
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
desc = "A 12-gauge shotgun slug fitted with a tracking implant, set to activate upon embedding flesh."
|
||||
icon_state = "trackingshell"
|
||||
spent_icon = "trackingshell-spent"
|
||||
projectile_type = /obj/item/projectile/bullet/tracking
|
||||
projectile_type = /obj/projectile/bullet/tracking
|
||||
|
||||
/obj/item/ammo_casing/shotgun/moghes
|
||||
name = "wall shell"
|
||||
@@ -234,7 +234,7 @@
|
||||
desc_extended = "This complicated and expensive shotgun shell fires both a solid slug and a hail of shots at the same time, making it a destructive and dangerous ammunition at all ranges, assuming the user can point in the target's general direction. Somehow it seems to somewhat fit in other shotgun type weaponry too."
|
||||
icon_state = "moghes_shell"
|
||||
spent_icon = "moghes_shell_spent"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun/moghes
|
||||
projectile_type = /obj/projectile/bullet/shotgun/moghes
|
||||
|
||||
/obj/item/ammo_casing/tranq
|
||||
name = "PPS shell"
|
||||
@@ -242,13 +242,13 @@
|
||||
icon_state = "ishell"
|
||||
spent_icon = "ishell-spent"
|
||||
caliber = "PPS"
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/tranq
|
||||
projectile_type = /obj/projectile/bullet/rifle/tranq
|
||||
max_stack = 6
|
||||
|
||||
/obj/item/ammo_casing/a762
|
||||
desc = "A 7.62mm bullet casing."
|
||||
caliber = "a762"
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a762
|
||||
projectile_type = /obj/projectile/bullet/rifle/a762
|
||||
icon_state = "rifle-casing"
|
||||
spent_icon = "rifle-casing-spent"
|
||||
max_stack = 2
|
||||
@@ -259,13 +259,13 @@
|
||||
|
||||
/obj/item/ammo_casing/a762/blank
|
||||
desc = "A 7.62mm blank casing."
|
||||
projectile_type = /obj/item/projectile/bullet/blank
|
||||
projectile_type = /obj/projectile/bullet/blank
|
||||
|
||||
/obj/item/ammo_casing/a145
|
||||
name = "shell casing"
|
||||
desc = "A 14.5mm shell."
|
||||
caliber = "14.5mm"
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a145
|
||||
projectile_type = /obj/projectile/bullet/rifle/a145
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1250)
|
||||
icon_state = "lcasing"
|
||||
spent_icon = "lcasing-spent"
|
||||
@@ -274,26 +274,26 @@
|
||||
/obj/item/ammo_casing/a556
|
||||
desc = "A 5.56mm bullet casing."
|
||||
caliber = "a556"
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a556
|
||||
projectile_type = /obj/projectile/bullet/rifle/a556
|
||||
icon_state = "rifle-casing"
|
||||
spent_icon = "rifle-casing-spent"
|
||||
max_stack = 7
|
||||
|
||||
/obj/item/ammo_casing/a556/ap
|
||||
desc = "A 5.56mm armor piercing round."
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
|
||||
projectile_type = /obj/projectile/bullet/rifle/a556/ap
|
||||
|
||||
/obj/item/ammo_casing/a556/practice
|
||||
desc = "A 5.56mm practice bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a556/practice
|
||||
projectile_type = /obj/projectile/bullet/rifle/a556/practice
|
||||
|
||||
/obj/item/ammo_casing/a556/polymer
|
||||
desc = "A 5.56mm polymer bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a556/polymer
|
||||
projectile_type = /obj/projectile/bullet/rifle/a556/polymer
|
||||
|
||||
/obj/item/ammo_casing/a556/blank
|
||||
desc = "A 5.56mm blank casing."
|
||||
projectile_type = /obj/item/projectile/bullet/blank
|
||||
projectile_type = /obj/projectile/bullet/blank
|
||||
|
||||
/obj/item/ammo_casing/a556/spent/Initialize()
|
||||
. = ..()
|
||||
@@ -303,7 +303,7 @@
|
||||
desc = "A 6.5mm bullet casing."
|
||||
desc_extended = "Designed by de Namur not long after the interstellar war, the 6.5mmx40mm cartridge, designed to fit the needs of Xanu's military while going away from the legacy rounds used by the Sol Alliance. This cartridge has been wildly successful, and has been adopted by the majority of the Coalition of Colonies and beyond."
|
||||
caliber = "a65"
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a65
|
||||
projectile_type = /obj/projectile/bullet/rifle/a65
|
||||
icon_state = "rifle-casing"
|
||||
spent_icon = "rifle-casing-spent"
|
||||
max_stack = 7
|
||||
@@ -322,7 +322,7 @@
|
||||
/obj/item/ammo_casing/chameleon
|
||||
name = "chameleon bullets"
|
||||
desc = "A set of bullets for the Chameleon Gun."
|
||||
projectile_type = /obj/item/projectile/bullet/chameleon
|
||||
projectile_type = /obj/projectile/bullet/chameleon
|
||||
caliber = ".45"
|
||||
|
||||
/obj/item/ammo_casing/cap
|
||||
@@ -330,7 +330,7 @@
|
||||
desc = "A cap for children toys."
|
||||
caliber = "caps"
|
||||
color = "#FF0000"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/cap
|
||||
projectile_type = /obj/projectile/bullet/pistol/cap
|
||||
max_stack = 6
|
||||
|
||||
/obj/item/ammo_casing/flechette
|
||||
@@ -338,14 +338,14 @@
|
||||
icon = 'icons/obj/terminator.dmi'
|
||||
icon_state = "flechette_casing"
|
||||
caliber = "flechette"
|
||||
projectile_type = /obj/item/projectile/bullet/flechette
|
||||
projectile_type = /obj/projectile/bullet/flechette
|
||||
max_stack = 4
|
||||
|
||||
/obj/item/ammo_casing/flechette/explosive
|
||||
projectile_type = /obj/item/projectile/bullet/flechette/explosive
|
||||
projectile_type = /obj/projectile/bullet/flechette/explosive
|
||||
|
||||
/obj/item/ammo_casing/vintage
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/vintage
|
||||
projectile_type = /obj/projectile/bullet/rifle/vintage
|
||||
desc = "A .30-06 Government bullet casing. It looks old, and you can barely understand the writing stamped on it."
|
||||
caliber = "30-06 govt"
|
||||
icon_state = "lcasing"
|
||||
@@ -357,7 +357,7 @@
|
||||
expend()
|
||||
|
||||
/obj/item/ammo_casing/govt
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/govt
|
||||
projectile_type = /obj/projectile/bullet/rifle/govt
|
||||
desc = "A .45-70 Government bullet casing."
|
||||
caliber = "45-70 govt"
|
||||
icon_state = "gcasing"
|
||||
@@ -365,7 +365,7 @@
|
||||
max_stack = 4
|
||||
|
||||
/obj/item/ammo_casing/slugger
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/slugger
|
||||
projectile_type = /obj/projectile/bullet/rifle/slugger
|
||||
caliber = "slugger"
|
||||
icon_state = "slugger-sharp"
|
||||
spent_icon = "slugger-spent"
|
||||
@@ -377,19 +377,19 @@
|
||||
caliber = "gauss"
|
||||
icon_state = "tungstenslug"
|
||||
spent_icon = "tungstenslug-spent"
|
||||
projectile_type = /obj/item/projectile/bullet/gauss
|
||||
projectile_type = /obj/projectile/bullet/gauss
|
||||
max_stack = 2
|
||||
|
||||
/obj/item/ammo_casing/gauss/carbine
|
||||
name = "compact tungsten slug"
|
||||
desc = "A heavy tungsten gauss slug. This one has a casing adapated for carbine models."
|
||||
projectile_type = /obj/item/projectile/bullet/gauss/carbine
|
||||
projectile_type = /obj/projectile/bullet/gauss/carbine
|
||||
|
||||
/obj/item/ammo_casing/gauss/emp
|
||||
name = "ion slug"
|
||||
desc = "A heavy ion gauss slug."
|
||||
icon_state = "empslug"
|
||||
projectile_type = /obj/item/projectile/ion/gauss
|
||||
projectile_type = /obj/projectile/ion/gauss
|
||||
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
|
||||
|
||||
/obj/item/ammo_casing/plasma_slug
|
||||
@@ -397,7 +397,7 @@
|
||||
desc = "A plasma slug."
|
||||
icon_state = "plasmaslug"
|
||||
caliber = "plasma slug"
|
||||
projectile_type = /obj/item/projectile/plasma
|
||||
projectile_type = /obj/projectile/plasma
|
||||
max_stack = 2
|
||||
|
||||
/obj/item/ammo_casing/plasma_bolt
|
||||
@@ -405,7 +405,7 @@
|
||||
desc = "A plasma bolt."
|
||||
icon_state = "plasmabolt"
|
||||
caliber = "plasma bolt"
|
||||
projectile_type = /obj/item/projectile/plasma/light
|
||||
projectile_type = /obj/projectile/plasma/light
|
||||
max_stack = 4
|
||||
|
||||
/obj/item/ammo_casing/cannon
|
||||
@@ -413,7 +413,7 @@
|
||||
desc = "A solid metal projectile."
|
||||
icon_state = "cannonball"
|
||||
caliber = "cannon"
|
||||
projectile_type = /obj/item/projectile/bullet/cannonball
|
||||
projectile_type = /obj/projectile/bullet/cannonball
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 800)
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot_flags = null
|
||||
@@ -425,12 +425,12 @@
|
||||
name = "explosive cannonball"
|
||||
desc = "A solid metal projectile loaded with an explosive charge."
|
||||
icon_state = "cannonball_explosive"
|
||||
projectile_type = /obj/item/projectile/bullet/cannonball/explosive
|
||||
projectile_type = /obj/projectile/bullet/cannonball/explosive
|
||||
|
||||
/obj/item/ammo_casing/cannon/canister
|
||||
name = "canister shot"
|
||||
desc = "A solid projectile filled with deadly shrapnel."
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun/canister
|
||||
projectile_type = /obj/projectile/bullet/pellet/shotgun/canister
|
||||
|
||||
/obj/item/ammo_casing/nuke
|
||||
name = "miniaturized nuclear warhead"
|
||||
@@ -439,7 +439,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot_flags = null
|
||||
desc = "A miniaturized version of a nuclear bomb."
|
||||
projectile_type = /obj/item/projectile/bullet/nuke
|
||||
projectile_type = /obj/projectile/bullet/nuke
|
||||
drop_sound = /singleton/sound_category/generic_drop_sound
|
||||
max_stack = 2
|
||||
|
||||
@@ -448,7 +448,7 @@
|
||||
desc = "A solid ball made of lead."
|
||||
icon_state = "musketball"
|
||||
caliber = "musket"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
projectile_type = /obj/projectile/bullet/pistol/strong
|
||||
reload_sound = 'sound/weapons/reloads/shotgun_pump.ogg'
|
||||
|
||||
/obj/item/ammo_casing/recoilless_rifle
|
||||
@@ -457,7 +457,7 @@
|
||||
caliber = "recoilless_rifle"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot_flags = null
|
||||
projectile_type = /obj/item/projectile/bullet/recoilless_rifle
|
||||
projectile_type = /obj/projectile/bullet/recoilless_rifle
|
||||
reload_sound = 'sound/weapons/reloads/shotgun_pump.ogg'
|
||||
max_stack = 1
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
caliber = "peac"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot_flags = null
|
||||
projectile_type = /obj/item/projectile/bullet/peac
|
||||
projectile_type = /obj/projectile/bullet/peac
|
||||
drop_sound = 'sound/items/drop/shell_drop.ogg'
|
||||
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
|
||||
reload_sound = 'sound/weapons/railgun_insert_emp.ogg'
|
||||
@@ -476,24 +476,24 @@
|
||||
|
||||
/obj/item/ammo_casing/peac/he
|
||||
name = "anti-materiel HE cannon cartridge"
|
||||
projectile_type = /obj/item/projectile/bullet/peac/he
|
||||
projectile_type = /obj/projectile/bullet/peac/he
|
||||
|
||||
/obj/item/ammo_casing/peac/shrapnel
|
||||
name = "anti-materiel FRAG cannon cartridge"
|
||||
projectile_type = /obj/item/projectile/bullet/peac/shrapnel
|
||||
projectile_type = /obj/projectile/bullet/peac/shrapnel
|
||||
|
||||
/obj/item/ammo_casing/kumar_super
|
||||
name =".599 kumar super casing"
|
||||
icon_state = "rifle-casing"
|
||||
spent_icon = "rifle-casing-spent"
|
||||
caliber = ".599 Kumar Super"
|
||||
projectile_type = /obj/item/projectile/bullet
|
||||
projectile_type = /obj/projectile/bullet
|
||||
max_stack = 5
|
||||
|
||||
/obj/item/ammo_casing/c6mm
|
||||
desc = "A 6mm bullet casing."
|
||||
caliber = "6mm"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/assassin
|
||||
projectile_type = /obj/projectile/bullet/pistol/assassin
|
||||
max_stack = 15
|
||||
|
||||
/obj/item/ammo_casing/moghes_pistol
|
||||
@@ -501,7 +501,7 @@
|
||||
icon_state = "moghes_casing_p"
|
||||
spent_icon = "moghes_casing_p_spent"
|
||||
caliber = "11.6mm"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
|
||||
projectile_type = /obj/projectile/bullet/pistol/medium/ap
|
||||
max_stack = 15
|
||||
|
||||
/obj/item/ammo_casing/moghes_rifle
|
||||
@@ -509,5 +509,5 @@
|
||||
icon_state = "moghes_casing"
|
||||
spent_icon = "moghes_casing_spent"
|
||||
caliber = "5.8mm"
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a556
|
||||
projectile_type = /obj/projectile/bullet/rifle/a556
|
||||
max_stack = 7
|
||||
|
||||
@@ -422,7 +422,7 @@
|
||||
break
|
||||
|
||||
if(isprojectile(projectile))
|
||||
var/obj/item/projectile/P = projectile
|
||||
var/obj/projectile/P = projectile
|
||||
|
||||
var/acc = burst_accuracy[min(i, burst_accuracy.len)]
|
||||
var/disp = dispersion[min(i, dispersion.len)]
|
||||
@@ -510,7 +510,7 @@
|
||||
playsound(loc, fire_sound, fire_sound_volume, vary_fire_sound, falloff_distance = 0.5)
|
||||
|
||||
/obj/item/gun/proc/process_point_blank(obj/projectile, mob/user, atom/target)
|
||||
var/obj/item/projectile/P = projectile
|
||||
var/obj/projectile/P = projectile
|
||||
if(!istype(P))
|
||||
return //default behaviour only applies to true projectiles
|
||||
|
||||
@@ -533,7 +533,7 @@
|
||||
P.point_blank = TRUE
|
||||
|
||||
/obj/item/gun/proc/process_accuracy(obj/projectile, mob/user, atom/target, acc_mod, dispersion)
|
||||
var/obj/item/projectile/P = projectile
|
||||
var/obj/projectile/P = projectile
|
||||
if(!istype(P))
|
||||
return //default behaviour only applies to true projectiles
|
||||
|
||||
@@ -560,7 +560,7 @@
|
||||
|
||||
//does the actual launching of the projectile
|
||||
/obj/item/gun/proc/process_projectile(obj/projectile, mob/user, atom/target, target_zone, params)
|
||||
var/obj/item/projectile/P = projectile
|
||||
var/obj/projectile/P = projectile
|
||||
if(!istype(P))
|
||||
return FALSE //default behaviour only applies to true projectiles
|
||||
|
||||
@@ -588,7 +588,7 @@
|
||||
M.visible_message(SPAN_GOOD("\The [user] takes \the [src] out of their mouth."))
|
||||
mouthshoot = FALSE
|
||||
return
|
||||
var/obj/item/projectile/in_chamber = consume_next_projectile()
|
||||
var/obj/projectile/in_chamber = consume_next_projectile()
|
||||
if(istype(in_chamber))
|
||||
user.visible_message(SPAN_DANGER("\The [user] pulls the trigger."))
|
||||
if (!pin && needspin) // Checks the pin of the gun.
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
recoil = 1
|
||||
|
||||
force = 15
|
||||
projectile_type = /obj/item/projectile/energy/sonic
|
||||
projectile_type = /obj/projectile/energy/sonic
|
||||
cell_type = /obj/item/cell/super
|
||||
fire_delay = 40
|
||||
fire_sound = 'sound/effects/basscannon.ogg'
|
||||
@@ -93,7 +93,7 @@
|
||||
return
|
||||
|
||||
//Projectile.
|
||||
/obj/item/projectile/energy/sonic
|
||||
/obj/projectile/energy/sonic
|
||||
name = "distortion"
|
||||
icon = 'icons/obj/machinery/particle_accelerator2.dmi'
|
||||
icon_state = "particle"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/charge_cost = 200 //How much energy is needed to fire.
|
||||
var/max_shots = 10 //Determines the capacity of the weapon's power cell. Specifying a cell_type overrides this value.
|
||||
var/cell_type = null
|
||||
var/projectile_type = /obj/item/projectile/beam/practice //also passed to turrets
|
||||
var/projectile_type = /obj/projectile/beam/practice //also passed to turrets
|
||||
var/modifystate
|
||||
var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge
|
||||
var/list/required_firemode_auth //This list matches with firemode index, used to determine which firemodes get unlocked with what level of authorization.
|
||||
@@ -287,12 +287,12 @@
|
||||
if(initial(self_recharge))
|
||||
. += "Recharge Time: [initial(recharge_time)]<br>"
|
||||
. += "<br><b>Primary Projectile</b><br>"
|
||||
var/obj/item/projectile/P = new projectile_type
|
||||
var/obj/projectile/P = new projectile_type
|
||||
. += P.get_print_info()
|
||||
|
||||
if(secondary_projectile_type)
|
||||
. += "<br><b>Secondary Projectile</b><br>"
|
||||
var/obj/item/projectile/P_second = new secondary_projectile_type
|
||||
var/obj/projectile/P_second = new secondary_projectile_type
|
||||
. += P_second.get_print_info()
|
||||
. += "<br>"
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
offhand_accuracy = 1
|
||||
projectile_type = /obj/item/projectile/energy/blaster
|
||||
projectile_type = /obj/projectile/energy/blaster
|
||||
max_shots = 6
|
||||
|
||||
burst_delay = 2
|
||||
@@ -27,7 +27,7 @@
|
||||
name = "rapidfire blaster"
|
||||
desc = "An aged but reliable rapidfire blaster tuned to expel projectiles at high fire rates."
|
||||
fire_sound = 'sound/weapons/laserstrong.ogg'
|
||||
projectile_type = /obj/item/projectile/energy/blaster/heavy
|
||||
projectile_type = /obj/projectile/energy/blaster/heavy
|
||||
burst = 5
|
||||
burst_delay = 3
|
||||
max_shots = 30
|
||||
@@ -52,7 +52,7 @@
|
||||
icon_state = "blaster_revolver"
|
||||
item_state = "blaster_revolver"
|
||||
fire_sound = 'sound/weapons/laserstrong.ogg'
|
||||
projectile_type = /obj/item/projectile/energy/blaster
|
||||
projectile_type = /obj/projectile/energy/blaster
|
||||
max_shots = 8
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
max_shots = 12
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
offhand_accuracy = 0
|
||||
projectile_type = /obj/item/projectile/energy/blaster
|
||||
projectile_type = /obj/projectile/energy/blaster
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
max_shots = 20
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
|
||||
offhand_accuracy = 0
|
||||
projectile_type = /obj/item/projectile/energy/blaster/heavy
|
||||
projectile_type = /obj/projectile/energy/blaster/heavy
|
||||
|
||||
force = 15
|
||||
slot_flags = SLOT_BACK
|
||||
@@ -117,7 +117,7 @@
|
||||
icon_state = "blaster_ar"
|
||||
item_state = "blaster_ar"
|
||||
max_shots = 20
|
||||
projectile_type = /obj/item/projectile/energy/blaster/heavy
|
||||
projectile_type = /obj/projectile/energy/blaster/heavy
|
||||
fire_sound = 'sound/weapons/laserstrong.ogg'
|
||||
slot_flags = SLOT_BACK
|
||||
w_class = ITEMSIZE_LARGE
|
||||
@@ -145,7 +145,7 @@
|
||||
icon = 'icons/obj/guns/himeo_blaster.dmi'
|
||||
icon_state = "himeoblaster"
|
||||
item_state = "himeoblaster"
|
||||
projectile_type = /obj/item/projectile/energy/blaster
|
||||
projectile_type = /obj/projectile/energy/blaster
|
||||
usesound = 'sound/weapons/plasma_cutter.ogg'
|
||||
fire_sound = 'sound/weapons/gunshot/slammer.ogg'
|
||||
cell_type = /obj/item/cell/hydrogen
|
||||
@@ -223,7 +223,7 @@
|
||||
icon = 'icons/obj/guns/himeo_pistol.dmi'
|
||||
icon_state = "himeopistol"
|
||||
item_state = "himeopistol"
|
||||
projectile_type = /obj/item/projectile/energy/blaster/heavy
|
||||
projectile_type = /obj/projectile/energy/blaster/heavy
|
||||
usesound = 'sound/weapons/plasma_cutter.ogg'
|
||||
fire_sound = 'sound/weapons/laserstrong.ogg'
|
||||
charge_cost = 1250 // leaky but lethal
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
fire_delay = 10
|
||||
fire_delay_wielded = 8
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 1)
|
||||
projectile_type = /obj/item/projectile/beam/midlaser/ice
|
||||
projectile_type = /obj/projectile/beam/midlaser/ice
|
||||
secondary_projectile_type = null
|
||||
secondary_fire_sound = null
|
||||
charge_failure_message = "'s charging socket was removed to make room for a crank."
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
fire_delay_wielded = 1
|
||||
accuracy_wielded = 2
|
||||
|
||||
projectile_type = /obj/item/projectile/bullet/shard
|
||||
projectile_type = /obj/projectile/bullet/shard
|
||||
secondary_projectile_type = null
|
||||
secondary_fire_sound = null
|
||||
firemodes = list()
|
||||
@@ -75,4 +75,4 @@
|
||||
self_recharge = TRUE
|
||||
has_safety = FALSE
|
||||
does_process = FALSE
|
||||
projectile_type = /obj/item/projectile/bullet/shard/heavy
|
||||
projectile_type = /obj/projectile/bullet/shard/heavy
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
force = 11
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
projectile_type = /obj/item/projectile/energy/disruptorstun
|
||||
secondary_projectile_type = /obj/item/projectile/energy/blaster/disruptor
|
||||
projectile_type = /obj/projectile/energy/disruptorstun
|
||||
secondary_projectile_type = /obj/projectile/energy/blaster/disruptor
|
||||
max_shots = 10
|
||||
charge_cost = 150
|
||||
accuracy = 1
|
||||
@@ -20,8 +20,8 @@
|
||||
modifystate = "disruptorpistolstun"
|
||||
sel_mode = 1
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/energy/disruptorstun, modifystate="disruptorpistolstun", fire_sound = 'sound/weapons/gunshot/bolter.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/energy/blaster/disruptor, modifystate="disruptorpistolkill", recoil = 1, fire_sound = 'sound/weapons/gunshot/bolter.ogg')
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/energy/disruptorstun, modifystate="disruptorpistolstun", fire_sound = 'sound/weapons/gunshot/bolter.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/energy/blaster/disruptor, modifystate="disruptorpistolkill", recoil = 1, fire_sound = 'sound/weapons/gunshot/bolter.ogg')
|
||||
)
|
||||
required_firemode_auth = list(WIRELESS_PIN_STUN, WIRELESS_PIN_LETHAL)
|
||||
var/selectframecheck = FALSE
|
||||
@@ -29,11 +29,11 @@
|
||||
/obj/item/gun/energy/disruptorpistol/practice
|
||||
name = "practice disruptor pistol"
|
||||
desc = "A variant of the NT DP-7. It fires less concentrated energy bolts that are visible, but ultimately harmless, designed for target practice."
|
||||
projectile_type = /obj/item/projectile/energy/disruptorstun/practice
|
||||
secondary_projectile_type = /obj/item/projectile/energy/blaster/disruptor/practice
|
||||
projectile_type = /obj/projectile/energy/disruptorstun/practice
|
||||
secondary_projectile_type = /obj/projectile/energy/blaster/disruptor/practice
|
||||
firemodes = list(
|
||||
list(mode_name="stun (practice)", projectile_type=/obj/item/projectile/energy/disruptorstun/practice, modifystate="disruptorpistolstun", fire_sound = 'sound/weapons/gunshot/bolter.ogg'),
|
||||
list(mode_name="lethal (practice)", projectile_type=/obj/item/projectile/energy/blaster/disruptor/practice, modifystate="disruptorpistolkill", recoil = 1, fire_sound = 'sound/weapons/gunshot/bolter.ogg')
|
||||
list(mode_name="stun (practice)", projectile_type=/obj/projectile/energy/disruptorstun/practice, modifystate="disruptorpistolstun", fire_sound = 'sound/weapons/gunshot/bolter.ogg'),
|
||||
list(mode_name="lethal (practice)", projectile_type=/obj/projectile/energy/blaster/disruptor/practice, modifystate="disruptorpistolkill", recoil = 1, fire_sound = 'sound/weapons/gunshot/bolter.ogg')
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/disruptorpistol/security
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 4, TECH_POWER = 4)
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/freezer
|
||||
projectile_type = /obj/projectile/beam/freezer
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="freeze", projectile_type= /obj/item/projectile/beam/freezer, fire_sound='sound/weapons/pulse3.ogg'),
|
||||
list(mode_name="ice bolt", projectile_type= /obj/item/projectile/ice, fire_sound='sound/weapons/crossbow.ogg')
|
||||
list(mode_name="freeze", projectile_type= /obj/projectile/beam/freezer, fire_sound='sound/weapons/pulse3.ogg'),
|
||||
list(mode_name="ice bolt", projectile_type= /obj/projectile/ice, fire_sound='sound/weapons/crossbow.ogg')
|
||||
)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
force = 15
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/midlaser
|
||||
projectile_type = /obj/projectile/beam/midlaser
|
||||
can_turret = 1
|
||||
turret_is_lethal = 1
|
||||
turret_sprite_set = "laser"
|
||||
@@ -33,7 +33,7 @@
|
||||
/obj/item/gun/energy/laser/practice
|
||||
name = "practice laser carbine"
|
||||
desc = "A modified version of the HI G40E, this one fires less concentrated energy bolts designed for target practice."
|
||||
projectile_type = /obj/item/projectile/beam/practice
|
||||
projectile_type = /obj/projectile/beam/practice
|
||||
|
||||
/obj/item/gun/energy/retro
|
||||
name = "retro laser"
|
||||
@@ -48,7 +48,7 @@
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
offhand_accuracy = 1
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
projectile_type = /obj/projectile/beam
|
||||
fire_delay = 5
|
||||
can_turret = 1
|
||||
turret_is_lethal = 1
|
||||
@@ -70,7 +70,7 @@
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
offhand_accuracy = 2
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
projectile_type = /obj/projectile/beam
|
||||
origin_tech = null
|
||||
max_shots = 5 //to compensate a bit for self-recharging
|
||||
self_recharge = 1
|
||||
@@ -88,7 +88,7 @@
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
|
||||
slot_flags = SLOT_BELT|SLOT_BACK
|
||||
projectile_type = /obj/item/projectile/beam/heavylaser
|
||||
projectile_type = /obj/projectile/beam/heavylaser
|
||||
charge_cost = 400
|
||||
max_shots = 5
|
||||
fire_delay = 20
|
||||
@@ -119,7 +119,7 @@
|
||||
has_item_ratio = FALSE
|
||||
fire_sound = 'sound/weapons/laser3.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
projectile_type = /obj/projectile/beam/xray
|
||||
charge_cost = 100
|
||||
max_shots = 20
|
||||
fire_delay = 4
|
||||
@@ -148,7 +148,7 @@
|
||||
has_item_ratio = FALSE // same as the laserrifle
|
||||
fire_sound = 'sound/weapons/marauder.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
|
||||
projectile_type = /obj/item/projectile/beam/sniper
|
||||
projectile_type = /obj/projectile/beam/sniper
|
||||
slot_flags = SLOT_BACK
|
||||
charge_cost = 400
|
||||
max_shots = 4
|
||||
@@ -192,7 +192,7 @@
|
||||
force = 15
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2)
|
||||
projectile_type = /obj/item/projectile/beam/shotgun
|
||||
projectile_type = /obj/projectile/beam/shotgun
|
||||
max_shots = 20
|
||||
sel_mode = 1
|
||||
is_wieldable = TRUE
|
||||
@@ -222,7 +222,7 @@
|
||||
recharge_time = 2
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
fire_sound = 'sound/weapons/laser1.ogg'
|
||||
projectile_type = /obj/item/projectile/beam/laser_tag
|
||||
projectile_type = /obj/projectile/beam/laser_tag
|
||||
pin = /obj/item/device/firing_pin/tag/red
|
||||
can_turret = TRUE
|
||||
turret_is_lethal = FALSE
|
||||
@@ -239,7 +239,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/energy/lasertag/proc/get_tag_color(var/set_color)
|
||||
projectile_type = text2path("/obj/item/projectile/beam/laser_tag/[set_color]")
|
||||
projectile_type = text2path("/obj/projectile/beam/laser_tag/[set_color]")
|
||||
if(pin)
|
||||
QDEL_NULL(pin)
|
||||
var/pin_path = text2path("/obj/item/device/firing_pin/tag/[set_color]")
|
||||
@@ -258,7 +258,7 @@
|
||||
icon = 'icons/obj/guns/bluetag.dmi'
|
||||
icon_state = "bluetag"
|
||||
item_state = "bluetag"
|
||||
projectile_type = /obj/item/projectile/beam/laser_tag/blue
|
||||
projectile_type = /obj/projectile/beam/laser_tag/blue
|
||||
pin = /obj/item/device/firing_pin/tag/blue
|
||||
turret_sprite_set = "blue"
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
fire_delay = 3,
|
||||
recoil = 1,
|
||||
accuracy = 1,
|
||||
projectile_type = /obj/item/projectile/bullet/pistol,
|
||||
projectile_type = /obj/projectile/bullet/pistol,
|
||||
fire_sound = 'sound/weapons/gunshot/gunshot_smg.ogg'
|
||||
),
|
||||
list(
|
||||
@@ -36,7 +36,7 @@
|
||||
move_delay = 4,
|
||||
accuracy = list(1, 0, 0,-1,-1),
|
||||
dispersion = list(0, 10, 10),
|
||||
projectile_type = /obj/item/projectile/bullet/pistol,
|
||||
projectile_type = /obj/projectile/bullet/pistol,
|
||||
fire_sound = 'sound/weapons/gunshot/gunshot_smg.ogg'
|
||||
),
|
||||
list(
|
||||
@@ -45,7 +45,7 @@
|
||||
fire_delay = 6,
|
||||
recoil = 3,
|
||||
accuracy = 0,
|
||||
projectile_type = /obj/item/projectile/bullet/gyro/law,
|
||||
projectile_type = /obj/projectile/bullet/gyro/law,
|
||||
fire_sound = 'sound/effects/Explosion1.ogg'
|
||||
),
|
||||
list(
|
||||
@@ -54,7 +54,7 @@
|
||||
fire_delay = 4,
|
||||
recoil = 0,
|
||||
accuracy = 1,
|
||||
projectile_type = /obj/item/projectile/energy/electrode,
|
||||
projectile_type = /obj/projectile/energy/electrode,
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
),
|
||||
list(
|
||||
@@ -63,7 +63,7 @@
|
||||
fire_delay = 4,
|
||||
recoil = 3,
|
||||
accuracy = 1,
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun/incendiary,
|
||||
projectile_type = /obj/projectile/bullet/shotgun/incendiary,
|
||||
fire_sound = 'sound/weapons/gunshot/gunshot1.ogg'
|
||||
),
|
||||
list(
|
||||
@@ -72,7 +72,7 @@
|
||||
fire_delay = 6,
|
||||
recoil = 3,
|
||||
accuracy = 1,
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a556,
|
||||
projectile_type = /obj/projectile/bullet/rifle/a556,
|
||||
fire_sound = 'sound/weapons/gunshot/gunshot1.ogg'
|
||||
),
|
||||
list(
|
||||
@@ -81,7 +81,7 @@
|
||||
fire_delay = 6,
|
||||
recoil = 3,
|
||||
accuracy = 0,
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun,
|
||||
projectile_type = /obj/projectile/bullet/pellet/shotgun,
|
||||
fire_sound = 'sound/weapons/gunshot/gunshot1.ogg'
|
||||
)
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_shots = 10
|
||||
charge_cost = 100
|
||||
projectile_type = /obj/item/projectile/magic
|
||||
projectile_type = /obj/projectile/magic
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_BLUESPACE = 6)
|
||||
charge_meter = 0
|
||||
has_safety = FALSE
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
edge = TRUE
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 4000, MATERIAL_GLASS = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/plasmacutter
|
||||
projectile_type = /obj/projectile/beam/plasmacutter
|
||||
cell_type = /obj/item/cell/high
|
||||
charge_cost = 666.66 // 15 shots on a high cap cell
|
||||
needspin = FALSE
|
||||
@@ -66,7 +66,7 @@
|
||||
cell_type = null
|
||||
max_shots = 15
|
||||
|
||||
/obj/item/projectile/beam/plasmacutter
|
||||
/obj/projectile/beam/plasmacutter
|
||||
name = "plasma arc"
|
||||
icon_state = "omnilaser"
|
||||
damage = 20
|
||||
@@ -83,14 +83,14 @@
|
||||
maiming = TRUE
|
||||
maim_rate = 1
|
||||
|
||||
/obj/item/projectile/beam/plasmacutter/proc/pass_check(var/turf/simulated/mineral/mine_turf)
|
||||
/obj/projectile/beam/plasmacutter/proc/pass_check(var/turf/simulated/mineral/mine_turf)
|
||||
if(mineral_passes <= 0)
|
||||
return list(null, FALSE) // the projectile stops
|
||||
mineral_passes--
|
||||
var/mineral_destroyed = on_impact(mine_turf)
|
||||
return list(PROJECTILE_CONTINUE, mineral_destroyed) // the projectile tunnels deeper
|
||||
|
||||
/obj/item/projectile/beam/plasmacutter/on_impact(var/atom/A)
|
||||
/obj/projectile/beam/plasmacutter/on_impact(var/atom/A)
|
||||
if(istype(A, /turf/simulated/mineral))
|
||||
var/turf/simulated/mineral/M = A
|
||||
if(prob(33))
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
return null
|
||||
if (self_recharge)
|
||||
addtimer(CALLBACK(src, PROC_REF(try_recharge)), recharge_time * 2 SECONDS, TIMER_UNIQUE)
|
||||
var/obj/item/projectile/beam/A = new projectile_type(src)
|
||||
var/obj/projectile/beam/A = new projectile_type(src)
|
||||
A.damage = capacitor.damage
|
||||
var/damage_coeff = 1
|
||||
for(var/obj/item/laser_components/modifier/modifier in gun_mods)
|
||||
|
||||
@@ -13,18 +13,18 @@
|
||||
accuracy = 1
|
||||
max_shots = 10
|
||||
can_turret = 1
|
||||
secondary_projectile_type = /obj/item/projectile/beam
|
||||
secondary_projectile_type = /obj/projectile/beam
|
||||
secondary_fire_sound = 'sound/weapons/laser1.ogg'
|
||||
can_switch_modes = 1
|
||||
turret_is_lethal = 0
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
projectile_type = /obj/projectile/beam/stun
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
modifystate = "energystun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="energystun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="energykill", fire_sound='sound/weapons/laser1.ogg')
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, modifystate="energystun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam, modifystate="energykill", fire_sound='sound/weapons/laser1.ogg')
|
||||
)
|
||||
|
||||
has_item_ratio = FALSE
|
||||
@@ -56,8 +56,8 @@
|
||||
charge_failure_message = "'s charging socket was removed to make room for a minaturized reactor."
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/laser1.ogg')
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_sound='sound/weapons/laser1.ogg')
|
||||
)
|
||||
|
||||
var/lightfail = 0
|
||||
@@ -136,19 +136,19 @@
|
||||
max_shots = 7
|
||||
fire_delay = 4
|
||||
can_turret = 1
|
||||
secondary_projectile_type = /obj/item/projectile/beam/pistol
|
||||
secondary_projectile_type = /obj/projectile/beam/pistol
|
||||
secondary_fire_sound = 'sound/weapons/laser1.ogg'
|
||||
can_switch_modes = 1
|
||||
turret_sprite_set = "carbine"
|
||||
turret_is_lethal = 0
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
projectile_type = /obj/projectile/beam/stun
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
modifystate = "epistolstun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="epistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam/pistol, modifystate="epistolkill", fire_sound='sound/weapons/laser1.ogg')
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, modifystate="epistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam/pistol, modifystate="epistolkill", fire_sound='sound/weapons/laser1.ogg')
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/pistol/hegemony
|
||||
@@ -164,17 +164,17 @@
|
||||
max_shots = 10
|
||||
fire_delay = 3
|
||||
can_turret = FALSE
|
||||
secondary_projectile_type = /obj/item/projectile/beam/pistol/hegemony
|
||||
secondary_projectile_type = /obj/projectile/beam/pistol/hegemony
|
||||
secondary_fire_sound = 'sound/weapons/laser1.ogg'
|
||||
can_switch_modes = TRUE
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
projectile_type = /obj/projectile/beam/stun
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
|
||||
modifystate = "hegemony_pistol"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="incapacitate", projectile_type=/obj/item/projectile/beam/stun, modifystate="hegemony_pistol", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="smite", projectile_type=/obj/item/projectile/beam/pistol/hegemony, modifystate="hegemony_pistol", fire_sound='sound/weapons/laser1.ogg')
|
||||
list(mode_name="incapacitate", projectile_type=/obj/projectile/beam/stun, modifystate="hegemony_pistol", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="smite", projectile_type=/obj/projectile/beam/pistol/hegemony, modifystate="hegemony_pistol", fire_sound='sound/weapons/laser1.ogg')
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/pistol/goldendeep
|
||||
@@ -190,17 +190,17 @@
|
||||
max_shots = 10
|
||||
fire_delay = 3
|
||||
can_turret = FALSE
|
||||
secondary_projectile_type = /obj/item/projectile/beam/pistol
|
||||
secondary_projectile_type = /obj/projectile/beam/pistol
|
||||
secondary_fire_sound = 'sound/weapons/laser3.ogg'
|
||||
can_switch_modes = TRUE
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/disorient
|
||||
projectile_type = /obj/projectile/beam/disorient
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
|
||||
modifystate = "ornatepistolstun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="disorient", projectile_type=/obj/item/projectile/beam/disorient, modifystate="ornatepistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam/pistol, modifystate="ornatepistollethal", fire_sound='sound/weapons/laser1.ogg')
|
||||
list(mode_name="disorient", projectile_type=/obj/projectile/beam/disorient, modifystate="ornatepistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam/pistol, modifystate="ornatepistollethal", fire_sound='sound/weapons/laser1.ogg')
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/repeater
|
||||
@@ -219,7 +219,7 @@
|
||||
|
||||
offhand_accuracy = 6 // same as firing it in your main hand
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/pistol/scc
|
||||
projectile_type = /obj/projectile/beam/pistol/scc
|
||||
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 4)
|
||||
|
||||
firemodes = list(
|
||||
@@ -240,17 +240,17 @@
|
||||
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
||||
max_shots = 8
|
||||
fire_delay = 5
|
||||
secondary_projectile_type = /obj/item/projectile/beam/pistol/scc/weak
|
||||
secondary_projectile_type = /obj/projectile/beam/pistol/scc/weak
|
||||
secondary_fire_sound = 'sound/weapons/energy_repeater.ogg'
|
||||
can_switch_modes = 1
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
projectile_type = /obj/projectile/beam/stun
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
|
||||
modifystate = "sccpistolstun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="sccpistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam/pistol/scc/weak, modifystate="sccpistolkill", fire_sound='sound/weapons/energy_repeater.ogg')
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, modifystate="sccpistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam/pistol/scc/weak, modifystate="sccpistolkill", fire_sound='sound/weapons/energy_repeater.ogg')
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/gun/skrell
|
||||
@@ -273,12 +273,12 @@
|
||||
item_state = "particlepistol"
|
||||
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
||||
force = 11
|
||||
projectile_type = /obj/item/projectile/beam/stun/skrell
|
||||
secondary_projectile_type = /obj/item/projectile/beam/pulse/skrell
|
||||
projectile_type = /obj/projectile/beam/stun/skrell
|
||||
secondary_projectile_type = /obj/projectile/beam/pulse/skrell
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="disable", projectile_type=/obj/item/projectile/beam/stun/skrell, fire_sound='sound/weapons/Laser2.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam/pulse/skrell, fire_sound='sound/weapons/laser3.ogg')
|
||||
list(mode_name="disable", projectile_type=/obj/projectile/beam/stun/skrell, fire_sound='sound/weapons/Laser2.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam/pulse/skrell, fire_sound='sound/weapons/laser3.ogg')
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/gun/skrell/smg
|
||||
@@ -290,12 +290,12 @@
|
||||
slot_flags = SLOT_BELT|SLOT_HOLSTER|SLOT_BACK
|
||||
max_shots = 14
|
||||
force = 16
|
||||
projectile_type = /obj/item/projectile/beam/stun/skrell
|
||||
secondary_projectile_type = /obj/item/projectile/beam/pulse/skrell
|
||||
projectile_type = /obj/projectile/beam/stun/skrell
|
||||
secondary_projectile_type = /obj/projectile/beam/pulse/skrell
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="disable", projectile_type=/obj/item/projectile/beam/stun/skrell, fire_sound='sound/weapons/Laser2.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam/pulse/skrell, fire_sound='sound/weapons/laser3.ogg', burst = 2, burst_delay = 2)
|
||||
list(mode_name="disable", projectile_type=/obj/projectile/beam/stun/skrell, fire_sound='sound/weapons/Laser2.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam/pulse/skrell, fire_sound='sound/weapons/laser3.ogg', burst = 2, burst_delay = 2)
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/gun/qukala
|
||||
@@ -309,17 +309,17 @@
|
||||
slot_flags = SLOT_BELT
|
||||
accuracy = 2
|
||||
max_shots = 25
|
||||
secondary_projectile_type = /obj/item/projectile/beam
|
||||
secondary_projectile_type = /obj/projectile/beam
|
||||
secondary_fire_sound = 'sound/weapons/laser1.ogg'
|
||||
can_switch_modes = 1
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
projectile_type = /obj/projectile/beam/stun
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
modifystate = "qukalagun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam/midlaser/skrell, fire_sound='sound/weapons/laser1.ogg')
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam/midlaser/skrell, fire_sound='sound/weapons/laser1.ogg')
|
||||
)
|
||||
|
||||
has_item_ratio = FALSE
|
||||
@@ -343,16 +343,16 @@
|
||||
max_shots = 8
|
||||
fire_delay = 4
|
||||
can_turret = FALSE
|
||||
secondary_projectile_type = /obj/item/projectile/energy/blaster/skrell
|
||||
secondary_projectile_type = /obj/projectile/energy/blaster/skrell
|
||||
secondary_fire_sound = 'sound/weapons/laser3.ogg'
|
||||
can_switch_modes = TRUE
|
||||
projectile_type = /obj/item/projectile/energy/disruptorstun/skrell
|
||||
projectile_type = /obj/projectile/energy/disruptorstun/skrell
|
||||
modifystate = "psipistolstun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/energy/disruptorstun/skrell, modifystate="psipistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/energy/blaster/skrell, modifystate="psipistollethal", fire_sound='sound/weapons/laser3.ogg'),
|
||||
list(mode_name="ion", projectile_type=/obj/item/projectile/ion/small, modifystate="psipistolion", fire_sound='sound/weapons/laser1.ogg')
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/energy/disruptorstun/skrell, modifystate="psipistolstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/energy/blaster/skrell, modifystate="psipistollethal", fire_sound='sound/weapons/laser3.ogg'),
|
||||
list(mode_name="ion", projectile_type=/obj/projectile/ion/small, modifystate="psipistolion", fire_sound='sound/weapons/laser1.ogg')
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/fedpistol/nopsi
|
||||
|
||||
@@ -7,21 +7,21 @@
|
||||
slot_flags = SLOT_BELT
|
||||
force = 11
|
||||
fire_sound='sound/weapons/laser1.ogg'
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
projectile_type = /obj/projectile/beam
|
||||
sel_mode = 2
|
||||
accuracy = 1
|
||||
max_shots = 10
|
||||
can_turret = 1
|
||||
secondary_projectile_type = /obj/item/projectile/beam/pulse
|
||||
secondary_projectile_type = /obj/projectile/beam/pulse
|
||||
secondary_fire_sound = 'sound/weapons/pulse.ogg'
|
||||
can_switch_modes = 0
|
||||
turret_sprite_set = "pulse"
|
||||
turret_is_lethal = 1
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/laser1.ogg'),
|
||||
list(mode_name="DESTROY", projectile_type=/obj/item/projectile/beam/pulse, fire_sound='sound/weapons/pulse.ogg', fire_delay=25)
|
||||
list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_sound='sound/weapons/laser1.ogg'),
|
||||
list(mode_name="DESTROY", projectile_type=/obj/projectile/beam/pulse, fire_sound='sound/weapons/pulse.ogg', fire_delay=25)
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/pulse/mounted
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user