Standardizes projectile speed (#19308)

This commit is contained in:
I-VAPE-VOX-CLOACA-EVERY-DAY-OF-MY-LIFE
2018-08-14 08:43:25 -03:00
committed by jknpj
parent 08c2700f6f
commit ee0f43d80c
10 changed files with 25 additions and 57 deletions

View File

@@ -61,11 +61,11 @@
anchored = 1
grillepasschance = 0
mouse_opacity = 1
projectile_speed = 1.33
var/clongSound = 'sound/effects/bang.ogg'
/obj/item/projectile/immovablerod/New(atom/start, atom/end)
..()
step_delay = round(0.5, world.tick_lag)
if(end)
throw_at(end)
@@ -110,8 +110,6 @@
qdel(src)
/obj/item/projectile/immovablerod/bresenham_step(var/distA, var/distB, var/dA, var/dB)
if(step_delay)
sleep(step_delay)
if(error < 0)
var/atom/newloc = get_step(src, dB)
if(!newloc)

View File

@@ -146,7 +146,7 @@ Doesn't work on other aliens/AI.*/
proj_type = /obj/item/projectile/energy/neurotoxin
cast_sound = 'sound/weapons/pierce.ogg'
duration = 20
proj_step_delay = 0.2
projectile_speed = 1
/spell/targeted/projectile/alienneurotoxin/is_valid_target(var/target, mob/user)
if(!(spell_flags & INCLUDEUSER) && target == user)

View File

@@ -297,7 +297,7 @@
B.penetration = (20 + (strength - 100))
if(strength == 101)
B.penetration -= 1
B.superspeed = 1
B.projectile_speed = 0.66
else if(strength == 90)
B.penetration = 10
in_chamber = B
@@ -350,4 +350,4 @@
#undef MEGAWATT
#undef TEN_MEGAWATTS
#undef HUNDRED_MEGAWATTS
#undef GIGAWATT
#undef GIGAWATT

View File

@@ -70,8 +70,6 @@ var/list/impact_master = list()
var/penetration = 0 //if set to -1, will always phase through obstacles
var/mark_type = "trace" //what marks will the bullet leave on a wall that it penetrates? from 'icons/effects/96x96.dmi'
var/step_delay = 0 //how long it goes between moving. You should probably leave this as 0 for a lot of things
var/inaccurate = 0
var/turf/target = null
@@ -102,26 +100,17 @@ var/list/impact_master = list()
animate_movement = 0
var/linear_movement = 1
var/projectile_slowdown = 0 //The extra time spent sleeping after each step. Increasing this will make the projectile move more slowly.
var/projectile_speed = 1 //Time in deciseconds between steps. Lower is faster. Bear in mind that this should be divisible by (or close to) the server's tick_lag (at the time of writing this, 0.33)
var/penetration_message = 1 //Message that is shown when a projectile penetrates an object
var/fire_sound = 'sound/weapons/Gunshot.ogg' //sound that plays when the projectile is fired
var/rotate = 1 //whether the projectile is rotated based on angle or not
var/superspeed = 0 //When set to 1, the projectile will travel at twice the normal speed
var/super_speed = 0 //This exists just for proper functionality
var/travel_range = 0 //if set, the projectile will be deleted when its distance from the firing location exceeds this
/obj/item/projectile/New()
..()
initial_pixel_x = pixel_x
initial_pixel_y = pixel_y
if(superspeed)
super_speed = 1
/obj/item/projectile/New()
..()
if(superspeed)
super_speed = 1
/obj/item/projectile/proc/on_hit(var/atom/atarget, var/blocked = 0)
if(blocked >= 2)
@@ -410,13 +399,13 @@ var/list/impact_master = list()
return 1
/obj/item/projectile/proc/process_step()
var/sleeptime = 1
if(src.loc)
if(dist_x > dist_y)
sleeptime = bresenham_step(dist_x,dist_y,dx,dy)
bresenham_step(dist_x,dist_y,dx,dy)
else
sleeptime = bresenham_step(dist_y,dist_x,dy,dx)
bresenham_step(dist_y,dist_x,dy,dx)
if(linear_movement)
update_pixel()
pixel_x = PixelX
@@ -424,28 +413,10 @@ var/list/impact_master = list()
bumped = 0
sleeptime += projectile_slowdown
sleep(sleeptime)
sleep(projectile_speed)
/obj/item/projectile/proc/bresenham_step(var/distA, var/distB, var/dA, var/dB)
if(!superspeed)
return make_bresenham_step(distA, distB, dA, dB)
else
if(make_bresenham_step(distA, distB, dA, dB))
if(super_speed)
super_speed = 0
return 1
else
super_speed = 1
return 0
else
return 0
/obj/item/projectile/proc/make_bresenham_step(var/distA, var/distB, var/dA, var/dB)
if(step_delay)
sleep(step_delay)
if(kill_count < 1)
bullet_die()
return 1
@@ -527,7 +498,7 @@ var/list/impact_master = list()
tS = 1
timestopped = 0
while((loc.timestopped || timestopped) && !first)
sleep(3)
sleep(projectile_speed)
first = 0
src.process_step()
if(tS)

View File

@@ -101,7 +101,7 @@
damage = 10
stun = 0
weaken = 0
superspeed = 1
projectile_speed = 0.66
/obj/item/projectile/bullet/midbullet/assault
damage = 20
@@ -342,8 +342,8 @@
weaken = 5
stutter = 5
phase_type = PROJREACT_WALLS|PROJREACT_WINDOWS|PROJREACT_OBJS|PROJREACT_MOBS|PROJREACT_BLOB
penetration = 20//can hit 3 mobs at once, or go through a wall and hit 2 more mobs, or go through an rwall/blast door and hit 1 mob
superspeed = 1
penetration = 20 //can hit 3 mobs at once, or go through a wall and hit 2 more mobs, or go through an rwall/blast door and hit 1 mob
projectile_speed = 0.66
fire_sound = 'sound/weapons/hecate_fire.ogg'
/obj/item/projectile/bullet/hecate/OnFired()
@@ -434,8 +434,7 @@
/obj/item/projectile/bullet/APS/OnFired()
..()
if(damage >= 100)
superspeed = 1
super_speed = 1
projectile_speed = 0.66
for (var/mob/M in player_list)
if(M && M.client)
var/turf/M_turf = get_turf(M)
@@ -719,7 +718,7 @@
bounces = 1
fire_sound = 'sound/weapons/gunshot_1.ogg'
bounce_sound = null
projectile_slowdown = 0.5
projectile_speed = 1.33
kill_count = 100
embed = 0
rotate = 0

View File

@@ -429,7 +429,7 @@ obj/item/projectile/kinetic/New()
flag = "bio"
fire_sound = 'sound/weapons/rocket.ogg'
projectile_slowdown = 0.5
projectile_speed = 1.33
var/fire_damage = 5
var/pressure = ONE_ATMOSPHERE * 4.5

View File

@@ -17,7 +17,7 @@
spell_flags = 0
spell_aspect_flags = SPELL_FIRE
duration = 20
proj_step_delay = 0
projectile_speed = 1
amt_dam_brute = 20
amt_dam_fire = 25
@@ -86,4 +86,4 @@
/obj/item/projectile/spell_projectile/fireball/to_bump(var/atom/A)
if(!isliving(A))
forceMove(get_turf(A))
return ..()
return ..()

View File

@@ -16,7 +16,7 @@
proj_type = /obj/item/projectile/spell_projectile/seeking/magic_missile
duration = 10
proj_step_delay = 5
projectile_speed = 5
hud_state = "wiz_mm"
@@ -48,4 +48,4 @@
if(!carried)
return
return carried.choose_prox_targets(arglist(args))
return carried.choose_prox_targets(arglist(args))

View File

@@ -14,7 +14,7 @@
spell_aspect_flags = SPELL_FIRE
spell_flags = WAIT_FOR_CLICK
duration = 20
proj_step_delay = 0
projectile_speed = 1
level_max = list(Sp_TOTAL = 5, Sp_POWER = 5)
@@ -35,4 +35,4 @@
var/obj/pie = new pie_to_spawn(user.loc)
to_chat(user, "You summon and throw \a [pie].")
pie.throw_at(target, range, (spell_levels[Sp_POWER]+1)*20)
sleep(5)
sleep(5)

View File

@@ -13,7 +13,7 @@ If the spell_projectile is seeking, it will update its target every process and
var/proj_type = /obj/item/projectile/spell_projectile //use these. They are very nice
var/proj_step_delay = 1 //lower = faster
var/projectile_speed = 1.33 //lower = faster
var/cast_prox_range = 1
/spell/targeted/projectile/proc/spawn_projectile(var/location, var/direction)
@@ -41,7 +41,7 @@ If the spell_projectile is seeking, it will update its target every process and
projectile.yo = target.y - user.y
projectile.xo = target.x - user.x
projectile.kill_count = src.duration
projectile.step_delay = proj_step_delay
projectile.projectile_speed = projectile_speed
if(istype(projectile, /obj/item/projectile/spell_projectile))
var/obj/item/projectile/spell_projectile/SP = projectile
SP.carried = src //casting is magical
@@ -60,4 +60,4 @@ If the spell_projectile is seeking, it will update its target every process and
return targets
/spell/targeted/projectile/proc/prox_cast(var/list/targets, var/atom/movable/spell_holder)
return targets
return targets