Merge pull request #2583 from deathride58/screenshake

Extra Screenshake and Screenshake accessories.
This commit is contained in:
LetterJay
2017-09-24 11:34:50 -04:00
committed by GitHub
5 changed files with 101 additions and 0 deletions
+22
View File
@@ -46,6 +46,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/preferred_map = null
var/uses_glasses_colour = 0
var/screenshake = 100
var/damagescreenshake = 2
//character preferences
var/real_name //our character's name
@@ -363,6 +366,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "High"
dat += "</a><br>"
dat += "<b>Screen Shake:</b> <a href='?_src_=prefs;preference=screenshake'>[(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]</a><br>"
if (!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 += "</td><td width='300px' height='300px' valign='top'>"
dat += "<h2>Special Role Settings</h2>"
@@ -1486,6 +1494,20 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["exhibitionist"] = TRUE
else
features["exhibitionist"] = FALSE
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)
damagescreenshake = 1
if(1)
damagescreenshake = 2
if(2)
damagescreenshake = 0
else
damagescreenshake = 1
if("publicity")
if(unlock_content)
@@ -191,6 +191,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["menuoptions"] >> menuoptions
//citadel code
S["arousable"] >> arousable
S["screenshake"] >> screenshake
S["damagescreenshake"] >> damagescreenshake
//try to fix any outdated data if necessary
if(needs_update >= 0)
@@ -215,6 +217,8 @@ 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, 200, initial(screenshake))
damagescreenshake = sanitize_integer(damagescreenshake, 0, 2, initial(damagescreenshake))
return 1
@@ -256,6 +260,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["enable_tips"], enable_tips)
WRITE_FILE(S["tip_delay"], tip_delay)
//citadel code
WRITE_FILE(S["screenshake"], screenshake)
WRITE_FILE(S["damagescreenshake"], damagescreenshake)
WRITE_FILE(S["arousable"], arousable)
return 1
+3
View File
@@ -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/.
+69
View File
@@ -0,0 +1,69 @@
//we vlambeer now
/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
if (C.prefs.screenshake==0)
return
var/oldx = C.pixel_x
var/oldy = C.pixel_y
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)
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 >=15)
shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01))
if(M.client)
switch (M.client.prefs.damagescreenshake)
if (1)
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)
. = ..()
if(force && force >= 20)
shake_camera(user, ((force - 15) * 0.01 + 1), ((force - 15) * 0.01))
+1
View File
@@ -2274,6 +2274,7 @@
#include "code\modules\VR\vr_sleeper.dm"
#include "code\modules\zombie\items.dm"
#include "code\modules\zombie\organs.dm"
#include "modular_citadel\cit_screenshake.dm"
#include "interface\interface.dm"
#include "interface\menu.dm"
#include "interface\stylesheet.dm"