From a8328aad8e1a313c69ca980fd487c685109771a6 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 18:34:16 -0400 Subject: [PATCH] Overcomplicates things --- code/modules/client/preferences.dm | 15 ++++++++++++++- code/modules/client/preferences_savefile.dm | 3 +++ modular_citadel/cit_screenshake.dm | 20 +++++++++++--------- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 92da0331dd..e94203121b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -48,6 +48,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/uses_glasses_colour = 0 var/screenshake = 1 + var/damagescreenshake = 2 //character preferences var/real_name //our character's name @@ -366,7 +367,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" - dat += "Screen shake: [(screenshake) ? "Full" : ((!screenshake) ? "None" : "Reduced")]
" + dat += "Screen Shake: [(screenshake==1) ? "Full" : ((screenshake==0) ? "None" : "Reduced")]
" + + dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" dat += "" @@ -1501,6 +1504,16 @@ GLOBAL_LIST_EMPTY(preferences_datums) screenshake = 0 else screenshake = 1 + if("damagescreenshake") + switch(damagescreenshake) + if(0) + damagescreenshake = 1 + if(1) + damagescreenshake = 2 + if(2) + damagescreenshake = 0 + else + damagescreenshake = 1 if("publicity") if(unlock_content) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index c2bd9d5f7c..80b603ff58 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -191,6 +191,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //citadel code S["arousable"] >> arousable S["screenshake"] >> screenshake + S["damagescreenshake"] >> damagescreenshake //try to fix any outdated data if necessary if(needs_update >= 0) @@ -216,6 +217,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) screenshake = sanitize_integer(screenshake, 0, 2, initial(screenshake)) + damagescreenshake = sanitize_integer(damagescreenshake, 0, 2, initial(damagescreenshake)) return 1 @@ -259,6 +261,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //citadel code S["arousable"] << arousable WRITE_FILE(S["screenshake"], screenshake) + WRITE_FILE(S["damagescreenshake"], damagescreenshake) return 1 diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm index 07f29be004..bfaaf61028 100644 --- a/modular_citadel/cit_screenshake.dm +++ b/modular_citadel/cit_screenshake.dm @@ -1,18 +1,15 @@ //we vlambeer now -/shake_camera(mob/M, duration, strength=1)//byond's wonky with this shit +/obj/proc/shake_camera(mob/M, duration, strength=1)//byond's wonky with this shit if(!M || !M.client || duration <= 0) return var/client/C = M.client - switch(C.prefs.screenshake) - if(0)//possible todo: implement a reduced screenshake setting that cuts screenshake to a quarter of its normal amount? this works perfectly for now, though. - return - if(2) - duration = duration*0.25 + if (C.prefs.screenshake==0) + return var/oldx = C.pixel_x var/oldy = C.pixel_y - var/max = strength*world.icon_size - var/min = -(strength*world.icon_size) + var/max = ((C.prefs.screenshake==1) ? strength : strength*0.25) *world.icon_size + var/min = -(((C.prefs.screenshake==1) ? strength : strength*0.25)*world.icon_size) for(var/i in 0 to duration-1) if (i == 0) @@ -57,7 +54,12 @@ . = ..() if(force && force >=11) shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01)) - shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) + if(M.client.prefs) + switch (M.client.prefs.damagescreenshake) + if (1) + shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) + if (2)//setting is "only when down." check for knockdown status before applying this. + shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) /obj/item/attack_obj(obj/O, mob/living/user) . = ..()