From 6bc8ea2171bf7697801ad99fc1f3617f262e92bf Mon Sep 17 00:00:00 2001 From: Alberyk Date: Fri, 21 Aug 2020 09:42:14 -0300 Subject: [PATCH] Adds phoron eating worms (#9717) --- aurorastation.dme | 1 + .../simple_animal/hostile/phoron_worm.dm | 148 ++++++++++++++++++ html/changelogs/alberyk-bigworm.yml | 6 + icons/mob/npc/phoron_worm.dmi | Bin 0 -> 3835 bytes icons/mob/npc/small_phoron_worm.dmi | Bin 0 -> 1898 bytes 5 files changed, 155 insertions(+) create mode 100644 code/modules/mob/living/simple_animal/hostile/phoron_worm.dm create mode 100644 html/changelogs/alberyk-bigworm.yml create mode 100644 icons/mob/npc/phoron_worm.dmi create mode 100644 icons/mob/npc/small_phoron_worm.dmi diff --git a/aurorastation.dme b/aurorastation.dme index 10e5b25bcaa..25424cf7d48 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -2069,6 +2069,7 @@ #include "code\modules\mob\living\simple_animal\hostile\krampus.dm" #include "code\modules\mob\living\simple_animal\hostile\mimic.dm" #include "code\modules\mob\living\simple_animal\hostile\moghesfauna.dm" +#include "code\modules\mob\living\simple_animal\hostile\phoron_worm.dm" #include "code\modules\mob\living\simple_animal\hostile\pirate.dm" #include "code\modules\mob\living\simple_animal\hostile\pra.dm" #include "code\modules\mob\living\simple_animal\hostile\russian.dm" diff --git a/code/modules/mob/living/simple_animal/hostile/phoron_worm.dm b/code/modules/mob/living/simple_animal/hostile/phoron_worm.dm new file mode 100644 index 00000000000..d12b5119bd0 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/phoron_worm.dm @@ -0,0 +1,148 @@ +/mob/living/simple_animal/hostile/phoron_worm + name = "goliath black trident worm" + desc = "An utterly tremendous, disgustingly bloated worm which relishes in the consumption of phoron." + icon = 'icons/mob/npc/phoron_worm.dmi' + icon_state = "worm" + icon_living = "worm" + icon_dead = "worm_burrow" + speak_emote = list("hisses") + emote_hear = list("hisses") + emote_see = list("hisses ferociously") + turns_per_move = 5 + speak_chance = 5 + meat_type = /obj/item/reagent_containers/food/snacks/xenomeat + response_help = "pets" + response_disarm = "shoves" + response_harm = "harmlessly punches" + maxHealth = 850 + health = 850 + harm_intent_damage = 0 + melee_damage_lower = 30 + melee_damage_upper = 30 + resist_mod = 2 + mob_size = 30 + environment_smash = 2 + attacktext = "chomped" + attack_sound = 'sound/weapons/bite.ogg' + + faction = "worm" + + mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY + mob_push_flags = ALLMOBS + + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_NOLIGHTING + + minbodytemp = 0 + maxbodytemp = 350 + min_oxy = 0 + max_co2 = 0 + max_tox = 0 + + tameable = FALSE + + universal_understand = TRUE + + var/burrowing = FALSE + +/mob/living/simple_animal/hostile/phoron_worm/death() + ..(null,"collapses under its own weight!") + var/turf/T = get_turf(src) + new /obj/effect/gibspawner/xeno(T) + qdel(src) + +/mob/living/simple_animal/hostile/phoron_worm/update_icon() + ..() + if(burrowing) + icon_state = "worm_rest" + +/mob/living/simple_animal/hostile/phoron_worm/UnarmedAttack(var/atom/A, var/proximity) + if(burrowing) + return + ..() + +/mob/living/simple_animal/hostile/phoron_worm/Move(NewLoc, direct) + . = ..() + if(.) + if(burrowing) + if(istype(NewLoc, /turf/simulated/floor)) + var/turf/simulated/floor/F = NewLoc + F.break_tile() + +/mob/living/simple_animal/hostile/phoron_worm/verb/toggle_burrow() + set name = "Toggle Burrowing" + set desc = "Hide or not under the earth." + set category = "Abilities" + + if(health <= 0 ) + return + + if(last_special > world.time) + to_chat(src, SPAN_WARNING ("You must wait a little while before you can use this ability again!")) + return + + if(burrowing) + unburrow() + else + burrow() + + last_special = world.time + 10 SECONDS + + return + +/mob/living/simple_animal/hostile/phoron_worm/proc/burrow() + if(burrowing) + return + burrowing = TRUE + mouse_opacity = FALSE + speed = -1 + update_icon() + pass_flags = PASSTABLE | PASSMOB + layer = ON_TURF_LAYER + density = FALSE + visible_message(SPAN_DANGER("\The [src] burrows into the ground!")) + +/mob/living/simple_animal/hostile/phoron_worm/proc/unburrow() + if(!burrowing) + return + burrowing = FALSE + mouse_opacity = TRUE + speed = initial(speed) + update_icon() + pass_flags = initial(pass_flags) + layer = initial(layer) + density = TRUE + visible_message(SPAN_DANGER("\The [src] emerges from the ground!")) + if(mob_size > 15) + for(var/mob/living/M in orange(1,src)) + if(M != src) + M.apply_damage(50, BRUTE) + M.apply_effect(6, STUN, blocked) + M.throw_at(get_random_turf_in_range(get_turf(src), 1), 2) + +/mob/living/simple_animal/hostile/phoron_worm/verb/eat_phoron() + set name = "Consume Phoron" + set desc = "Consume phoron on the tile you are standing on." + set category = "Abilities" + + if(burrowing) + return + + var/obj/item/stack/material/P = locate() in get_turf(src) + if(P.material.name == MATERIAL_PHORON) + adjustBruteLoss(-5*P.amount) + visible_message(SPAN_DANGER("\The [src] consumes \the [P]!")) + qdel(P) + +/mob/living/simple_animal/hostile/phoron_worm/small + 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 + health = 80 + harm_intent_damage = 5 + melee_damage_lower = 15 + melee_damage_upper = 15 + resist_mod = 1 + mob_size = 15 + environment_smash = 1 \ No newline at end of file diff --git a/html/changelogs/alberyk-bigworm.yml b/html/changelogs/alberyk-bigworm.yml new file mode 100644 index 00000000000..3a59f9f5e73 --- /dev/null +++ b/html/changelogs/alberyk-bigworm.yml @@ -0,0 +1,6 @@ +author: Alberyk, Kyres1 + +delete-after: True + +changes: + - rscadd: "Added phoron eating worms." diff --git a/icons/mob/npc/phoron_worm.dmi b/icons/mob/npc/phoron_worm.dmi new file mode 100644 index 0000000000000000000000000000000000000000..49e3be018c6c70322df00869b4b3748ab428b55e GIT binary patch literal 3835 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 literal 0 HcmV?d00001