diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/lobster.dm b/code/modules/mob/living/simple_animal/rogue/creacher/lobster.dm new file mode 100644 index 00000000000..9bdab39b561 --- /dev/null +++ b/code/modules/mob/living/simple_animal/rogue/creacher/lobster.dm @@ -0,0 +1,160 @@ +/mob/living/simple_animal/hostile/retaliate/rogue/lobster + icon = 'icons/roguetown/mob/monster/lobsters.dmi' + name = "marsh crawler" + desc = "A swamp-dwelling creacher with a hardened carapace and pinching claws. A relatively harmless scavenger, they eat detritus from the bog." + icon_state = "marshcrawler" + icon_living = "marshcrawler" + icon_dead = "marshcrawler_dead" + emote_see = list("snaps it's claws.","pinches the air.") + density = FALSE + faction = list("neutral") //these shouldnt be aggressive + pass_flags = PASSTABLE | PASSMOB + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/lobster = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/lobster = 2) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/lobster = 2, /obj/item/reagent_containers/food/snacks/fat) + + health = CHICKEN_HEALTH + maxHealth = CHICKEN_HEALTH + + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "gently pushes aside" + response_disarm_simple = "gently push aside" + response_harm_continuous = "kicks" + response_harm_simple = "kick" + + food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, + /obj/item/bodypart, + /obj/item/organ) + + base_intents = list(/datum/intent/simple/claw) + attack_sound = list('sound/vo/mobs/bogbug/bogbugattack1.ogg','sound/vo/mobs/bogbug/bogbugattack2.ogg','sound/vo/mobs/bogbug/bogbugattack3.ogg') + melee_damage_lower = 2 + melee_damage_upper = 10 + + STACON = 5 + STASTR = 5 + STASPD = 5 + STAEND = 5 + + retreat_distance = 2 + minimum_distance = 1 + deaggroprob = 0 + defprob = 30 + defdrain = 8 + del_on_deaggro = 999 SECONDS + retreat_health = 0 + food = 0 + + dodgetime = 20 + aggressive = 0 +// stat_attack = UNCONSCIOUS + body_eater = TRUE + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/strong + name = "blood crawler" + desc = "A swamp-dwelling creacher with a hardened carapace and pinching claws. They have developed a taste for flesh, and they no longer wait for their meal to die first." + icon_state = "bloodcrawler" + icon_living = "bloodcrawler" + icon_dead = "bloodcrawler_dead" + health = VOLF_HEALTH //110hp + maxHealth = VOLF_HEALTH + faction = list("bugs") + + melee_damage_lower = 10 + melee_damage_upper = 25 //wider range of damage than volves + STACON = 7 + STASTR = 7 + STASPD = 6 + STAEND = 10 + retreat_distance = 0 + minimum_distance = 0 + body_eater = TRUE + + +/obj/effect/decal/remains/lobster + name = "remains" + gender = PLURAL + icon_state = "bones" + icon = 'icons/roguetown/mob/monster/vol.dmi' + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/Initialize() + . = ..() + gender = MALE + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/death(gibbed) + ..() + update_icon() + + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/update_icon() + cut_overlays() + ..() + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/get_sound(input) + switch(input) + if("aggro") + return pick('sound/vo/mobs/bogbug/bogbug1.ogg','sound/vo/mobs/bogbug/bogbug2.ogg','sound/vo/mobs/bogbug/bogbug3.ogg') + if("pain") + return pick('sound/vo/mobs/bogbug/bogbughurt2.ogg') + if("death") + return pick('sound/vo/mobs/bogbug/bogbughurt1.ogg') + if("idle") + return pick('sound/vo/mobs/bogbug/bogbugidle.ogg') + if("cidle") + return pick('sound/vo/mobs/bogbug/bogbug3.ogg','sound/vo/mobs/bogbug/bogbugidle.ogg') + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/taunted(mob/user) + emote("aggro") + Retaliate() + GiveTarget(user) + return + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/Life() + ..() + if(pulledby) + Retaliate() + GiveTarget(pulledby) + +/mob/living/simple_animal/hostile/retaliate/rogue/lobster/simple_limb_hit(zone) + if(!zone) + return "" + switch(zone) + if(BODY_ZONE_PRECISE_R_EYE) + return "head" + if(BODY_ZONE_PRECISE_L_EYE) + return "head" + if(BODY_ZONE_PRECISE_NOSE) + return "nose" + if(BODY_ZONE_PRECISE_MOUTH) + return "mouth" + if(BODY_ZONE_PRECISE_SKULL) + return "head" + if(BODY_ZONE_PRECISE_EARS) + return "head" + if(BODY_ZONE_PRECISE_NECK) + return "neck" + if(BODY_ZONE_PRECISE_L_HAND) + return "foreleg" + if(BODY_ZONE_PRECISE_R_HAND) + return "foreleg" + if(BODY_ZONE_PRECISE_L_FOOT) + return "leg" + if(BODY_ZONE_PRECISE_R_FOOT) + return "leg" + if(BODY_ZONE_PRECISE_STOMACH) + return "stomach" + if(BODY_ZONE_PRECISE_GROIN) + return "tail" + if(BODY_ZONE_HEAD) + return "head" + if(BODY_ZONE_R_LEG) + return "leg" + if(BODY_ZONE_L_LEG) + return "leg" + if(BODY_ZONE_R_ARM) + return "foreleg" + if(BODY_ZONE_L_ARM) + return "foreleg" + return ..() diff --git a/icons/roguetown/mob/monster/lobsters.dmi b/icons/roguetown/mob/monster/lobsters.dmi new file mode 100644 index 00000000000..830c4059e81 Binary files /dev/null and b/icons/roguetown/mob/monster/lobsters.dmi differ diff --git a/modular/Neu_Food/code/NeuFood.dm b/modular/Neu_Food/code/NeuFood.dm index 5ce6747ce17..077b3bf70e8 100644 --- a/modular/Neu_Food/code/NeuFood.dm +++ b/modular/Neu_Food/code/NeuFood.dm @@ -97,6 +97,12 @@ /obj/item/reagent_containers/food/snacks/rotten/egg name = "rotted cackleberry" icon_state = "egg" +/obj/item/reagent_containers/food/snacks/rotten/lobster + name = "rotten creeper flesh" + icon_state = "lobstermeat" +/obj/item/reagent_containers/food/snacks/rotten/lobter/fillet + name = "rotten creeper fillet" + icon_state = "lobsterfillet" /obj/item/reagent_containers/food/snacks/rotten/egg/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) if(!..()) //was it caught by a mob? var/turf/T = get_turf(hit_atom) diff --git a/modular/Neu_Food/code/cooked/NeuFood_snacks.dm b/modular/Neu_Food/code/cooked/NeuFood_snacks.dm index 950306541b3..73ceb00a272 100644 --- a/modular/Neu_Food/code/cooked/NeuFood_snacks.dm +++ b/modular/Neu_Food/code/cooked/NeuFood_snacks.dm @@ -27,7 +27,7 @@ return FALSE if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(mill)) if(!mill.reagents.has_reagent(/datum/reagent/consumable/blackpepper, 1)) to_chat(user, "There's not enough black pepper to make anything with.") @@ -72,7 +72,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/friedegg)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -96,7 +96,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/cheddarwedge)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -123,7 +123,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/preserved/potato_baked)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -166,7 +166,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/meat/bacon/fried)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -197,7 +197,16 @@ rotprocess = SHELFLIFE_DECENT +/* ............. bogsteak ................ */ +/obj/item/reagent_containers/food/snacks/rogue/meat/lobster/fried + name = "bogsteak" + desc = "tasty, now that the stench of decay has been cooked out of it." + rotprocess = SHELFLIFE_TINY //eat it quick +/obj/item/reagent_containers/food/snacks/rogue/meat/lobster/fillet/fried + name = "creeper fillet" + desc = "Finely minced and fried creeper fillet, it smells so good, you forget that the creeper probably ate human before." + rotprocess = SHELFLIFE_TINY //eat it quick /*---------------\ | Sausage snacks | \---------------*/ @@ -215,7 +224,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/preserved/cabbage_fried)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -269,7 +278,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/meat/sausage/cooked)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -294,7 +303,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/meat/sausage/cooked)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -315,7 +324,7 @@ qdel(src) else return ..() - + /* ............. Fried onions ................ */ /obj/item/reagent_containers/food/snacks/rogue/preserved/onion_fried @@ -330,7 +339,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/meat/sausage/cooked)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) @@ -356,7 +365,7 @@ var/found_table = locate(/obj/structure/table) in (loc) if(user.mind) short_cooktime = (50 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*5)) - long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) + long_cooktime = (90 - ((user.mind.get_skill_level(/datum/skill/craft/cooking))*10)) if(istype(I, /obj/item/reagent_containers/food/snacks/rogue/meat/sausage/cooked)) if(isturf(loc)&& (found_table)) playsound(get_turf(user), 'sound/foley/dropsound/gen_drop.ogg', 30, TRUE, -1) diff --git a/modular/Neu_Food/code/raw/NeuFood_meat.dm b/modular/Neu_Food/code/raw/NeuFood_meat.dm index a8fe449d4dd..b637c340f31 100644 --- a/modular/Neu_Food/code/raw/NeuFood_meat.dm +++ b/modular/Neu_Food/code/raw/NeuFood_meat.dm @@ -34,7 +34,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef slice_bclass = BCLASS_CHOP -/* ............. Pork, spidermeat, birdmeat ................ */ +/* ............. Pork, spidermeat, birdmeat, crawler/lobster meat ................ */ /obj/item/reagent_containers/food/snacks/rogue/meat/fatty //pork name = "raw pigflesh" icon_state = "meatcutlet" @@ -83,6 +83,21 @@ cooked_type = /obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet/fried become_rot_type = /obj/item/reagent_containers/food/snacks/rotten/chickenleg +/obj/item/reagent_containers/food/snacks/rogue/meat/lobster //tastes good but has little sustenance, luxury good. Just dont ask what the lobsters eat + name = "crawler flesh" + slices_num = 2 + icon_state = "lobstermeat" + become_rot_type = /obj/item/reagent_containers/food/snacks/rotten/lobster + cooked_type = /obj/item/reagent_containers/food/snacks/rogue/meat/lobster/fried + slice_path = /obj/item/reagent_containers/food/snacks/rogue/meat/lobster/fillet + rotprocess = SHELFLIFE_TINY + +/obj/item/reagent_containers/food/snacks/rogue/meat/lobster/fillet + name = "crawler fillet" + ingredient_size = 2 + icon_state = "lobsterfillet" + become_rot_type = /obj/item/reagent_containers/food/snacks/rotten/lobter/fillet + /* ........ Fish sounds ................ */ /obj/item/reagent_containers/food/snacks/fish chopping_sound = TRUE diff --git a/modular/Neu_Food/icons/food.dmi b/modular/Neu_Food/icons/food.dmi index fd5b02f1b35..6582026d9cf 100644 Binary files a/modular/Neu_Food/icons/food.dmi and b/modular/Neu_Food/icons/food.dmi differ diff --git a/stonekeep.dme b/stonekeep.dme index 4d2a475ccd9..ad509c006f1 100644 --- a/stonekeep.dme +++ b/stonekeep.dme @@ -2716,6 +2716,7 @@ #include "code\modules\mob\living\simple_animal\rogue\creacher\headless.dm" #include "code\modules\mob\living\simple_animal\rogue\creacher\honeyspider.dm" #include "code\modules\mob\living\simple_animal\rogue\creacher\lamia.dm" +#include "code\modules\mob\living\simple_animal\rogue\creacher\lobster.dm" #include "code\modules\mob\living\simple_animal\rogue\creacher\mole.dm" #include "code\modules\mob\living\simple_animal\rogue\creacher\shade.dm" #include "code\modules\mob\living\simple_animal\rogue\creacher\troll.dm"