Ports Biotypes (#15471)

* Ports Biotypes

* styling

* converts a species trait

* comment
This commit is contained in:
Fox McCloud
2021-02-25 10:55:55 -05:00
committed by GitHub
parent 30194fedd3
commit 07d505b33b
75 changed files with 175 additions and 53 deletions
@@ -2,6 +2,7 @@
hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPMINDSHIELD_HUD,IMPCHEM_HUD,IMPTRACK_HUD,SPECIALROLE_HUD,GLAND_HUD)
pressure_resistance = 25
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
//Marking colour and style
var/list/m_colours = DEFAULT_MARKING_COLOURS //All colours set to #000000.
var/list/m_styles = DEFAULT_MARKING_STYLES //All markings set to None.
@@ -83,6 +83,8 @@
var/single_gib_type = /obj/effect/decal/cleanable/blood/gibs
var/remains_type = /obj/effect/decal/remains/human //What sort of remains is left behind when the species dusts
var/base_color //Used when setting species.
/// bitfield of biotypes the mob belongs to.
var/inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID
var/list/inherent_factions
//Used in icon caching.
@@ -285,6 +287,8 @@
H.hud_used.update_locked_slots()
H.ventcrawler = ventcrawler
H.mob_biotypes = inherent_biotypes
for(var/X in inherent_traits)
ADD_TRAIT(H, X, SPECIES_TRAIT)
@@ -20,8 +20,8 @@
even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \
water and other radiation."
species_traits = list(IS_PLANT)
inherent_traits = list(TRAIT_NOGERMS, TRAIT_NODECAY)
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT
clothing_flags = HAS_SOCKS
default_hair_colour = "#000000"
has_gender = FALSE
@@ -6,6 +6,7 @@
species_traits = list(NO_BLOOD)
inherent_traits = list(TRAIT_RESISTHEAT, TRAIT_NOBREATH, TRAIT_RESISTCOLD, TRAIT_RESISTHIGHPRESSURE, TRAIT_RESISTLOWPRESSURE, TRAIT_NOFIRE, TRAIT_CHUNKYFINGERS, TRAIT_RADIMMUNE, TRAIT_PIERCEIMMUNE, TRAIT_NOPAIN)
inherent_biotypes = MOB_HUMANOID | MOB_MINERAL
dies_at_threshold = TRUE
speed_mod = 2
brute_mod = 0.45 //55% damage reduction
@@ -313,9 +314,9 @@
name = "Wood Golem"
golem_colour = rgb(158, 112, 75)
skinned_type = /obj/item/stack/sheet/wood
species_traits = list(NO_BLOOD, IS_PLANT) // Refactor into biotype
//Can burn and take damage from heat
inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD, TRAIT_RESISTHIGHPRESSURE, TRAIT_RESISTLOWPRESSURE, TRAIT_CHUNKYFINGERS, TRAIT_RADIMMUNE, TRAIT_PIERCEIMMUNE, TRAIT_NOPAIN)
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT
brute_mod = 0.7 //30% damage reduction down from 55%
burn_mod = 0.875
tox_mod = 0.7
@@ -10,6 +10,7 @@
tox_mod = 1.7
species_traits = list(IS_WHITELISTED)
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_BUG
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
bodyflags = HAS_HEAD_ACCESSORY | HAS_HEAD_MARKINGS | HAS_BODY_MARKINGS
eyes = "kidan_eyes_s"
@@ -23,6 +23,7 @@
species_traits = list(IS_WHITELISTED, NO_BLOOD, NO_CLONESCAN, NO_INTORGANS, NOTRANSSTING)
inherent_traits = list(TRAIT_VIRUSIMMUNE, TRAIT_NOBREATH, TRAIT_RADIMMUNE, TRAIT_NOGERMS, TRAIT_NODECAY, TRAIT_NOPAIN, TRAIT_GENELESS) //Computers that don't decay? What a lie!
inherent_biotypes = MOB_ROBOTIC | MOB_HUMANOID
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
bodyflags = HAS_SKIN_COLOR | HAS_HEAD_MARKINGS | HAS_HEAD_ACCESSORY | ALL_RPARTS
dietflags = 0 //IPCs can't eat, so no diet
@@ -7,6 +7,7 @@
species_traits = list(IS_WHITELISTED, NO_BLOOD, NOTRANSSTING)
inherent_traits = list(TRAIT_RADIMMUNE, TRAIT_NOHUNGER)
inherent_biotypes = MOB_HUMANOID | MOB_MINERAL
forced_heartattack = TRUE // Plasmamen have no blood, but they should still get heart-attacks
skinned_type = /obj/item/stack/sheet/mineral/plasma // We're low on plasma, R&D! *eyes plasmaman co-worker intently*
dietflags = DIET_OMNI
@@ -11,6 +11,7 @@
species_traits = list(NO_BLOOD)
inherent_traits = list(TRAIT_RESISTHEAT, TRAIT_NOBREATH, TRAIT_RESISTCOLD, TRAIT_RESISTHIGHPRESSURE, TRAIT_RESISTLOWPRESSURE, TRAIT_RADIMMUNE, TRAIT_PIERCEIMMUNE, TRAIT_NOHUNGER, TRAIT_XENO_IMMUNE)
inherent_biotypes = MOB_UNDEAD | MOB_HUMANOID
tox_mod = 0
clone_mod = 0
dies_at_threshold = TRUE
@@ -15,6 +15,7 @@
their native tongue is a heavy hissing laungage called Sinta'Unathi."
species_traits = list(LIPS)
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_REPTILE
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
bodyflags = HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_BODY_MARKINGS | HAS_HEAD_MARKINGS | HAS_SKIN_COLOR | HAS_ALT_HEADS | TAIL_WAGGING
dietflags = DIET_CARN
@@ -35,6 +35,8 @@
var/floating = FALSE
var/mob_size = MOB_SIZE_HUMAN
// What type of mob is this
var/mob_biotypes = MOB_ORGANIC
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
var/digestion_ratio = 1 //controls how quickly reagents metabolize; largely governered by species attributes.
@@ -5,6 +5,7 @@
bubble_icon = "machine"
has_unlimited_silicon_privilege = 1
weather_immunities = list("ash")
mob_biotypes = MOB_ROBOTIC
flags_2 = RAD_PROTECT_CONTENTS_2 | RAD_NO_CONTAMINATE_2
var/syndicate = 0
var/const/MAIN_CHANNEL = "Main Frequency"
@@ -4,6 +4,7 @@
/mob/living/simple_animal/bot
icon = 'icons/obj/aibots.dmi'
layer = MOB_LAYER - 0.1
mob_biotypes = MOB_ROBOTIC
light_range = 3
stop_automated_movement = 1
wander = 0
@@ -1,6 +1,7 @@
/mob/living/simple_animal/hostile/construct
name = "Construct"
real_name = "Construct"
mob_biotypes = NONE
speak_emote = list("hisses")
emote_hear = list("wails","screeches")
response_help = "thinks better of touching"
@@ -19,6 +19,7 @@
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
ventcrawler = 2
mob_size = MOB_SIZE_TINY
mob_biotypes = MOB_ORGANIC | MOB_BUG
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 0)
gold_core_spawnable = FRIENDLY_SPAWN
@@ -10,6 +10,7 @@
minbodytemp = 270
maxbodytemp = INFINITY
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_biotypes = MOB_ORGANIC | MOB_BUG
mob_size = MOB_SIZE_TINY
response_help = "pokes"
response_disarm = "shoos"
@@ -15,4 +15,5 @@
response_disarm = "gently pushes aside"
response_harm = "kicks"
can_collar = 1
mob_biotypes = MOB_ORGANIC | MOB_BEAST
gold_core_spawnable = FRIENDLY_SPAWN
@@ -11,6 +11,7 @@
icon_dead = "nymph_dead"
icon_resting = "nymph_sleep"
pass_flags = PASSTABLE | PASSMOB
mob_biotypes = MOB_ORGANIC | MOB_PLANT
mob_size = MOB_SIZE_SMALL
ventcrawler = 2
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
@@ -17,6 +17,7 @@
response_disarm = "gently pushes aside"
response_harm = "kicks"
faction = list("neutral")
mob_biotypes = MOB_ORGANIC | MOB_BEAST
attack_same = 1
attacktext = "kicks"
attack_sound = 'sound/weapons/punch1.ogg'
@@ -132,6 +133,7 @@
blood_volume = BLOOD_VOLUME_NORMAL
var/obj/item/udder/udder = null
gender = FEMALE
mob_biotypes = MOB_ORGANIC | MOB_BEAST
/mob/living/simple_animal/cow/Initialize()
udder = new()
@@ -178,6 +180,7 @@
icon_dead = "chick_dead"
icon_gib = "chick_gib"
gender = FEMALE
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
speak_emote = list("cheeps")
emote_hear = list("cheeps")
@@ -222,6 +225,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
name = "\improper chicken"
desc = "Hopefully the eggs are good this season."
gender = FEMALE
mob_biotypes = MOB_ORGANIC | MOB_BEAST
icon_state = "chicken_brown"
icon_living = "chicken_brown"
icon_dead = "chicken_brown_dead"
@@ -333,6 +337,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
health = 50
maxHealth = 50
can_collar = 1
mob_biotypes = MOB_ORGANIC | MOB_BEAST
gold_core_spawnable = FRIENDLY_SPAWN
blood_volume = BLOOD_VOLUME_NORMAL
@@ -357,6 +362,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
health = 50
maxHealth = 50
can_collar = 1
mob_biotypes = MOB_ORGANIC | MOB_BEAST
gold_core_spawnable = FRIENDLY_SPAWN
/mob/living/simple_animal/goose
@@ -380,6 +386,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
health = 50
maxHealth = 50
can_collar = 1
mob_biotypes = MOB_ORGANIC | MOB_BEAST
gold_core_spawnable = FRIENDLY_SPAWN
/mob/living/simple_animal/seal
@@ -403,6 +410,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
health = 50
maxHealth = 50
can_collar = 1
mob_biotypes = MOB_ORGANIC | MOB_BEAST
gold_core_spawnable = FRIENDLY_SPAWN
blood_volume = BLOOD_VOLUME_NORMAL
@@ -427,6 +435,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
health = 50
maxHealth = 50
can_collar = 1
mob_biotypes = MOB_ORGANIC | MOB_BEAST
gold_core_spawnable = FRIENDLY_SPAWN
blood_volume = BLOOD_VOLUME_NORMAL
@@ -22,6 +22,7 @@
can_hide = 1
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
can_collar = 1
mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_REPTILE
gold_core_spawnable = FRIENDLY_SPAWN
/mob/living/simple_animal/lizard/decompile_act(obj/item/matter_decompiler/C, mob/user)
@@ -23,6 +23,7 @@
density = 0
ventcrawler = 2
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_biotypes = MOB_ORGANIC | MOB_BEAST
mob_size = MOB_SIZE_TINY
var/mouse_color //brown, gray and white, leave blank for random
layer = MOB_LAYER
@@ -1,6 +1,7 @@
/mob/living/simple_animal/pet
icon = 'icons/mob/pets.dmi'
mob_size = MOB_SIZE_SMALL
mob_biotypes = MOB_ORGANIC | MOB_BEAST
blood_volume = BLOOD_VOLUME_NORMAL
can_collar = TRUE
@@ -29,6 +29,7 @@
ventcrawler = VENTCRAWLER_ALWAYS
density = FALSE
pass_flags = PASSTABLE | PASSMOB
mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_REPTILE
mob_size = MOB_SIZE_SMALL
gold_core_spawnable = FRIENDLY_SPAWN
obj_damage = 0
@@ -21,6 +21,7 @@
response_disarm = "shoos"
response_harm = "stomps on"
speed = 0
mob_biotypes = MOB_ROBOTIC
mob_size = MOB_SIZE_SMALL
speak_emote = list("beeps","clicks","chirps")
@@ -6,6 +6,7 @@
icon_living = "bat"
icon_dead = "bat_dead"
icon_gib = "bat_dead"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
@@ -6,6 +6,7 @@
icon_living = "bear"
icon_dead = "bear_dead"
icon_gib = "bear_gib"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak = list("RAWR!","Rawr!","GRR!","Growl!")
speak_emote = list("growls", "roars")
emote_hear = list("rawrs","grumbles","grawls")
@@ -35,6 +35,7 @@
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
density = FALSE
mob_size = MOB_SIZE_TINY
mob_biotypes = MOB_ORGANIC | MOB_BUG
flying = TRUE
gold_core_spawnable = HOSTILE_SPAWN
search_objects = TRUE //have to find those plant trays!
@@ -8,6 +8,7 @@
icon_living = "base"
icon_dead = "base_dead"
icon_gib = "carp_gib"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 2)
@@ -1,6 +1,7 @@
/mob/living/simple_animal/hostile/deathsquid
name = "death squid"
desc = "A large, floating eldritch horror. Its body glows with an evil red light, and its tentacles look to have been dipped in alien blood."
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speed = 1
speak_emote = list("telepathically thunders", "telepathically booms")
@@ -4,6 +4,7 @@
icon_state = "faithless"
icon_living = "faithless"
icon_dead = "faithless_dead"
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
speak_chance = 0
turns_per_move = 5
response_help = "passes through the"
@@ -6,6 +6,7 @@
icon_living = "cat2"
icon_dead = "cat2_dead"
gender = MALE
mob_biotypes = MOB_ORGANIC | MOB_BEAST
maxHealth = 20
health = 20
melee_damage_lower = 10
@@ -11,6 +11,7 @@
icon_state = "cursedclown"
icon_living = "cursedclown"
icon_gib = "clown_gib"
mob_biotypes = NONE
maxHealth = 200
health = 200
speed = -1
@@ -12,6 +12,7 @@
var/butcher_state = 8 // Icon state for dead spider icons
icon_living = "guard"
icon_dead = "guard_dead"
mob_biotypes = MOB_ORGANIC | MOB_BUG
speak_emote = list("chitters")
emote_hear = list("chitters")
speak_chance = 5
@@ -7,6 +7,7 @@
icon_living = "hellhound"
icon_dead = "hellhound_dead"
icon_resting = "hellhound_rest"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = INFINITY
@@ -9,6 +9,7 @@
icon_state = "basic"
icon_living = "basic"
icon_dead = "basic"
mob_biotypes = MOB_ROBOTIC
health = 15
maxHealth = 15
melee_damage_lower = 2
@@ -5,6 +5,7 @@
icon_state = "static"
icon_living = "static"
icon_dead = "null"
mob_biotypes = NONE
melee_damage_lower = 5
melee_damage_upper = 5
a_intent = INTENT_HARM
@@ -11,6 +11,7 @@
icon_dead = "panther_dead"
icon_resting = "panther_rest"
icon_gib = "panther_dead"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
@@ -4,6 +4,7 @@
icon_state = "tomato"
icon_living = "tomato"
icon_dead = "tomato_dead"
mob_biotypes = MOB_ORGANIC | MOB_PLANT
speak_chance = 0
turns_per_move = 5
maxHealth = 30
@@ -28,6 +28,7 @@ Difficulty: Medium
icon_state = "miner"
icon_living = "miner"
icon = 'icons/mob/lavaland/blood_drunk.dmi'
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
light_color = "#E4C7C5"
flying = FALSE
speak_emote = list("roars")
@@ -6,6 +6,7 @@
a_intent = INTENT_HARM
sentience_type = SENTIENCE_BOSS
environment_smash = ENVIRONMENT_SMASH_RWALLS
mob_biotypes = MOB_ORGANIC | MOB_EPIC
obj_damage = 400
light_range = 3
faction = list("mining", "boss")
@@ -47,6 +47,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
icon_state = "swarmer_console"
health = 750
maxHealth = 750 //""""low-ish"""" HP because it's a passive boss, and the swarm itself is the real foe
mob_biotypes = MOB_ROBOTIC
internal_type = /obj/item/gps/internal/swarmer_beacon
medal_type = BOSS_MEDAL_SWARMERS
score_type = SWARMER_BEACON_SCORE
@@ -12,6 +12,8 @@
maxHealth = 250
health = 250
mob_biotypes = NONE
harm_intent_damage = 5
melee_damage_lower = 8
melee_damage_upper = 12
@@ -8,6 +8,7 @@
icon_aggro = "Basilisk_alert"
icon_dead = "Basilisk_dead"
icon_gib = "syndicate_gib"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
move_to_delay = 20
projectiletype = /obj/item/projectile/temp/basilisk
projectilesound = 'sound/weapons/pierce.ogg'
@@ -8,6 +8,7 @@
icon_aggro = "Goldgrub_alert"
icon_dead = "Goldgrub_dead"
icon_gib = "syndicate_gib"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
vision_range = 2
aggro_vision_range = 9
move_to_delay = 5
@@ -8,6 +8,7 @@
icon_aggro = "Goliath_alert"
icon_dead = "Goliath_dead"
icon_gib = "syndicate_gib"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
mouse_opacity = MOUSE_OPACITY_ICON
move_to_delay = 40
ranged = TRUE
@@ -6,6 +6,7 @@
icon_state = "gutlunch"
icon_living = "gutlunch"
icon_dead = "gutlunch"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_emote = list("warbles", "quavers")
emote_hear = list("trills.")
emote_see = list("sniffs.", "burps.")
@@ -7,6 +7,7 @@
icon_aggro = "Hivelord_alert"
icon_dead = "Hivelord_dead"
icon_gib = "syndicate_gib"
mob_biotypes = MOB_ORGANIC
mouse_opacity = MOUSE_OPACITY_OPAQUE
move_to_delay = 14
ranged = 1
@@ -160,6 +161,7 @@
icon_aggro = "legion"
icon_dead = "legion"
icon_gib = "syndicate_gib"
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
mouse_opacity = MOUSE_OPACITY_ICON
obj_damage = 60
melee_damage_lower = 15
@@ -4,6 +4,7 @@
icon_state = "mushroom_color"
icon_living = "mushroom_color"
icon_dead = "mushroom_dead"
mob_biotypes = MOB_ORGANIC | MOB_PLANT
speak_chance = 0
turns_per_move = 1
maxHealth = 10
@@ -5,6 +5,7 @@
icon_state = "piratemelee"
icon_living = "piratemelee"
icon_dead = "piratemelee_dead" // Does not actually exist. del_on_death.
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
speak_chance = 0
turns_per_move = 5
response_help = "pushes the"
@@ -7,6 +7,7 @@
icon_dead = "clown_dead"
icon_gib = "clown_gib"
speak_chance = 0
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
turns_per_move = 5
response_help = "pokes the"
response_disarm = "gently pushes aside the"
@@ -39,6 +40,7 @@
icon_state = "clowngoblin"
icon_living = "clowngoblin"
icon_dead = null
mob_biotypes = MOB_ORGANIC
response_help = "honks the"
speak = list("Honk!")
speak_emote = list("sqeaks")
@@ -6,6 +6,7 @@
icon_state = "drone3"
icon_living = "drone3"
icon_dead = "drone_dead"
mob_biotypes = MOB_ROBOTIC
ranged = 1
rapid = 3
retreat_distance = 3
@@ -5,6 +5,7 @@
icon = 'icons/mob/carp.dmi'
icon_state = "carp"
icon_gib = "carp_gib"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 1)
@@ -7,6 +7,7 @@
icon_living = "kangaroo"
icon_dead = "kangaroo_dead"
icon_gib = "kangaroo_dead"
mob_biotypes = MOB_ORGANIC | MOB_BEAST
turns_per_move = 8
response_help = "pets"
emote_hear = list("bark")
@@ -8,6 +8,7 @@
icon_living = "guard"
icon_dead = "guard_dead"
icon_gib = "guard_dead"
mob_biotypes = MOB_ORGANIC | MOB_BUG
turns_per_move = 8
response_help = "pets"
emote_hear = list("chitters")
@@ -19,4 +20,4 @@
unique_pet = TRUE
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 2, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
gender = FEMALE
@@ -22,6 +22,7 @@
icon_state = "ghost2"
icon_living = "ghost2"
icon_dead = "ghost"
mob_biotypes = MOB_SPIRIT
density = 0 // ghost
invisibility = 60 // no seriously ghost
speak_chance = 0 // fyi, ghost
@@ -69,6 +70,7 @@
icon_state = "skeleton_s"
icon_living = "skeleton_s"
icon_dead = "skeleton_l"
mob_biotypes = MOB_UNDEAD | MOB_HUMANOID
speak_chance = 0
turns_per_move = 10
response_help = "shakes hands with"
@@ -97,6 +99,7 @@
icon_state = "zombie_s"
icon_living = "zombie_s"
icon_dead = "zombie_l"
mob_biotypes = MOB_UNDEAD | MOB_HUMANOID
speak_chance = 0
turns_per_move = 10
response_help = "gently prods"
@@ -6,6 +6,7 @@
icon_living = "russianmelee"
icon_dead = "russianmelee_dead" // Does not actually exist. del_on_death.
icon_gib = "russianmelee_gib" // Does not actually exist. del_on_death.
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
speak_chance = 0
turns_per_move = 5
response_help = "pokes the"
@@ -4,6 +4,7 @@
icon = 'icons/mob/simple_human.dmi'
icon_state = "skeleton"
icon_living = "skeleton"
mob_biotypes = MOB_UNDEAD | MOB_HUMANOID
turns_per_move = 5
speak_emote = list("rattles")
emote_see = list("rattles")
@@ -9,6 +9,7 @@
icon_dead = "angel"
gender = NEUTER
a_intent = INTENT_HARM
mob_biotypes = MOB_HUMANOID
response_help = "touches"
response_disarm = "pushes"
@@ -6,6 +6,7 @@
icon_living = "syndicate"
icon_dead = "syndicate_dead" // Does not actually exist. del_on_death.
icon_gib = "syndicate_gib" // Does not actually exist. del_on_death.
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
speak_chance = 0
turns_per_move = 5
response_help = "pokes the"
@@ -350,6 +351,7 @@
icon_living = "viscerator_attack"
pass_flags = PASSTABLE | PASSMOB
a_intent = INTENT_HARM
mob_biotypes = MOB_ROBOTIC
health = 15
maxHealth = 15
obj_damage = 0
@@ -25,6 +25,8 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list)
icon_living = "terror_red"
icon_dead = "terror_red_dead"
mob_biotypes = MOB_ORGANIC | MOB_BUG
// Health
maxHealth = 120
health = 120
@@ -6,6 +6,7 @@
icon_living = "pine_1"
icon_dead = "pine_1"
icon_gib = "pine_1"
mob_biotypes = MOB_ORGANIC | MOB_PLANT
speak_chance = 0
turns_per_move = 5
response_help = "brushes the"
@@ -49,6 +49,7 @@
name = "venus human trap"
desc = "Now you know how the fly feels."
icon_state = "venus_human_trap"
mob_biotypes = MOB_ORGANIC | MOB_PLANT
layer = MOB_LAYER + 0.9
health = 50
maxHealth = 50
@@ -53,6 +53,7 @@
response_harm = "swats"
stop_automated_movement = TRUE
universal_speak = TRUE
mob_biotypes = MOB_ORGANIC | MOB_BEAST
mob_size = MOB_SIZE_SMALL
var/parrot_state = PARROT_WANDER //Hunt for a perch when created
@@ -1,6 +1,7 @@
/mob/living/simple_animal/possessed_object
name = "possessed doodad"
var/spirit_name = "mysterious force" // What we call ourselves in attack messages.
mob_biotypes = MOB_SPIRIT
health = 50
maxHealth = 50
@@ -6,6 +6,7 @@
icon_state = "shade"
icon_living = "shade"
icon_dead = "shade_dead"
mob_biotypes = MOB_SPIRIT
maxHealth = 50
health = 50
speak_emote = list("hisses")
+17 -7
View File
@@ -66,12 +66,17 @@
max_charges = 3 //3, 2, 2, 1
/obj/item/gun/magic/wand/death/zap_self(mob/living/user)
var/message ="<span class='warning'>You irradiate yourself with pure energy! "
message += pick("Do not pass go. Do not collect 200 zorkmids.</span>","You feel more confident in your spell casting skills.</span>","You Die...</span>","Do you want your possessions identified?</span>")
to_chat(user, message)
user.adjustFireLoss(3000)
charges--
..()
charges--
if(isliving(user))
if(user.mob_biotypes & MOB_UNDEAD) //negative energy heals the undead
user.revive()
to_chat(user, "<span class='notice'>You feel great!</span>")
return
to_chat(user, "<span class='warning'>You irradiate yourself with pure negative energy! [pick("Do not pass go. Do not collect 200 zorkmids.", "You feel more confident in your spell casting skills.", "You Die...", "Do you want your possessions identified?")]</span>")
if(ismachineperson(user)) //speshul snowfleks deserv speshul treetment
user.adjustFireLoss(6969)
user.death(FALSE)
/////////////////////////////////////
//WAND OF HEALING
@@ -86,10 +91,15 @@
max_charges = 3 //3, 2, 2, 1
/obj/item/gun/magic/wand/resurrection/zap_self(mob/living/user)
..()
charges--
if(isliving(user))
if(user.mob_biotypes & MOB_UNDEAD) //positive energy harms the undead
to_chat(user, "<span class='warning'>You irradiate yourself with pure positive energy! [pick("Do not pass go. Do not collect 200 zorkmids.", "You feel more confident in your spell casting skills.", "You Die...", "Do you want your possessions identified?")]</span>")
user.death(FALSE)
return
user.revive()
to_chat(user, "<span class='notice'>You feel great!</span>")
charges--
..()
/////////////////////////////////////
//WAND OF POLYMORPH
+29 -19
View File
@@ -25,15 +25,21 @@
var/exp_flash = 3
var/exp_fire = 2
/obj/item/projectile/magic/death/on_hit(mob/living/carbon/C)
/obj/item/projectile/magic/death/on_hit(mob/living/carbon/target)
. = ..()
if(isliving(C))
if(ismachineperson(C)) //speshul snowfleks deserv speshul treetment
C.adjustFireLoss(6969) //remember - slimes love fire
else
C.death()
if(isliving(target))
if(target.mob_biotypes & MOB_UNDEAD) //negative energy heals the undead
if(target.revive())
target.grab_ghost(force = TRUE) // even suicides
to_chat(target, "<span class='notice'>You rise with a start, you're undead!!!</span>")
else if(target.stat != DEAD)
to_chat(target, "<span class='notice'>You feel great!</span>")
return
if(ismachineperson(target)) //speshul snowfleks deserv speshul treetment
target.adjustFireLoss(6969) //remember - slimes love fire
target.death(FALSE)
visible_message("<span class='danger'>[C] topples backwards as the death bolt impacts [C.p_them()]!</span>")
target.visible_message("<span class='danger'>[target] topples backwards as the death bolt impacts [target.p_them()]!</span>")
/obj/item/projectile/magic/fireball/Range()
var/turf/T1 = get_step(src,turn(dir, -45))
@@ -73,21 +79,25 @@
name = "bolt of resurrection"
icon_state = "ion"
/obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target)
/obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
. = ..()
if(ismob(target))
var/old_stat = target.stat
target.suiciding = 0
target.revive()
if(!target.ckey)
for(var/mob/dead/observer/ghost in GLOB.player_list)
if(target.real_name == ghost.real_name)
ghost.reenter_corpse()
break
if(old_stat != DEAD)
to_chat(target, "<span class='notice'>You feel great!</span>")
if(target.mob_biotypes & MOB_UNDEAD) //positive energy harms the undead
target.death(FALSE)
target.visible_message("<span class='danger'>[target] topples backwards as the death bolt impacts [target.p_them()]!</span>")
else
to_chat(target, "<span class='notice'>You rise with a start, you're alive!!!</span>")
var/old_stat = target.stat
target.suiciding = FALSE
target.revive()
if(!target.ckey)
for(var/mob/dead/observer/ghost in GLOB.player_list)
if(target.real_name == ghost.real_name)
ghost.reenter_corpse()
break
if(old_stat != DEAD)
to_chat(target, "<span class='notice'>You feel great!</span>")
else
to_chat(target, "<span class='notice'>You rise with a start, you're alive!!!</span>")
/obj/item/projectile/magic/teleport
name = "bolt of teleportation"
@@ -1040,20 +1040,19 @@
var/obj/structure/spacevine/SV = O
SV.on_chem_effect(src)
/datum/reagent/glyphosate/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!C.wear_mask) // If not wearing a mask
C.adjustToxLoss(lethality)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(IS_PLANT in H.dna.species.species_traits) //plantmen take extra damage
H.adjustToxLoss(3)
..()
else if(istype(M, /mob/living/simple_animal/diona)) //nymphs take EVEN MORE damage
var/mob/living/simple_animal/diona/D = M
D.adjustHealth(100)
..()
/datum/reagent/glyphosate/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume)
if(isliving(M))
if(M.mob_biotypes & MOB_PLANT)
var/damage = min(round(0.4 * volume, 0.1), 10)
M.adjustToxLoss(damage)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!C.wear_mask) // If not wearing a mask
C.adjustToxLoss(lethality)
if(istype(M, /mob/living/simple_animal/diona)) //nymphs take EVEN MORE damage
var/mob/living/simple_animal/diona/D = M
D.adjustHealth(100)
..()
/datum/reagent/glyphosate/atrazine
name = "Atrazine"
@@ -1081,15 +1080,17 @@
O.visible_message("<span class='warning'>The ants die.</span>")
qdel(O)
/datum/reagent/pestkiller/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!C.wear_mask) // If not wearing a mask
C.adjustToxLoss(2)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(iskidan(H)) //RIP
H.adjustToxLoss(20)
/datum/reagent/pestkiller/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume)
if(isliving(M))
if(M.mob_biotypes & MOB_BUG)
var/damage = min(round(0.4 * volume, 0.1), 10)
M.adjustToxLoss(damage)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!C.wear_mask) // If not wearing a mask
C.adjustToxLoss(2)
if(iskidan(C)) //RIP
C.adjustToxLoss(18)
/datum/reagent/capulettium
name = "Capulettium"