diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index fde5877676e..f66261285d8 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -333,6 +333,13 @@ set_vehicle_dir_layer(EAST, OBJ_LAYER) set_vehicle_dir_layer(WEST, OBJ_LAYER) +/datum/component/riding/creature/pig/handle_specials() + . = ..() + set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 8), TEXT_SOUTH = list(0, 8), TEXT_EAST = list(-2, 8), TEXT_WEST = list(2, 8))) + set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER) + set_vehicle_dir_layer(NORTH, OBJ_LAYER) + set_vehicle_dir_layer(EAST, OBJ_LAYER) + set_vehicle_dir_layer(WEST, OBJ_LAYER) /datum/component/riding/creature/bear/handle_specials() . = ..() diff --git a/code/game/objects/items/food/meat.dm b/code/game/objects/items/food/meat.dm index f54551e33a4..67c03ba3f18 100644 --- a/code/game/objects/items/food/meat.dm +++ b/code/game/objects/items/food/meat.dm @@ -181,6 +181,21 @@ ////////////////////////////////////////////MEATS AND ALIKE//////////////////////////////////////////// +/obj/item/food/meat/slab/pig + name = "raw pork" + icon_state = "pig_meat" + tastes = list("pig" = 1) + foodtypes = MEAT | RAW | GROSS + +/obj/item/food/meat/slab/pig/MakeGrillable() + AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/plain/pig, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) + +/obj/item/food/meat/steak/plain/pig + name = "pork chops" + icon_state = "pigsteak" + tastes = list("pig" = 1) + foodtypes = MEAT | GROSS + /obj/item/food/tempeh name = "raw tempeh block" desc = "Fungus fermented soybean cake, warm to the touch." diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 412b0ae013f..1a21e63b222 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -2169,6 +2169,14 @@ contains = list(/mob/living/basic/cow) crate_name = "cow crate" +/datum/supply_pack/critter/pig + name = "Pig Crate" + desc = "The pig goes oink!" + cost = CARGO_CRATE_VALUE * 6 + access_view = ACCESS_KITCHEN + contains = list(/mob/living/basic/pig) + crate_name = "pig crate" + /datum/supply_pack/critter/crab name = "Crab Rocket" desc = "CRAAAAAAB ROCKET. CRAB ROCKET. CRAB ROCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROCKET. CRAFT. ROCKET. BUY. CRAFT ROCKET. CRAB ROOOCKET. CRAB ROOOOCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROOOOOOOOOOOOOOOOOOOOOOCK EEEEEEEEEEEEEEEEEEEEEEEEE EEEETTTTTTTTTTTTAAAAAAAAA AAAHHHHHHHHHHHHH. CRAB ROCKET. CRAAAB ROCKEEEEEEEEEGGGGHHHHTT CRAB CRAB CRAABROCKET CRAB ROCKEEEET."//fun fact: i actually spent like 10 minutes and transcribed the entire video. diff --git a/code/modules/mob/living/basic/farm_animals/pig.dm b/code/modules/mob/living/basic/farm_animals/pig.dm new file mode 100644 index 00000000000..5f21f905ba9 --- /dev/null +++ b/code/modules/mob/living/basic/farm_animals/pig.dm @@ -0,0 +1,49 @@ +//pig +/mob/living/basic/pig + name = "pig" + desc = "A fat pig." + icon_state = "pig" + icon_living = "pig" + icon_dead = "pig_dead" + icon_gib = "pig_gib" + gender = MALE + mob_biotypes = MOB_ORGANIC | MOB_BEAST + speak_emote = list("oinks","squees") + see_in_dark = 6 + butcher_results = list(/obj/item/food/meat/slab/pig = 6) + 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" + attack_verb_continuous = "kicks" + attack_verb_simple = "kick" + attack_sound = 'sound/weapons/punch1.ogg' + attack_vis_effect = ATTACK_EFFECT_KICK + health = 50 + maxHealth = 50 + gold_core_spawnable = FRIENDLY_SPAWN + blood_volume = BLOOD_VOLUME_NORMAL + ai_controller = /datum/ai_controller/basic_controller/pig + +/mob/living/basic/pig/Initialize() + AddElement(/datum/element/pet_bonus, "oinks!") + make_tameable() + . = ..() + +///wrapper for the tameable component addition so you can have non tamable cow subtypes +/mob/living/basic/pig/proc/make_tameable() + AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/carrot), tame_chance = 25, bonus_tame_chance = 15, after_tame = CALLBACK(src, .proc/tamed)) + +/mob/living/basic/pig/proc/tamed(mob/living/tamer) + can_buckle = TRUE + buckle_lying = 0 + AddElement(/datum/element/ridable, /datum/component/riding/creature/pig) + visible_message(span_notice("[src] snorts respectfully.")) + +/datum/ai_controller/basic_controller/pig + ai_traits = STOP_MOVING_WHEN_PULLED + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 1a2cf9c36ea..bd64abc0c50 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index e18977ef374..ca9ebfd33fa 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 91f57d7f79a..bcb3bc337bb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3408,6 +3408,7 @@ #include "code\modules\mob\living\basic\basic_defense.dm" #include "code\modules\mob\living\basic\health_adjustment.dm" #include "code\modules\mob\living\basic\farm_animals\cows.dm" +#include "code\modules\mob\living\basic\farm_animals\pig.dm" #include "code\modules\mob\living\basic\lavaland\bileworm\_bileworm.dm" #include "code\modules\mob\living\basic\lavaland\bileworm\bileworm_actions.dm" #include "code\modules\mob\living\basic\lavaland\bileworm\bileworm_ai.dm"