From feeb76e472188dac729ad3699948c9e14378a4dc Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Sep 2017 05:24:14 -0400 Subject: [PATCH] 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"