diff --git a/code/defines/mob/living/carbon/alien.dm b/code/defines/mob/living/carbon/alien.dm index 7ed371f5d9f..60b38a20c00 100644 --- a/code/defines/mob/living/carbon/alien.dm +++ b/code/defines/mob/living/carbon/alien.dm @@ -13,4 +13,9 @@ alien_talk_understand = 1 var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie - var/has_fine_manipulation = 0 \ No newline at end of file + var/has_fine_manipulation = 0 + + var/move_delay_add = 0 // movement delay to add + + canstun = 0 + canweaken = 0 // aliens cannot be stunned or knocked down. Massive buff! \ No newline at end of file diff --git a/code/defines/mob/living/carbon/metroid.dm b/code/defines/mob/living/carbon/metroid.dm index c60d26fc748..48fd4fea5c1 100644 --- a/code/defines/mob/living/carbon/metroid.dm +++ b/code/defines/mob/living/carbon/metroid.dm @@ -19,6 +19,11 @@ see_in_dark = 8 + // canstun and canweaken don't affect metroids because they ignore stun and weakened variables + // for the sake of cleanliness, though, here they are. + canstun = 0 + canweaken = 0 + var/amount_grown = 0// controls how long the metroid has been overfed, if 10, grows into an adult // if adult: if 10: reproduces var/powerlevel = 0 // 1-10 controls how much electricity they are generating diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 5f7185d72b6..b8d02b4d7e0 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -158,7 +158,7 @@ STUN BATON R.cell.charge -= 20 else charges-- - if (M.stuttering < 1 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) + if (M.stuttering < 1 && (!(M.mutations & HULK) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) M.stuttering = 1 M.Stun(1) M.Weaken(1) @@ -169,7 +169,7 @@ STUN BATON R.cell.charge -= 20 else charges-- - if (M.stuttering < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) + if (M.stuttering < 10 && (!(M.mutations & HULK) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) M.stuttering = 10 M.Stun(10) M.Weaken(10) 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 cb94c28359f..b5b1fe828de 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -86,6 +86,9 @@ if(src.resting) Weaken(5) + if(move_delay_add > 0) + move_delay_add = max(0, move_delay_add - rand(1, 2)) + if(health < config.health_threshold_dead || src.brain_op_stage == 4.0) death() else if(src.health < config.health_threshold_crit) 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 e5aac55ed0c..f8bb7602781 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -87,6 +87,9 @@ if(src.resting) Weaken(5) + if(move_delay_add > 0) + move_delay_add = max(0, move_delay_add - rand(1, 2)) + if(health < config.health_threshold_dead || src.brain_op_stage == 4.0) death() else if(src.health < config.health_threshold_crit) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 31350b9894e..12d3f8cc14c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -58,7 +58,9 @@ tally += 2 if (istype(src, /mob/living/carbon/alien/humanoid/sentinel)) tally += 1 - return tally + if (istype(src, /mob/living/carbon/alien/humanoid/hunter)) + tally = -1 // hunters go supersuperfast + return tally + move_delay_add //This needs to be fixed /mob/living/carbon/alien/humanoid/Stat() diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 5dd33441b70..a93994964b2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -406,6 +406,9 @@ if(src.resting) Weaken(5) + if(move_delay_add > 0) + move_delay_add = max(0, move_delay_add - rand(1, 2)) + if(health < config.health_threshold_dead || src.brain_op_stage == 4.0) death() else if(src.health < config.health_threshold_crit) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 71b0d5b3d13..94afb440712 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -331,6 +331,9 @@ if(resting) Weaken(5) + if(move_delay_add > 0) + move_delay_add = max(0, move_delay_add - rand(1, 2)) + if(health < config.health_threshold_dead || brain_op_stage == 4.0) death() else if(health < config.health_threshold_crit) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index ce8176d1c30..6d3ec332d71 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -50,7 +50,8 @@ if(IRRADIATE) radiation += min((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor if(STUTTER) - stuttering = max(stuttering,(effect/(blocked+1))) + if(canstun) // stun is usually associated with stutter + stuttering = max(stuttering,(effect/(blocked+1))) if(EYE_BLUR) eye_blurry = max(eye_blurry,(effect/(blocked+1))) if(DROWSY) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 01db4cd92f7..db475dd5448 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1040,27 +1040,38 @@ note dizziness decrements automatically in the mob's Life() proc. return 0 /mob/proc/Stun(amount) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + if(canstun) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + else + if(istype(src, /mob/living/carbon/alien)) // add some movement delay + var/mob/living/carbon/alien/Alien = src + Alien.move_delay_add = min(Alien.move_delay_add + round(amount / 5), 10) // a maximum delay of 10 + return /mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - stunned = max(amount,0) + if(canstun) + stunned = max(amount,0) return /mob/proc/AdjustStunned(amount) - stunned = max(stunned + amount,0) + if(canstun) + stunned = max(stunned + amount,0) return /mob/proc/Weaken(amount) - weakened = max(max(weakened,amount),0) + if(canweaken) + weakened = max(max(weakened,amount),0) return /mob/proc/SetWeakened(amount) - weakened = max(amount,0) + if(canweaken) + weakened = max(amount,0) return /mob/proc/AdjustWeakened(amount) - weakened = max(weakened + amount,0) + if(canweaken) + weakened = max(weakened + amount,0) return /mob/proc/Paralyse(amount) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 7660af47038..fddbec0aeb7 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -28,8 +28,6 @@ //Vars that should only be accessed via procs ++END - - // var/uses_hud = 0 var/obj/screen/flash = null var/obj/screen/blind = null @@ -249,3 +247,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i var/UI = 'screen1_old.dmi' // For changing the UI from preferences // var/obj/effect/organstructure/organStructure = null //for dem organs + + var/canstun = 1 // determines if this mob can be stunned by things + var/canweaken = 1 // determines if this mob can be weakened/knocked down by things \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index 791e30699ee..deb7614e6bf 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -60,6 +60,13 @@ Stuff which is in development and not yet visible to players or just code relate (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit tho. Thanks. --> +1 January 2012 (12 more months until doomsday) + 29 December 2011
    diff --git a/icons/mob/critter.dmi b/icons/mob/critter.dmi index 3ec19ac3cd2..4d728bc847b 100644 Binary files a/icons/mob/critter.dmi and b/icons/mob/critter.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index e65494ba7c9..9dbb5096f43 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ