From daa0fed2986dd06d84bce2280000ec633ad30ab2 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 2 Sep 2017 23:04:51 -0400 Subject: [PATCH 01/14] we vlambeer now (adds screenshake) --- code/citadel/cit_screenshake.dm | 44 +++++++++++++++++++++++++++++++++ tgstation.dme | 1 + 2 files changed, 45 insertions(+) create mode 100644 code/citadel/cit_screenshake.dm diff --git a/code/citadel/cit_screenshake.dm b/code/citadel/cit_screenshake.dm new file mode 100644 index 0000000000..5bcfac8428 --- /dev/null +++ b/code/citadel/cit_screenshake.dm @@ -0,0 +1,44 @@ +//we vlambeer now + +/obj/item/gun/energy + ..() + recoil = 0.1 + +/obj/item/gun/energy/kinetic_accelerator + ..() + recoil = 0.8 + +/obj/item/gun/ballistic + ..() + recoil = 0.25 + +/obj/item/gun/ballistic/shotgun + ..() + recoil = 1 + +/obj/item/gun/ballistic/revolver + ..() + recoil = 0.5 + +/obj/item/gun/ballistic/revolver/doublebarrel + ..() + recoil = 1 + +/obj/item/gun/syringe + ..() + recoil = 0.1 + +/obj/item/pneumatic_cannon/fire_items(turf/target, mob/user) + . = ..() + shake_camera(user, (pressureSetting * 0.75 + 1), (pressureSetting * 0.75)) + +/obj/item/attack(mob/living/M, mob/living/user) + . = ..() + if(force && force >=11) + shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01)) + shake_camera(M, ((force - 10) * 0.02 + 1), ((force - 10) * 0.02)) + +/obj/item/attack_obj(obj/O, mob/living/user) + . = ..() + if(force && force >= 20) + shake_camera(user, ((force - 15) * 0.02 + 1), ((force - 15) * 0.02)) diff --git a/tgstation.dme b/tgstation.dme index ee43dcafd7..6ac05e8b52 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -169,6 +169,7 @@ #include "code\citadel\cit_guns.dm" #include "code\citadel\cit_kegs.dm" #include "code\citadel\cit_reagents.dm" +#include "code\citadel\cit_screenshake.dm" #include "code\citadel\cit_spawners.dm" #include "code\citadel\cit_uniforms.dm" #include "code\citadel\cit_vendors.dm" From 10d7b0cf56bcf04ae75523fc0c55f492a77ed3cd Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 2 Sep 2017 23:54:05 -0400 Subject: [PATCH 02/14] Nerfs travis --- tgstation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 6ac05e8b52..cf4d73304e 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -169,7 +169,6 @@ #include "code\citadel\cit_guns.dm" #include "code\citadel\cit_kegs.dm" #include "code\citadel\cit_reagents.dm" -#include "code\citadel\cit_screenshake.dm" #include "code\citadel\cit_spawners.dm" #include "code\citadel\cit_uniforms.dm" #include "code\citadel\cit_vendors.dm" @@ -2264,6 +2263,7 @@ #include "code\modules\VR\vr_sleeper.dm" #include "code\modules\zombie\items.dm" #include "code\modules\zombie\organs.dm" +#include "code\citadel\cit_screenshake.dm" #include "interface\interface.dm" #include "interface\menu.dm" #include "interface\stylesheet.dm" From feeb76e472188dac729ad3699948c9e14378a4dc Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 05:24:14 -0400 Subject: [PATCH 03/14] Nerfs KA screenshake, moves cit_screenshake.dm to modular_citadel/, and adds a screenshake pref. --- code/citadel/cit_screenshake.dm | 44 --------------- code/modules/client/preferences.dm | 7 +++ code/modules/client/preferences_savefile.dm | 3 + modular_citadel/README.md | 3 + modular_citadel/cit_screenshake.dm | 62 +++++++++++++++++++++ tgstation.dme | 2 +- 6 files changed, 76 insertions(+), 45 deletions(-) delete mode 100644 code/citadel/cit_screenshake.dm create mode 100644 modular_citadel/README.md create mode 100644 modular_citadel/cit_screenshake.dm diff --git a/code/citadel/cit_screenshake.dm b/code/citadel/cit_screenshake.dm deleted file mode 100644 index 5bcfac8428..0000000000 --- a/code/citadel/cit_screenshake.dm +++ /dev/null @@ -1,44 +0,0 @@ -//we vlambeer now - -/obj/item/gun/energy - ..() - recoil = 0.1 - -/obj/item/gun/energy/kinetic_accelerator - ..() - recoil = 0.8 - -/obj/item/gun/ballistic - ..() - recoil = 0.25 - -/obj/item/gun/ballistic/shotgun - ..() - recoil = 1 - -/obj/item/gun/ballistic/revolver - ..() - recoil = 0.5 - -/obj/item/gun/ballistic/revolver/doublebarrel - ..() - recoil = 1 - -/obj/item/gun/syringe - ..() - recoil = 0.1 - -/obj/item/pneumatic_cannon/fire_items(turf/target, mob/user) - . = ..() - shake_camera(user, (pressureSetting * 0.75 + 1), (pressureSetting * 0.75)) - -/obj/item/attack(mob/living/M, mob/living/user) - . = ..() - if(force && force >=11) - shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01)) - shake_camera(M, ((force - 10) * 0.02 + 1), ((force - 10) * 0.02)) - -/obj/item/attack_obj(obj/O, mob/living/user) - . = ..() - if(force && force >= 20) - shake_camera(user, ((force - 15) * 0.02 + 1), ((force - 15) * 0.02)) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 1df28192db..bec543b0f6 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -46,6 +46,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/preferred_map = null var/uses_glasses_colour = 0 + + var/screenshake = TRUE //character preferences var/real_name //our character's name @@ -361,8 +363,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Disabled" else dat += "High" + dat += "
" + dat += "Screen shake: [(screenshake) ? "Full" : "None"]
" + dat += "" dat += "

Special Role Settings

" @@ -1486,6 +1491,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["exhibitionist"] = TRUE else features["exhibitionist"] = FALSE + if("screenshake") + screenshake = !screenshake if("publicity") if(unlock_content) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index a04a34cf00..5e1357288d 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -190,6 +190,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["menuoptions"] >> menuoptions //citadel code S["arousable"] >> arousable + S["screenshake"] >> screenshake //try to fix any outdated data if necessary if(needs_update >= 0) @@ -214,6 +215,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) + screenshake = sanitize_integer(screenshake, 0, 1, initial(screenshake)) return 1 @@ -256,6 +258,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["tip_delay"], tip_delay) //citadel code S["arousable"] << arousable + WRITE_FILE(S["screenshake"], screenshake) return 1 diff --git a/modular_citadel/README.md b/modular_citadel/README.md new file mode 100644 index 0000000000..dfae177607 --- /dev/null +++ b/modular_citadel/README.md @@ -0,0 +1,3 @@ +Hooray modularity! +Things that modify core files without directly touching said core files go here. This is similar to how Hippie handles things. +This stops dreammaker from throwing errors and warnings if you try to compile these files while they're inside code/citadel/. diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm new file mode 100644 index 0000000000..64418f2c55 --- /dev/null +++ b/modular_citadel/cit_screenshake.dm @@ -0,0 +1,62 @@ +//we vlambeer now + +/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 + if(!C.prefs.screenshake)//possible todo: implement a reduced screenshake setting that cuts screenshake to a quarter of its normal amount? this works perfectly for now, though. + return + var/oldx = C.pixel_x + var/oldy = C.pixel_y + var/max = strength*world.icon_size + var/min = -(strength*world.icon_size) + + for(var/i in 0 to duration-1) + if (i == 0) + animate(C, pixel_x=rand(min,max), pixel_y=rand(min,max), time=1) + else + animate(pixel_x=rand(min,max), pixel_y=rand(min,max), time=1) + animate(pixel_x=oldx, pixel_y=oldy, time=1) + +/obj/item/gun/energy + ..() + recoil = 0.1 + +/obj/item/gun/energy/kinetic_accelerator + ..() + recoil = 0.5 + +/obj/item/gun/ballistic + ..() + recoil = 0.25 + +/obj/item/gun/ballistic/shotgun + ..() + recoil = 1 + +/obj/item/gun/ballistic/revolver + ..() + recoil = 0.5 + +/obj/item/gun/ballistic/revolver/doublebarrel + ..() + recoil = 1 + +/obj/item/gun/syringe + ..() + recoil = 0.1 + +/obj/item/pneumatic_cannon/fire_items(turf/target, mob/user) + . = ..() + shake_camera(user, (pressureSetting * 0.75 + 1), (pressureSetting * 0.75)) + +/obj/item/attack(mob/living/M, mob/living/user) + . = ..() + 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)) + +/obj/item/attack_obj(obj/O, mob/living/user) + . = ..() + if(force && force >= 20) + shake_camera(user, ((force - 15) * 0.01 + 1), ((force - 15) * 0.01)) diff --git a/tgstation.dme b/tgstation.dme index cf4d73304e..9cede06a91 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2263,7 +2263,7 @@ #include "code\modules\VR\vr_sleeper.dm" #include "code\modules\zombie\items.dm" #include "code\modules\zombie\organs.dm" -#include "code\citadel\cit_screenshake.dm" +#include "modular_citadel\cit_screenshake.dm" #include "interface\interface.dm" #include "interface\menu.dm" #include "interface\stylesheet.dm" From f2963840bc28cea1cb4aeb105db4cf2ea7bf73d8 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 13:15:44 -0400 Subject: [PATCH 04/14] Coding at 5 am is a horrible idea --- modular_citadel/cit_screenshake.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm index 64418f2c55..fab9b5a795 100644 --- a/modular_citadel/cit_screenshake.dm +++ b/modular_citadel/cit_screenshake.dm @@ -1,11 +1,14 @@ //we vlambeer now -/shake_camera(mob/M, duration, strength=1)//byond's wonky with this shit +/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 - if(!C.prefs.screenshake)//possible todo: implement a reduced screenshake setting that cuts screenshake to a quarter of its normal amount? this works perfectly for now, though. - return + 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 var/oldx = C.pixel_x var/oldy = C.pixel_y var/max = strength*world.icon_size From 5a618ed54830492a393c66ad8afbe9ff250afb0e Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 13:22:50 -0400 Subject: [PATCH 05/14] adds reduced option for screenshake --- code/modules/client/preferences.dm | 14 +++++++++++--- code/modules/client/preferences_savefile.dm | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index bec543b0f6..8002ce0ab4 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -47,7 +47,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/uses_glasses_colour = 0 - var/screenshake = TRUE + var/screenshake = 1 //character preferences var/real_name //our character's name @@ -366,7 +366,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" - dat += "Screen shake: [(screenshake) ? "Full" : "None"]
" + dat += "Screen shake: [(screenshake) ? "Full" : [(!screenshake) ? "None" : "Reduced"]]
" dat += "" @@ -1492,7 +1492,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) else features["exhibitionist"] = FALSE if("screenshake") - screenshake = !screenshake + switch(screenshake) + if(0) + screenshake = 1 + if(1) + screenshake = 2 + if(2) + screenshake = 0 + else + screenshake = 1 if("publicity") if(unlock_content) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 5e1357288d..c2bd9d5f7c 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -215,7 +215,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) - screenshake = sanitize_integer(screenshake, 0, 1, initial(screenshake)) + screenshake = sanitize_integer(screenshake, 0, 2, initial(screenshake)) return 1 From f606b77f63aa79759278d73cd8a6c41ea88a2167 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 13:23:58 -0400 Subject: [PATCH 06/14] coding at 1 PM is a bad idea --- modular_citadel/cit_screenshake.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm index fab9b5a795..07f29be004 100644 --- a/modular_citadel/cit_screenshake.dm +++ b/modular_citadel/cit_screenshake.dm @@ -1,6 +1,6 @@ //we vlambeer now -/proc/shake_camera(mob/M, duration, strength=1)//byond's wonky with this shit +/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 From 72de6c3968abb2ce0cee3ff99afceac577fd20af Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 17:20:58 -0400 Subject: [PATCH 07/14] Nested ternaries? --- code/modules/client/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8002ce0ab4..92da0331dd 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -366,7 +366,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" - dat += "Screen shake: [(screenshake) ? "Full" : [(!screenshake) ? "None" : "Reduced"]]
" + dat += "Screen shake: [(screenshake) ? "Full" : ((!screenshake) ? "None" : "Reduced")]
" dat += "" From a8328aad8e1a313c69ca980fd487c685109771a6 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 18:34:16 -0400 Subject: [PATCH 08/14] 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) . = ..() From 91e5dbe0f380c947fa31652c9e669139d1de27c9 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 18:54:25 -0400 Subject: [PATCH 09/14] "only when down" should now work --- modular_citadel/cit_screenshake.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm index bfaaf61028..e4e3c81078 100644 --- a/modular_citadel/cit_screenshake.dm +++ b/modular_citadel/cit_screenshake.dm @@ -52,14 +52,15 @@ /obj/item/attack(mob/living/M, mob/living/user) . = ..() - if(force && force >=11) + if(force && force >=15) shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01)) 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)) + if (2) + if (M.IsKnockdown) + shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) /obj/item/attack_obj(obj/O, mob/living/user) . = ..() From ba52824b3a04c10ab78f483a18356bb7587efd3d Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 19:06:26 -0400 Subject: [PATCH 10/14] Coding at 6 PM is a bad idea --- modular_citadel/cit_screenshake.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm index e4e3c81078..4345a7115c 100644 --- a/modular_citadel/cit_screenshake.dm +++ b/modular_citadel/cit_screenshake.dm @@ -59,7 +59,7 @@ if (1) shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) if (2) - if (M.IsKnockdown) + if (M.IsKnockdown()) shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) /obj/item/attack_obj(obj/O, mob/living/user) From a9e1b583a40cb0d279fe873f4bb853671aec10bf Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 19:27:57 -0400 Subject: [PATCH 11/14] (hopefully) fixes runtimes --- modular_citadel/cit_screenshake.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm index 4345a7115c..8bdc4003ab 100644 --- a/modular_citadel/cit_screenshake.dm +++ b/modular_citadel/cit_screenshake.dm @@ -54,7 +54,7 @@ . = ..() if(force && force >=15) shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01)) - if(M.client.prefs) + if(M.client) switch (M.client.prefs.damagescreenshake) if (1) shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) From bfc9aba71011a25679689b57100d899150f301c9 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 20:12:23 -0400 Subject: [PATCH 12/14] damage screen shake will no longer show when screen shake is disabled --- code/modules/client/preferences.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e94203121b..f8909b8f4a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -369,7 +369,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Screen Shake: [(screenshake==1) ? "Full" : ((screenshake==0) ? "None" : "Reduced")]
" - dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" + if (!user.client.prefs.screenshake==0) + dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" dat += "" From 20700dab57f2fc1eefcf955498a22f7c6840a6fa Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 23 Sep 2017 11:18:48 -0400 Subject: [PATCH 13/14] change for the sake of change - laying the groundwork to let players directly change the percentage of screenshake --- code/modules/client/preferences.dm | 19 ++++++------------- code/modules/client/preferences_savefile.dm | 2 +- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index f8909b8f4a..92551d485d 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -47,7 +47,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/uses_glasses_colour = 0 - var/screenshake = 1 + var/screenshake = 100 var/damagescreenshake = 2 //character preferences @@ -364,10 +364,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Disabled" else dat += "High" - dat += "
" - dat += "Screen Shake: [(screenshake==1) ? "Full" : ((screenshake==0) ? "None" : "Reduced")]
" + dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : [screenshake])]
" if (!user.client.prefs.screenshake==0) dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" @@ -1495,16 +1494,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["exhibitionist"] = TRUE else features["exhibitionist"] = FALSE - if("screenshake") - switch(screenshake) - if(0) - screenshake = 1 - if(1) - screenshake = 2 - if(2) - screenshake = 0 - else - screenshake = 1 + 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 + if (!isnull(desiredshake)) + screenshake = desiredshake if("damagescreenshake") switch(damagescreenshake) if(0) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index a6acba8c69..9daad5cae7 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -217,7 +217,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) - screenshake = sanitize_integer(screenshake, 0, 2, initial(screenshake)) + screenshake = sanitize_integer(screenshake, 0, 200, initial(screenshake)) damagescreenshake = sanitize_integer(damagescreenshake, 0, 2, initial(damagescreenshake)) From 4e793a5630d1c32948018f52e3b9eb6e5fd67b80 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 23 Sep 2017 13:17:21 -0400 Subject: [PATCH 14/14] Should work --- code/modules/client/preferences.dm | 2 +- modular_citadel/cit_screenshake.dm | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 92551d485d..d40c4ea87c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -366,7 +366,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "High" dat += "
" - dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : [screenshake])]
" + dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
" if (!user.client.prefs.screenshake==0) dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" diff --git a/modular_citadel/cit_screenshake.dm b/modular_citadel/cit_screenshake.dm index 8bdc4003ab..2d0110c4e7 100644 --- a/modular_citadel/cit_screenshake.dm +++ b/modular_citadel/cit_screenshake.dm @@ -8,8 +8,9 @@ return var/oldx = C.pixel_x var/oldy = C.pixel_y - 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) + var/clientscreenshake = (C.prefs.screenshake * 0.01) + var/max = (strength*clientscreenshake) * world.icon_size + var/min = -((strength*clientscreenshake) * world.icon_size) for(var/i in 0 to duration-1) if (i == 0)