mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2026-01-02 13:14:42 +00:00
client prefs! per-gun recoil multipliers!
This commit is contained in:
@@ -233,6 +233,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
|
|
||||||
var/screenshake = 100
|
var/screenshake = 100
|
||||||
var/damagescreenshake = 2
|
var/damagescreenshake = 2
|
||||||
|
var/recoil_screenshake = 100
|
||||||
var/arousable = TRUE
|
var/arousable = TRUE
|
||||||
var/autostand = TRUE
|
var/autostand = TRUE
|
||||||
var/auto_ooc = FALSE
|
var/auto_ooc = FALSE
|
||||||
@@ -907,6 +908,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
dat += "<b>Screen Shake:</b> <a href='?_src_=prefs;preference=screenshake'>[(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]</a><br>"
|
dat += "<b>Screen Shake:</b> <a href='?_src_=prefs;preference=screenshake'>[(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]</a><br>"
|
||||||
if (user && user.client && !user.client.prefs.screenshake==0)
|
if (user && user.client && !user.client.prefs.screenshake==0)
|
||||||
dat += "<b>Damage Screen Shake:</b> <a href='?_src_=prefs;preference=damagescreenshake'>[(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]</a><br>"
|
dat += "<b>Damage Screen Shake:</b> <a href='?_src_=prefs;preference=damagescreenshake'>[(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]</a><br>"
|
||||||
|
dat += "<b>Recoil Screen Push:</b> <a href='?_src_=prefs;preference=recoil_screenshake'>[(recoil_screenshake==100) ? "Full" : ((recoil_screenshake==0) ? "None" : "[screenshake]")]</a><br>"
|
||||||
var/p_chaos
|
var/p_chaos
|
||||||
if (!preferred_chaos)
|
if (!preferred_chaos)
|
||||||
p_chaos = "No preference"
|
p_chaos = "No preference"
|
||||||
@@ -2782,7 +2784,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
if("no_tetris_storage")
|
if("no_tetris_storage")
|
||||||
no_tetris_storage = !no_tetris_storage
|
no_tetris_storage = !no_tetris_storage
|
||||||
if ("screenshake")
|
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))
|
if (!isnull(desiredshake))
|
||||||
screenshake = desiredshake
|
screenshake = desiredshake
|
||||||
if("damagescreenshake")
|
if("damagescreenshake")
|
||||||
@@ -2795,6 +2797,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
damagescreenshake = 0
|
damagescreenshake = 0
|
||||||
else
|
else
|
||||||
damagescreenshake = 1
|
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")
|
if("nameless")
|
||||||
nameless = !nameless
|
nameless = !nameless
|
||||||
//END CITADEL EDIT
|
//END CITADEL EDIT
|
||||||
|
|||||||
@@ -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)
|
if(!M || !M.client)
|
||||||
return
|
return
|
||||||
var/client/C = M.client
|
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_x = -sin(angle)*4*strength + rand(-strength, strength)
|
||||||
var/recoil_y = -cos(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)
|
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)
|
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/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)
|
|
||||||
|
|
||||||
/proc/findname(msg)
|
/proc/findname(msg)
|
||||||
if(!istext(msg))
|
if(!istext(msg))
|
||||||
|
|||||||
@@ -94,6 +94,9 @@
|
|||||||
|
|
||||||
var/automatic = 0 //can gun use it, 0 is no, anything above 0 is the delay between clicks in ds
|
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)
|
/obj/item/gun/Initialize(mapload)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(no_pin_required)
|
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)
|
/obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = FALSE, mob/pbtarget, message = 1, stam_cost = 0)
|
||||||
if(recoil)
|
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
|
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)
|
var/safe_cost = clamp(stam_cost, 0, user.stamina_buffer)*(firing && burst_size >= 2 ? 1/burst_size : 1)
|
||||||
|
|||||||
@@ -167,6 +167,7 @@
|
|||||||
icon_state = "goldrevolver"
|
icon_state = "goldrevolver"
|
||||||
fire_sound = 'sound/weapons/resonator_blast.ogg'
|
fire_sound = 'sound/weapons/resonator_blast.ogg'
|
||||||
recoil = 8
|
recoil = 8
|
||||||
|
dir_recoil_amp = 5 // 40 directional recoil is already really funny
|
||||||
pin = /obj/item/firing_pin
|
pin = /obj/item/firing_pin
|
||||||
|
|
||||||
/obj/item/gun/ballistic/revolver/nagant
|
/obj/item/gun/ballistic/revolver/nagant
|
||||||
|
|||||||
Reference in New Issue
Block a user