mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 04:51:32 +01:00
Adds an universal object health system. (#21266)
https://www.youtube.com/watch?v=ZpUYjpKg9KY As per title. The goal is to add health to most objects in the game and thus allow them to be dynamically destructible, while also avoiding shitcode like each structure having its own snowflake health update proc. --------- Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it> Co-authored-by: Matt Atlas <liermattia@gmail.com> Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
This commit is contained in:
co-authored by
Matt Atlas
SleepyGemmy
parent
1d2871729f
commit
d5931c5ffe
@@ -2,7 +2,7 @@
|
||||
name = "Bot"
|
||||
accent = ACCENT_TTS
|
||||
health = 20
|
||||
maxHealth = 20
|
||||
maxhealth = 20
|
||||
icon = 'icons/mob/npc/aibots.dmi'
|
||||
layer = MOB_LAYER
|
||||
universal_speak = TRUE
|
||||
@@ -72,10 +72,10 @@
|
||||
|
||||
/mob/living/bot/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
else
|
||||
health = maxHealth - getFireLoss() - getBruteLoss()
|
||||
health = maxhealth - getFireLoss() - getBruteLoss()
|
||||
|
||||
/mob/living/bot/death()
|
||||
explode()
|
||||
@@ -117,9 +117,9 @@
|
||||
to_chat(user, SPAN_WARNING("You need to unlock the controls first."))
|
||||
return
|
||||
else if(attacking_item.tool_behaviour == TOOL_WELDER)
|
||||
if(health < maxHealth)
|
||||
if(health < maxhealth)
|
||||
if(open)
|
||||
health = min(maxHealth, health + 10)
|
||||
health = min(maxhealth, health + 10)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] repairs [src]."), SPAN_NOTICE("You repair [src]."))
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("You are unable to repair [src] with the maintenance panel closed."))
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon = 'icons/mob/npc/aibots.dmi'
|
||||
icon_state = "farmbot0"
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
req_one_access = list(ACCESS_HYDROPONICS, ACCESS_ROBOTICS, ACCESS_XENOBOTANY)
|
||||
|
||||
var/action = "" // Used to update icon
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "la_creatura"
|
||||
pass_flags = PASSTABLE
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
mob_size = 4
|
||||
|
||||
var/adult_form
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
holder_type = /obj/item/holder/diona
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/meat/dionanymph
|
||||
meat_amount = 2
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
max_stamina = -1
|
||||
pass_flags = PASSTABLE
|
||||
@@ -238,7 +238,7 @@
|
||||
DS = new/datum/dionastats()
|
||||
DS.max_energy = energy_duration * MLS
|
||||
DS.stored_energy = (DS.max_energy / 2)
|
||||
DS.max_health = maxHealth
|
||||
DS.max_health = maxhealth
|
||||
DS.pain_factor = (50 / dark_consciousness) / MLS
|
||||
DS.trauma_factor = (DS.max_health / dark_survival) / MLS
|
||||
DS.dionatype = DIONA_NYMPH
|
||||
@@ -250,7 +250,7 @@
|
||||
var/mob/living/carbon/human/H = gestalt
|
||||
if(!H.bad_internal_organs)
|
||||
return
|
||||
if(health < maxHealth)
|
||||
if(health < maxhealth)
|
||||
if (!(src in H.bad_internal_organs))
|
||||
H.bad_internal_organs.Add(src)
|
||||
else
|
||||
@@ -387,10 +387,10 @@
|
||||
/mob/living/carbon/alien/diona/adjustBruteLoss(var/amount)
|
||||
if (status_flags & GODMODE)
|
||||
return
|
||||
health = min(health - amount, maxHealth)
|
||||
health = min(health - amount, maxhealth)
|
||||
|
||||
/mob/living/carbon/alien/diona/getHalLoss()
|
||||
if(status_flags & GODMODE)
|
||||
return
|
||||
|
||||
return max((maxHealth - health), 0)
|
||||
return max((maxhealth - health), 0)
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
if (healths)
|
||||
if (stat != DEAD)
|
||||
switch((health - getHalLoss()) / maxHealth * 100) // Halloss should be factored in here for displaying
|
||||
switch((health - getHalLoss()) / maxhealth * 100) // Halloss should be factored in here for displaying
|
||||
if(100 to INFINITY)
|
||||
healths.icon_state = "health0"
|
||||
if(80 to 100)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
if(H && show_ssd && !client && !teleop)
|
||||
if(H.bg)
|
||||
visible_message(SPAN_DANGER("[src] is hit by [hitting_atom] waking [get_pronoun("him")] up!"))
|
||||
if(H.health / H.maxHealth < 0.5)
|
||||
if(H.health / H.maxhealth < 0.5)
|
||||
H.bg.awaken_impl(TRUE)
|
||||
sleeping = 0
|
||||
willfully_sleeping = FALSE
|
||||
@@ -52,7 +52,7 @@
|
||||
if(!hitting_projectile.do_not_log)
|
||||
visible_message(SPAN_DANGER("[hitting_projectile] hit [src] waking [get_pronoun("him")] up!"))
|
||||
|
||||
if(H.health / H.maxHealth < 0.5)
|
||||
if(H.health / H.maxhealth < 0.5)
|
||||
H.bg.awaken_impl(TRUE)
|
||||
sleeping = 0
|
||||
willfully_sleeping = FALSE
|
||||
@@ -79,7 +79,7 @@
|
||||
show_ssd = H.species.show_ssd
|
||||
if(H && show_ssd && !client && !teleop)
|
||||
if(H.bg)
|
||||
if(H.health / H.maxHealth < 0.5)
|
||||
if(H.health / H.maxhealth < 0.5)
|
||||
H.bg.awaken_impl(TRUE)
|
||||
sleeping = 0
|
||||
willfully_sleeping = FALSE
|
||||
|
||||
@@ -501,7 +501,7 @@ Lightstates:
|
||||
if (DS.dionatype == 0)
|
||||
return health
|
||||
else
|
||||
return health+(maxHealth*0.5)
|
||||
return health+(maxhealth*0.5)
|
||||
|
||||
/mob/living/carbon/proc/get_dionastats()
|
||||
return
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
victim.calculate_composition()
|
||||
var/dam_multiplier = 1
|
||||
|
||||
var/victim_maxhealth = victim.maxHealth //We cache this here in case we need to edit it.
|
||||
var/victim_maxhealth = victim.maxhealth //We cache this here in case we need to edit it.
|
||||
|
||||
var/damage_dealt = victim_maxhealth * PEPB * dam_multiplier
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ Nymphs have 100 health, so without armor there is a small possibility for each n
|
||||
var/MLS = (1.5 / 2.1)
|
||||
DS = new/datum/dionastats()
|
||||
DS.max_energy = energy_duration * MLS
|
||||
DS.max_health = maxHealth*2
|
||||
DS.max_health = maxhealth*2
|
||||
DS.stored_energy = DS.max_energy
|
||||
DS.pain_factor = (100 / dark_consciousness) / MLS
|
||||
DS.trauma_factor = (DS.max_health / dark_survival) / MLS
|
||||
@@ -329,10 +329,10 @@ Nymphs have 100 health, so without armor there is a small possibility for each n
|
||||
bestNymph = D
|
||||
nymphos += D
|
||||
D.forceMove(T)
|
||||
if(gestalt_health >= D.maxHealth * 0.20)
|
||||
if(gestalt_health >= D.maxhealth * 0.20)
|
||||
D.health = gestalt_health
|
||||
else
|
||||
D.health = D.maxHealth * 0.20
|
||||
D.health = D.maxhealth * 0.20
|
||||
D.split_languages(src)
|
||||
D.set_dir(pick(NORTH, SOUTH, EAST, WEST))
|
||||
D.gestalt = null
|
||||
|
||||
@@ -99,6 +99,6 @@ Exercise Verbs
|
||||
stamina_loss += 2
|
||||
if(on_knees)
|
||||
stamina_loss -= 2
|
||||
if(health <= ((maxHealth / 10) * 9))
|
||||
if(health <= ((maxhealth / 10) * 9))
|
||||
stamina_loss += 2
|
||||
return max(stamina_loss, 1)
|
||||
|
||||
@@ -1284,8 +1284,8 @@
|
||||
/mob/living/carbon/human/succumb()
|
||||
set hidden = TRUE
|
||||
|
||||
if(shock_stage > 50 && (maxHealth * 0.6) > get_total_health())
|
||||
adjustBrainLoss(health + maxHealth * 2) // Deal 2x health in BrainLoss damage, as before but variable.
|
||||
if(shock_stage > 50 && (maxhealth * 0.6) > get_total_health())
|
||||
adjustBrainLoss(health + maxhealth * 2) // Deal 2x health in BrainLoss damage, as before but variable.
|
||||
to_chat(src, SPAN_NOTICE("You have given up life and succumbed to death."))
|
||||
else
|
||||
to_chat(src, SPAN_WARNING("You are not injured enough to succumb to death!"))
|
||||
@@ -1556,8 +1556,8 @@
|
||||
|
||||
species.handle_post_spawn(src,kpg) // should be zero by default
|
||||
|
||||
maxHealth = species.total_health
|
||||
health = maxHealth
|
||||
maxhealth = species.total_health
|
||||
health = maxhealth
|
||||
|
||||
regenerate_icons()
|
||||
if (vessel)
|
||||
@@ -2102,7 +2102,7 @@
|
||||
|
||||
//Point at which you dun breathe no more. Separate from asystole crit, which is heart-related.
|
||||
/mob/living/carbon/human/nervous_system_failure()
|
||||
return getBrainLoss() >= maxHealth * 0.75
|
||||
return getBrainLoss() >= maxhealth * 0.75
|
||||
|
||||
// Check if we should die.
|
||||
/mob/living/carbon/human/proc/handle_death_check()
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
return ..()
|
||||
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
return
|
||||
|
||||
health = maxHealth - getBrainLoss()
|
||||
health = maxhealth - getBrainLoss()
|
||||
|
||||
if(stat == DEAD)
|
||||
var/genetic_damage = getCloneLoss()
|
||||
@@ -17,15 +17,15 @@
|
||||
ChangeToSkeleton(FALSE)
|
||||
else
|
||||
var/fire_dmg = getFireLoss()
|
||||
if(fire_dmg > maxHealth * 3)
|
||||
if(fire_dmg > maxhealth * 3)
|
||||
ChangeToSkeleton(FALSE)
|
||||
else if(fire_dmg > maxHealth * 1.5)
|
||||
else if(fire_dmg > maxhealth * 1.5)
|
||||
ChangeToHusk()
|
||||
|
||||
UpdateDamageIcon() // to fix that darn overlay bug
|
||||
|
||||
/mob/living/carbon/human/proc/get_total_health()
|
||||
var/amount = maxHealth - getFireLoss() - getBruteLoss() - getOxyLoss() - getToxLoss() - getBrainLoss()
|
||||
var/amount = maxhealth - getFireLoss() - getBruteLoss() - getOxyLoss() - getToxLoss() - getBrainLoss()
|
||||
return amount
|
||||
|
||||
/mob/living/carbon/human/adjustBrainLoss(var/amount)
|
||||
@@ -164,7 +164,7 @@
|
||||
breathe_organ = internal_organs_by_name[species.breathing_organ]
|
||||
|
||||
if(!breathe_organ)
|
||||
return maxHealth/2
|
||||
return maxhealth/2
|
||||
return breathe_organ.get_oxygen_deprivation()
|
||||
|
||||
/mob/living/carbon/human/setOxyLoss(var/amount)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
if(embedded_flag)
|
||||
handle_embedded_objects() //Moving with objects stuck in you can cause bad times.
|
||||
|
||||
var/health_deficiency = maxHealth - health
|
||||
var/health_deficiency = maxhealth - health
|
||||
if(health_deficiency >= 40)
|
||||
tally += (health_deficiency / 25)
|
||||
|
||||
|
||||
@@ -877,10 +877,10 @@
|
||||
return
|
||||
|
||||
if(stat != DEAD)
|
||||
if((stat == UNCONSCIOUS && health < maxHealth / 2) || paralysis || InStasis())
|
||||
if((stat == UNCONSCIOUS && health < maxhealth / 2) || paralysis || InStasis())
|
||||
//Critical damage passage overlay
|
||||
var/severity = 0
|
||||
switch(health - maxHealth/2)
|
||||
switch(health - maxhealth/2)
|
||||
if(-20 to -10) severity = 1
|
||||
if(-30 to -20) severity = 2
|
||||
if(-40 to -30) severity = 3
|
||||
@@ -1267,7 +1267,7 @@
|
||||
Paralyse(3)
|
||||
return
|
||||
if(!can_feel_pain())
|
||||
if(isSynthetic() &&(get_total_health() < maxHealth * 0.5))
|
||||
if(isSynthetic() &&(get_total_health() < maxhealth * 0.5))
|
||||
stuttering = max(stuttering, 5)
|
||||
return
|
||||
|
||||
|
||||
@@ -511,7 +511,7 @@
|
||||
if(target.reagents)
|
||||
target.reagents.add_reagent(/singleton/reagent/toxin/hylemnomil, min(10, ZOMBIE_MAX_HYLEMNOMIL - hylemnomil_amount))
|
||||
|
||||
if (target.getBruteLoss() > target.maxHealth * 3)
|
||||
if (target.getBruteLoss() > target.maxhealth * 3)
|
||||
if (target.stat != DEAD)
|
||||
to_chat(src,SPAN_WARNING("You've scraped \the [target] down to the bones already!."))
|
||||
else
|
||||
@@ -539,7 +539,7 @@
|
||||
|
||||
playsound(loc, 'sound/effects/splat.ogg', 20, 1)
|
||||
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src), target.get_blood_color())
|
||||
if (target.getBruteLoss() > target.maxHealth*0.75)
|
||||
if (target.getBruteLoss() > target.maxhealth*0.75)
|
||||
if (prob(50))
|
||||
gibs(get_turf(src), target.dna)
|
||||
src.visible_message(SPAN_DANGER("\The [src] tears out \the [target]'s insides!"))
|
||||
|
||||
@@ -197,7 +197,7 @@ They are very slow, reasonably strong, and quite durable. They also require ligh
|
||||
H.adjustHalLoss(cost*0.3)
|
||||
H.updatehealth()
|
||||
|
||||
if(H.getHalLoss() > (H.maxHealth*0.6))
|
||||
if(H.getHalLoss() > (H.maxhealth*0.6))
|
||||
var/shock = H.get_shock()
|
||||
if(prob(shock * 2))
|
||||
to_chat(H, SPAN_DANGER("You feel a sharp pain in your nervous system! You can't run anymore, or you might die!"))
|
||||
|
||||
@@ -691,7 +691,7 @@ GLOBAL_LIST_INIT(golem_types, list(
|
||||
glassify(H)
|
||||
return
|
||||
|
||||
if(H.getFireLoss() >= (H.health - H.maxHealth)) //if the sand golem suffered enough burn damage it turns into a glass one
|
||||
if(H.getFireLoss() >= (H.health - H.maxhealth)) //if the sand golem suffered enough burn damage it turns into a glass one
|
||||
glassify(H)
|
||||
return
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
M.mutation_chance = clamp(mutation_chance + rand(-3, 3), 0, 100)
|
||||
step_away(M, src)
|
||||
is_adult = FALSE
|
||||
maxHealth = 150
|
||||
maxhealth = 150
|
||||
revive()
|
||||
if(!client)
|
||||
rabid = TRUE
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
src.blinded = null
|
||||
|
||||
health = maxHealth - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
|
||||
health = maxhealth - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
|
||||
|
||||
if(health < 0 && stat != DEAD)
|
||||
death()
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
return "This subject is too far away..."
|
||||
if(ishuman(M) && !istype(M, /mob/living/carbon/human/monkey) && content) // don't eat humans while content
|
||||
return "I'm already content..."
|
||||
if(istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.maxHealth * 2 || istype(M, /mob/living/simple_animal) && M.stat == DEAD)
|
||||
if(istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.maxhealth * 2 || istype(M, /mob/living/simple_animal) && M.stat == DEAD)
|
||||
return "This subject does not have any edible life energy..."
|
||||
if(istype(M, /mob/living/carbon))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -123,8 +123,8 @@
|
||||
if(amount_grown >= 5)
|
||||
is_adult = TRUE
|
||||
mob_size = 6 // Adult slimes are bigger
|
||||
maxHealth = 200
|
||||
health = maxHealth
|
||||
maxhealth = 200
|
||||
health = maxhealth
|
||||
amount_grown = 0
|
||||
regenerate_icons()
|
||||
name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
mob_size = 4
|
||||
composition_reagent = /singleton/reagent/slimejelly
|
||||
layer = MOB_LAYER
|
||||
maxHealth = 150
|
||||
maxhealth = 150
|
||||
health = 150
|
||||
gender = NEUTER
|
||||
accent = ACCENT_BLUESPACE
|
||||
@@ -156,7 +156,7 @@
|
||||
return toxloss
|
||||
|
||||
/mob/living/carbon/slime/adjustToxLoss(var/amount)
|
||||
toxloss = clamp(toxloss + amount, 0, maxHealth)
|
||||
toxloss = clamp(toxloss + amount, 0, maxhealth)
|
||||
|
||||
/mob/living/carbon/slime/setToxLoss(var/amount)
|
||||
adjustToxLoss(amount-getToxLoss())
|
||||
@@ -167,7 +167,7 @@
|
||||
|
||||
var/tally = 0
|
||||
|
||||
var/health_deficiency = (maxHealth - health)
|
||||
var/health_deficiency = (maxhealth - health)
|
||||
if(health_deficiency >= 30)
|
||||
tally += (health_deficiency / 25)
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
/mob/living/carbon/slime/get_status_tab_items()
|
||||
. = ..()
|
||||
|
||||
. += "Health: [round((health / maxHealth) * 100)]%"
|
||||
. += "Health: [round((health / maxhealth) * 100)]%"
|
||||
. += "Intent: [a_intent]"
|
||||
|
||||
if(client.statpanel == "Status")
|
||||
|
||||
@@ -223,8 +223,8 @@ default behaviour is:
|
||||
|
||||
/mob/living/verb/succumb()
|
||||
set hidden = 1
|
||||
if(health < maxHealth / 3)
|
||||
adjustBrainLoss(health + maxHealth * 2) // Deal 2x health in BrainLoss damage, as before but variable.
|
||||
if(health < maxhealth / 3)
|
||||
adjustBrainLoss(health + maxhealth * 2) // Deal 2x health in BrainLoss damage, as before but variable.
|
||||
to_chat(src, SPAN_NOTICE("You have given up life and succumbed to death."))
|
||||
else
|
||||
to_chat(src, SPAN_WARNING("You are not injured enough to succumb to death!"))
|
||||
@@ -232,10 +232,10 @@ default behaviour is:
|
||||
|
||||
/mob/living/proc/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
else
|
||||
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss()
|
||||
health = maxhealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss()
|
||||
|
||||
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
|
||||
//affects them once clothing is factored in. ~Errorage
|
||||
@@ -280,12 +280,12 @@ default behaviour is:
|
||||
// I touched them without asking... I'm soooo edgy ~Erro (added nodamage checks)
|
||||
|
||||
/mob/living/proc/getBruteLoss()
|
||||
return maxHealth - health
|
||||
return maxhealth - health
|
||||
|
||||
/mob/living/proc/adjustBruteLoss(var/amount)
|
||||
if(status_flags & GODMODE)
|
||||
return
|
||||
health = clamp(health - amount, 0, maxHealth)
|
||||
health = clamp(health - amount, 0, maxhealth)
|
||||
|
||||
/mob/living/proc/getOxyLoss()
|
||||
return 0
|
||||
@@ -345,10 +345,10 @@ default behaviour is:
|
||||
adjustBruteLoss((amount * 0.5)-getBruteLoss())
|
||||
|
||||
/mob/living/proc/getMaxHealth()
|
||||
return maxHealth
|
||||
return maxhealth
|
||||
|
||||
/mob/living/proc/setMaxHealth(var/newMaxHealth)
|
||||
maxHealth = newMaxHealth
|
||||
maxhealth = newMaxHealth
|
||||
|
||||
// ++++ROCKDTBEN++++ MOB PROCS //END
|
||||
|
||||
@@ -704,7 +704,7 @@ default behaviour is:
|
||||
/mob/living/proc/escape_inventory(obj/item/holder/H)
|
||||
if(H != src.loc)
|
||||
return
|
||||
if(health < maxHealth * 0.6)
|
||||
if(health < maxhealth * 0.6)
|
||||
to_chat(src, SPAN_WARNING("You're too injured to escape..."))
|
||||
return
|
||||
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
/mob/living
|
||||
health = 100
|
||||
maxhealth = 100
|
||||
see_invisible = SEE_INVISIBLE_LIVING
|
||||
|
||||
//Health and life related vars
|
||||
/// Maximum health that should be possible.
|
||||
var/maxHealth = 100
|
||||
/// A mob's current health
|
||||
var/health = 100
|
||||
|
||||
var/hud_updateflag = 0
|
||||
|
||||
// Virtual Reality
|
||||
|
||||
@@ -283,7 +283,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
|
||||
/mob/living/silicon/ai/adjustOxyLoss(var/amount)
|
||||
if(status_flags & GODMODE)
|
||||
return
|
||||
oxyloss = max(0, oxyloss + min(amount, maxHealth - oxyloss))
|
||||
oxyloss = max(0, oxyloss + min(amount, maxhealth - oxyloss))
|
||||
|
||||
/mob/living/silicon/ai/setFireLoss(var/amount)
|
||||
if(status_flags & GODMODE)
|
||||
@@ -299,11 +299,11 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
|
||||
|
||||
/mob/living/silicon/ai/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
setOxyLoss(0)
|
||||
else
|
||||
health = maxHealth - getFireLoss() - getBruteLoss() // Oxyloss is not part of health as it represents AIs backup power. AI is immune against ToxLoss as it is machine.
|
||||
health = maxhealth - getFireLoss() - getBruteLoss() // Oxyloss is not part of health as it represents AIs backup power. AI is immune against ToxLoss as it is machine.
|
||||
|
||||
/mob/living/silicon/ai/proc/setup_icon()
|
||||
var/datum/custom_synth/sprite = null
|
||||
|
||||
@@ -102,11 +102,11 @@
|
||||
|
||||
// Returns percentage of AI's remaining backup capacitor charge (maxhealth - oxyloss).
|
||||
/mob/living/silicon/ai/proc/backup_capacitor()
|
||||
return ((getOxyLoss() - maxHealth) / maxHealth) * -100
|
||||
return ((getOxyLoss() - maxhealth) / maxhealth) * -100
|
||||
|
||||
// Returns percentage of AI's remaining hardware integrity (maxhealth - (bruteloss + fireloss))
|
||||
/mob/living/silicon/ai/proc/hardware_integrity()
|
||||
return (health / maxHealth) * 100
|
||||
return (health / maxhealth) * 100
|
||||
|
||||
// Shows AI Malfunction related information to the AI.
|
||||
/mob/living/silicon/ai/show_malf_ai()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/mob/living/silicon/decoy/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
else
|
||||
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||
health = maxhealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
/mob/living/silicon/pai/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
else
|
||||
health = maxHealth - getBruteLoss() - getFireLoss()
|
||||
health = maxhealth - getBruteLoss() - getFireLoss()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
gender = NEUTER
|
||||
|
||||
// Health
|
||||
maxHealth = 35
|
||||
maxhealth = 35
|
||||
health = 35
|
||||
|
||||
// Components
|
||||
@@ -227,7 +227,7 @@
|
||||
module_type = /obj/item/robot_module/drone/construction/matriarch
|
||||
law_type = /datum/ai_laws/matriarch_drone
|
||||
can_swipe = FALSE
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
|
||||
var/matrix_tag
|
||||
@@ -356,7 +356,7 @@
|
||||
to_chat(user, SPAN_WARNING("\The [src] doesn't have an ID swipe interface."))
|
||||
return
|
||||
if(stat == DEAD)
|
||||
if(!GLOB.config.allow_drone_spawn || emagged || health < -maxHealth) //It's dead, Dave.
|
||||
if(!GLOB.config.allow_drone_spawn || emagged || health < -maxhealth) //It's dead, Dave.
|
||||
to_chat(user, SPAN_WARNING("The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one."))
|
||||
return
|
||||
if(!allowed(usr))
|
||||
@@ -454,17 +454,17 @@
|
||||
//For some goddamn reason robots have this hardcoded. Redefining it for our fragile friends here.
|
||||
/mob/living/silicon/robot/drone/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
return
|
||||
health = maxHealth - (getBruteLoss() + getFireLoss())
|
||||
health = maxhealth - (getBruteLoss() + getFireLoss())
|
||||
return
|
||||
|
||||
//Easiest to check this here, then check again in the robot proc.
|
||||
//Standard robots use config for crit, which is somewhat excessive for these guys.
|
||||
//Drones killed by damage will gib.
|
||||
/mob/living/silicon/robot/drone/handle_regular_status_updates()
|
||||
if(health <= -maxHealth && src.stat != DEAD)
|
||||
if(health <= -maxhealth && src.stat != DEAD)
|
||||
gib()
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -80,7 +80,7 @@ GLOBAL_LIST_EMPTY(drone_matrices)
|
||||
if(MTX_UPG_CELL)
|
||||
D.cell.maxcharge = D.cell.maxcharge * 1.5
|
||||
if(MTX_UPG_HEALTH)
|
||||
D.maxHealth += 15
|
||||
D.maxhealth += 15
|
||||
LAZYADD(D.matrix_upgrades, upgrade_type)
|
||||
|
||||
/proc/assign_drone_to_matrix(mob/living/silicon/robot/drone/D, var/matrix_tag)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
var/wires_exposed = FALSE
|
||||
|
||||
// Health and interaction
|
||||
maxHealth = 200
|
||||
maxhealth = 200
|
||||
health = 200
|
||||
mob_size = 16 //robots are heavy
|
||||
mob_bump_flag = ROBOT
|
||||
@@ -1221,7 +1221,7 @@
|
||||
|
||||
/mob/living/silicon/robot/succumb()
|
||||
set hidden = TRUE
|
||||
if(health < maxHealth / 3)
|
||||
if(health < maxhealth / 3)
|
||||
death()
|
||||
to_chat(src, SPAN_NOTICE("You have given up life and succumbed to death."))
|
||||
else
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/mob/living/silicon/robot/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
set_stat(CONSCIOUS)
|
||||
return
|
||||
health = maxHealth - (getBruteLoss() + getFireLoss())
|
||||
health = maxhealth - (getBruteLoss() + getFireLoss())
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/getBruteLoss()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
. = TRUE
|
||||
message = Gibberish(message, C.max_damage / C.get_damage())
|
||||
else
|
||||
var/damaged = 100 - (clamp(health, 0, maxHealth) / maxHealth) * 100
|
||||
var/damaged = 100 - (clamp(health, 0, maxhealth) / maxhealth) * 100
|
||||
if(damaged > 40)
|
||||
. = TRUE
|
||||
message = Gibberish(message, damaged - 10)
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
. += ""
|
||||
|
||||
if(!stat)
|
||||
. += "System Integrity: [round((health/maxHealth)*100)]%"
|
||||
. += "System Integrity: [round((health/maxhealth)*100)]%"
|
||||
else
|
||||
. += "System Integrity: NON-FUNCTIONAL"
|
||||
show_malf_ai()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_dead = "bees1"
|
||||
mob_size = 0.5
|
||||
unsuitable_atoms_damage = 2.5
|
||||
maxHealth = 20
|
||||
maxhealth = 20
|
||||
density = 0
|
||||
var/strength = 1
|
||||
var/feral = 0
|
||||
@@ -51,7 +51,7 @@
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
if (prob(25))//probability to reduce spam
|
||||
src.visible_message(SPAN_WARNING("The bee swarm starts to thin out a little."))
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/bee/beegun
|
||||
maxHealth = 30
|
||||
maxhealth = 30
|
||||
strength = 5
|
||||
feral = 30
|
||||
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
a_intent = I_HURT
|
||||
stop_automated_movement = 1
|
||||
status_flags = CANPUSH
|
||||
attacktext = "nipped"
|
||||
attacktext = "nips"
|
||||
friendly = "prods"
|
||||
wander = 0
|
||||
maxHealth = 40
|
||||
maxhealth = 40
|
||||
health = 40
|
||||
pass_flags = PASSTABLE
|
||||
universal_understand = TRUE
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "artificer"
|
||||
icon_living = "artificer"
|
||||
maxHealth = 250 // Was undertuned prior to our damage numbers
|
||||
maxhealth = 250 // Was undertuned prior to our damage numbers
|
||||
health_prefix = "artificer"
|
||||
response_harm = "viciously beaten"
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
armor_penetration = 20
|
||||
attacktext = "rammed"
|
||||
attacktext = "rams"
|
||||
organ_names = list("core", "production array", "sensor array")
|
||||
speed = 0
|
||||
environment_smash = TRUE
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
adjustFireLoss(-5)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] mends some of \the [src]'s wounds."))
|
||||
else
|
||||
if (health < maxHealth)
|
||||
if (health < maxhealth)
|
||||
to_chat(user, SPAN_NOTICE("Healing \the [src] any further is beyond your abilities."))
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("\The [src] is undamaged."))
|
||||
@@ -107,8 +107,8 @@
|
||||
|
||||
/mob/living/simple_animal/construct/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(health < maxHealth)
|
||||
if(health >= maxHealth / 2)
|
||||
if(health < maxhealth)
|
||||
if(health >= maxhealth / 2)
|
||||
. += SPAN_WARNING("It looks slightly dented.")
|
||||
else
|
||||
. += SPAN_WARNING("It looks severely dented!")
|
||||
@@ -149,7 +149,7 @@
|
||||
silence_spells(purge)
|
||||
|
||||
if(healths)
|
||||
var/health_percent = (health / maxHealth) * 100
|
||||
var/health_percent = (health / maxhealth) * 100
|
||||
var/newstate = 0
|
||||
switch(health_percent)
|
||||
if(84 to INFINITY)
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "harvester"
|
||||
icon_living = "harvester"
|
||||
maxHealth = 300
|
||||
maxhealth = 300
|
||||
health_prefix = "harvester"
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
armor_penetration = 60
|
||||
attacktext = "violently stabbed"
|
||||
attacktext = "violently stabs"
|
||||
organ_names = list("core", "harvesting array")
|
||||
speed = -1
|
||||
environment_smash = 1
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "behemoth"
|
||||
icon_living = "behemoth"
|
||||
maxHealth = 350 // Slow, melee only and can't sprint. So needs to be a beefcake.
|
||||
maxhealth = 350 // Slow, melee only and can't sprint. So needs to be a beefcake.
|
||||
health_prefix = "juggernaut"
|
||||
response_harm = "harmlessly punches"
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
armor_penetration = 40
|
||||
attacktext = "smashed their armored gauntlet into"
|
||||
attacktext = "smashes their armored gauntlet into"
|
||||
organ_names = list("core", "right arm", "left arm")
|
||||
mob_size = MOB_LARGE
|
||||
speed = 3
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "floating"
|
||||
icon_living = "floating"
|
||||
maxHealth = 250
|
||||
maxhealth = 250
|
||||
health_prefix = "wraith"
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
attacktext = "slashed"
|
||||
attacktext = "slashes"
|
||||
organ_names = list("core", "right arm", "left arm")
|
||||
speed = -1
|
||||
environment_smash = TRUE
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
T.forceMove(src) //put shade in stone
|
||||
T.status_flags |= GODMODE
|
||||
T.canmove = 0
|
||||
T.health = T.maxHealth
|
||||
T.health = T.maxhealth
|
||||
src.icon_state = "soulstone2"
|
||||
|
||||
to_chat(T, "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form")
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
canbrush = TRUE
|
||||
faction = "Adhomai"
|
||||
gender = FEMALE
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
mob_size = 5
|
||||
var/eggsleft = 0
|
||||
@@ -63,7 +63,7 @@
|
||||
icon_state = "tunneler_baby"
|
||||
icon_living = "tunneler_baby"
|
||||
icon_dead = "tunneler_baby_dead"
|
||||
maxHealth = 10
|
||||
maxhealth = 10
|
||||
health = 10
|
||||
mob_size = 2
|
||||
meat_amount = 1
|
||||
@@ -85,9 +85,9 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
health = 200
|
||||
maxHealth = 200
|
||||
maxhealth = 200
|
||||
mob_size = 15
|
||||
|
||||
canbrush = TRUE
|
||||
@@ -124,13 +124,13 @@
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/meat/adhomai
|
||||
organ_names = list("head", "chest", "right fore leg", "left fore leg", "right rear leg", "left rear leg")
|
||||
|
||||
maxHealth = 150
|
||||
maxhealth = 150
|
||||
health = 150
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
armor_penetration = 20
|
||||
attacktext = "gored"
|
||||
attacktext = "gores"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
hostile_nameable = TRUE
|
||||
@@ -151,7 +151,7 @@
|
||||
icon_living = "rafama_baby"
|
||||
icon_dead = "rafama_baby_dead"
|
||||
gender = MALE
|
||||
maxHealth = 30
|
||||
maxhealth = 30
|
||||
health = 30
|
||||
mob_size = 5
|
||||
melee_damage_lower = 5
|
||||
@@ -169,7 +169,7 @@
|
||||
meat_amount = 1
|
||||
organ_names = list("thorax", "legs", "head")
|
||||
faction = "Adhomai"
|
||||
maxHealth = 20
|
||||
maxhealth = 20
|
||||
health = 20
|
||||
mob_size = 3
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
organ_names = list("shell", "tentacles")
|
||||
faction = "Adhomai"
|
||||
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
mob_size = 3
|
||||
pixel_x = -8
|
||||
@@ -272,13 +272,13 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/meat/adhomai
|
||||
|
||||
faction = "Adhomai"
|
||||
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
mob_size = 12
|
||||
pixel_x = -8
|
||||
@@ -318,7 +318,7 @@
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/meat/adhomai
|
||||
organ_names = list("head", "chest", "right fore leg", "left fore leg", "right rear leg", "left rear leg")
|
||||
|
||||
maxHealth = 150
|
||||
maxhealth = 150
|
||||
health = 150
|
||||
|
||||
butchering_products = list(/obj/item/stack/material/animalhide = 10)
|
||||
@@ -343,9 +343,9 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
health = 450
|
||||
maxHealth = 452
|
||||
maxhealth = 452
|
||||
mob_size = 30
|
||||
|
||||
pixel_x = -32
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "cosmozoan"
|
||||
icon_living = "cosmozoan"
|
||||
icon_dead = "cosmozoan_dead"
|
||||
maxHealth = 15
|
||||
maxhealth = 15
|
||||
health = 15
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/fish/cosmozoan
|
||||
meat_amount = 2
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
faction = "goat"
|
||||
attacktext = "kicked"
|
||||
maxHealth = 40
|
||||
attacktext = "kicks"
|
||||
maxhealth = 40
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 5
|
||||
udder = null
|
||||
@@ -94,7 +94,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
health = 250
|
||||
mob_size = 20//based on mass of holstein fresian dairy cattle, what the sprite is based on
|
||||
emote_sounds = list('sound/effects/creatures/cow.ogg')
|
||||
@@ -140,7 +140,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
health = 120
|
||||
emote_sounds = list('sound/effects/creatures/pigsnort.ogg')
|
||||
butchering_products = list(/obj/item/stack/material/animalhide/barehide = 6)
|
||||
@@ -166,8 +166,8 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
maxHealth = 1
|
||||
attacktext = "kicks"
|
||||
maxhealth = 1
|
||||
var/amount_grown = 0
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
holder_type = /obj/item/holder/chick
|
||||
@@ -214,8 +214,8 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
maxHealth = 10
|
||||
attacktext = "kicks"
|
||||
maxhealth = 10
|
||||
var/eggsleft = 0
|
||||
var/body_color
|
||||
pass_flags = PASSTABLE
|
||||
@@ -302,7 +302,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "bops"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
mob_size = 2
|
||||
|
||||
/mob/living/simple_animal/penguin/baby
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
health = 250
|
||||
maxHealth = 250
|
||||
maxhealth = 250
|
||||
canbrush = TRUE
|
||||
brush = /obj/item/reagent_containers/glass/rag
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_dead = "lizard_dead"
|
||||
speak_emote = list("hisses")
|
||||
health = 5
|
||||
maxHealth = 5
|
||||
maxhealth = 5
|
||||
attacktext = "bitten"
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 2
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
faction = "Moghes"
|
||||
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
mob_size = 12
|
||||
pixel_x = -15
|
||||
@@ -61,10 +61,10 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "gored"
|
||||
attacktext = "gores"
|
||||
faction = "Moghes"
|
||||
|
||||
maxHealth = 200
|
||||
maxhealth = 200
|
||||
health = 200
|
||||
mob_size = 16
|
||||
pixel_x = -14
|
||||
@@ -109,7 +109,7 @@
|
||||
icon_state = "otzek"
|
||||
icon_living = "otzek"
|
||||
icon_dead = "otzek-dead"
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
health = 80
|
||||
mob_size = 10
|
||||
speak_emote = list("chuffs", "hisses", "bellows")
|
||||
@@ -123,7 +123,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
attacktext = "kicked"
|
||||
attacktext = "kicks"
|
||||
canbrush = TRUE
|
||||
brush = /obj/item/reagent_containers/glass/rag
|
||||
speed = -1
|
||||
@@ -141,7 +141,7 @@
|
||||
icon_living = "miervesh-1"
|
||||
icon_dead = "miervesh-1-dead"
|
||||
speed = -2
|
||||
maxHealth = 30
|
||||
maxhealth = 30
|
||||
health = 30
|
||||
speak_emote = list("chirps", "hisses", "croons")
|
||||
emote_hear = list("chirps", "hisses", "croons")
|
||||
@@ -154,7 +154,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "swats"
|
||||
attacktext = "swatted"
|
||||
attacktext = "swats"
|
||||
flying = TRUE
|
||||
butchering_products = list(/obj/item/stack/material/animalhide = 1)
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/meat/moghes
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
mob_size = MOB_TINY
|
||||
speak_chance = 0
|
||||
turns_per_move = 1
|
||||
maxHealth = 5
|
||||
maxhealth = 5
|
||||
health = 5
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/hugemushroomslice
|
||||
organ_names = list("cap", "chest", "left leg", "right leg")
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
pass_flags = PASSTABLE
|
||||
speak_chance = 3
|
||||
turns_per_move = 5
|
||||
maxHealth = 5
|
||||
maxhealth = 5
|
||||
health = 5
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/meat/rat
|
||||
organ_names = list("head", "chest", "right fore leg", "left fore leg", "right rear leg", "left rear leg")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
to_chat(R, message)
|
||||
|
||||
/mob/living/simple_animal/rat/king
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
a_intent = "harm"
|
||||
|
||||
icon_state = "rat_gray"
|
||||
@@ -74,10 +74,10 @@
|
||||
swarm_name = "creation"
|
||||
announce_name = "commandment"
|
||||
desc = "A titanic swarm of rats."
|
||||
attacktext = "swarmed"
|
||||
attacktext = "swarm"
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
maxHealth = 260
|
||||
maxhealth = 260
|
||||
health = 260
|
||||
mob_size = 10
|
||||
universal_speak = 1
|
||||
@@ -86,10 +86,10 @@
|
||||
swarm_name = "flock"
|
||||
announce_name = "pronouncement"
|
||||
desc = "A massive swarm of rats."
|
||||
attacktext = "swarmed"
|
||||
attacktext = "swarm"
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
maxHealth = 160
|
||||
maxhealth = 160
|
||||
health = 160
|
||||
mob_size = 9
|
||||
else if(rats.len >= RAT_EMPEROR_LEVEL)
|
||||
@@ -97,10 +97,10 @@
|
||||
swarm_name = "empire"
|
||||
announce_name = "command"
|
||||
desc = "A large swarm of rats."
|
||||
attacktext = "swarmed"
|
||||
attacktext = "swarm"
|
||||
melee_damage_lower = 7
|
||||
melee_damage_upper = 5
|
||||
maxHealth = 110
|
||||
maxhealth = 110
|
||||
health = 110
|
||||
mob_size = 8
|
||||
else if(rats.len >= RAT_KING_LEVEL)
|
||||
@@ -108,10 +108,10 @@
|
||||
swarm_name = "kingdom"
|
||||
announce_name = "decree"
|
||||
desc = "A big swarm of rats."
|
||||
attacktext = "swarmed"
|
||||
attacktext = "swarm"
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
maxHealth = 60
|
||||
maxhealth = 60
|
||||
health = 60
|
||||
mob_size = 7
|
||||
else if(rats.len >= RAT_DUKE_LEVEL)
|
||||
@@ -119,8 +119,8 @@
|
||||
swarm_name = "duchy"
|
||||
announce_name = "decree"
|
||||
desc = "A swarm of rats."
|
||||
attacktext = "bitten"
|
||||
maxHealth = 35
|
||||
attacktext = "bites"
|
||||
maxhealth = 35
|
||||
health = 35
|
||||
mob_size = 6
|
||||
else if(rats.len >= RAT_BARON_LEVEL)
|
||||
@@ -128,8 +128,8 @@
|
||||
swarm_name = "barony"
|
||||
announce_name = "decree"
|
||||
desc = "A group of rats."
|
||||
attacktext = "bitten"
|
||||
maxHealth = 25
|
||||
attacktext = "bites"
|
||||
maxhealth = 25
|
||||
health = 25
|
||||
mob_size = 4
|
||||
else if(rats.len >= RAT_MAYOR_LEVEL)
|
||||
@@ -137,8 +137,8 @@
|
||||
swarm_name = "hamlet"
|
||||
announce_name = "decree"
|
||||
desc = "A couple of rats."
|
||||
attacktext = "bitten"
|
||||
maxHealth = 15
|
||||
attacktext = "bites"
|
||||
maxhealth = 15
|
||||
health = 15
|
||||
mob_size = 3
|
||||
else
|
||||
@@ -146,8 +146,8 @@
|
||||
swarm_name = "peasentry"
|
||||
announce_name = "request"
|
||||
desc = "A single rat. This one seems special."
|
||||
attacktext = "scratched"
|
||||
maxHealth = 10
|
||||
attacktext = "scratches"
|
||||
maxhealth = 10
|
||||
health = 10
|
||||
mob_size = 2
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
hunger_enabled = TRUE
|
||||
canbrush = TRUE
|
||||
|
||||
maxHealth = 30
|
||||
maxhealth = 30
|
||||
health = 30
|
||||
|
||||
can_be_milked = TRUE
|
||||
@@ -146,7 +146,7 @@
|
||||
current_size = BABY_SCHLORRGO
|
||||
max_nutrition = 100
|
||||
nutrition_threshold = 80
|
||||
maxHealth = 30
|
||||
maxhealth = 30
|
||||
health = 30
|
||||
mob_size = MOB_TINY
|
||||
meat_amount = 1
|
||||
@@ -163,7 +163,7 @@
|
||||
current_size = NORMAL_SCHLORRGO
|
||||
max_nutrition = 200
|
||||
nutrition_threshold = 150
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
mob_size = MOB_SMALL
|
||||
meat_amount = 3
|
||||
@@ -180,7 +180,7 @@
|
||||
current_size = FAT_SCHLORRGO
|
||||
max_nutrition = 400
|
||||
nutrition_threshold = 300
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
mob_size = MOB_MEDIUM
|
||||
meat_amount = 6
|
||||
@@ -198,7 +198,7 @@
|
||||
current_size = WIDE_SCHLORRGO
|
||||
max_nutrition = 1000
|
||||
nutrition_threshold = 800
|
||||
maxHealth = 250
|
||||
maxhealth = 250
|
||||
health = 250
|
||||
mob_size = MOB_LARGE
|
||||
meat_amount = 12
|
||||
@@ -209,7 +209,7 @@
|
||||
response_help = "rubs [name]'s belly"
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
attacktext = "crushed"
|
||||
attacktext = "crushes"
|
||||
environment_smash = 1
|
||||
resistance = 2
|
||||
mob_swap_flags = HUMAN|ROBOT
|
||||
@@ -225,7 +225,7 @@
|
||||
desc = "A fat creature native to the world of Hro'zamal. This one has been immobilized by its massive weight."
|
||||
current_size = COLOSSAL_SCHLORRGO
|
||||
max_nutrition = 1500
|
||||
maxHealth = 450
|
||||
maxhealth = 450
|
||||
health = 450
|
||||
mob_size = MOB_LARGE
|
||||
meat_amount = 25
|
||||
@@ -290,7 +290,7 @@
|
||||
|
||||
hunger_enabled = FALSE
|
||||
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
health = 80
|
||||
|
||||
can_be_milked = FALSE
|
||||
@@ -338,12 +338,12 @@
|
||||
|
||||
faction = "PRA" // Evil PRA Machine
|
||||
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
health = 80
|
||||
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attacktext = "sawed"
|
||||
attacktext = "saws"
|
||||
attack_sound = 'sound/weapons/saw/circsawhit.ogg'
|
||||
|
||||
mob_size = MOB_SMALL
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_dead = "grey baby slime dead"
|
||||
speak_emote = list("chirps")
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
accent = ACCENT_BLUESPACE
|
||||
response_help = "pets"
|
||||
response_disarm = "shoos"
|
||||
@@ -32,7 +32,7 @@
|
||||
desc = "A lovable, domesticated slime."
|
||||
icon = 'icons/mob/npc/slimes.dmi'
|
||||
health = 200
|
||||
maxHealth = 200
|
||||
maxhealth = 200
|
||||
icon_state = "grey adult slime"
|
||||
icon_living = "grey adult slime"
|
||||
icon_dead = "grey baby slime dead"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
speak_emote = list("hisses")
|
||||
emote_see = list("flicks out its tongue", "looks around")
|
||||
health = 15
|
||||
maxHealth = 15
|
||||
maxhealth = 15
|
||||
organ_names = list("head", "body")
|
||||
response_help = "pets"
|
||||
response_disarm = "boops"
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
wander = 0
|
||||
density = 0
|
||||
health = 25
|
||||
maxHealth = 25
|
||||
maxhealth = 25
|
||||
hunger_enabled = 0
|
||||
|
||||
attacktext = "shocked"
|
||||
attacktext = "shocks"
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 3
|
||||
|
||||
@@ -122,10 +122,10 @@
|
||||
if (attacking_item.tool_behaviour == TOOL_WELDER)
|
||||
var/obj/item/weldingtool/WT = attacking_item
|
||||
if (WT.use(0))
|
||||
if(health < maxHealth)
|
||||
if(health < maxhealth)
|
||||
health += pick(1,1,1,2,2,3)
|
||||
if(health > maxHealth)
|
||||
health = maxHealth
|
||||
if(health > maxhealth)
|
||||
health = maxhealth
|
||||
add_fingerprint(user)
|
||||
src.visible_message(SPAN_NOTICE("\The [user] has spot-welded some of the damage to \the [src]!"))
|
||||
else
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_dead = "tomato_dead"
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
maxHealth = 15
|
||||
maxhealth = 15
|
||||
health = 15
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/tomatomeat
|
||||
organ_names = list("head")
|
||||
@@ -16,5 +16,5 @@
|
||||
harm_intent_damage = 5
|
||||
melee_damage_upper = 15
|
||||
melee_damage_lower = 10
|
||||
attacktext = "mauled"
|
||||
attacktext = "mauls"
|
||||
mob_size = 2
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
speed = -2
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
health = 80
|
||||
mob_size = 10
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
environment_smash = 1
|
||||
@@ -49,14 +49,14 @@
|
||||
response_harm = "hits the"
|
||||
|
||||
speed = -1
|
||||
maxHealth = 75
|
||||
maxhealth = 75
|
||||
health = 75
|
||||
|
||||
mob_size = 5
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
faction = "Adhomai"
|
||||
@@ -76,7 +76,7 @@
|
||||
meat_amount = 5
|
||||
organ_names = list("body", "tentacles")
|
||||
faction = "Adhomai"
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
|
||||
speak_emote = list("gurgles")
|
||||
@@ -93,7 +93,7 @@
|
||||
mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY
|
||||
mob_push_flags = ALLMOBS
|
||||
|
||||
attacktext = "strangled"
|
||||
attacktext = "strangles"
|
||||
attack_sound = 'sound/effects/noosed.ogg'
|
||||
|
||||
speed = 1
|
||||
@@ -119,12 +119,12 @@
|
||||
emote_hear = list("hums")
|
||||
emote_see = list("hums ominously", "crackles with energy", "floats around")
|
||||
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
attacktext = "shocked"
|
||||
attacktext = "shocks"
|
||||
attack_sound = 'sound/magic/LightningShock.ogg'
|
||||
|
||||
speed = 1
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
icon_dead = "samak_dead"
|
||||
icon = 'icons/jungle.dmi'
|
||||
speed = 2
|
||||
maxHealth = 125
|
||||
maxhealth = 125
|
||||
health = 125
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 15
|
||||
attacktext = "mauled"
|
||||
attacktext = "mauls"
|
||||
cold_damage_per_tick = 0
|
||||
speak_chance = 5
|
||||
speak = list("Hruuugh!","Hrunnph")
|
||||
@@ -29,11 +29,11 @@
|
||||
icon_dead = "diyaab_dead"
|
||||
icon = 'icons/jungle.dmi'
|
||||
speed = 1
|
||||
maxHealth = 25
|
||||
maxhealth = 25
|
||||
health = 25
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 8
|
||||
attacktext = "gouged"
|
||||
attacktext = "gouges"
|
||||
cold_damage_per_tick = 0
|
||||
speak_chance = 5
|
||||
speak = list("Awrr?","Aowrl!","Worrl")
|
||||
@@ -54,11 +54,11 @@
|
||||
icon_dead = "shantak_dead"
|
||||
icon = 'icons/jungle.dmi'
|
||||
speed = 1
|
||||
maxHealth = 75
|
||||
maxhealth = 75
|
||||
health = 75
|
||||
melee_damage_lower = 3
|
||||
melee_damage_upper = 12
|
||||
attacktext = "gouged"
|
||||
attacktext = "gouges"
|
||||
cold_damage_per_tick = 0
|
||||
speak_chance = 5
|
||||
speak = list("Shuhn","Shrunnph?","Shunpf")
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
speed = 4
|
||||
maxHealth = 20
|
||||
maxhealth = 20
|
||||
health = 20
|
||||
mob_size = 2.5
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "hits"
|
||||
stop_automated_movement_when_pulled = 0
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 18
|
||||
armor_penetration = 30 //Standard armor probably doesn't help against a bear, does it?
|
||||
@@ -354,18 +354,18 @@
|
||||
var/healthpercent
|
||||
if (bearmode == BEARMODE_SPACE)
|
||||
custom_emote(VISIBLE_MESSAGE, "looks bright, energised and aggressive!" )
|
||||
healthpercent = health / maxHealth
|
||||
maxHealth = initial(maxHealth) * 1.5
|
||||
health = maxHealth * healthpercent
|
||||
healthpercent = health / maxhealth
|
||||
maxhealth = initial(maxhealth) * 1.5
|
||||
health = maxhealth * healthpercent
|
||||
melee_damage_lower = initial(melee_damage_lower)*1.2
|
||||
melee_damage_upper = initial(melee_damage_upper)*1.2
|
||||
turns_per_move -= 2
|
||||
growl_loud()
|
||||
else
|
||||
custom_emote(VISIBLE_MESSAGE, "looks darker and more subdued." )
|
||||
healthpercent = health / maxHealth
|
||||
maxHealth = initial(maxHealth)
|
||||
health = maxHealth * healthpercent
|
||||
healthpercent = health / maxhealth
|
||||
maxhealth = initial(maxhealth)
|
||||
health = maxhealth * healthpercent
|
||||
melee_damage_lower = initial(melee_damage_lower)
|
||||
melee_damage_upper = initial(melee_damage_upper)
|
||||
growl_soft()
|
||||
@@ -408,7 +408,7 @@
|
||||
/mob/living/simple_animal/hostile/bear/spatial
|
||||
name = "bluespace bear"
|
||||
desc = "*bzzt*..Rawr!!"
|
||||
maxHealth = 130
|
||||
maxhealth = 130
|
||||
turns_per_move = 7
|
||||
break_stuff_probability = 100//Constantly smashing everything nearby
|
||||
speak_chance = 15
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
blood_amount = 600
|
||||
maxHealth = 500
|
||||
maxhealth = 500
|
||||
health = 500
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 40
|
||||
@@ -30,7 +30,7 @@
|
||||
resist_mod = 15
|
||||
mob_size = 25
|
||||
environment_smash = 2
|
||||
attacktext = "mangled"
|
||||
attacktext = "mangles"
|
||||
attack_sound = 'sound/weapons/bloodyslice.ogg'
|
||||
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE
|
||||
@@ -104,7 +104,7 @@
|
||||
icon_state = "cybergeist"
|
||||
icon_living = "cybergeist"
|
||||
icon_dead = "cybergeist_dead"
|
||||
maxHealth = 700
|
||||
maxhealth = 700
|
||||
health = 700
|
||||
speed = -2
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
blood_amount = 1000
|
||||
maxHealth = 1250
|
||||
maxhealth = 1250
|
||||
health = 1250
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 30
|
||||
@@ -33,7 +33,7 @@
|
||||
resist_mod = 15
|
||||
mob_size = 25
|
||||
environment_smash = 2
|
||||
attacktext = "mangled"
|
||||
attacktext = "mangles"
|
||||
attack_sound = 'sound/weapons/bloodyslice.ogg'
|
||||
emote_sounds = list('sound/effects/creatures/bear_loud_1.ogg', 'sound/effects/creatures/bear_loud_2.ogg', 'sound/effects/creatures/bear_loud_3.ogg', 'sound/effects/creatures/bear_loud_4.ogg')
|
||||
|
||||
@@ -157,13 +157,13 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
mob_size = 15
|
||||
attacktext = "mangled"
|
||||
attacktext = "mangles"
|
||||
attack_sound = 'sound/weapons/bloodyslice.ogg'
|
||||
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
icon_gib = "brownbear_gib"
|
||||
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
|
||||
density = TRUE
|
||||
belongs_to_station = FALSE
|
||||
|
||||
attacktext = "swatted"
|
||||
attacktext = "swats"
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
resist_mod = 5
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
icon_dead = "german_dead"
|
||||
|
||||
health = 75
|
||||
maxHealth = 75
|
||||
maxhealth = 75
|
||||
|
||||
stop_automated_movement_when_pulled = 1 //so people can drag the dog around
|
||||
density = 1
|
||||
@@ -23,7 +23,7 @@
|
||||
sad_emote = list("whines")
|
||||
emote_sounds = list('sound/effects/creatures/dog_bark.ogg', 'sound/effects/creatures/dog_bark2.ogg', 'sound/effects/creatures/dog_bark3.ogg')
|
||||
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/effects/creatures/dog_bark.ogg'
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 15
|
||||
@@ -83,7 +83,7 @@
|
||||
gender = MALE
|
||||
|
||||
health = 125
|
||||
maxHealth = 125
|
||||
maxhealth = 125
|
||||
|
||||
icon_state = "columbo"
|
||||
icon_living = "columbo"
|
||||
@@ -98,7 +98,7 @@
|
||||
icon_dead = "pug_dead"
|
||||
|
||||
health = 25
|
||||
maxHealth = 25
|
||||
maxhealth = 25
|
||||
|
||||
density = 0
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
resist_mod = 4
|
||||
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
|
||||
meat_amount = 3
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
blood_overlay_icon = null
|
||||
|
||||
health = 70
|
||||
maxHealth = 70
|
||||
maxhealth = 70
|
||||
|
||||
belongs_to_station = TRUE
|
||||
stop_automated_movement_when_pulled = TRUE
|
||||
@@ -35,7 +35,7 @@
|
||||
projectilesound = 'sound/weapons/taser2.ogg'
|
||||
projectiletype = /obj/projectile/beam/hivebot/harmless
|
||||
|
||||
attacktext = "harmlessly clawed"
|
||||
attacktext = "harmlessly claws"
|
||||
harm_intent_damage = 5 // the damage we take
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
icon_living = "otherthing"
|
||||
icon_dead = "otherthing-dead"
|
||||
health = 80
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 30
|
||||
organ_names = list("meaty core")
|
||||
attacktext = "chomped"
|
||||
attacktext = "chomps"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
faction = "creature"
|
||||
speed = 4
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
response_disarm = "shoves"
|
||||
response_harm = "hits"
|
||||
speed = 4
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
health = 80
|
||||
environment_smash = 2
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
attacktext = "gripped"
|
||||
attacktext = "grips"
|
||||
attack_sound = 'sound/hallucinations/growl1.ogg'
|
||||
|
||||
min_oxy = 0
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
blood_type = "#51C404"
|
||||
blood_amount = 150
|
||||
stop_automated_movement_when_pulled = 0
|
||||
maxHealth = 200
|
||||
maxhealth = 200
|
||||
health = 200
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
@@ -45,7 +45,7 @@
|
||||
mob_size = 6
|
||||
smart_melee = FALSE
|
||||
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
attack_emote = "skitters toward"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
emote_sounds = list('sound/effects/creatures/spider_critter.ogg')
|
||||
@@ -59,7 +59,7 @@
|
||||
icon_living = "greimorian_worker"
|
||||
icon_dead = "greimorian_worker_dead"
|
||||
blood_amount = 50
|
||||
maxHealth = 40
|
||||
maxhealth = 40
|
||||
health = 40
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
@@ -77,7 +77,7 @@
|
||||
icon_living = "greimorian_servant"
|
||||
icon_dead = "greimorian_servant_dead"
|
||||
blood_amount = 150
|
||||
maxHealth = 200
|
||||
maxhealth = 200
|
||||
health = 200
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
@@ -102,7 +102,7 @@
|
||||
icon_living = "greimorian_hunter"
|
||||
icon_dead = "greimorian_hunter_dead"
|
||||
blood_amount = 90
|
||||
maxHealth = 120
|
||||
maxhealth = 120
|
||||
health = 120
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 20
|
||||
@@ -118,7 +118,7 @@
|
||||
icon_state = "greimorian_jackal"
|
||||
icon_living = "greimorian_jackal"
|
||||
icon_dead = "greimorian_jackal_dead"
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
@@ -135,7 +135,7 @@
|
||||
icon_state = "greimorian_bombardier"
|
||||
icon_living = "greimorian_bombardier"
|
||||
icon_dead = "greimorian_bombardier_dead"
|
||||
maxHealth = 60
|
||||
maxhealth = 60
|
||||
health = 60
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
blood_type = COLOR_OIL
|
||||
blood_overlay_icon = 'icons/mob/npc/blood_overlay_hivebot.dmi'
|
||||
health = 15
|
||||
maxHealth = 15
|
||||
maxhealth = 15
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
armor_penetration = 40
|
||||
attack_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE
|
||||
break_stuff_probability = 25
|
||||
attacktext = "slashed"
|
||||
attacktext = "slashes"
|
||||
attack_sound = SFX_HIVEBOT_MELEE
|
||||
projectilesound = 'sound/weapons/gunshot/gunshot_suppressed.ogg'
|
||||
projectiletype = /obj/projectile/bullet/pistol/hivebotspike
|
||||
@@ -159,7 +159,7 @@
|
||||
*/
|
||||
/mob/living/simple_animal/hostile/hivebot/guardian
|
||||
health = 80
|
||||
maxHealth = 45
|
||||
maxhealth = 45
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
wander = 0
|
||||
@@ -180,10 +180,10 @@
|
||||
/mob/living/simple_animal/hostile/hivebot/bomber
|
||||
desc = "A primitive in design, hovering robot, with some menacing looking blades jutting out from it. It bears no manufacturer markings of any kind. This one appears round in design and moves slower than its brethren."
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
icon_state = "hivebotbomber"
|
||||
organ_names = list("head", "core", "bottom thruster")
|
||||
attacktext = "bumped"
|
||||
attacktext = "bumps"
|
||||
speed = 8
|
||||
var/has_exploded = FALSE
|
||||
|
||||
@@ -231,11 +231,11 @@
|
||||
desc = "A primitive-yet-sturdy hovering robot, with some menacing looking blades jutting out from it. This one seems unusually aware of its surroundings."
|
||||
icon_state = "hivebotdestroyer"
|
||||
health = 350
|
||||
maxHealth = 350
|
||||
maxhealth = 350
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 30
|
||||
armor_penetration = 20
|
||||
attacktext = "eviscerated"
|
||||
attacktext = "eviscerates"
|
||||
projectiletype = null
|
||||
var/playable = TRUE
|
||||
speed = -2
|
||||
@@ -258,11 +258,11 @@
|
||||
desc = "A primitive-yet-sturdy hovering robot, with some menacing looking blades jutting out from it. This one seems to be carefully surveying all activity."
|
||||
icon_state = "hivebotmarksman"
|
||||
health = 250
|
||||
maxHealth = 250
|
||||
maxhealth = 250
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 20
|
||||
armor_penetration = 20
|
||||
attacktext = "stabbed"
|
||||
attacktext = "stabs"
|
||||
ranged = 1
|
||||
projectiletype = /obj/projectile/bullet/pistol/medium
|
||||
speed = -3
|
||||
@@ -285,11 +285,11 @@
|
||||
desc = "A primitive-yet-sturdy hovering robot, with some menacing looking blades jutting out from it. This one seems to be buzzing with unseen activity from within."
|
||||
icon_state = "hivebotoverseer"
|
||||
health = 300
|
||||
maxHealth = 300
|
||||
maxhealth = 300
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
armor_penetration = 10
|
||||
attacktext = "slashed"
|
||||
attacktext = "slashes"
|
||||
ranged = -1
|
||||
projectiletype = /obj/projectile/bullet/pistol/
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon_state = "hivebotbeacon_active"
|
||||
icon_living = "hivebotbeacon_active"
|
||||
health = 300
|
||||
maxHealth = 300
|
||||
maxhealth = 300
|
||||
blood_type = COLOR_OIL
|
||||
projectilesound = 'sound/weapons/taser2.ogg'
|
||||
projectiletype = /obj/projectile/beam/hivebot
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/mob/npc/hivebot.dmi'
|
||||
icon_state = "hivebotharvester"
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
blood_type = COLOR_OIL
|
||||
blood_overlay_icon = 'icons/mob/npc/blood_overlay_hivebot.dmi'
|
||||
melee_damage_lower = 30
|
||||
@@ -12,7 +12,7 @@
|
||||
destroy_surroundings = 0
|
||||
wander = 0
|
||||
ranged = 1
|
||||
attacktext = "skewered"
|
||||
attacktext = "skewers"
|
||||
projectilesound = 'sound/weapons/lasercannonfire.ogg'
|
||||
projectiletype = /obj/projectile/beam/hivebot/incendiary/heavy
|
||||
organ_names = list("head", "core", "side thruster", "harvesting array")
|
||||
|
||||
@@ -271,7 +271,7 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile)
|
||||
return
|
||||
face_atom(T)
|
||||
src.do_attack_animation(T)
|
||||
T.take_damage(max(melee_damage_lower, melee_damage_upper) / 2)
|
||||
T.add_damage(max(melee_damage_lower, melee_damage_upper) / 2, armor_penetration = armor_penetration)
|
||||
visible_message(SPAN_DANGER("\The [src] [attacktext] \the [T]!"))
|
||||
return T // no need to take a step back here
|
||||
if(loc && attack_sound)
|
||||
@@ -478,7 +478,7 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile)
|
||||
found_obj = locate(/obj/structure/table) in target_turf
|
||||
if(found_obj)
|
||||
var/obj/structure/table/table = found_obj
|
||||
if(!table.breakable)
|
||||
if(!table.maxhealth)
|
||||
continue
|
||||
found_obj.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), attacktext, TRUE)
|
||||
hostile_last_attack = world.time
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
a_intent = I_HURT
|
||||
stop_automated_movement_when_pulled = FALSE
|
||||
health = 300
|
||||
maxHealth = 300
|
||||
maxhealth = 300
|
||||
blood_type = COLOR_OIL
|
||||
speed = 8
|
||||
projectiletype = /obj/projectile/beam/drone
|
||||
@@ -168,7 +168,7 @@
|
||||
speak_chance = 5
|
||||
|
||||
//repair a bit of damage
|
||||
if(prob(1) && health < maxHealth)
|
||||
if(prob(1) && health < maxhealth)
|
||||
visible_message(SPAN_NOTICE("\The [src] shudders and shakes as some of its damaged systems come back online."))
|
||||
spark(src, 3, GLOB.alldirs)
|
||||
health += rand(25, 100)
|
||||
@@ -186,16 +186,16 @@
|
||||
src.visible_message(SPAN_ALERT("\The [src] suddenly lights up, and additional targetting vanes slide into place."))
|
||||
hostile_drone = TRUE
|
||||
|
||||
if(health / maxHealth > 0.9)
|
||||
if(health / maxhealth > 0.9)
|
||||
icon_state = "drone3"
|
||||
explode_chance = 0
|
||||
else if(health / maxHealth > 0.7)
|
||||
else if(health / maxhealth > 0.7)
|
||||
icon_state = "drone2"
|
||||
explode_chance = 0
|
||||
else if(health / maxHealth > 0.5)
|
||||
else if(health / maxhealth > 0.5)
|
||||
icon_state = "drone1"
|
||||
explode_chance = 0.5
|
||||
else if(health / maxHealth > 0.3)
|
||||
else if(health / maxhealth > 0.3)
|
||||
icon_state = "drone0"
|
||||
explode_chance = 5
|
||||
else if(health > 0)
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
icon_dead = "baseline_grey_off"
|
||||
blood_type = COLOR_OIL
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
armor_penetration = 20
|
||||
attack_sound = 'sound/weapons/smash.ogg'
|
||||
attacktext = "smashed"
|
||||
attacktext = "smashes"
|
||||
faction = "hivebot"
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
maxHealth = 1000
|
||||
maxhealth = 1000
|
||||
health = 1000
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 30
|
||||
@@ -27,7 +27,7 @@
|
||||
resist_mod = 15
|
||||
mob_size = 25
|
||||
environment_smash = 2
|
||||
attacktext = "punished"
|
||||
attacktext = "punishes"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE
|
||||
@@ -134,13 +134,13 @@
|
||||
response_disarm = "pushes"
|
||||
response_harm = "hits"
|
||||
speed = 4
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
attacktext = "nibbled"
|
||||
attacktext = "nibbles"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
min_oxy = 0
|
||||
@@ -170,7 +170,7 @@
|
||||
icon_state = "gift2_evil"
|
||||
icon_living = "gift2_evil"
|
||||
icon_dead = "gift2"
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
@@ -179,7 +179,7 @@
|
||||
icon_state = "gift3_evil"
|
||||
icon_living = "gift3_evil"
|
||||
icon_dead = "gift3"
|
||||
maxHealth = 150
|
||||
maxhealth = 150
|
||||
health = 150
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
response_disarm = "pushes"
|
||||
response_harm = "hits"
|
||||
speed = 4
|
||||
maxHealth = 250
|
||||
maxhealth = 250
|
||||
health = 250
|
||||
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 12
|
||||
attacktext = "attacked"
|
||||
attacktext = "attacks"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
min_oxy = 0
|
||||
@@ -57,7 +57,7 @@
|
||||
// Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies.
|
||||
/mob/living/simple_animal/hostile/mimic/crate
|
||||
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
|
||||
stop_automated_movement = 1
|
||||
wander = 0
|
||||
@@ -125,7 +125,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca
|
||||
/mob/living/simple_animal/hostile/mimic/copy
|
||||
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
var/mob/living/creator = null // the creator
|
||||
var/destroy_objects = 0
|
||||
var/knockdown_people = 0
|
||||
@@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca
|
||||
melee_damage_upper = 2 + I.force
|
||||
speed = 2 * I.w_class
|
||||
|
||||
maxHealth = health
|
||||
maxhealth = health
|
||||
if(creator)
|
||||
src.creator = creator
|
||||
faction = "[REF(creator)]" // very unique
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
blood_overlay_icon = null
|
||||
maxHealth = 400
|
||||
maxhealth = 400
|
||||
health = 400
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 40
|
||||
@@ -28,7 +28,7 @@
|
||||
resist_mod = 10
|
||||
mob_size = 30
|
||||
environment_smash = 2
|
||||
attacktext = "chomped"
|
||||
attacktext = "chomps"
|
||||
attack_sound = 'sound/weapons/bloodyslice.ogg'
|
||||
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE
|
||||
@@ -150,7 +150,7 @@
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
speed = -1
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
mob_size = 10
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 8
|
||||
attacktext = "rammed"
|
||||
attacktext = "rams"
|
||||
attack_sound = 'sound/weapons/punch4_bass.ogg'
|
||||
|
||||
environment_smash = 1
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
status_flags = CANPUSH
|
||||
pass_flags = PASSTABLE
|
||||
|
||||
maxHealth = 125
|
||||
maxhealth = 125
|
||||
health = 125
|
||||
max_stamina = -1
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
wander = FALSE
|
||||
|
||||
attacktext = "glomped"
|
||||
attacktext = "glomps"
|
||||
attack_sound = 'sound/effects/blobattack.ogg'
|
||||
blood_overlay_icon = null
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
healths.icon_state = "health6"
|
||||
if(.)
|
||||
if(healths)
|
||||
switch(health / maxHealth * 100)
|
||||
switch(health / maxhealth * 100)
|
||||
if(100 to INFINITY)
|
||||
healths.icon_state = "health0"
|
||||
if(80 to 100)
|
||||
@@ -88,7 +88,7 @@
|
||||
healths.icon_state = "health6"
|
||||
|
||||
if((stat == UNCONSCIOUS || resting) && locate(/obj/structure/gore/tendrils) in loc)
|
||||
health = min(maxHealth, health + 1)
|
||||
health = min(maxhealth, health + 1)
|
||||
|
||||
/mob/living/simple_animal/hostile/morph/verb/toggle_darkview()
|
||||
set name = "Toggle Darkvision"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
maxHealth = 850
|
||||
maxhealth = 850
|
||||
health = 850
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 30
|
||||
@@ -23,7 +23,7 @@
|
||||
resist_mod = 2
|
||||
mob_size = 30
|
||||
environment_smash = 2
|
||||
attacktext = "chomped"
|
||||
attacktext = "chomps"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
faction = "worm"
|
||||
@@ -70,7 +70,7 @@
|
||||
visible_message(SPAN_WARNING("\The [src] starts consuming \the [P]..."), SPAN_NOTICE("You start consuming \the [P]."))
|
||||
if(!do_after(src, 1 SECOND, P))
|
||||
return
|
||||
var/self_msg = "You consume \the [P][health < maxHealth ? ", healing yourself" : ""]."
|
||||
var/self_msg = "You consume \the [P][health < maxhealth ? ", healing yourself" : ""]."
|
||||
adjustBruteLoss(-5 * P.amount)
|
||||
visible_message(SPAN_WARNING("\The [src] consumes \the [P]!"), SPAN_NOTICE(self_msg))
|
||||
P.amount /= 2
|
||||
@@ -144,7 +144,7 @@
|
||||
name = "black trident worm"
|
||||
desc = "An utterly tremendous, disgustingly bloated worm which relishes in the consumption of phoron."
|
||||
icon = 'icons/mob/npc/small_phoron_worm.dmi'
|
||||
maxHealth = 80
|
||||
maxhealth = 80
|
||||
health = 80
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
response_harm = "hits"
|
||||
speed = 4
|
||||
stop_automated_movement_when_pulled = 0
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
attacktext = "slashed"
|
||||
attacktext = "slashes"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
min_oxy = 5
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
attack_emote = "buzzes menacingly at"
|
||||
stop_automated_movement_when_pulled = FALSE
|
||||
health = 300
|
||||
maxHealth = 300
|
||||
maxhealth = 300
|
||||
|
||||
destroy_surroundings = FALSE
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
melee_damage_upper = 15
|
||||
mob_size = 5
|
||||
|
||||
attacktext = "slashed"
|
||||
attacktext = "slashes"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
speed = 2
|
||||
@@ -116,7 +116,7 @@
|
||||
speed = 3
|
||||
|
||||
health = 200
|
||||
maxHealth = 200
|
||||
maxhealth = 200
|
||||
|
||||
ranged = TRUE
|
||||
rapid = TRUE
|
||||
@@ -168,7 +168,7 @@
|
||||
mob_size = 3
|
||||
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
|
||||
@@ -43,7 +43,7 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile/retaliate/aquatic)
|
||||
icon_dead = "thresher_dead"
|
||||
icon_rest = "thresher_rest"
|
||||
health = 230
|
||||
maxHealth = 230
|
||||
maxhealth = 230
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 70
|
||||
armor_penetration = 80
|
||||
@@ -53,7 +53,7 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile/retaliate/aquatic)
|
||||
name = "large toothed aquatic creature"
|
||||
desc = "A threatening-looking aquatic creature with a mouth full of densely-packed, razor sharp teeth. This one has grown to a substantial size."
|
||||
health = 370
|
||||
maxHealth = 370
|
||||
maxhealth = 370
|
||||
melee_damage_lower = 50
|
||||
melee_damage_upper = 90
|
||||
armor_penetration = 100
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
mob_size = 12
|
||||
|
||||
health = 60
|
||||
maxHealth = 60
|
||||
maxhealth = 60
|
||||
blood_type = "#006666"
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attacktext = "chomped"
|
||||
attacktext = "chomps"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
speed = 4
|
||||
projectiletype = /obj/projectile/beam/cavern
|
||||
@@ -84,7 +84,7 @@
|
||||
icon_dead = "sadrone_dead"
|
||||
speed = 5
|
||||
health = 60
|
||||
maxHealth = 60
|
||||
maxhealth = 60
|
||||
harm_intent_damage = 5
|
||||
ranged = 1
|
||||
smart_ranged = TRUE
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
universal_speak = FALSE
|
||||
a_intent = I_HURT
|
||||
stop_automated_movement_when_pulled = 0
|
||||
maxHealth = 75
|
||||
maxhealth = 75
|
||||
health = 75
|
||||
speed = -1
|
||||
harm_intent_damage = 8
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attacktext = "attacked"
|
||||
attacktext = "attacks"
|
||||
attack_sound = 'sound/items/bikehorn.ogg'
|
||||
|
||||
min_oxy = 5
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
icon_state = "royalcrab"
|
||||
icon_living = "royalcrab"
|
||||
icon_dead = "royalcrab_dead"
|
||||
maxHealth = 150
|
||||
maxhealth = 150
|
||||
health = 150
|
||||
speed = 3
|
||||
melee_damage_lower = 10
|
||||
@@ -36,7 +36,7 @@
|
||||
icon_dead = "char_dead"
|
||||
mob_size = MOB_LARGE
|
||||
health = 45
|
||||
maxHealth = 45
|
||||
maxhealth = 45
|
||||
speed = 2
|
||||
response_help = "pats briefly"
|
||||
response_disarm = "gently pushes"
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
mob_size = 12
|
||||
organ_names = list("torso", "left wing", "right wing", "head")
|
||||
|
||||
maxHealth = 300
|
||||
maxhealth = 300
|
||||
health = 300
|
||||
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 30
|
||||
armor_penetration = 20
|
||||
attacktext = "clawed"
|
||||
attacktext = "claws"
|
||||
attack_sound = 'sound/weapons/slice.ogg'
|
||||
|
||||
meat_amount = 8
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
universal_speak = FALSE
|
||||
density = FALSE
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 8
|
||||
armor_penetration = 5
|
||||
attacktext = "sliced"
|
||||
attacktext = "slices"
|
||||
faction = "silicon"
|
||||
min_oxy = 0
|
||||
minbodytemp = 0
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
response_harm = "hits"
|
||||
speed = 4
|
||||
stop_automated_movement_when_pulled = 0
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
attacktext = "punched"
|
||||
attacktext = "punches"
|
||||
a_intent = I_HURT
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/russian
|
||||
var/weapon1 = /obj/item/material/knife
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
icon = 'icons/mob/npc/cavern.dmi'
|
||||
icon_state = "sarlacc"
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
gender = NEUTER
|
||||
status_flags = 0
|
||||
anchored = 1
|
||||
@@ -168,11 +168,11 @@
|
||||
sated -= 1
|
||||
if(prob(5) && tentacles < 6)
|
||||
tentacles += 1
|
||||
if(health < maxHealth)
|
||||
if(health < maxhealth)
|
||||
health += 1
|
||||
sated -= 1
|
||||
if(health >= maxHealth)
|
||||
health = maxHealth
|
||||
if(health >= maxhealth)
|
||||
health = maxhealth
|
||||
if(sarlacc && sarlacc.deployed)
|
||||
sarlacc.deployed = 0
|
||||
else
|
||||
@@ -260,7 +260,7 @@
|
||||
icon = 'icons/mob/npc/cavern.dmi'
|
||||
icon_state = "sarlacctentacle"
|
||||
health = 25
|
||||
maxHealth = 25
|
||||
maxhealth = 25
|
||||
gender = NEUTER
|
||||
status_flags = 0
|
||||
anchored = 1
|
||||
@@ -322,7 +322,7 @@
|
||||
universal_understand = 1
|
||||
|
||||
health = 450
|
||||
maxHealth = 450
|
||||
maxhealth = 450
|
||||
|
||||
gender = MALE
|
||||
status_flags = 0
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
speed = 4
|
||||
maxHealth = 25
|
||||
maxhealth = 25
|
||||
health = 25
|
||||
mob_size = 10
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
melee_damage_upper = 15
|
||||
armor_penetration = 5
|
||||
attack_flags = DAMAGE_FLAG_EDGE
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
//Space carp aren't affected by atmos.
|
||||
@@ -108,7 +108,7 @@
|
||||
icon_state = "carp_russian"
|
||||
icon_living = "carp_russian"
|
||||
icon_dead = "carp_russian_dead"
|
||||
maxHealth = 50 //stronk
|
||||
maxhealth = 50 //stronk
|
||||
health = 50
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/russian/FindTarget()
|
||||
@@ -131,7 +131,7 @@
|
||||
icon_rest = "shark_rest"
|
||||
meat_amount = 5
|
||||
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
|
||||
mob_size = 15
|
||||
@@ -149,7 +149,7 @@
|
||||
icon_dead = "reaver"
|
||||
meat_amount = 5
|
||||
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
|
||||
speed = 10
|
||||
@@ -174,7 +174,7 @@
|
||||
icon_dead = "eel"
|
||||
meat_amount = 5
|
||||
|
||||
maxHealth = 150
|
||||
maxhealth = 150
|
||||
health = 150
|
||||
|
||||
speed = 6
|
||||
@@ -212,7 +212,7 @@
|
||||
icon_dead = "bloater"
|
||||
meat_amount = 5
|
||||
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
|
||||
mob_size = 5
|
||||
@@ -288,7 +288,7 @@
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
speed = 2
|
||||
maxHealth = 5
|
||||
maxhealth = 5
|
||||
health = 5
|
||||
mob_size = 2
|
||||
density = FALSE
|
||||
@@ -298,7 +298,7 @@
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
min_oxy = 0
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
blood_type = "#51C404"
|
||||
blood_overlay_icon = null
|
||||
stop_automated_movement_when_pulled = 0
|
||||
maxHealth = 1000
|
||||
maxhealth = 1000
|
||||
health = 1000
|
||||
melee_damage_lower = 35
|
||||
melee_damage_upper = 40
|
||||
@@ -37,7 +37,7 @@
|
||||
mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY
|
||||
mob_push_flags = ALLMOBS
|
||||
|
||||
attacktext = "bit"
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
pass_flags = PASSTABLE|PASSRAILING
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
response_harm = "hits"
|
||||
speed = 4
|
||||
stop_automated_movement_when_pulled = 0
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attacktext = "punched"
|
||||
attacktext = "punches"
|
||||
a_intent = I_HURT
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier
|
||||
var/weapon1
|
||||
@@ -59,7 +59,7 @@
|
||||
icon_living = "syndicatemelee"
|
||||
weapon1 = /obj/item/melee/energy/sword/red
|
||||
weapon2 = /obj/item/shield/energy
|
||||
attacktext = "slashed"
|
||||
attacktext = "slashes"
|
||||
status_flags = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/attackby(obj/item/attacking_item, mob/user)
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
universal_speak = FALSE
|
||||
|
||||
health = 10
|
||||
maxHealth = 10
|
||||
maxhealth = 10
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 2
|
||||
organ_names = list("chest", "lower body", "left arm", "right arm", "left leg", "right leg", "head")
|
||||
attack_emote = "raises its fist at"
|
||||
attacktext = "smashed"
|
||||
attacktext = "smashes"
|
||||
attack_sound = 'sound/weapons/woodenhit.ogg'
|
||||
speed = 2
|
||||
mob_size = MOB_MINISCULE
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
response_harm = "hits"
|
||||
blood_overlay_icon = null
|
||||
speed = -1
|
||||
maxHealth = 250
|
||||
maxhealth = 250
|
||||
health = 250
|
||||
|
||||
pixel_x = -16
|
||||
@@ -23,7 +23,7 @@
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 12
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
//Space carp aren't affected by atmos.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
response_help = "pets"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
maxHealth = 350
|
||||
maxhealth = 350
|
||||
health = 350
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 30
|
||||
@@ -24,7 +24,7 @@
|
||||
resist_mod = 3
|
||||
mob_size = 15
|
||||
environment_smash = 2
|
||||
attacktext = "mangled"
|
||||
attacktext = "mangles"
|
||||
attack_emote = "charges toward"
|
||||
attack_sound = 'sound/effects/creatures/vannatusk_attack.ogg'
|
||||
emote_sounds = list('sound/effects/creatures/vannatusk_sound.ogg', 'sound/effects/creatures/vannatusk_sound_2.ogg')
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
icon_living = "viscerator_attack"
|
||||
pass_flags = PASSTABLE|PASSRAILING
|
||||
health = 15
|
||||
maxHealth = 15
|
||||
maxhealth = 15
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
armor_penetration = 20
|
||||
density = 0
|
||||
attacktext = "cut"
|
||||
attacktext = "cuts"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
blood_overlay_icon = null
|
||||
faction = "syndicate"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "shade"
|
||||
icon_living = "shade"
|
||||
icon_dead = "shade_dead"
|
||||
maxHealth = 50
|
||||
maxhealth = 50
|
||||
health = 50
|
||||
universal_speak = 1
|
||||
speak_emote = list("hisses")
|
||||
@@ -17,7 +17,7 @@
|
||||
response_harm = "punches"
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 15
|
||||
attacktext = "drained the life from"
|
||||
attacktext = "drains the life from"
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 4000
|
||||
min_oxy = 0
|
||||
@@ -75,7 +75,7 @@
|
||||
icon_state = "blank"
|
||||
icon_living = "blank"
|
||||
icon_dead = "blank"
|
||||
maxHealth = 100
|
||||
maxhealth = 100
|
||||
health = 100
|
||||
universal_speak = 1
|
||||
universal_understand = 1
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
name = "animal"
|
||||
icon = 'icons/mob/npc/animal.dmi'
|
||||
health = 20
|
||||
maxHealth = 20
|
||||
maxhealth = 20
|
||||
|
||||
mob_bump_flag = SIMPLE_ANIMAL
|
||||
mob_swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL
|
||||
@@ -121,7 +121,7 @@
|
||||
var/melee_reach = 1
|
||||
var/armor_penetration = 0
|
||||
var/attack_flags = 0
|
||||
var/attacktext = "attacked"
|
||||
var/attacktext = "attacks"
|
||||
var/attack_sound = SFX_SWING_HIT
|
||||
var/friendly = "nuzzles"
|
||||
var/environment_smash = 0
|
||||
@@ -225,9 +225,9 @@
|
||||
. = ..()
|
||||
seek_move_delay = (1 / seek_speed) * 10 //number of ds between moves
|
||||
turns_since_scan = rand(min_scan_interval, max_scan_interval)//Randomise this at the start so animals don't sync up
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
remove_verb(src, /mob/verb/observe)
|
||||
health = maxHealth
|
||||
health = maxhealth
|
||||
if (mob_size)
|
||||
update_nutrition_stats()
|
||||
reagents = new/datum/reagents(stomach_size_mult*mob_size, src)
|
||||
@@ -293,9 +293,9 @@
|
||||
. = ..()
|
||||
if (stat == DEAD)
|
||||
. += SPAN_DANGER("It looks dead.")
|
||||
if (health < maxHealth * 0.5)
|
||||
if (health < maxhealth * 0.5)
|
||||
. += SPAN_DANGER("It looks badly wounded.")
|
||||
else if (health < maxHealth)
|
||||
else if (health < maxhealth)
|
||||
. += SPAN_WARNING("It looks wounded.")
|
||||
|
||||
/mob/living/simple_animal/can_name(var/mob/living/M)
|
||||
@@ -315,8 +315,8 @@
|
||||
//Health
|
||||
updatehealth()
|
||||
|
||||
if(health > maxHealth)
|
||||
health = maxHealth
|
||||
if(health > maxhealth)
|
||||
health = maxhealth
|
||||
|
||||
handle_blood()
|
||||
handle_stunned()
|
||||
@@ -450,7 +450,7 @@
|
||||
death()
|
||||
|
||||
var/current_blood_state = blood_state
|
||||
var/blood_mod = health / maxHealth
|
||||
var/blood_mod = health / maxhealth
|
||||
if(blood_mod > 0.9)
|
||||
blood_state = BLOOD_NONE
|
||||
else if(blood_mod >= 0.7)
|
||||
@@ -533,7 +533,7 @@
|
||||
if (!hunger_enabled || nutrition > max_nutrition * 0.9)
|
||||
return 0//full
|
||||
|
||||
else if ((nutrition > max_nutrition * 0.8) || health < maxHealth)
|
||||
else if ((nutrition > max_nutrition * 0.8) || health < maxhealth)
|
||||
return 1//content
|
||||
|
||||
else return 2//hungry
|
||||
@@ -634,7 +634,7 @@
|
||||
if(istype(attacking_item, /obj/item/saddle) && vehicle_version && (stat != DEAD))
|
||||
var/obj/vehicle/V = new vehicle_version (get_turf(src))
|
||||
V.health = health
|
||||
V.maxhealth = maxHealth
|
||||
V.maxhealth = maxhealth
|
||||
to_chat(user, SPAN_WARNING("You place \the [attacking_item] on the \the [src]."))
|
||||
user.drop_from_inventory(attacking_item)
|
||||
attacking_item.forceMove(get_turf(src))
|
||||
@@ -774,7 +774,7 @@
|
||||
. = ..()
|
||||
|
||||
if(show_stat_health)
|
||||
. += "Health: [round((health / maxHealth) * 100)]%"
|
||||
. += "Health: [round((health / maxhealth) * 100)]%"
|
||||
. += "Nutrition: [nutrition]/[max_nutrition]"
|
||||
|
||||
/mob/living/simple_animal/updatehealth()
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
harm_intent_damage = 2
|
||||
|
||||
maxHealth = 30
|
||||
maxhealth = 30
|
||||
health = 30
|
||||
|
||||
universal_speak =1
|
||||
@@ -185,12 +185,12 @@
|
||||
icon_living = "spacewormhead0"
|
||||
icon_dead = "spacewormheaddead"
|
||||
|
||||
maxHealth = 20
|
||||
maxhealth = 20
|
||||
health = 20
|
||||
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
attacktext = "bitten"
|
||||
attacktext = "bites"
|
||||
|
||||
animate_movement = SLIDE_STEPS
|
||||
|
||||
|
||||
Reference in New Issue
Block a user