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 00000000000..49e3be018c6 Binary files /dev/null and b/icons/mob/npc/phoron_worm.dmi differ diff --git a/icons/mob/npc/small_phoron_worm.dmi b/icons/mob/npc/small_phoron_worm.dmi new file mode 100644 index 00000000000..8904ad80c29 Binary files /dev/null and b/icons/mob/npc/small_phoron_worm.dmi differ