Merge pull request #7390 from Cerebulon/schneemobs

Adds some surface mobs.
This commit is contained in:
Atermonera
2020-08-06 11:20:45 -07:00
committed by GitHub
11 changed files with 389 additions and 2 deletions

View File

@@ -54,4 +54,4 @@
/obj/item/weapon/reagent_containers/food/snacks/meat/crab
name = "meat"
desc = "A chunk of meat."
icon_state = "crustacean-meat"
icon_state = "crustacean-meat"

View File

@@ -231,4 +231,14 @@
name = "Spice"
real_name = "Spice" //Intended to hold the name without altering it.
gender = FEMALE
desc = "It's a tamaskan, the name Spice can be found on its collar."
desc = "It's a tamaskan, the name Spice can be found on its collar."
// Brittany Spaniel
/mob/living/simple_mob/animal/passive/dog/brittany
name = "brittany"
real_name = "brittany"
desc = "It's a brittany spaniel."
icon_state = "brittany"
icon_living = "brittany"
icon_dead = "brittany_dead"

View File

@@ -167,3 +167,4 @@
holder.face_atom(A)
F.energy = max(0, F.energy - 1) // The AI will eventually flee.

View File

@@ -0,0 +1,68 @@
// Complete chumps but a little bit hardier than mice.
/datum/category_item/catalogue/fauna/hare
name = "Sivian Fauna - Ice Hare"
desc = "Classification: S Lepus petropellis\
<br><br>\
Hard-skinned, horned herbivores common on the glacial regions of Sif. \
The Ice Hare lives in colonies of up to thirty individuals dug beneath thick ice sheets for protection from many burrowing predators. \
Their diet consists of mostly moss and lichens, though this is supplemented with the consumption of hard mineral pebbles, which it swallows whole, \
which form the small, hard, 'ice-like' scales of the animal. \
The Ice Hare is almost completely harmless to sapients, with relatively blunt claws and a weak jaw. Its main forms of self-defense are its speed, \
and two sharp head spikes whose 'ear-like' appearance gave the species its common name."
value = CATALOGUER_REWARD_EASY
/mob/living/simple_mob/animal/passive/hare
name = "ice hare"
real_name = "ice hare"
desc = "A small horned herbivore with a tough 'ice-like' hide."
tt_desc = "S Lepus petropellis" //Sivian hare rockskin
catalogue_data = list(/datum/category_item/catalogue/fauna/hare)
icon_state = "hare"
icon_living = "hare"
icon_dead = "hare_dead"
icon_rest = "hare_rest"
maxHealth = 20
health = 20
armor = list(
"melee" = 30,
"bullet" = 5,
"laser" = 5,
"energy" = 0,
"bomb" = 10,
"bio" = 0,
"rad" = 0
)
armor_soak = list(
"melee" = 5,
"bullet" = 0,
"laser" = 0,
"energy" = 0,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
movement_cooldown = 2
mob_size = MOB_SMALL
pass_flags = PASSTABLE
layer = MOB_LAYER
density = 0
response_help = "pets"
response_disarm = "nudges"
response_harm = "kicks"
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
say_list_type = /datum/say_list/hare
/datum/say_list/hare
speak = list("Snrf...","Crk!")
emote_hear = list("crackles","sniffles")
emote_see = list("stomps the ground", "sniffs the air", "chews on something")

View File

@@ -0,0 +1,143 @@
//Very similar to frostflies, but with a non-lethal gas and less damaging, but less easy to protect from, projectiles.
/datum/category_item/catalogue/fauna/tymisian
name = "Binman Fauna - Tymisian Moth"
desc = "Classification: B Carabidae glacios \
<br><br>\
A meter-long fuzzy insect from the planet Binma. \
A native of the Binman contintents of Telarus and Dalomee, the Tymisian Moth usually lives in communal \
groups of upwards of thirty individuals, known as 'spuzzes', and typically breeds up to three times in its \
fifteen year natural lifespan. \
<br>\
Though strictly herbivorous, the moth has an acute sense of smell which it uses to detect potential predators. \
Impressively, the moth secretes an oily substance which it uses to coat collected material stored in 'soft pockets' \
beneath each wing, which in turn attracts colonies of pungent bacteria. \
When threatened, the moth will release this dust, which has a disorienting effect on most Binman species, as well as all known sapients. \
<br>\
The Tymisian Moth is considered an invasive species on Sif, and is believed to have been established from an illegally \
released pet collection. Though less dangerous than in its native environment, the moth has nonetheless established a \
similar symbiotic relationship with Sivian bacteria for its defense mechanism, and is still to be considered quite dangerous. \
<br>\
As an invasive species, individuals encountering the Tymisian Moth on Sif are requested to report the sighting to local wildlife \
services, and remove or destroy the creature if it is safe to do so."
value = CATALOGUER_REWARD_MEDIUM
/mob/living/simple_mob/animal/sif/tymisian
name = "Tymisian Moth"
desc = "A huge, fuzzy insect with a disorienting dust."
tt_desc = "B Lepidoptera cinereus"
catalogue_data = list(/datum/category_item/catalogue/fauna/tymisian)
faction = "spiders" //Hostile to most mobs, not all.
icon_state = "moth"
icon_living = "moth"
icon_dead = "moth_dead"
icon_rest = "moth_dead"
icon = 'icons/mob/animal.dmi'
maxHealth = 80
health = 80
hovering = TRUE
movement_cooldown = 0.5
melee_damage_lower = 5
melee_damage_upper = 10
base_attack_cooldown = 1.5 SECONDS
attacktext = list("nipped", "bit", "pinched")
projectiletype = /obj/item/projectile/energy/blob
special_attack_cooldown = 10 SECONDS
special_attack_min_range = 0
special_attack_max_range = 6
var/energy = 100
var/max_energy = 100
var/datum/effect/effect/system/smoke_spread/mothspore/smoke_spore
say_list_type = /datum/say_list/tymisian
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/frostfly //Uses frostfly AI, since so similar mechanically
/datum/say_list/tymisian
speak = list("Zzzz.", "Rrr...", "Zzt?")
emote_see = list("grooms itself","sprinkles dust from its wings", "rubs its mandibles")
emote_hear = list("chitters", "clicks", "rattles")
say_understood = list("Ssst.")
say_cannot = list("Zzrt.")
say_maybe_target = list("Rr?")
say_got_target = list("Rrrrt!")
say_threaten = list("Kszsz.","Kszzt...","Kzzi!")
say_stand_down = list("Sss.","Zt.","! clicks.")
say_escalate = list("Rszt!")
threaten_sound = 'sound/effects/spray3.ogg'
stand_down_sound = 'sound/effects/squelch1.ogg'
/obj/effect/effect/smoke/elemental/mothspore
name = "spore cloud"
desc = "A dust cloud filled with disorienting bacterial spores."
color = "#80AB82"
/obj/effect/effect/smoke/elemental/mothspore/affect(mob/living/L) //Similar to a very weak flash, but depends on breathing instead of eye protection.
if(iscarbon(L))
var/mob/living/carbon/C = L
if(C.stat != DEAD)
if(C.needs_to_breathe())
var/spore_strength = 5
if(ishuman(C))
var/mob/living/carbon/human/H = C
H.Confuse(spore_strength)
H.eye_blurry = max(H.eye_blurry, spore_strength)
H.adjustHalLoss(10 * (spore_strength / 5))
/datum/effect/effect/system/smoke_spread/mothspore
smoke_type = /obj/effect/effect/smoke/elemental/mothspore
/mob/living/simple_mob/animal/sif/tymisian/do_special_attack(atom/A)
. = TRUE
switch(a_intent)
if(I_DISARM)
if(energy < 20)
return FALSE
energy -= 20
if(smoke_spore)
smoke_spore.set_up(7,0,src)
smoke_spore.start()
return TRUE
return FALSE
/mob/living/simple_mob/animal/sif/tymisian/Initialize()
..()
smoke_spore = new
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
/mob/living/simple_mob/animal/sif/tymisian/handle_special()
..()
if(energy < max_energy)
energy++
/mob/living/simple_mob/animal/sif/tymisian/Stat()
..()
if(client.statpanel == "Status")
statpanel("Status")
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
stat("Energy", energy)
/mob/living/simple_mob/animal/sif/tymisian/should_special_attack(atom/A)
if(energy >= 20)
return TRUE
return FALSE

View File

@@ -0,0 +1,51 @@
/datum/category_item/catalogue/fauna/pillbug
name = "Sivian Fauna - Fire Bug"
desc = "Classification: S Armadillidiidae calidi \
<br><br>\
A 10 inch long, hard-shelled insect with a natural adaption to living around terrestrial lava vents. \
The fire bug's hard shell offers extremely effective protection against most threats, \
though the species is almost completely docile, and will prefer to continue grazing on its diet of volcanic micro-flora \
rather than defend itself in most situations.\
<br>\
The fire bug is a curiosity to most on the frontier, offering little in the way of meaningful food or resources, \
though at least one Sivian fashion designer has used their iridescent red shells to create striking, hand-made garments."
value = CATALOGUER_REWARD_EASY
/mob/living/simple_mob/animal/passive/pillbug
name = "fire bug"
desc = "A tiny plated bug found in Sif's volcanic regions."
tt_desc = "S Armadillidiidae calidi"
catalogue_data = list(/datum/category_item/catalogue/fauna/pillbug)
icon_state = "pillbug"
icon_living = "pillbug"
icon_dead = "pillbug_dead"
health = 15
maxHealth = 15
mob_size = MOB_MINISCULE
response_help = "gently touches"
response_disarm = "rolls over"
response_harm = "stomps on"
armor = list(
"melee" = 30,
"bullet" = 10,
"laser" = 50,
"energy" = 50,
"bomb" = 30,
"bio" = 100,
"rad" = 100
)
// The frostfly's body is incredibly cold at all times, natural resistance to things trying to burn it.
armor_soak = list(
"melee" = 10,
"bullet" = 0,
"laser" = 10,
"energy" = 10,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)

View File

@@ -0,0 +1,61 @@
// Somewhere between a fox and a weasel. Doesn't mess with stuff significantly bigger than it, but you don't want to get on its bad side.
/datum/category_item/catalogue/fauna/siffet
name = "Sivian Fauna - Siffet"
desc = "Classification: S Pruinaeictis velocis\
<br><br>\
The Siffet, or Sivian Frost Weasel is a small, solitary predator known for its striking ability to take down prey up to twice their size. \
The majority of the Siffet's adult life is spent in isolation, prowling large territories in Sif's tundra regions, \
only seeking out other individuals during the summer mating season, when deadly battles for dominance are common. \
Though mostly docile towards adult humans and other large sapients, the Siffet has been known to target children and smaller species as prey, \
and a provoked Siffet can be a danger to even the most experienced handler due to its quick movement and surprisingly powerful jaws. \
The Siffet is sometimes hunted for its remarkably soft pelt, though most is obtained through fur farming."
value = CATALOGUER_REWARD_MEDIUM
/mob/living/simple_mob/animal/sif/siffet
name = "siffet"
desc = "A small, solitary predator with silky fur. Despite its size, the Siffet is ferocious when provoked."
tt_desc = "S Pruinaeictis velocis" //Sivian frost weasel, fast
catalogue_data = list(/datum/category_item/catalogue/fauna/siffet)
faction = "siffet"
mob_size = MOB_SMALL
icon_state = "siffet"
icon_living = "siffet"
icon_dead = "siffet_dead"
icon = 'icons/mob/animal.dmi'
maxHealth = 60
health = 60
movement_cooldown = 0
melee_damage_lower = 10
melee_damage_upper = 15
base_attack_cooldown = 1 SECOND
attack_sharp = 1
attacktext = list("sliced", "snapped", "gnawed")
say_list_type = /datum/say_list/siffet
ai_holder_type = /datum/ai_holder/simple_mob/siffet
/datum/say_list/siffet
speak = list("Yap!", "Heh!", "Huff.")
emote_see = list("sniffs its surroundings","flicks its ears", "scratches the ground")
emote_hear = list("chatters", "huffs")
/datum/ai_holder/simple_mob/siffet
hostile = TRUE
retaliate = TRUE
/datum/ai_holder/simple_mob/siffet/post_melee_attack(atom/A) //Evasive
if(holder.Adjacent(A))
holder.IMove(get_step(holder, pick(alldirs)))
holder.face_atom(A)
/mob/living/simple_mob/animal/sif/siffet/IIsAlly(mob/living/L)
. = ..()
if(!. && L.mob_size > 10) //Attacks things it considers small enough to take on, otherwise only attacks if attacked.
return TRUE