diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 2a3b80ab25fb9..5e981862133c6 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -3896,6 +3896,10 @@ }, /turf/open/floor/plasteel, /area/mine/living_quarters) +"vk" = ( +/mob/living/simple_animal/turtle, +/turf/open/floor/plasteel, +/area/mine/production) "xm" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -19398,7 +19402,7 @@ ab bq bC gb -bP +vk xA cH cO diff --git a/beestation.dme b/beestation.dme index 2ab9649674128..0dd8bfce1d26b 100644 --- a/beestation.dme +++ b/beestation.dme @@ -2302,6 +2302,7 @@ #include "code\modules\mob\living\simple_animal\friendly\pet.dm" #include "code\modules\mob\living\simple_animal\friendly\sloth.dm" #include "code\modules\mob\living\simple_animal\friendly\snake.dm" +#include "code\modules\mob\living\simple_animal\friendly\turtle.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 30b29db39d4b0..808babbe49826 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -382,3 +382,9 @@ desc = "You feel weak and pathetic in comparison to this exceptionally beautiful hat." icon_state = "speedwagon_cursed" item_state = "speedwagon_cursed" + +/obj/item/clothing/head/franks_hat + name = "Frank's Hat" + desc = "You feel ashamed about what you had to do to get this hat" + icon_state = "cowboy" + item_state = "cowboy" diff --git a/code/modules/mob/living/simple_animal/friendly/turtle.dm b/code/modules/mob/living/simple_animal/friendly/turtle.dm new file mode 100644 index 0000000000000..166f3be1417f5 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/turtle.dm @@ -0,0 +1,73 @@ +/mob/living/simple_animal/turtle + name = "Frank" + desc = "An adorable, slow moving, Texas pal." + icon = 'icons/mob/pets.dmi' + icon_state = "yeeslow" + icon_living = "yeeslow" + icon_dead = "yeeslow_dead" + var/icon_hiding = "yeeslow_scared" + speak_emote = list("yawns") + emote_hear = list("snores.","yawns.") + emote_see = list("Stretches out their neck.", "looks around slowly.") + speak_chance = 1 + turns_per_move = 5 + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 1, /obj/item/clothing/head/franks_hat = 1) + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) + gold_core_spawnable = FRIENDLY_SPAWN + melee_damage_lower = 18 + melee_damage_upper = 18 + health = 2500 + maxHealth = 2500 + speed = 8 + glide_size = 2 + can_be_held = TRUE + + do_footstep = TRUE + + var/turtle_hide_max = 25 //The time spent hiding in its shell + var/turtle_hide_dur = 25 //Same as above, this is the var that physically counts down + +/mob/living/simple_animal/turtle/handle_automated_movement() + if(!isturf(src.loc) || !(mobility_flags & MOBILITY_MOVE) || buckled) + return //If it can't move, dont let it move. + +//-----HIDING + if(icon_state == icon_hiding) + if(--turtle_hide_dur) //Zzz + return + else + turtle_hide_dur = turtle_hide_max + icon_state = icon_living + layer = 4 + +//-----WANDERING - Time to mosey around + else + walk(src, 0) + + if(prob(10)) + step(src, pick(GLOB.cardinals)) + return + +//Mobs with objects +/mob/living/simple_animal/turtle/attackby(obj/item/O, mob/living/user, params) + if(!stat && !client && !istype(O, /obj/item/stack/medical)) + if(O.force) + if(icon_state == icon_hiding) + turtle_hide_dur = turtle_hide_max //Reset its hiding timer + + icon_state = icon_hiding + return ..() + +//Bullets +/mob/living/simple_animal/turtle/bullet_act(obj/item/projectile/Proj) + if(!stat && !client) + if(icon_state == icon_hiding) + turtle_hide_dur = turtle_hide_max //Reset its hiding timer + return BULLET_ACT_FORCE_PIERCE // Shots fly over its shell when hiding + + icon_state = icon_hiding + layer = 3 // Allows projectiles to go over the shell instead of through it + return ..() diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi index b790d13894916..a9fc954dd744c 100644 Binary files a/icons/mob/pets.dmi and b/icons/mob/pets.dmi differ