mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-27 14:08:44 +01:00
+38
-4
@@ -661,8 +661,8 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
|
||||
// Typo from the oriignal coder here, below lies the jitteriness process. So make of his code what you will, the previous comment here was just a copypaste of the above.
|
||||
/mob/proc/jittery_process()
|
||||
var/old_x = pixel_x
|
||||
var/old_y = pixel_y
|
||||
//var/old_x = pixel_x
|
||||
//var/old_y = pixel_y
|
||||
is_jittery = 1
|
||||
while(jitteriness > 100)
|
||||
// var/amplitude = jitteriness*(sin(jitteriness * 0.044 * world.time) + 1) / 70
|
||||
@@ -670,8 +670,8 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
// pixel_y = amplitude * cos(0.008 * jitteriness * world.time)
|
||||
|
||||
var/amplitude = min(4, jitteriness / 100)
|
||||
pixel_x = rand(-amplitude, amplitude)
|
||||
pixel_y = rand(-amplitude/3, amplitude/3)
|
||||
pixel_x = old_x + rand(-amplitude, amplitude)
|
||||
pixel_y = old_y + rand(-amplitude/3, amplitude/3)
|
||||
|
||||
sleep(1)
|
||||
//endwhile - reset the pixel offsets to zero
|
||||
@@ -679,6 +679,40 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
pixel_x = old_x
|
||||
pixel_y = old_y
|
||||
|
||||
|
||||
//handles up-down floaty effect in space
|
||||
/mob/proc/make_floating(var/n)
|
||||
|
||||
floatiness = n
|
||||
|
||||
if(floatiness && !is_floating)
|
||||
start_floating()
|
||||
else if(!floatiness && is_floating)
|
||||
stop_floating()
|
||||
|
||||
/mob/proc/start_floating()
|
||||
|
||||
is_floating = 1
|
||||
|
||||
var/amplitude = 2 //maximum displacement from original position
|
||||
var/period = 36 //time taken for the mob to go up >> down >> original position, in deciseconds. Should be multiple of 4
|
||||
|
||||
var/top = old_y + amplitude
|
||||
var/bottom = old_y - amplitude
|
||||
var/half_period = period / 2
|
||||
var/quarter_period = period / 4
|
||||
|
||||
animate(src, pixel_y = top, time = quarter_period, easing = SINE_EASING | EASE_OUT, loop = -1) //up
|
||||
animate(pixel_y = bottom, time = half_period, easing = SINE_EASING, loop = -1) //down
|
||||
animate(pixel_y = old_y, time = quarter_period, easing = SINE_EASING | EASE_IN, loop = -1) //back
|
||||
|
||||
/mob/proc/stop_floating()
|
||||
animate(src, pixel_y = old_y, time = 5, easing = SINE_EASING | EASE_IN) //halt animation
|
||||
//reset the pixel offsets to zero
|
||||
is_floating = 0
|
||||
|
||||
|
||||
|
||||
/mob/Stat()
|
||||
..()
|
||||
|
||||
|
||||
@@ -99,11 +99,15 @@
|
||||
|
||||
|
||||
var/bodytemperature = 310.055 //98.7 F
|
||||
var/old_x = 0
|
||||
var/old_y = 0
|
||||
var/drowsyness = 0.0//Carbon
|
||||
var/dizziness = 0//Carbon
|
||||
var/is_dizzy = 0
|
||||
var/is_jittery = 0
|
||||
var/jitteriness = 0//Carbon
|
||||
var/is_floating = 0
|
||||
var/floatiness = 0
|
||||
var/charges = 0.0
|
||||
var/nutrition = 400.0//Carbon
|
||||
|
||||
|
||||
@@ -402,15 +402,34 @@
|
||||
///For moving in space
|
||||
///Return 1 for movement 0 for none
|
||||
/mob/proc/Process_Spacemove(var/check_drift = 0)
|
||||
//First check to see if we can do things
|
||||
if(restrained())
|
||||
|
||||
if(!Check_Dense_Object()) //Nothing to push off of so end here
|
||||
make_floating(1)
|
||||
return 0
|
||||
|
||||
/*
|
||||
if(istype(src,/mob/living/carbon))
|
||||
if(src.l_hand && src.r_hand)
|
||||
return 0
|
||||
*/
|
||||
if(istype(src,/mob/living/carbon/human/))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP)) //magboots + dense_object = no floaty effect
|
||||
make_floating(0)
|
||||
else
|
||||
make_floating(1)
|
||||
else
|
||||
make_floating(1)
|
||||
|
||||
if(restrained()) //Check to see if we can do things
|
||||
return 0
|
||||
|
||||
//Check to see if we slipped
|
||||
if(prob(Process_Spaceslipping(5)))
|
||||
src << "\blue <B>You slipped!</B>"
|
||||
src.inertia_dir = src.last_move
|
||||
step(src, src.inertia_dir)
|
||||
return 0
|
||||
//If not then we can reset inertia and move
|
||||
inertia_dir = 0
|
||||
return 1
|
||||
|
||||
/mob/proc/Check_Dense_Object() //checks for anything to push off in the vicinity. also handles magboots on gravity-less floors tiles
|
||||
|
||||
var/dense_object = 0
|
||||
for(var/turf/turf in oview(1,src))
|
||||
@@ -418,7 +437,8 @@
|
||||
continue
|
||||
|
||||
if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to.
|
||||
if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP)))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0) && !(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP)))
|
||||
continue
|
||||
|
||||
|
||||
@@ -449,21 +469,7 @@
|
||||
dense_object++
|
||||
break
|
||||
|
||||
//Nothing to push off of so end here
|
||||
if(!dense_object)
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
//Check to see if we slipped
|
||||
if(prob(Process_Spaceslipping(5)))
|
||||
src << "\blue <B>You slipped!</B>"
|
||||
src.inertia_dir = src.last_move
|
||||
step(src, src.inertia_dir)
|
||||
return 0
|
||||
//If not then we can reset inertia and move
|
||||
inertia_dir = 0
|
||||
return 1
|
||||
return dense_object
|
||||
|
||||
|
||||
/mob/proc/Process_Spaceslipping(var/prob_slip = 5)
|
||||
|
||||
Reference in New Issue
Block a user