diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8a9f122f43..e4056233c6 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -233,6 +233,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/screenshake = 100 var/damagescreenshake = 2 + var/recoil_screenshake = 100 var/arousable = TRUE var/autostand = TRUE var/auto_ooc = FALSE @@ -907,6 +908,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
" if (user && user.client && !user.client.prefs.screenshake==0) dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" + dat += "Recoil Screen Push: [(recoil_screenshake==100) ? "Full" : ((recoil_screenshake==0) ? "None" : "[screenshake]")]
" var/p_chaos if (!preferred_chaos) p_chaos = "No preference" @@ -2782,7 +2784,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("no_tetris_storage") no_tetris_storage = !no_tetris_storage if ("screenshake") - var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num + var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, no maximum (at your own risk).)", "Character Preference", screenshake) as null|num if (!isnull(desiredshake)) screenshake = desiredshake if("damagescreenshake") @@ -2795,6 +2797,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) damagescreenshake = 0 else damagescreenshake = 1 + if ("recoil_screenshake") + var/desiredshake = input(user, "Set the amount of recoil screenshake/push you want. \n(0 = disabled, 100 = full, no maximum (at your own risk).)", "Character Preference", screenshake) as null|num + if (!isnull(desiredshake)) + recoil_screenshake = desiredshake if("nameless") nameless = !nameless //END CITADEL EDIT diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 224fc73405..90a7aae95e 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -254,16 +254,13 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(!M || !M.client) return var/client/C = M.client + var/client_screenshake = (C.prefs.recoil_screenshake * 0.01) + strength *= client_screenshake var/recoil_x = -sin(angle)*4*strength + rand(-strength, strength) var/recoil_y = -cos(angle)*4*strength + rand(-strength, strength) animate(C, pixel_x=recoil_x, pixel_y=recoil_y, time=1, easing=SINE_EASING|EASE_OUT, flags=ANIMATION_PARALLEL|ANIMATION_RELATIVE) - addtimer(CALLBACK(GLOBAL_PROC, /proc/recoil_recover, M), 2) - -/proc/recoil_recover(mob/M) - if(!M || !M.client) - return - var/client/C = M.client - animate(C, pixel_x=0, pixel_y=0, time=3, easing=SINE_EASING|EASE_IN) + animate(pixel_x=0, pixel_y=0, time=3, easing=SINE_EASING|EASE_IN) // according to bhjin this works on more recent byond versions + // if you havent updated uuh sucks to be you then /proc/findname(msg) if(!istext(msg)) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index cc44d9c74f..a4d3c3a63a 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -94,6 +94,9 @@ var/automatic = 0 //can gun use it, 0 is no, anything above 0 is the delay between clicks in ds + /// directional recoil multiplier + var/dir_recoil_amp = 10 + /obj/item/gun/Initialize(mapload) . = ..() if(no_pin_required) @@ -159,7 +162,7 @@ /obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = FALSE, mob/pbtarget, message = 1, stam_cost = 0) if(recoil) - directional_recoil(user, recoil*5, Get_Angle(user, pbtarget)) // the *5 is a placeholder. it could probably be cranked up tbh + directional_recoil(user, recoil*dir_recoil_amp, Get_Angle(user, pbtarget)) if(stam_cost) //CIT CHANGE - makes gun recoil cause staminaloss var/safe_cost = clamp(stam_cost, 0, user.stamina_buffer)*(firing && burst_size >= 2 ? 1/burst_size : 1) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index fe42fc2d99..f3b07aa7a4 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -167,6 +167,7 @@ icon_state = "goldrevolver" fire_sound = 'sound/weapons/resonator_blast.ogg' recoil = 8 + dir_recoil_amp = 5 // 40 directional recoil is already really funny pin = /obj/item/firing_pin /obj/item/gun/ballistic/revolver/nagant