mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 18:13:34 +01:00
Merge pull request #7407 from Fox-McCloud/movement-fixes
Movement fixes
This commit is contained in:
@@ -13,6 +13,10 @@
|
||||
alien_organs += new /obj/item/organ/internal/xenos/plasmavessel/hunter
|
||||
..()
|
||||
|
||||
/mob/living/carbon/alien/humanoid/hunter/movement_delay()
|
||||
. = -1 //hunters are sanic
|
||||
. += ..() //but they still need to slow down on stun
|
||||
|
||||
/mob/living/carbon/alien/humanoid/hunter/handle_regular_hud_updates()
|
||||
..() //-Yvarov
|
||||
|
||||
|
||||
@@ -12,14 +12,12 @@
|
||||
pixel_x = -16
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
move_delay_add = 1
|
||||
large = 1
|
||||
|
||||
/mob/living/carbon/alien/humanoid/sentinel/praetorian
|
||||
name = "alien praetorian"
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
move_delay_add = 1
|
||||
large = 1
|
||||
|
||||
/mob/living/carbon/alien/humanoid/sentinel/large/update_icons()
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
icon_state = "alienq_s"
|
||||
status_flags = CANPARALYSE
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
move_delay_add = 3
|
||||
large = 1
|
||||
ventcrawler = 0
|
||||
|
||||
|
||||
@@ -26,16 +26,8 @@
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/movement_delay()
|
||||
var/tally = 0
|
||||
if(istype(src, /mob/living/carbon/alien/humanoid/queen))
|
||||
tally += 4
|
||||
if(istype(src, /mob/living/carbon/alien/humanoid/drone))
|
||||
tally += 0
|
||||
if(istype(src, /mob/living/carbon/alien/humanoid/sentinel))
|
||||
tally += 0
|
||||
if(istype(src, /mob/living/carbon/alien/humanoid/hunter))
|
||||
tally = -2 // hunters go supersuperfast
|
||||
return (tally + move_delay_add + config.alien_delay)
|
||||
. = ..()
|
||||
. += move_delay_add + config.alien_delay //move_delay_add is used to slow aliens with stuns
|
||||
|
||||
/mob/living/carbon/alien/humanoid/Process_Spacemove(var/check_drift = 0)
|
||||
if(..())
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
alien_organs += new /obj/item/organ/internal/xenos/neurotoxin
|
||||
..()
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/movement_delay()
|
||||
. = ..()
|
||||
. += 3
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates()
|
||||
..() //-Yvarov
|
||||
|
||||
@@ -1,75 +1,8 @@
|
||||
/mob/living/carbon/human/movement_delay()
|
||||
. = 0
|
||||
. += ..()
|
||||
|
||||
var/gravity = 1
|
||||
|
||||
if(!has_gravity(src))
|
||||
gravity = 0
|
||||
|
||||
if(flying)
|
||||
gravity = 0
|
||||
|
||||
if(embedded_flag)
|
||||
handle_embedded_objects() //Moving with objects stuck in you can cause bad times.
|
||||
|
||||
if(slowed)
|
||||
. += 10
|
||||
|
||||
if(gravity)
|
||||
if(species.slowdown)
|
||||
. = species.slowdown
|
||||
|
||||
var/health_deficiency = (maxHealth - health + staminaloss)
|
||||
if(reagents)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
if(R.shock_reduction)
|
||||
health_deficiency -= R.shock_reduction
|
||||
if(health_deficiency >= 40)
|
||||
. += (health_deficiency / 25)
|
||||
|
||||
var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
|
||||
if(hungry >= 70)
|
||||
. += hungry/50
|
||||
|
||||
if(wear_suit)
|
||||
. += wear_suit.slowdown
|
||||
|
||||
if(!buckled)
|
||||
if(shoes)
|
||||
. += shoes.slowdown
|
||||
|
||||
if(shock_stage >= 10)
|
||||
. += 3
|
||||
|
||||
if(back)
|
||||
. += back.slowdown
|
||||
|
||||
if(l_hand && (l_hand.flags & HANDSLOW))
|
||||
. += l_hand.slowdown
|
||||
if(r_hand && (r_hand.flags & HANDSLOW))
|
||||
. += r_hand.slowdown
|
||||
|
||||
if(FAT in src.mutations)
|
||||
. += 1.5
|
||||
|
||||
if(bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT)
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
|
||||
. += 2 * stance_damage //damaged/missing feet or legs is slow
|
||||
|
||||
if(RUN in mutations)
|
||||
. = -1
|
||||
|
||||
if(status_flags & IGNORESLOWDOWN) // make sure this is always at the end so we don't have ignore slowdown getting ignored itself
|
||||
. = -1
|
||||
|
||||
if(status_flags & GOTTAGOFAST)
|
||||
. -= 1
|
||||
if(status_flags & GOTTAGOREALLYFAST)
|
||||
. -= 2
|
||||
|
||||
. += config.human_delay
|
||||
. += species.movement_delay(src)
|
||||
|
||||
/mob/living/carbon/human/Process_Spacemove(movement_dir = 0)
|
||||
|
||||
|
||||
@@ -380,6 +380,72 @@
|
||||
if(heat_level_3_breathe to INFINITY)
|
||||
H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat")
|
||||
|
||||
////////////////
|
||||
// MOVE SPEED //
|
||||
////////////////
|
||||
|
||||
/datum/species/proc/movement_delay(mob/living/carbon/human/H)
|
||||
. = 0 //We start at 0.
|
||||
var/flight = 0 //Check for flight and flying items
|
||||
var/ignoreslow = 0
|
||||
var/gravity = 0
|
||||
|
||||
if(H.flying)
|
||||
flight = 1
|
||||
|
||||
if((H.status_flags & IGNORESLOWDOWN) || (RUN in H.mutations))
|
||||
ignoreslow = 1
|
||||
|
||||
if(has_gravity(H))
|
||||
gravity = 1
|
||||
|
||||
if(H.embedded_flag)
|
||||
H.handle_embedded_objects() //Moving with objects stuck in you can cause bad times.
|
||||
|
||||
if(!ignoreslow && gravity)
|
||||
if(slowdown)
|
||||
. = slowdown
|
||||
|
||||
if(H.wear_suit)
|
||||
. += H.wear_suit.slowdown
|
||||
if(!H.buckled)
|
||||
if(H.shoes)
|
||||
. += H.shoes.slowdown
|
||||
if(H.back)
|
||||
. += H.back.slowdown
|
||||
if(H.l_hand && (H.l_hand.flags & HANDSLOW))
|
||||
. += H.l_hand.slowdown
|
||||
if(H.r_hand && (H.r_hand.flags & HANDSLOW))
|
||||
. += H.r_hand.slowdown
|
||||
|
||||
var/health_deficiency = (H.maxHealth - H.health + H.staminaloss)
|
||||
var/hungry = (500 - H.nutrition)/5 // So overeat would be 100 and default level would be 80
|
||||
if(H.reagents)
|
||||
for(var/datum/reagent/R in H.reagents.reagent_list)
|
||||
if(R.shock_reduction)
|
||||
health_deficiency -= R.shock_reduction
|
||||
if(health_deficiency >= 40)
|
||||
if(flight)
|
||||
. += (health_deficiency / 75)
|
||||
else
|
||||
. += (health_deficiency / 25)
|
||||
if(H.shock_stage >= 10)
|
||||
. += 3
|
||||
. += 2 * H.stance_damage //damaged/missing feet or legs is slow
|
||||
|
||||
if((hungry >= 70) && !flight)
|
||||
. += hungry/50
|
||||
if(FAT in H.mutations)
|
||||
. += (1.5 - flight)
|
||||
if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT)
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
|
||||
if(H.status_flags & GOTTAGOFAST)
|
||||
. -= 1
|
||||
if(H.status_flags & GOTTAGOREALLYFAST)
|
||||
. -= 2
|
||||
return .
|
||||
|
||||
/datum/species/proc/handle_post_spawn(var/mob/living/carbon/C) //Handles anything not already covered by basic species assignment.
|
||||
grant_abilities(C)
|
||||
return
|
||||
|
||||
@@ -83,10 +83,11 @@
|
||||
if(bodytemperature >= 330.23) // 135 F
|
||||
return -1 // slimes become supercharged at high temperatures
|
||||
|
||||
. = ..(1)
|
||||
. = ..()
|
||||
|
||||
var/health_deficiency = (100 - health)
|
||||
if(health_deficiency >= 45) . += (health_deficiency / 25)
|
||||
if(health_deficiency >= 45)
|
||||
. += (health_deficiency / 25)
|
||||
|
||||
if(bodytemperature < 183.222)
|
||||
. += (283.222 - bodytemperature) / 10 * 1.75
|
||||
@@ -101,7 +102,7 @@
|
||||
if(health <= 0) // if damaged, the slime moves twice as slow
|
||||
. *= 2
|
||||
|
||||
return . + config.slime_delay
|
||||
. += config.slime_delay
|
||||
|
||||
/mob/living/carbon/slime/ObjBump(obj/O)
|
||||
if(!client && powerlevel > 0)
|
||||
|
||||
@@ -919,7 +919,6 @@
|
||||
|
||||
/mob/living/movement_delay(ignorewalk = 0)
|
||||
. = ..()
|
||||
|
||||
if(isturf(loc))
|
||||
var/turf/T = loc
|
||||
. += T.slowdown
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
|
||||
var/current_pda_messaging = null
|
||||
var/custom_sprite = 0
|
||||
var/slowdown = 0
|
||||
|
||||
/mob/living/silicon/pai/New(var/obj/item/device/paicard)
|
||||
loc = paicard
|
||||
@@ -117,6 +118,12 @@
|
||||
C.toff = 1
|
||||
..()
|
||||
|
||||
/mob/living/silicon/pai/movement_delay()
|
||||
. = ..()
|
||||
. += slowdown
|
||||
. += 1 //A bit slower than humans, so they're easier to smash
|
||||
. += config.robot_delay
|
||||
|
||||
/mob/living/silicon/pai/update_icons()
|
||||
if(stat == DEAD)
|
||||
icon_state = "[chassis]_dead"
|
||||
|
||||
@@ -7,14 +7,11 @@
|
||||
|
||||
//No longer needed, but I'll leave it here incase we plan to re-use it.
|
||||
/mob/living/silicon/robot/movement_delay()
|
||||
. = ..(1) //Incase I need to add stuff other than "speed" later
|
||||
|
||||
. = ..()
|
||||
. += speed
|
||||
|
||||
if(module_active && istype(module_active,/obj/item/borg/combat/mobility))
|
||||
. -= 3
|
||||
|
||||
return . + config.robot_delay
|
||||
. += config.robot_delay
|
||||
|
||||
/mob/living/silicon/robot/mob_negates_gravity()
|
||||
return magpulse
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
melee_damage_upper = 18
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
speed = 1
|
||||
speed = 2
|
||||
|
||||
|
||||
//Cargo Sloth
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
speed = 4
|
||||
|
||||
faction = list("faithless")
|
||||
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
response_disarm = "shoves"
|
||||
response_harm = "hits"
|
||||
turns_per_move = 10
|
||||
speed = -1
|
||||
speed = 0
|
||||
maxHealth = 20
|
||||
health = 20
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
response_help = "shakes hands with"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "hits"
|
||||
speed = -1
|
||||
speed = 0
|
||||
maxHealth = 20
|
||||
health = 20
|
||||
|
||||
|
||||
@@ -505,7 +505,8 @@
|
||||
/mob/living/simple_animal/parrot/movement_delay()
|
||||
if(client && stat == CONSCIOUS && parrot_state != "parrot_fly")
|
||||
icon_state = "parrot_fly"
|
||||
..()
|
||||
//Because the most appropriate place to set icon_state is movement_delay(), clearly
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/parrot/proc/search_for_item()
|
||||
for(var/atom/movable/AM in view(src))
|
||||
|
||||
@@ -434,11 +434,11 @@
|
||||
|
||||
|
||||
/mob/living/simple_animal/movement_delay()
|
||||
var/tally = 0 //Incase I need to add stuff other than "speed" later
|
||||
. = ..()
|
||||
|
||||
tally = speed
|
||||
. = speed
|
||||
|
||||
return tally+config.animal_delay
|
||||
. += config.animal_delay
|
||||
|
||||
/mob/living/simple_animal/Stat()
|
||||
..()
|
||||
|
||||
@@ -1008,9 +1008,10 @@ var/list/slot_equipment_priority = list( \
|
||||
drop_l_hand()
|
||||
drop_r_hand()
|
||||
|
||||
/mob/proc/facedir(var/ndir)
|
||||
if(!canface()) return 0
|
||||
dir = ndir
|
||||
/mob/proc/facedir(ndir)
|
||||
if(!canface())
|
||||
return 0
|
||||
setDir(ndir)
|
||||
client.move_delay += movement_delay()
|
||||
return 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user