mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-20 15:12:57 +00:00
TG: Added two new variables, "canstun" and "canweaken". They can be modified in
runtime to prevent mobs from ever being weakened and stunned by tasers/batons/electrified doors. Xenos are immune to stunning and weakening. This basically means you cannot run up to a xeno and shoot them with a taser and game over. This makes them a lot more dangerous. To compensate, I've added in a xeno-exclusive variable controlling movement delay addition. When a xeno is stunned, its movement speed goes down. The speed is recovered in the life() proc. Modifications to critter.dmi (manhacks). Added a new lighting icon, floor lights. Possible implementation later. r2886
This commit is contained in:
@@ -14,3 +14,8 @@
|
|||||||
|
|
||||||
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
|
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
|
||||||
var/has_fine_manipulation = 0
|
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!
|
||||||
@@ -19,6 +19,11 @@
|
|||||||
|
|
||||||
see_in_dark = 8
|
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
|
var/amount_grown = 0// controls how long the metroid has been overfed, if 10, grows into an adult
|
||||||
// if adult: if 10: reproduces
|
// if adult: if 10: reproduces
|
||||||
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
|
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ STUN BATON
|
|||||||
R.cell.charge -= 20
|
R.cell.charge -= 20
|
||||||
else
|
else
|
||||||
charges--
|
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.stuttering = 1
|
||||||
M.Stun(1)
|
M.Stun(1)
|
||||||
M.Weaken(1)
|
M.Weaken(1)
|
||||||
@@ -172,7 +172,7 @@ STUN BATON
|
|||||||
R.cell.charge -= 20
|
R.cell.charge -= 20
|
||||||
else
|
else
|
||||||
charges--
|
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.stuttering = 10
|
||||||
M.Stun(10)
|
M.Stun(10)
|
||||||
M.Weaken(10)
|
M.Weaken(10)
|
||||||
|
|||||||
@@ -91,6 +91,9 @@
|
|||||||
if(src.resting)
|
if(src.resting)
|
||||||
Weaken(5)
|
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)
|
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(src.health < config.health_threshold_crit)
|
else if(src.health < config.health_threshold_crit)
|
||||||
|
|||||||
@@ -92,6 +92,9 @@
|
|||||||
if(src.resting)
|
if(src.resting)
|
||||||
Weaken(5)
|
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)
|
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(src.health < config.health_threshold_crit)
|
else if(src.health < config.health_threshold_crit)
|
||||||
|
|||||||
@@ -58,7 +58,9 @@
|
|||||||
tally += 2
|
tally += 2
|
||||||
if (istype(src, /mob/living/carbon/alien/humanoid/sentinel))
|
if (istype(src, /mob/living/carbon/alien/humanoid/sentinel))
|
||||||
tally += 1
|
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
|
//This needs to be fixed
|
||||||
/mob/living/carbon/alien/humanoid/Stat()
|
/mob/living/carbon/alien/humanoid/Stat()
|
||||||
|
|||||||
@@ -407,6 +407,9 @@
|
|||||||
if(src.resting)
|
if(src.resting)
|
||||||
Weaken(5)
|
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)
|
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(src.health < config.health_threshold_crit)
|
else if(src.health < config.health_threshold_crit)
|
||||||
|
|||||||
@@ -332,6 +332,9 @@
|
|||||||
if(resting)
|
if(resting)
|
||||||
Weaken(5)
|
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)
|
if(health < config.health_threshold_dead || brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(health < config.health_threshold_crit)
|
else if(health < config.health_threshold_crit)
|
||||||
|
|||||||
@@ -50,7 +50,8 @@
|
|||||||
if(IRRADIATE)
|
if(IRRADIATE)
|
||||||
radiation += max((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor
|
radiation += max((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor
|
||||||
if(STUTTER)
|
if(STUTTER)
|
||||||
stuttering = max(stuttering,(effect/(blocked+1)))
|
if(canstun) // stun is usually associated with stutter
|
||||||
|
stuttering = max(stuttering,(effect/(blocked+1)))
|
||||||
if(SLUR)
|
if(SLUR)
|
||||||
slurring = max(slurring, (effect/(blocked+1)))
|
slurring = max(slurring, (effect/(blocked+1)))
|
||||||
if(EYE_BLUR)
|
if(EYE_BLUR)
|
||||||
|
|||||||
@@ -1098,28 +1098,39 @@ note dizziness decrements automatically in the mob's Life() proc.
|
|||||||
/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check
|
/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
/mob/proc/Stun(amount)
|
/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
|
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"
|
/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
|
return
|
||||||
|
|
||||||
/mob/proc/AdjustStunned(amount)
|
/mob/proc/AdjustStunned(amount)
|
||||||
stunned = max(stunned + amount,0)
|
if(canstun)
|
||||||
|
stunned = max(stunned + amount,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/Weaken(amount)
|
/mob/proc/Weaken(amount)
|
||||||
weakened = max(max(weakened,amount),0)
|
if(canweaken)
|
||||||
|
weakened = max(max(weakened,amount),0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/SetWeakened(amount)
|
/mob/proc/SetWeakened(amount)
|
||||||
weakened = max(amount,0)
|
if(canweaken)
|
||||||
|
weakened = max(amount,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/AdjustWeakened(amount)
|
/mob/proc/AdjustWeakened(amount)
|
||||||
weakened = max(weakened + amount,0)
|
if(canweaken)
|
||||||
|
weakened = max(weakened + amount,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/Paralyse(amount)
|
/mob/proc/Paralyse(amount)
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
var/maxHealth = 100 //Living
|
var/maxHealth = 100 //Living
|
||||||
//Vars that should only be accessed via procs ++END
|
//Vars that should only be accessed via procs ++END
|
||||||
|
|
||||||
|
|
||||||
// var/uses_hud = 0
|
// var/uses_hud = 0
|
||||||
var/obj/screen/pain = null
|
var/obj/screen/pain = null
|
||||||
var/obj/screen/flash = null
|
var/obj/screen/flash = null
|
||||||
@@ -257,15 +258,6 @@
|
|||||||
var/halloss = 0
|
var/halloss = 0
|
||||||
var/hallucination = 0
|
var/hallucination = 0
|
||||||
|
|
||||||
// TG Porting Variables
|
|
||||||
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
|
|
||||||
var/nopush = 0 //Can they be shoved?
|
|
||||||
|
|
||||||
var/area/lastarea = null
|
|
||||||
|
|
||||||
var/digitalcamo = 0 // Can they be tracked by the AI?
|
|
||||||
|
|
||||||
/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
|
/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
|
||||||
through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
|
through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
|
||||||
the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
|
the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
|
||||||
@@ -279,6 +271,16 @@ 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/UI = 'screen1_old.dmi' // For changing the UI from preferences
|
||||||
|
|
||||||
// var/obj/effect/organstructure/organStructure = null //for dem organs
|
// 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
|
||||||
|
var/nopush = 0 //Can they be shoved?
|
||||||
|
|
||||||
|
var/area/lastarea = null
|
||||||
|
|
||||||
|
var/digitalcamo = 0 // Can they be tracked by the AI?
|
||||||
|
|
||||||
|
|
||||||
var/list/organs = list( ) //List of organs.
|
var/list/organs = list( ) //List of organs.
|
||||||
|
|
||||||
//Singularity wants you!
|
//Singularity wants you!
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 28 KiB |
Reference in New Issue
Block a user