Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit45
This commit is contained in:
@@ -185,22 +185,6 @@
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
restraint_check = TRUE
|
||||
|
||||
|
||||
|
||||
/datum/emote/living/dab/run_emote(mob/living/user, params)
|
||||
if (ishuman(user))
|
||||
var/def_zone = BODY_ZONE_CHEST
|
||||
var/luck = (rand(1,100))
|
||||
if(luck >= 65)
|
||||
user.adjustStaminaLoss(70)
|
||||
if(luck >= 80)
|
||||
def_zone = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
|
||||
user.apply_damage(20, BRUTE, def_zone)
|
||||
if(luck >= 95)
|
||||
user.adjustBrainLoss(100)
|
||||
. = ..()
|
||||
|
||||
|
||||
/datum/emote/living/mothsqueak
|
||||
key = "msqueak"
|
||||
key_third_person = "lets out a tiny squeak"
|
||||
|
||||
@@ -18,3 +18,21 @@
|
||||
if(recoveringstam && amount > 20)
|
||||
incomingstammult = max(0.01, incomingstammult/(amount*0.05))
|
||||
return amount
|
||||
|
||||
/mob/living/carbon/doSprintLossTiles(tiles)
|
||||
doSprintBufferRegen(FALSE) //first regen.
|
||||
if(sprint_buffer)
|
||||
var/use = min(tiles, sprint_buffer)
|
||||
sprint_buffer -= use
|
||||
tiles -= use
|
||||
update_hud_sprint_bar()
|
||||
if(!tiles) //we had enough, we're done!
|
||||
return
|
||||
adjustStaminaLoss(tiles * sprint_stamina_cost) //use stamina to cover deficit.
|
||||
|
||||
/mob/living/carbon/proc/doSprintBufferRegen(updating = TRUE)
|
||||
var/diff = world.time - sprint_buffer_regen_last
|
||||
sprint_buffer_regen_last = world.time
|
||||
sprint_buffer = min(sprint_buffer_max, sprint_buffer + sprint_buffer_regen_ds * diff)
|
||||
if(updating)
|
||||
update_hud_sprint_bar()
|
||||
|
||||
@@ -13,18 +13,19 @@
|
||||
/mob/living/carbon/human/species/xeno
|
||||
race = /datum/species/xeno
|
||||
|
||||
/mob/living/carbon/human/resist()
|
||||
. = ..()
|
||||
if(wear_suit && wear_suit.breakouttime)//added in human cuff breakout proc
|
||||
/mob/living/proc/resist_embedded()
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/resist_embedded()
|
||||
if(handcuffed || legcuffed || (wear_suit && wear_suit.breakouttime))
|
||||
return
|
||||
if(.)
|
||||
if(canmove && !on_fire)
|
||||
for(var/obj/item/bodypart/L in bodyparts)
|
||||
if(istype(L) && L.embedded_objects.len)
|
||||
for(var/obj/item/I in L.embedded_objects)
|
||||
if(istype(I) && I.w_class >= WEIGHT_CLASS_NORMAL) //minimum weight class to insta-ripout via resist
|
||||
remove_embedded_unsafe(L, I, src, 1.5) //forcefully call the remove embedded unsafe proc but with extra pain multiplier. if you want to remove it less painfully, examine and remove it carefully.
|
||||
return FALSE //Hands are occupied
|
||||
if(canmove && !on_fire)
|
||||
for(var/obj/item/bodypart/L in bodyparts)
|
||||
if(istype(L) && L.embedded_objects.len)
|
||||
for(var/obj/item/I in L.embedded_objects)
|
||||
if(istype(I) && I.w_class >= WEIGHT_CLASS_NORMAL) //minimum weight class to insta-ripout via resist
|
||||
remove_embedded_unsafe(L, I, src, 1.5) //forcefully call the remove embedded unsafe proc but with extra pain multiplier. if you want to remove it less painfully, examine and remove it carefully.
|
||||
return TRUE //Hands are occupied
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/remove_embedded_unsafe(obj/item/bodypart/L, obj/item/I, mob/user, painmul = 1)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/oldpseudoheight = pseudo_z_axis
|
||||
. = ..()
|
||||
if(. && sprinting && !(movement_type & FLYING) && canmove && !resting && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby)
|
||||
adjustStaminaLossBuffered(0.3)
|
||||
doSprintLossTiles(1)
|
||||
if((oldpseudoheight - pseudo_z_axis) >= 8)
|
||||
to_chat(src, "<span class='warning'>You trip off of the elevated surface!</span>")
|
||||
for(var/obj/item/I in held_items)
|
||||
|
||||
@@ -80,10 +80,23 @@
|
||||
else
|
||||
target.Move(target_shove_turf, shove_dir)
|
||||
if(get_turf(target) == target_oldturf)
|
||||
target_table = locate(/obj/structure/table) in target_shove_turf.contents
|
||||
shove_blocked = TRUE
|
||||
if(target_shove_turf.density)
|
||||
shove_blocked = TRUE
|
||||
else
|
||||
var/thoushallnotpass = FALSE
|
||||
for(var/obj/O in target_shove_turf)
|
||||
if(istype(O, /obj/structure/table))
|
||||
target_table = O
|
||||
else if(!O.CanPass(src, target_shove_turf))
|
||||
shove_blocked = TRUE
|
||||
thoushallnotpass = TRUE
|
||||
if(thoushallnotpass)
|
||||
target_table = null
|
||||
|
||||
if(shove_blocked && !target.is_shove_knockdown_blocked())
|
||||
if(target.is_shove_knockdown_blocked())
|
||||
return
|
||||
|
||||
if(shove_blocked || target_table)
|
||||
var/directional_blocked = FALSE
|
||||
if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that
|
||||
var/target_turf = get_turf(target)
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
say_mod = "says"
|
||||
hair_color = "mutcolor"
|
||||
hair_alpha = 160 //a notch brighter so it blends better.
|
||||
liked_food = MEAT
|
||||
coldmod = 3
|
||||
heatmod = 1
|
||||
burnmod = 1
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
/mob/living/carbon/Life()
|
||||
. = ..()
|
||||
doSprintBufferRegen()
|
||||
@@ -1,2 +1,5 @@
|
||||
/mob/living/proc/adjustStaminaLossBuffered(amount, updating_stamina = TRUE, forced = FALSE)
|
||||
return
|
||||
|
||||
/mob/living/proc/doSprintLossTiles(amount)
|
||||
return
|
||||
|
||||
@@ -8,6 +8,14 @@
|
||||
var/intentionalresting = FALSE
|
||||
var/attemptingcrawl = FALSE
|
||||
|
||||
//Sprint buffer---
|
||||
var/sprint_buffer = 42 //Tiles
|
||||
var/sprint_buffer_max = 42
|
||||
var/sprint_buffer_regen_ds = 0.3 //Tiles per world.time decisecond
|
||||
var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math.
|
||||
var/sprint_stamina_cost = 0.55 //stamina loss per tile while insufficient sprint buffer.
|
||||
//---End
|
||||
|
||||
/mob/living/movement_delay(ignorewalk = 0)
|
||||
. = ..()
|
||||
if(resting)
|
||||
@@ -118,3 +126,7 @@
|
||||
filters -= CIT_FILTER_STAMINACRIT
|
||||
update_canmove()
|
||||
update_health_hud()
|
||||
|
||||
/mob/living/proc/update_hud_sprint_bar()
|
||||
if(hud_used && hud_used.sprint_buffer)
|
||||
hud_used.sprint_buffer.update_to_mob(src)
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
/mob/living/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) //Can't go below remaining duration
|
||||
if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canknockdown)
|
||||
if(absorb_stun(isnull(override_hardstun)? amount : override_hardstun, ignore_canknockdown))
|
||||
return
|
||||
var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown()
|
||||
if(K)
|
||||
K.duration = max(world.time + (isnull(override_hardstun)? amount : override_hardstun), K.duration)
|
||||
else if((amount || override_hardstun) > 0)
|
||||
K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating, override_hardstun, override_stamdmg)
|
||||
return K
|
||||
Reference in New Issue
Block a user