Merge pull request #2583 from deathride58/screenshake
Extra Screenshake and Screenshake accessories.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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/.
|
||||
@@ -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))
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user