Merge remote-tracking branch 'citadel/master' into mobility_flags
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
materials = list(MAT_METAL = 500)
|
||||
var/fire_sound = null //What sound should play when this ammo is fired
|
||||
var/caliber = null //Which kind of guns it can be loaded into
|
||||
var/caliber = list() //Which kind of guns it can be loaded into
|
||||
var/projectile_type = null //The bullet type to create when New() is called
|
||||
var/obj/item/projectile/BB = null //The loaded bullet
|
||||
var/pellets = 1 //Pellets for spreadshot
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/ammo_box/magazine/internal/cylinder
|
||||
name = "revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
caliber = "357"
|
||||
caliber = list("357","38")
|
||||
max_ammo = 7
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/ammo_count(countempties = 1)
|
||||
@@ -31,7 +31,7 @@
|
||||
rotate()
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/give_round(obj/item/ammo_casing/R, replace_spent = 0)
|
||||
if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type))
|
||||
if(!R || (caliber && !(R.caliber in caliber)) || (!caliber && R.type != ammo_type))
|
||||
return FALSE
|
||||
|
||||
for(var/i in 1 to stored_ammo.len)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/grenademulti
|
||||
name = "grenade launcher internal magazine"
|
||||
ammo_type = /obj/item/ammo_casing/a40mm
|
||||
caliber = "40mm"
|
||||
caliber = list("40mm")
|
||||
max_ammo = 6
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/grenadelauncher
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/rev38
|
||||
name = "detective revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/c38
|
||||
caliber = "38"
|
||||
caliber = list("38")
|
||||
max_ammo = 6
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/rev762
|
||||
name = "\improper Nagant revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/n762
|
||||
caliber = "n762"
|
||||
caliber = list("n762")
|
||||
max_ammo = 7
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/rus357
|
||||
name = "\improper Russian revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
caliber = "357"
|
||||
caliber = list("357")
|
||||
max_ammo = 6
|
||||
multiload = 0
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
/obj/item/gun/ballistic/revolver/detective/screwdriver_act(mob/living/user, obj/item/I)
|
||||
if(..())
|
||||
return TRUE
|
||||
if(magazine.caliber == "38")
|
||||
if("38" in magazine.caliber)
|
||||
to_chat(user, "<span class='notice'>You begin to reinforce the barrel of [src]...</span>")
|
||||
if(magazine.ammo_count())
|
||||
afterattack(user, user) //you know the drill
|
||||
@@ -120,7 +120,7 @@
|
||||
if(magazine.ammo_count())
|
||||
to_chat(user, "<span class='warning'>You can't modify it!</span>")
|
||||
return TRUE
|
||||
magazine.caliber = "357"
|
||||
magazine.caliber = list("357")
|
||||
desc = "The barrel and chamber assembly seems to have been modified."
|
||||
to_chat(user, "<span class='notice'>You reinforce the barrel of [src]. Now it will fire .357 rounds.</span>")
|
||||
else
|
||||
@@ -133,7 +133,7 @@
|
||||
if(magazine.ammo_count())
|
||||
to_chat(user, "<span class='warning'>You can't modify it!</span>")
|
||||
return
|
||||
magazine.caliber = "38"
|
||||
magazine.caliber = list("38")
|
||||
desc = initial(desc)
|
||||
to_chat(user, "<span class='notice'>You remove the modifications on [src]. Now it will fire .38 rounds.</span>")
|
||||
return TRUE
|
||||
|
||||
@@ -374,14 +374,18 @@
|
||||
desc = "Decreases the cooldown of a kinetic accelerator. Not rated for minebot use."
|
||||
modifier = 2.5
|
||||
minebot_upgrade = FALSE
|
||||
var/decreased
|
||||
|
||||
/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
KA.overheat_time -= modifier
|
||||
var/old = KA.overheat_time
|
||||
KA.overheat_time = max(0, KA.overheat_time - modifier)
|
||||
decreased = old - KA.overheat_time
|
||||
|
||||
|
||||
/obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
|
||||
KA.overheat_time += modifier
|
||||
KA.overheat_time += decreased
|
||||
..()
|
||||
|
||||
/obj/item/borg/upgrade/modkit/cooldown/minebot
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
var/muzzle_type
|
||||
var/impact_type
|
||||
|
||||
var/turf/last_angle_set_hitscan_store //last turf we stored a hitscan segment while changing angles. without this you'll have potentially hundreds of segments from a homing projectile or something.
|
||||
|
||||
//Fancy hitscan lighting effects!
|
||||
var/hitscan_light_intensity = 1.5
|
||||
var/hitscan_light_range = 0.75
|
||||
@@ -410,12 +412,16 @@
|
||||
START_PROCESSING(SSprojectiles, src)
|
||||
pixel_move(1, FALSE) //move it now!
|
||||
|
||||
/obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides.
|
||||
/obj/item/projectile/proc/setAngle(new_angle, hitscan_store_segment = TRUE) //wrapper for overrides.
|
||||
Angle = new_angle
|
||||
if(!nondirectional_sprite)
|
||||
var/matrix/M = new
|
||||
M.Turn(Angle)
|
||||
transform = M
|
||||
if(fired && hitscan && trajectory && isloc(loc) && (loc != last_angle_set_hitscan_store))
|
||||
last_angle_set_hitscan_store = loc
|
||||
var/datum/point/pcache = trajectory.copy_to()
|
||||
store_hitscan_collision(pcache)
|
||||
if(trajectory)
|
||||
trajectory.set_angle(new_angle)
|
||||
return TRUE
|
||||
@@ -462,7 +468,7 @@
|
||||
beam_segments[beam_index] = null //record start.
|
||||
|
||||
/obj/item/projectile/proc/process_hitscan()
|
||||
var/safety = range * 3
|
||||
var/safety = range * 10
|
||||
record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
|
||||
while(loc && !QDELETED(src))
|
||||
if(paused)
|
||||
@@ -647,7 +653,7 @@
|
||||
/obj/item/projectile/proc/cleanup_beam_segments()
|
||||
QDEL_LIST_ASSOC(beam_segments)
|
||||
beam_segments = list()
|
||||
qdel(beam_index)
|
||||
QDEL_NULL(beam_index)
|
||||
|
||||
/obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
|
||||
if(trajectory && beam_index)
|
||||
|
||||
@@ -118,7 +118,14 @@
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
|
||||
/obj/item/projectile/beam/emitter/singularity_pull()
|
||||
return //don't want the emitters to miss
|
||||
return
|
||||
|
||||
/obj/item/projectile/beam/emitter/hitscan
|
||||
hitscan = TRUE
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter
|
||||
tracer_type = /obj/effect/projectile/tracer/laser/emitter
|
||||
impact_type = /obj/effect/projectile/impact/laser/emitter
|
||||
impact_effect_type = null
|
||||
|
||||
/obj/item/projectile/beam/lasertag
|
||||
name = "laser tag beam"
|
||||
|
||||
Reference in New Issue
Block a user