diff --git a/code/defines/mob/living/carbon/alien_humanoid.dm b/code/defines/mob/living/carbon/alien_humanoid.dm index 4c6ae07fbe3..87722cdbeac 100644 --- a/code/defines/mob/living/carbon/alien_humanoid.dm +++ b/code/defines/mob/living/carbon/alien_humanoid.dm @@ -9,6 +9,7 @@ var/icon/stand_icon = null var/icon/lying_icon = null + var/icon/resting_icon = null var/last_b_state = 1.0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index f45a231b458..5b9c7ab8032 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -178,7 +178,7 @@ I kind of like the right click only--the window version can get a little confusi spawn(round(travel_time/2))//give sound warning to anyone near the target vent if(!target_vent.welded) for(var/mob/O in hearers(target_vent, null)) - O.show_message("You hear something crawling trough the ventilation pipes.",2) + O.show_message("You hear something crawling through the ventilation pipes.",2) spawn(travel_time) if(target_vent.welded)//the vent can be welded while alien scrolled through the list or travelled. diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index a812626b651..446f0686321 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -10,6 +10,7 @@ src.verbs -= /mob/living/carbon/alien/humanoid/verb/ActivateHuggers src.stand_icon = new /icon('alien.dmi', "aliend_s") src.lying_icon = new /icon('alien.dmi', "aliend_l") + src.resting_icon = new /icon('alien.dmi', "aliend_sleep") src.icon = src.stand_icon update_clothing() src << "\blue Your icons have been generated!" diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index b5b1fe828de..0a9e868bab8 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -9,6 +9,7 @@ src.verbs -= /mob/living/carbon/alien/humanoid/verb/corrode src.stand_icon = new /icon('alien.dmi', "alienh_s") src.lying_icon = new /icon('alien.dmi', "alienh_l") + src.resting_icon = new /icon('alien.dmi', "alienh_sleep") src.icon = src.stand_icon update_clothing() src << "\blue Your icons have been generated!" diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index f8bb7602781..fdbf0984591 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -9,6 +9,7 @@ src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode_target src.stand_icon = new /icon('alien.dmi', "aliens_s") src.lying_icon = new /icon('alien.dmi', "aliens_l") + src.resting_icon = new /icon('alien.dmi', "aliens_sleep") src.icon = src.stand_icon update_clothing() src << "\blue Your icons have been generated!" diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 8930cbcbf96..25ffe72e189 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -10,6 +10,7 @@ if(!istype(src, /mob/living/carbon/alien/humanoid/queen)) stand_icon = new /icon('alien.dmi', "alien_s") lying_icon = new /icon('alien.dmi', "alien_l") + resting_icon = new /icon('alien.dmi', "alienh_sleep") icon = stand_icon update_clothing() src << "\blue Your icons have been generated!" @@ -330,7 +331,10 @@ if (lying) if(update_icon) - icon = lying_icon + if(!resting) + icon = lying_icon + else + icon = resting_icon overlays += body_lying diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 354bdc8f57e..589dbe0c4f5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -148,6 +148,14 @@ src << "\red You fail to push [tmob]'s fat ass out of the way." now_pushing = 0 return + if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot)) + if(prob(99)) + now_pushing = 0 + return + if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot)) + if(prob(99)) + now_pushing = 0 + return if(tmob.nopush) now_pushing = 0 return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 862c3eb1259..f871134d7ff 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -9,6 +9,31 @@ emp_act */ /mob/living/carbon/human/bullet_act(var/obj/item/projectile/P, var/def_zone) + + if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof)) + if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) + var/reflectchance = 80 - round(P.damage/3) + if(!(def_zone in list("chest", "groin"))) + reflectchance /= 2 + if(prob(reflectchance)) + visible_message("\red The [P.name] gets reflected by [src]'s [wear_suit.name]!") + + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.original = locate(new_x, new_y, P.z) + P.starting = curloc + P.current = curloc + P.firer = src + P.yo = new_y - curloc.y + P.xo = new_x - curloc.x + + return -1 // complete projectile permutation + if(check_shields(P.damage, "the [P.name]")) P.on_hit(src, 2) return 2 @@ -49,12 +74,12 @@ emp_act /mob/living/carbon/human/proc/check_shields(var/damage = 0, var/attack_text = "the attack") if(l_hand && istype(l_hand, /obj/item/weapon))//Current base is the prob(50-d/3) var/obj/item/weapon/I = l_hand - if(I.IsShield() && (prob(50 - round(damage / 3)))) + if(I.IsShield() && (prob(70 - round(damage / 3)))) visible_message("\red [src] blocks [attack_text] with the [l_hand.name]!") return 1 if(r_hand && istype(r_hand, /obj/item/weapon)) var/obj/item/weapon/I = r_hand - if(I.IsShield() && (prob(50 - round(damage / 3)))) + if(I.IsShield() && (prob(70 - round(damage / 3)))) visible_message("\red [src] blocks [attack_text] with the [r_hand.name]!") return 1 if(wear_suit && istype(wear_suit, /obj/item/)) @@ -88,10 +113,11 @@ emp_act var/datum/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting)) var/hit_area = parse_zone(affecting.name) - visible_message("\red [src] has been attacked in the [hit_area] with [I.name] by [user]!") - if((user != src) && check_shields(I.force, "the [I.name]")) return 0 + + visible_message("\red [src] has been attacked in the [hit_area] with [I.name] by [user]!") + var/armor = run_armor_check(affecting, "melee", "Your armor has protected you from a hit to the [hit_area].", "Your armor has softened hit to your [hit_area].") if(armor >= 2) return 0 if(!I.force) return 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index b17f608c46e..4736e2bcd6a 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -697,12 +697,14 @@ if(getOxyLoss() > 50) Paralyse(3) if(sleeping) - Paralyse(3) + if(paralysis <= 0) + Paralyse(2) if (prob(10) && health && !hal_crit) spawn(0) emote("snore") - sleeping-- + //sleeping-- if(resting) - Weaken(3) + if(weakened <= 0) + Weaken(2) if(health < config.health_threshold_dead || brain_op_stage == 4.0) death() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d94535ec178..3916cc16230 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -90,6 +90,7 @@ in_chamber.original = targloc in_chamber.loc = get_turf(user) + in_chamber.starting = get_turf(user) user.next_move = world.time + 4 in_chamber.silenced = silenced in_chamber.current = curloc diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0a146ef3fde..3e5d4e1c0d7 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -27,7 +27,8 @@ yo = null xo = null current = null - turf/original = null + turf/original = null // the original turf clicked + turf/starting = null // the projectile's starting turf p_x = 16 p_y = 16 // the pixel location of the tile that the player clicked. Default is the center diff --git a/html/changelog.html b/html/changelog.html index 43fc7dff1f4..89dc7fe5eb5 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -98,6 +98,11 @@ should be listed in the changelog upon commit tho. Thanks. --> +

Doohl updated:

+
diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi index d3de781e6c7..1efa862fdc3 100644 Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ