From 74f0b9e5670c37179a386e4009250896ff215ddb Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Mon, 23 Sep 2024 10:12:59 +0200 Subject: [PATCH 01/12] butchery --- .../items/rogueitems/natural/animals.dm | 21 +++++++++++---- .../objects/items/rogueweapons/intents.dm | 16 +++++++++++- .../simple_animal/rogue/creacher/bigrat.dm | 4 ++- .../rogue/creacher/honeyspider.dm | 2 ++ .../simple_animal/rogue/creacher/mole.dm | 12 +++++++-- .../simple_animal/rogue/creacher/volf.dm | 4 +++ .../simple_animal/rogue/farm/chicken.dm | 8 +++--- .../living/simple_animal/rogue/farm/cow.dm | 15 ++++++++++- .../living/simple_animal/rogue/farm/goat.dm | 24 ++++++++++++++---- .../living/simple_animal/rogue/game/saiga.dm | 14 ++++++++-- .../simple_animal/rogue/rogueanimals.dm | 2 ++ .../mob/living/simple_animal/simple_animal.dm | 16 +++++++++--- icons/roguetown/items/natural.dmi | Bin 26374 -> 29315 bytes 13 files changed, 115 insertions(+), 23 deletions(-) diff --git a/code/game/objects/items/rogueitems/natural/animals.dm b/code/game/objects/items/rogueitems/natural/animals.dm index 4d4ed80acb..205a94690e 100644 --- a/code/game/objects/items/rogueitems/natural/animals.dm +++ b/code/game/objects/items/rogueitems/natural/animals.dm @@ -12,21 +12,32 @@ drop_sound = 'sound/foley/dropsound/cloth_drop.ogg' sellprice = 5 -/obj/item/natural/fur +/obj/item/natural/fur // a piece of skin with animal hair on it is called a pelt, at least before a tanner gets to it. From it you can make fur lined cloaks and so on. name = "fur" icon_state = "wool1" - desc = "Fur from one of Dendor's creachers." + desc = "pelt from one of Dendor's creachers." force = 0 throwforce = 0 w_class = WEIGHT_CLASS_SMALL resistance_flags = FLAMMABLE drop_sound = 'sound/foley/dropsound/cloth_drop.ogg' - color = "#605c55" sellprice = 5 +/obj/item/natural/fur/gote + desc = "from a gote." + icon_state = "pelt_gote" + /obj/item/natural/fur/volf - desc = "Fur from a volf." - color = "#4b4742" + desc = "from a volf." + icon_state = "pelt_volf" + +/obj/item/natural/fur/mole + desc = "from a mole." + icon_state = "pelt_mole" + +/obj/item/natural/fur/rous + desc = "from a rous." + icon_state = "pelt_rous" //RTD make this a storage item and make clickign on animals with things put it in storage /obj/item/natural/saddle diff --git a/code/game/objects/items/rogueweapons/intents.dm b/code/game/objects/items/rogueweapons/intents.dm index 49b7be6ae0..040fd05330 100644 --- a/code/game/objects/items/rogueweapons/intents.dm +++ b/code/game/objects/items/rogueweapons/intents.dm @@ -444,7 +444,7 @@ blade_class = BCLASS_BLUNT hitsound = "punch_hard" chargetime = 0 - penfactor = 15 + penfactor = 13 swingdelay = 0 candodge = TRUE canparry = TRUE @@ -463,6 +463,20 @@ canparry = TRUE miss_text = "slashes the air!" +/datum/intent/simple/peck + name = "peck" + icon_state = "instrike" + attack_verb = list("pecks", "scratches") + animname = "blank22" + blade_class = BCLASS_CUT + hitsound = "smallslash" + chargetime = 0 + penfactor = 2 + swingdelay = 1 + candodge = TRUE + canparry = TRUE + miss_text = "pecks the air!" + /datum/intent/simple/bite name = "bite" icon_state = "instrike" diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm b/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm index 3731fbf219..53761f9559 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm @@ -17,7 +17,9 @@ vision_range = 2 aggro_vision_range = 2 base_intents = list(/datum/intent/simple/bite) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1, /obj/item/natural/fur = 1) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1, /obj/item/natural/fur/rous = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/alch/sinew = 1) faction = list("rats") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_sound = 'sound/combat/wooshes/punch/punchwoosh (2).ogg' diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm b/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm index e50924be7d..3043dc10df 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm @@ -13,7 +13,9 @@ vision_range = 5 aggro_vision_range = 5 base_intents = list(/datum/intent/simple/bite) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, /obj/item/reagent_containers/food/snacks/spiderleg = 4,/obj/item/natural/silk = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, /obj/item/reagent_containers/food/snacks/spiderleg = 8,/obj/item/reagent_containers/food/snacks/rogue/honey = 1, /obj/item/natural/silk = 2) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/honey = 1) faction = list("bugs") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_sound = 'sound/combat/wooshes/punch/punchwoosh (2).ogg' diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm b/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm index fca341bf62..f2b1d3f59b 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm @@ -13,11 +13,19 @@ see_in_dark = 6 move_to_delay = 5 base_intents = list(/datum/intent/simple/claw) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/hide = 1, + /obj/item/natural/fur/mole = 1, + /obj/item/alch/sinew = 1, + /obj/item/alch/bone = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 2, - /obj/item/natural/fur = 2, + /obj/item/natural/fur/mole = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 2, + /obj/item/natural/fur/mole = 2) faction = list("orcs") mob_biotypes = MOB_ORGANIC|MOB_BEAST health = 200 @@ -57,7 +65,7 @@ maxHealth = 400 butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, /obj/item/natural/hide = 3, - /obj/item/natural/fur = 2) + /obj/item/natural/fur/mole = 2) melee_damage_lower = 50 melee_damage_upper = 60 */ diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm b/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm index 65ea6097c1..270e7680b3 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm @@ -13,12 +13,16 @@ see_in_dark = 9 move_to_delay = 2 base_intents = list(/datum/intent/simple/bite) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/fur/volf = 1, + /obj/item/alch/bone = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/natural/hide = 1, /obj/item/natural/fur/volf = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/natural/fur/volf = 1) faction = list("orcs") mob_biotypes = MOB_ORGANIC|MOB_BEAST health = 110 diff --git a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm index 9459e2f28e..f6392a0047 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm @@ -9,11 +9,13 @@ icon_dead = "chicken_brown_dead" emote_see = list("pecks at the ground.","flaps its wings viciously.") density = FALSE - base_intents = list(/datum/intent/simple/claw) + base_intents = list(/datum/intent/simple/peck) speak_chance = 2 turns_per_move = 5 faction = list("chickens") - butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry = 1) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry = 1, /obj/item/natural/feather = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1) var/egg_type = /obj/item/reagent_containers/food/snacks/egg food_type = list(/obj/item/reagent_containers/food/snacks/produce/berries/rogue,/obj/item/natural/worms,/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat) response_help_continuous = "pets" @@ -23,7 +25,7 @@ response_harm_continuous = "kicks" response_harm_simple = "kick" melee_damage_lower = 1 - melee_damage_upper = 8 + melee_damage_upper = 5 pooptype = /obj/item/natural/poo/horse health = 15 maxHealth = 15 diff --git a/code/modules/mob/living/simple_animal/rogue/farm/cow.dm b/code/modules/mob/living/simple_animal/rogue/farm/cow.dm index 46422b2365..132bcbc529 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/cow.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/cow.dm @@ -16,10 +16,15 @@ see_in_dark = 6 move_to_delay = 8 animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/bull + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, + /obj/item/natural/hide = 1, + /obj/item/alch/sinew = 1, + /obj/item/alch/bone = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 6, /obj/item/natural/hide = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 80 maxHealth = 80 @@ -67,7 +72,9 @@ icon_dead = "cowlet_dead" icon_gib = "cowlet_gib" animal_species = null + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) + bonus_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 pass_flags = PASSTABLE | PASSMOB @@ -153,9 +160,13 @@ see_in_dark = 6 move_to_delay = 8 base_intents = list(/datum/intent/simple/headbutt) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, + /obj/item/alch/sinew = 1, + /obj/item/alch/bone = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 6, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/natural/hide = 2) faction = list("cows") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_same = 0 @@ -164,7 +175,7 @@ health = 150 maxHealth = 150 melee_damage_lower = 25 - melee_damage_upper = 50 + melee_damage_upper = 45 environment_smash = ENVIRONMENT_SMASH_NONE retreat_distance = 0 minimum_distance = 0 @@ -248,7 +259,9 @@ icon_dead = "bullet_dead" icon_gib = "bullet_gib" animal_species = null + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) + bonus_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 maxHealth = 20 diff --git a/code/modules/mob/living/simple_animal/rogue/farm/goat.dm b/code/modules/mob/living/simple_animal/rogue/farm/goat.dm index 75f5d603da..c7da92b7ce 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/goat.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/goat.dm @@ -69,12 +69,17 @@ see_in_dark = 6 move_to_delay = 8 animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/goatmale + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/natural/hide = 1, + /obj/item/alch/sinew = 1, + /obj/item/alch/bone = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, /obj/item/reagent_containers/food/snacks/fat = 2, /obj/item/natural/hide = 2, - /obj/item/natural/fur = 1, + /obj/item/natural/fur/gote = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1, /obj/item/natural/fur/gote = 1) base_intents = list(/datum/intent/simple/headbutt) health = 80 maxHealth = 80 @@ -87,7 +92,7 @@ faction = list("goats") attack_verb_continuous = "headbutts" attack_verb_simple = "headbutt" - melee_damage_lower = 10 + melee_damage_lower = 8 melee_damage_upper = 12 STASPD = 4 STACON = 4 @@ -119,7 +124,9 @@ icon_dead = "goatlet_dead" icon_gib = "goatlet_gib" animal_species = null + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) + bonus_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 pass_flags = PASSTABLE | PASSMOB @@ -194,20 +201,25 @@ see_in_dark = 6 move_to_delay = 8 base_intents = list(/datum/intent/simple/headbutt) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/natural/hide = 1, + /obj/item/alch/sinew = 1, + /obj/item/alch/bone = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, /obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/natural/hide = 2, - /obj/item/natural/fur = 1, + /obj/item/natural/fur/gote = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1, /obj/item/natural/fur/gote = 1) faction = list("goats") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_verb_continuous = "headbutts" attack_verb_simple = "headbutt" health = 150 maxHealth = 150 - melee_damage_lower = 25 - melee_damage_upper = 50 + melee_damage_lower = 14 + melee_damage_upper = 22 environment_smash = ENVIRONMENT_SMASH_NONE retreat_distance = 0 minimum_distance = 0 @@ -344,7 +356,9 @@ icon_dead = "goatletboy_dead" icon_gib = "goatletboyt_gib" animal_species = null + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) + bonus_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 maxHealth = 20 diff --git a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm index 85d291441b..6437c5f805 100644 --- a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm +++ b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm @@ -52,6 +52,7 @@ /obj/item/natural/hide = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 100 maxHealth = 100 @@ -106,6 +107,7 @@ icon_gib = "saigakid_gib" animal_species = null butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1) + bonus_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 pass_flags = PASSTABLE | PASSMOB @@ -180,9 +182,12 @@ see_in_dark = 6 move_to_delay = 8 base_intents = list(/datum/intent/simple/headbutt) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/natural/hide = 2) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1) faction = list("saiga") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_verb_continuous = "headbutts" @@ -320,7 +325,12 @@ icon_dead = "saigaboy_dead" icon_gib = "saigaboy_gib" animal_species = null - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 2) + bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 maxHealth = 20 diff --git a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm index ea483e44d8..cfc2eb4d99 100644 --- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm +++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm @@ -34,6 +34,8 @@ dodge_sound = 'sound/combat/dodge.ogg' dodge_prob = 0 search_objects = TRUE + botched_butcher_results = list(/obj/item/alch/bone = 1) // 50% chance to get if skill 0 in butchery + bonus_butcher_results = list(/obj/item/natural/hide = 1) // level 5 butchery bonus //Should turn this into a flag thing but i dont want to touch too many things var/body_eater = FALSE //If the creature is doing something they should STOP MOVING. diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 9a41bbd270..75f3b14863 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -172,6 +172,9 @@ GLOBAL_VAR_INIT(farm_animals, FALSE) var/remains_type + var/botched_butcher_results + var/bonus_butcher_results + /mob/living/simple_animal/Initialize() . = ..() GLOB.simple_animals[AIStatus] += src @@ -437,9 +440,16 @@ GLOBAL_VAR_INIT(farm_animals, FALSE) var/list/butcher = list() if(butcher_results) - butcher += butcher_results - if(user.mind.get_skill_level(/datum/skill/labor/butchering) >= 5) - butcher += butcher_results // double the yield of the stuff you get + if(user.mind.get_skill_level(/datum/skill/labor/butchering) <= 1) + if(prob(50)) + butcher += botched_butcher_results // chance to get shit result + else + butcher += butcher_results + else + butcher += butcher_results + if(user.mind.get_skill_level(/datum/skill/labor/butchering) >= 5) + butcher += bonus_butcher_results // double the yield of the stuff you get + if(guaranteed_butcher_results) butcher += guaranteed_butcher_results var/rotstuff = FALSE diff --git a/icons/roguetown/items/natural.dmi b/icons/roguetown/items/natural.dmi index ce761f69994e0cb9a27b33015bd70594b6234eea..33dd2bf6b1c6c62838e13fb337b96f2d2bbff9a1 100644 GIT binary patch literal 29315 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 z z+h)8J;2?v+(Y4%cW&S7SwcCTC3MK%@|NJRzeBfjol-{y=<8G{{K#Y8P)5@6~c|9hC zT*}yjh<03JZ-lpCeHY8{57X8g4)ZE~b2NSprwo3N0rk(#J4 zVD?HT5wQj0O?H>-bx!^3mk8Wkb`$S_YLby{ZDcxmr82hv zng_d{jl7}`^+!8l=0Wr_-iNF0fStL=z~)`J@96^<2b5!7Vqo&W&zG((EvJ$2FGAVr zvaE6=DFz}xfhoRmEhdVA0}{`gp+eT@5*j?~~F z`x#LRs#{%T5TBNTZ1R4!=&0UsC#woj+{4Vu^5@z%L;(6#9pHek_U!Pvt%9o1qr@Ug zASl=b4S8RvdCa%dZ-nMA20>+ruFa5@mHF#_$Ov`BEk;K;xgZ8#$y0U#0!9ZI0>pds--nJ#n6_U zwBwsO?u}vc2;ptAYsE;7Q zBtdl1H^XUWoh`j2z>?11$+kSDtZ~JQDTC4f#pCp0t+N13aq-O2p*%1>HjPVqyEG zd>dOCPM7<_K;G!`0v!!F-3Z@d7wfNB)&?;f*i#F1c?FUirdi^?*p1$d7S=_pHfOlt z#Yuw$*|II;9lVR?3JL5ejK(BB9Fd1^|Hv`i1AqphuW_Jc^#~baurMZ?=msl6$YlFb zHCuH3C;Hi5!T zq>ZNxEH?@f4)=fH(SF*u7DEX`y{YbngKS4V=H+qx%6b$soTo`YI4Pwlo%xvf zv=5!H?!t~I9=+115k`&mgAS)LDmS;gQgc{iod2~DI&}RE6X|w}dy%1h1B;ycJw;L# zCxQsrJ)K|_A4mq6PFreFMHUxWBn`f?7?QTq+-S>i0lkhsrr6sEU9kx{LK^XZ(rO!X zPvnQ(>-#qe(POKfQJ3m7j~TWTrPgqA4w{n07DbUy=;07z;_?nDuCJ;564;-rci-n7 zwnA9_CuDuC;G-S&^j-`O4py4=qU%NJl<9BgY%TK__}%1#KDjq`8!F&#)bt7CZ`$}I z`Inok^INC9JA4o_vJhE_qT&j94r_&%?Bo8l}(AYYjy&I;vwK-f;ETMXh6#W21yK^{S}QV53t0$V=OBEZjug1O&z0N`%~_q)~xI z{}Q*coWD`oQ0h|`cCQ1;IJ0F=tNJAZ);LMBCi4Vh0B(5pEZYMwmdF$gk$%o(*;hqn zF9{+YGbg!Jv1oIO=)WXYYaTE_lz}hQE|VXed >xWX<%9fdF+%+Ax> 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 VST35s558{$X{zbos#39w_#a!y(vkoG From 351c776792ddbaa7acb89db0c11072f5a9805fe9 Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Mon, 23 Sep 2024 12:56:02 +0200 Subject: [PATCH 02/12] dd --- code/modules/clothing/rogueclothes/armor.dm | 3 ++- code/modules/mob/living/emote.dm | 20 ++++++++++++------ .../simple_animal/rogue/creacher/bigrat.dm | 6 ++++-- .../rogue/creacher/honeyspider.dm | 11 +++++++--- .../simple_animal/rogue/creacher/mole.dm | 2 +- .../simple_animal/rogue/creacher/volf.dm | 3 ++- .../simple_animal/rogue/farm/chicken.dm | 7 +++++-- .../living/simple_animal/rogue/farm/cow.dm | 10 +++++---- .../living/simple_animal/rogue/farm/goat.dm | 12 +++++++---- .../living/simple_animal/rogue/game/saiga.dm | 11 ++++++---- .../simple_animal/rogue/rogueanimals.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 21 ++++++++++++------- modular/Creechers/code/trufflepig.dm | 10 +++++++-- modular/Neu_Food/code/raw/NeuFood_meat.dm | 1 - stonekeep.dme | 2 +- 15 files changed, 80 insertions(+), 41 deletions(-) diff --git a/code/modules/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm index bbd4823612..c94d736cfd 100644 --- a/code/modules/clothing/rogueclothes/armor.dm +++ b/code/modules/clothing/rogueclothes/armor.dm @@ -462,7 +462,8 @@ name = "leather vest" icon_state = "leathervest" item_state = "leathervest" - color = null +// color = null + color = "#f5c0ac" // Unique swashbuckler vest. Notice it doesn't cover arms. /obj/item/clothing/suit/roguetown/armor/leather/vest/sailor diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 7ab995b6af..e5d13c507b 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -794,12 +794,6 @@ if(C.silent || !C.can_speak_vocal()) message = "makes a muffled laugh." -/datum/emote/living/look - key = "look" - key_third_person = "looks" - message = "stares blankly." - message_param = "looks at %t." - /datum/emote/living/leap key = "leap" key_third_person = "leaps" @@ -807,6 +801,20 @@ restraint_check = TRUE only_forced_audio = TRUE +/datum/emote/living/look + key = "look" + key_third_person = "looks" + message = "stares blankly." + message_param = "looks at %t." + +/datum/emote/living/lower // the emote that signals an animal is tamed. Previously smile was used. The chicken smiles. The pig smiles. Wut. + key = "lower_head" + key_third_person = "lowers_head" + message = "lowers its head." + message_param = "lowers its head." + emote_type = EMOTE_VISIBLE + + // ............... M .................. /datum/emote/living/meditate key = "meditate" diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm b/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm index 53761f9559..0b45ef4acc 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm @@ -18,8 +18,10 @@ aggro_vision_range = 2 base_intents = list(/datum/intent/simple/bite) botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1, /obj/item/natural/fur/rous = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/alch/sinew = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1, + /obj/item/natural/fur/rous = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/alch/sinew = 1) faction = list("rats") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_sound = 'sound/combat/wooshes/punch/punchwoosh (2).ogg' diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm b/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm index 3043dc10df..0b10ff5f6a 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm @@ -13,9 +13,14 @@ vision_range = 5 aggro_vision_range = 5 base_intents = list(/datum/intent/simple/bite) - botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, /obj/item/reagent_containers/food/snacks/spiderleg = 4,/obj/item/natural/silk = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, /obj/item/reagent_containers/food/snacks/spiderleg = 8,/obj/item/reagent_containers/food/snacks/rogue/honey = 1, /obj/item/natural/silk = 2) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/honey = 1) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, + /obj/item/reagent_containers/food/snacks/spiderleg = 4, + /obj/item/natural/silk = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, + /obj/item/reagent_containers/food/snacks/spiderleg = 8, + /obj/item/reagent_containers/food/snacks/rogue/honey = 1, + /obj/item/natural/silk = 2) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/honey = 1) faction = list("bugs") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_sound = 'sound/combat/wooshes/punch/punchwoosh (2).ogg' diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm b/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm index f2b1d3f59b..03a318eb55 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm @@ -23,7 +23,7 @@ /obj/item/natural/fur/mole = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 2, /obj/item/natural/fur/mole = 2) faction = list("orcs") diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm b/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm index 270e7680b3..d03c7a2922 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm @@ -22,7 +22,8 @@ /obj/item/natural/fur/volf = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/natural/fur/volf = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/fur/volf = 1) faction = list("orcs") mob_biotypes = MOB_ORGANIC|MOB_BEAST health = 110 diff --git a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm index f6392a0047..3dcd95dbf3 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm @@ -14,8 +14,11 @@ turns_per_move = 5 faction = list("chickens") botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry = 1, /obj/item/natural/feather = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/reagent_containers/food/snacks/rogue/meat/poultry = 1, + /obj/item/natural/feather = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1) var/egg_type = /obj/item/reagent_containers/food/snacks/egg food_type = list(/obj/item/reagent_containers/food/snacks/produce/berries/rogue,/obj/item/natural/worms,/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat) response_help_continuous = "pets" diff --git a/code/modules/mob/living/simple_animal/rogue/farm/cow.dm b/code/modules/mob/living/simple_animal/rogue/farm/cow.dm index 132bcbc529..98e2d06c8b 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/cow.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/cow.dm @@ -24,7 +24,8 @@ /obj/item/natural/hide = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 80 maxHealth = 80 @@ -74,7 +75,7 @@ animal_species = null botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - bonus_butcher_results = list(/obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 pass_flags = PASSTABLE | PASSMOB @@ -166,7 +167,8 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 6, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/natural/hide = 2) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/natural/hide = 2) faction = list("cows") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_same = 0 @@ -261,7 +263,7 @@ animal_species = null botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - bonus_butcher_results = list(/obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 maxHealth = 20 diff --git a/code/modules/mob/living/simple_animal/rogue/farm/goat.dm b/code/modules/mob/living/simple_animal/rogue/farm/goat.dm index c7da92b7ce..70e4cd6c21 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/goat.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/goat.dm @@ -79,7 +79,9 @@ /obj/item/natural/fur/gote = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1, /obj/item/natural/fur/gote = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 1, + /obj/item/natural/fur/gote = 1) base_intents = list(/datum/intent/simple/headbutt) health = 80 maxHealth = 80 @@ -126,7 +128,7 @@ animal_species = null botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - bonus_butcher_results = list(/obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 pass_flags = PASSTABLE | PASSMOB @@ -211,7 +213,9 @@ /obj/item/natural/fur/gote = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1, /obj/item/natural/fur/gote = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 1, + /obj/item/natural/fur/gote = 1) faction = list("goats") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_verb_continuous = "headbutts" @@ -358,7 +362,7 @@ animal_species = null botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - bonus_butcher_results = list(/obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 maxHealth = 20 diff --git a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm index 6437c5f805..a2aa03a606 100644 --- a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm +++ b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm @@ -52,7 +52,8 @@ /obj/item/natural/hide = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 100 maxHealth = 100 @@ -107,7 +108,7 @@ icon_gib = "saigakid_gib" animal_species = null butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1) - bonus_butcher_results = list(/obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 pass_flags = PASSTABLE | PASSMOB @@ -187,7 +188,8 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/natural/hide = 2) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 1) faction = list("saiga") mob_biotypes = MOB_ORGANIC|MOB_BEAST attack_verb_continuous = "headbutts" @@ -330,7 +332,8 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/natural/hide = 2) - bonus_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, /obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/natural/hide = 1) base_intents = list(/datum/intent/simple/headbutt) health = 20 maxHealth = 20 diff --git a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm index cfc2eb4d99..8bc8dd0107 100644 --- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm +++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm @@ -35,7 +35,7 @@ dodge_prob = 0 search_objects = TRUE botched_butcher_results = list(/obj/item/alch/bone = 1) // 50% chance to get if skill 0 in butchery - bonus_butcher_results = list(/obj/item/natural/hide = 1) // level 5 butchery bonus + perfect_butcher_results = list(/obj/item/natural/hide = 1) // level 5 butchery bonus //Should turn this into a flag thing but i dont want to touch too many things var/body_eater = FALSE //If the creature is doing something they should STOP MOVING. diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 75f3b14863..e5cd9647f3 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -173,7 +173,7 @@ GLOBAL_VAR_INIT(farm_animals, FALSE) var/remains_type var/botched_butcher_results - var/bonus_butcher_results + var/perfect_butcher_results /mob/living/simple_animal/Initialize() . = ..() @@ -230,7 +230,7 @@ GLOBAL_VAR_INIT(farm_animals, FALSE) ///Extra effects to add when the mob is tamed, such as adding a riding component /mob/living/simple_animal/proc/tamed(mob/user) - emote("smile", forced = TRUE) + emote("lower_head", forced = TRUE) tame = TRUE stop_automated_movement_when_pulled = TRUE if(user) @@ -442,16 +442,21 @@ GLOBAL_VAR_INIT(farm_animals, FALSE) if(butcher_results) if(user.mind.get_skill_level(/datum/skill/labor/butchering) <= 1) if(prob(50)) - butcher += botched_butcher_results // chance to get shit result + butcher = botched_butcher_results // chance to get shit result else - butcher += butcher_results + butcher = butcher_results else - butcher += butcher_results +// butcher += butcher_results chicken works but not cow and gote uhhh wut if(user.mind.get_skill_level(/datum/skill/labor/butchering) >= 5) - butcher += bonus_butcher_results // double the yield of the stuff you get + butcher = perfect_butcher_results + else + butcher = butcher_results - if(guaranteed_butcher_results) - butcher += guaranteed_butcher_results +// if(perfect_butcher_results) +// if(user.mind.get_skill_level(/datum/skill/labor/butchering) >= 5) +// butcher = perfect_butcher_results +// if(guaranteed_butcher_results) +// butcher += guaranteed_butcher_results var/rotstuff = FALSE var/datum/component/rot/simple/CR = GetComponent(/datum/component/rot/simple) if(CR) diff --git a/modular/Creechers/code/trufflepig.dm b/modular/Creechers/code/trufflepig.dm index c87e6d78f5..c7a240cb26 100644 --- a/modular/Creechers/code/trufflepig.dm +++ b/modular/Creechers/code/trufflepig.dm @@ -94,9 +94,15 @@ see_in_dark = 6 move_to_delay = 7 animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/trufflepig + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/fatty = 3, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/fatty = 4, - /obj/item/reagent_containers/food/snacks/fat = 2, - /obj/item/natural/hide = 2) + /obj/item/reagent_containers/food/snacks/fat = 2, + /obj/item/natural/hide = 2) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/fatty = 5, + /obj/item/reagent_containers/food/snacks/fat = 3, + /obj/item/natural/hide = 3) base_intents = list(/datum/intent/simple/headbutt) health = 80 maxHealth = 80 diff --git a/modular/Neu_Food/code/raw/NeuFood_meat.dm b/modular/Neu_Food/code/raw/NeuFood_meat.dm index e3da15ad9d..b2ba708473 100644 --- a/modular/Neu_Food/code/raw/NeuFood_meat.dm +++ b/modular/Neu_Food/code/raw/NeuFood_meat.dm @@ -42,7 +42,6 @@ slices_num = 2 slice_path = /obj/item/reagent_containers/food/snacks/rogue/meat/bacon chopping_sound = TRUE - become_rot_type = /obj/item/reagent_containers/food/snacks/rotten/bacon /obj/item/reagent_containers/food/snacks/rogue/meat/bacon name = "raw bacon" diff --git a/stonekeep.dme b/stonekeep.dme index 862cff25d8..a6b802dd68 100644 --- a/stonekeep.dme +++ b/stonekeep.dme @@ -2216,11 +2216,11 @@ #include "code\modules\jobs\job_types\roguetown\other\mercenary.dm" #include "code\modules\jobs\job_types\roguetown\other\skeleton.dm" #include "code\modules\jobs\job_types\roguetown\other\tester.dm" +#include "code\modules\jobs\job_types\roguetown\other\merc_classes\anthrax.dm" #include "code\modules\jobs\job_types\roguetown\other\merc_classes\blackoak.dm" #include "code\modules\jobs\job_types\roguetown\other\merc_classes\boltslinger.dm" #include "code\modules\jobs\job_types\roguetown\other\merc_classes\grenzelhoft.dm" #include "code\modules\jobs\job_types\roguetown\other\merc_classes\steppesman.dm" -#include "code\modules\jobs\job_types\roguetown\other\merc_classes\anthrax.dm" #include "code\modules\jobs\job_types\roguetown\other\merc_classes\underdweller.dm" #include "code\modules\jobs\job_types\roguetown\other\merc_classes\zybantine.dm" #include "code\modules\jobs\job_types\roguetown\peasants\bathmaid.dm" From 554a3ded48f0f1bbd202cc96765ee9f12b8f9cb8 Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Mon, 23 Sep 2024 21:37:19 +0200 Subject: [PATCH 03/12] yep --- code/game/objects/effects/decals/remains.dm | 3 - .../items/rogueitems/natural/animals.dm | 3 +- code/modules/clothing/rogueclothes/armor.dm | 2 +- .../simple_animal/rogue/creacher/bigrat.dm | 39 ++-- .../simple_animal/rogue/creacher/bogbug.dm | 38 ++-- .../rogue/creacher/honeyspider.dm | 55 ++--- .../simple_animal/rogue/creacher/mole.dm | 45 ++-- .../simple_animal/rogue/creacher/shade.dm | 9 +- .../simple_animal/rogue/creacher/troll.dm | 61 ++++-- .../simple_animal/rogue/creacher/trollbog.dm | 53 +++-- .../simple_animal/rogue/creacher/volf.dm | 43 ++-- .../simple_animal/rogue/creacher/zizoid.dm | 27 +-- .../simple_animal/rogue/farm/chicken.dm | 37 ++-- .../living/simple_animal/rogue/farm/cow.dm | 180 +++++++++------- .../living/simple_animal/rogue/farm/goat.dm | 198 ++++++++++-------- .../living/simple_animal/rogue/game/saiga.dm | 187 +++++++++-------- .../simple_animal/rogue/rogueanimals.dm | 105 +++++++--- icons/roguetown/items/natural.dmi | Bin 29315 -> 29411 bytes .../Neu_Food/code/cooked/NeuFood_snacks.dm | 6 +- modular/Neu_Food/code/raw/NeuFood_meat.dm | 2 +- .../Neu_Food/code/raw/NeuFood_processed.dm | 3 + 21 files changed, 622 insertions(+), 474 deletions(-) diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index 0672cf8216..e84034292f 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -20,9 +20,6 @@ desc = "" icon_state = "remainsxeno" -/obj/effect/decal/remains/xeno/troll - desc = "The skull and bones of a troll that decomposed long ago." - /obj/effect/decal/remains/xeno/larva icon_state = "remainslarva" diff --git a/code/game/objects/items/rogueitems/natural/animals.dm b/code/game/objects/items/rogueitems/natural/animals.dm index 205a94690e..55d6dc4c0a 100644 --- a/code/game/objects/items/rogueitems/natural/animals.dm +++ b/code/game/objects/items/rogueitems/natural/animals.dm @@ -4,7 +4,7 @@ name = "hide" icon_state = "hide" desc = "Hide from one of Dendor's creachers." - dropshrink = 0.50 + dropshrink = 0.90 force = 0 throwforce = 0 w_class = WEIGHT_CLASS_SMALL @@ -16,6 +16,7 @@ name = "fur" icon_state = "wool1" desc = "pelt from one of Dendor's creachers." + dropshrink = 0.90 force = 0 throwforce = 0 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm index c94d736cfd..f1dc5d36fd 100644 --- a/code/modules/clothing/rogueclothes/armor.dm +++ b/code/modules/clothing/rogueclothes/armor.dm @@ -463,7 +463,7 @@ icon_state = "leathervest" item_state = "leathervest" // color = null - color = "#f5c0ac" + color = "#ecb39e" // Unique swashbuckler vest. Notice it doesn't cover arms. /obj/item/clothing/suit/roguetown/armor/leather/vest/sailor diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm b/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm index 0b45ef4acc..82b3861697 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm @@ -5,46 +5,47 @@ icon_state = "rat" icon_living = "rat" icon_dead = "rat1" - gender = MALE + pixel_x = -16 + pixel_y = -8 + + faction = list("rats") emote_hear = list("squeaks.") emote_see = list("cleans its nose.") - speak_chance = 1 turns_per_move = 3 - see_in_dark = 6 move_to_delay = 5 - pixel_x = -16 - pixel_y = -8 vision_range = 2 aggro_vision_range = 2 - base_intents = list(/datum/intent/simple/bite) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1, /obj/item/natural/fur/rous = 1) perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, - /obj/item/alch/sinew = 1) - faction = list("rats") - mob_biotypes = MOB_ORGANIC|MOB_BEAST + /obj/item/alch/sinew = 1, + /obj/item/natural/fur/rous = 1) + + health = ROUS_HEALTH + maxHealth = ROUS_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks, + /obj/item/bodypart, + /obj/item/organ) + + base_intents = list(/datum/intent/simple/bite) attack_sound = 'sound/combat/wooshes/punch/punchwoosh (2).ogg' - health = 35 - maxHealth = 35 melee_damage_lower = 12 melee_damage_upper = 14 - environment_smash = ENVIRONMENT_SMASH_NONE - retreat_distance = 0 - minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_BAREFOOT - pooptype = null + STACON = 3 STASTR = 3 STASPD = 6 + + retreat_distance = 0 + minimum_distance = 0 deaggroprob = 0 defprob = 40 defdrain = 5 attack_same = FALSE // Lets two share a room. retreat_health = 0.3 - aggressive = 1 + aggressive = TRUE stat_attack = UNCONSCIOUS remains_type = /obj/effect/decal/remains/bigrat body_eater = TRUE diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/bogbug.dm b/code/modules/mob/living/simple_animal/rogue/creacher/bogbug.dm index 9baac01f3d..5f4abd1e1c 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/bogbug.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/bogbug.dm @@ -5,43 +5,47 @@ icon_state = "bogbug" icon_living = "bogbug" icon_dead = "bogbugdead" - gender = MALE + + faction = list("bugs") emote_hear = null emote_see = null - speak_chance = 1 turns_per_move = 6 see_in_dark = 9 move_to_delay = 1 - base_intents = list(/datum/intent/simple/claw, /datum/intent/simple/stab) + vision_range = 9 + aggro_vision_range = 9 + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider= 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/xeno = 1, /obj/item/natural/hide = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 2, + /obj/item/natural/hide = 2) - faction = list("bugs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - health = 160 - maxHealth = 160 + health = BOGBUG_HEALTH + maxHealth = BOGBUG_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, + /obj/item/bodypart, + /obj/item/organ) + + base_intents = list(/datum/intent/simple/claw, /datum/intent/simple/stab) + attack_sound = list('sound/vo/mobs/bogbug/bogbugattack1.ogg','sound/vo/mobs/bogbug/bogbugattack2.ogg','sound/vo/mobs/bogbug/bogbugattack3.ogg') melee_damage_lower = 25 melee_damage_upper = 35 - vision_range = 9 - aggro_vision_range = 9 - environment_smash = ENVIRONMENT_SMASH_NONE - retreat_distance = 2 - minimum_distance = 1 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_BAREFOOT - pooptype = null + STACON = 13 STASTR = 10 STASPD = 15 STAEND = 15 + + retreat_distance = 2 + minimum_distance = 1 deaggroprob = 0 defprob = 30 defdrain = 8 del_on_deaggro = 999 SECONDS retreat_health = 0 food = 0 - attack_sound = list('sound/vo/mobs/bogbug/bogbugattack1.ogg','sound/vo/mobs/bogbug/bogbugattack2.ogg','sound/vo/mobs/bogbug/bogbugattack3.ogg') + dodgetime = 20 aggressive = 1 // stat_attack = UNCONSCIOUS diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm b/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm index 0b10ff5f6a..b578305424 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm @@ -5,46 +5,46 @@ icon_state = "honeys" icon_living = "honeys" icon_dead = "honeys-dead" - gender = MALE - speak_chance = 1 + + faction = list("bugs") turns_per_move = 4 - see_in_dark = 6 move_to_delay = 2 vision_range = 5 aggro_vision_range = 5 - base_intents = list(/datum/intent/simple/bite) - botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, - /obj/item/reagent_containers/food/snacks/spiderleg = 4, + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 1, /obj/item/natural/silk = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, - /obj/item/reagent_containers/food/snacks/spiderleg = 8, + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 1, /obj/item/reagent_containers/food/snacks/rogue/honey = 1, /obj/item/natural/silk = 2) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/honey = 1) - faction = list("bugs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - attack_sound = 'sound/combat/wooshes/punch/punchwoosh (2).ogg' - health = 120 - maxHealth = 120 + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 2, + /obj/item/reagent_containers/food/snacks/rogue/honey = 2, + /obj/item/natural/silk = 3) + + health = SPIDER_HEALTH + maxHealth = SPIDER_HEALTH + food_type = list(/obj/item/bodypart, + /obj/item/organ, + /obj/item/reagent_containers/food/snacks/rogue/meat) + + base_intents = list(/datum/intent/simple/bite) + attack_sound = list('sound/vo/mobs/spider/attack (1).ogg','sound/vo/mobs/spider/attack (2).ogg','sound/vo/mobs/spider/attack (3).ogg','sound/vo/mobs/spider/attack (4).ogg') melee_damage_lower = 20 melee_damage_upper = 25 - environment_smash = ENVIRONMENT_SMASH_NONE - retreat_distance = 0 - minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/bodypart, /obj/item/organ, /obj/item/reagent_containers/food/snacks/rogue/meat) - footstep_type = FOOTSTEP_MOB_BAREFOOT - pooptype = null + STACON = 6 STASTR = 10 STASPD = 10 + + retreat_distance = 0 + minimum_distance = 0 deaggroprob = 0 defprob = 35 defdrain = 5 - attack_same = 0 + attack_same = FALSE retreat_health = 0.2 - attack_sound = list('sound/vo/mobs/spider/attack (1).ogg','sound/vo/mobs/spider/attack (2).ogg','sound/vo/mobs/spider/attack (3).ogg','sound/vo/mobs/spider/attack (4).ogg') - aggressive = 1 + + aggressive = TRUE stat_attack = UNCONSCIOUS body_eater = TRUE @@ -54,10 +54,11 @@ icon_state = "skallax" icon_living = "skallax" icon_dead = "skallax-dead" + + health = SPIDER_HEALTH+10 + maxHealth = SPIDER_HEALTH+10 + base_intents = list(/datum/intent/simple/bite) - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider = 1, /obj/item/reagent_containers/food/snacks/spiderleg = 8) - health = 130 - maxHealth = 130 /mob/living/simple_animal/hostile/retaliate/rogue/spider/Initialize() ..() diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm b/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm index 03a318eb55..6130f23462 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm @@ -5,14 +5,15 @@ icon_state = "mole" icon_living = "mole" icon_dead = "mole_dead" - gender = MALE + + faction = list("orcs") emote_hear = null emote_see = null - speak_chance = 1 turns_per_move = 2 - see_in_dark = 6 move_to_delay = 5 - base_intents = list(/datum/intent/simple/claw) + vision_range = 7 + aggro_vision_range = 9 + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/natural/hide = 1, /obj/item/natural/fur/mole = 1, @@ -23,37 +24,39 @@ /obj/item/natural/fur/mole = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/natural/hide = 2, - /obj/item/natural/fur/mole = 2) - faction = list("orcs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - health = 200 - maxHealth = 200 + /obj/item/natural/fur/mole = 3, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = MOLE_HEALTH + maxHealth = MOLE_HEALTH + 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/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') melee_damage_lower = 20 melee_damage_upper = 40 - vision_range = 7 - aggro_vision_range = 9 - environment_smash = ENVIRONMENT_SMASH_NONE - retreat_distance = 0 - minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_BAREFOOT - pooptype = null + STACON = 8 STASTR = 12 STASPD = 3 STAEND = 10 + + retreat_distance = 0 + minimum_distance = 0 deaggroprob = 0 defprob = 30 defdrain = 10 del_on_deaggro = 99 SECONDS retreat_health = 0.4 food = 0 - attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') + dodgetime = 20 - aggressive = 1 + aggressive = TRUE // stat_attack = UNCONSCIOUS remains_type = /obj/effect/decal/remains/mole body_eater = TRUE diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/shade.dm b/code/modules/mob/living/simple_animal/rogue/creacher/shade.dm index bd7670e2c3..b53caee949 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/shade.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/shade.dm @@ -17,10 +17,10 @@ icon_state = "shade_mob_a" icon_living = "shade_mob_a" icon_dead = null + gender = PLURAL emote_hear = null emote_see = null - speak_chance = 1 turns_per_move = 6 see_in_dark = 9 move_to_delay = 2 @@ -42,13 +42,12 @@ * made them proud, remind them of * their forgotten humility. */ - health = 75 - maxHealth = 75 + health = SHADE_HEALTH + maxHealth = SHADE_HEALTH melee_damage_lower = 15 melee_damage_upper = 20 vision_range = 9 aggro_vision_range = 9 - environment_smash = ENVIRONMENT_SMASH_NONE melee_damage_type = BRUTE // Makes thrown objects phase through them pass_flags = LETPASSTHROW @@ -65,8 +64,6 @@ search_objects = FALSE //Why wander when you know your fate. wander = FALSE - milkies = FALSE - pooptype = null STACON = 6 STASTR = 6 STASPD = 6 diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm b/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm index 15f598ed5a..4d1e1ddd09 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm @@ -5,40 +5,50 @@ icon_state = "Troll2" icon_living = "Troll2" icon_dead = "Troll2d" - gender = MALE + + faction = list("orcs") + footstep_type = FOOTSTEP_MOB_HEAVY emote_hear = null emote_see = null - speak_chance = 1 + verb_say = "groans" + verb_ask = "grunts" + verb_exclaim = "roars" + verb_yell = "roars" + turns_per_move = 2 see_in_dark = 10 move_to_delay = 7 - base_intents = list(/datum/intent/unarmed/wwolf, /datum/intent/simple/bigbite) - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/xeno = 1, + vision_range = 6 + aggro_vision_range = 6 + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 1, + /obj/item/alch/horn = 2) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 1, /obj/item/natural/hide = 2, /obj/item/alch/horn = 2) - faction = list("orcs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - health = 600 - maxHealth = 600 + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider= 2, + /obj/item/natural/hide = 3, + /obj/item/alch/horn = 2) + + health = TROLL_HEALTH + maxHealth = TROLL_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, + /obj/item/bodypart, + /obj/item/organ) + + base_intents = list(/datum/intent/unarmed/wwolf, /datum/intent/simple/bigbite) + attack_sound = list('sound/combat/wooshes/blunt/wooshhuge (1).ogg','sound/combat/wooshes/blunt/wooshhuge (2).ogg','sound/combat/wooshes/blunt/wooshhuge (3).ogg') melee_damage_lower = 40 melee_damage_upper = 60 - vision_range = 6 - aggro_vision_range = 6 environment_smash = ENVIRONMENT_SMASH_STRUCTURES - retreat_distance = 0 - minimum_distance = 0 - verb_say = "groans" - verb_ask = "grunts" - verb_exclaim = "roars" - verb_yell = "roars" - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_HEAVY - pooptype = null + STACON = 15 STASTR = 16 STASPD = 2 STAEND = 16 + + retreat_distance = 0 + minimum_distance = 0 deaggroprob = 0 defprob = 20 defdrain = 15 @@ -46,11 +56,10 @@ retreat_health = 0 food_max = 250 food = 0 - attack_sound = list('sound/combat/wooshes/blunt/wooshhuge (1).ogg','sound/combat/wooshes/blunt/wooshhuge (2).ogg','sound/combat/wooshes/blunt/wooshhuge (3).ogg') dodgetime = 20 - aggressive = 1 + aggressive = TRUE // stat_attack = UNCONSCIOUS - remains_type = /obj/effect/decal/remains/xeno/troll // Placeholder until Troll remains are sprited. + remains_type = /obj/effect/decal/remains/troll body_eater = TRUE var/critvuln = FALSE @@ -132,3 +141,9 @@ if(BODY_ZONE_L_ARM) return "foreleg" return ..() + +/obj/effect/decal/remains/troll + name = "remains" + gender = PLURAL + icon_state = "mole_bones" + icon = 'icons/roguetown/mob/monster/mole.dmi' // mole bones is a placeholder diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm b/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm index a588e1a05c..b61f9bad20 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm @@ -5,39 +5,48 @@ icon_state = "Troll" icon_living = "Troll" icon_dead = "Trolld" - gender = MALE + + faction = list("orcs") + footstep_type = FOOTSTEP_MOB_HEAVY emote_hear = null emote_see = null - speak_chance = 1 - turns_per_move = 4 - see_in_dark = 10 - move_to_delay = 7 verb_say = "groans" verb_ask = "grunts" verb_exclaim = "roars" verb_yell = "roars" - base_intents = list(/datum/intent/simple/headbutt, /datum/intent/simple/bigbite) - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet/xeno = 1, + + turns_per_move = 4 + see_in_dark = 10 + move_to_delay = 7 + vision_range = 6 + aggro_vision_range = 6 + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 1, + /obj/item/natural/hide = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 1, /obj/item/natural/hide = 2) - faction = list("orcs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - health = 300 - maxHealth = 300 + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/spider = 2, + /obj/item/natural/hide = 3) + + health = BOGTROLL_HEALTH + maxHealth = BOGTROLL_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, + /obj/item/bodypart, + /obj/item/organ) + + base_intents = list(/datum/intent/simple/headbutt, /datum/intent/simple/bigbite) + attack_sound = list('sound/combat/wooshes/blunt/wooshhuge (1).ogg','sound/combat/wooshes/blunt/wooshhuge (2).ogg','sound/combat/wooshes/blunt/wooshhuge (3).ogg') melee_damage_lower = 30 melee_damage_upper = 50 - vision_range = 6 - aggro_vision_range = 6 environment_smash = ENVIRONMENT_SMASH_STRUCTURES - retreat_distance = 0 - minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_HEAVY - pooptype = null + STACON = 15 STASTR = 16 STASPD = 3 STAEND = 14 + + retreat_distance = 0 + minimum_distance = 0 deaggroprob = 0 defprob = 30 defdrain = 13 @@ -45,11 +54,11 @@ retreat_health = 0 food_max = 250 food = 0 - attack_sound = list('sound/combat/wooshes/blunt/wooshhuge (1).ogg','sound/combat/wooshes/blunt/wooshhuge (2).ogg','sound/combat/wooshes/blunt/wooshhuge (3).ogg') + dodgetime = 15 - aggressive = 1 + aggressive = TRUE // stat_attack = UNCONSCIOUS - remains_type = /obj/effect/decal/remains/xeno/troll // Placeholder until Troll remains are sprited. + remains_type = /obj/effect/decal/remains/troll // Placeholder until Troll remains are sprited. body_eater = TRUE var/critvuln = FALSE diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm b/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm index d03c7a2922..17f7bedd7c 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm @@ -5,14 +5,16 @@ icon_state = "vv" icon_living = "vv" icon_dead = "vvd" - gender = MALE + + faction = list("orcs") emote_hear = null emote_see = null - speak_chance = 1 turns_per_move = 5 see_in_dark = 9 move_to_delay = 2 - base_intents = list(/datum/intent/simple/bite) + vision_range = 9 + aggro_vision_range = 9 + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/natural/fur/volf = 1, /obj/item/alch/bone = 1) @@ -22,33 +24,36 @@ /obj/item/natural/fur/volf = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, - /obj/item/natural/fur/volf = 1) - faction = list("orcs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - health = 110 - maxHealth = 110 + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 1, + /obj/item/natural/fur/volf = 3, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = VOLF_HEALTH + maxHealth = VOLF_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, + /obj/item/bodypart, + /obj/item/organ) + + base_intents = list(/datum/intent/simple/bite) + attack_sound = list('sound/vo/mobs/vw/attack (1).ogg','sound/vo/mobs/vw/attack (2).ogg','sound/vo/mobs/vw/attack (3).ogg','sound/vo/mobs/vw/attack (4).ogg') melee_damage_lower = 15 melee_damage_upper = 20 - vision_range = 9 - aggro_vision_range = 9 - environment_smash = ENVIRONMENT_SMASH_NONE - retreat_distance = 0 - minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_BAREFOOT - pooptype = null + STACON = 6 STASTR = 6 STASPD = 12 + + retreat_distance = 0 + minimum_distance = 0 deaggroprob = 0 defprob = 35 defdrain = 5 del_on_deaggro = 999 SECONDS retreat_health = 0.4 food = 0 - attack_sound = list('sound/vo/mobs/vw/attack (1).ogg','sound/vo/mobs/vw/attack (2).ogg','sound/vo/mobs/vw/attack (3).ogg','sound/vo/mobs/vw/attack (4).ogg') dodgetime = 17 aggressive = 1 // stat_attack = UNCONSCIOUS diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/zizoid.dm b/code/modules/mob/living/simple_animal/rogue/creacher/zizoid.dm index f9cb9c8c73..075e5dc8da 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/zizoid.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/zizoid.dm @@ -7,19 +7,24 @@ icon = 'icons/mob/mob.dmi' icon_state = "FLESH" icon_living = "FLESH" - health = 600 - maxHealth = 600 - melee_damage_lower = 40 - melee_damage_upper = 60 + + mob_biotypes = MOB_EPIC + footstep_type = FOOTSTEP_MOB_HEAVY vision_range = 6 aggro_vision_range = 6 environment_smash = ENVIRONMENT_SMASH_STRUCTURES retreat_distance = 0 minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_HEAVY - pooptype = null + + health = TROLL_HEALTH + maxHealth = TROLL_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, + /obj/item/bodypart, + /obj/item/organ) + + attack_sound = list('sound/combat/wooshes/blunt/wooshhuge (1).ogg','sound/combat/wooshes/blunt/wooshhuge (2).ogg','sound/combat/wooshes/blunt/wooshhuge (3).ogg') + melee_damage_lower = 40 + melee_damage_upper = 60 STACON = 15 STASTR = 16 STASPD = 2 @@ -31,14 +36,12 @@ retreat_health = 0 food_max = 250 food = 0 - attack_sound = list('sound/combat/wooshes/blunt/wooshhuge (1).ogg','sound/combat/wooshes/blunt/wooshhuge (2).ogg','sound/combat/wooshes/blunt/wooshhuge (3).ogg') dodgetime = 20 - aggressive = 1 + aggressive = TRUE // stat_attack = UNCONSCIOUS - remains_type = /obj/effect/decal/remains/xeno/troll // Placeholder until Troll remains are sprited. + remains_type = /obj/effect/decal/remains/troll // Placeholder until Troll remains are sprited. body_eater = TRUE var/critvuln = TRUE - mob_biotypes = MOB_EPIC critvuln = FALSE STACON = 10 STASTR = 19 diff --git a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm index 3dcd95dbf3..aba8042b32 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm @@ -2,46 +2,57 @@ /mob/living/simple_animal/hostile/retaliate/rogue/chicken name = "\improper chicken" desc = "A fat and mostly flightless bird. They produce eggs, or 'cackleberries'." - gender = FEMALE - mob_biotypes = MOB_ORGANIC|MOB_BEAST icon_state = "chicken_brown" icon_living = "chicken_brown" icon_dead = "chicken_brown_dead" - emote_see = list("pecks at the ground.","flaps its wings viciously.") + density = FALSE - base_intents = list(/datum/intent/simple/peck) + gender = FEMALE + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + ventcrawler = VENTCRAWLER_ALWAYS + emote_see = list("pecks at the ground.","flaps its wings viciously.") speak_chance = 2 - turns_per_move = 5 faction = list("chickens") + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry = 1, /obj/item/natural/feather = 1) perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 1, - /obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1) + /obj/item/reagent_containers/food/snacks/rogue/meat/poultry = 1, + /obj/item/reagent_containers/food/snacks/rogue/meat/poultry/cutlet = 1, + /obj/item/natural/feather = 1) + var/egg_type = /obj/item/reagent_containers/food/snacks/egg - food_type = list(/obj/item/reagent_containers/food/snacks/produce/berries/rogue,/obj/item/natural/worms,/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat) + food_type = list(/obj/item/reagent_containers/food/snacks/produce/berries/rogue, + /obj/item/natural/worms, // well this works for domesticating but to actually eat it has to be a reagen_container/food object. Leaving it for now. + /obj/item/reagent_containers/food/snacks/produce/wheat, + /obj/item/reagent_containers/food/snacks/produce/oat) + + 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" + + base_intents = list(/datum/intent/simple/peck) melee_damage_lower = 1 melee_damage_upper = 5 + pooptype = /obj/item/natural/poo/horse - health = 15 - maxHealth = 15 - ventcrawler = VENTCRAWLER_ALWAYS + var/eggsFertile = TRUE var/body_color var/icon_prefix = "chicken" - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL var/list/layMessage = EGG_LAYING_MESSAGES var/list/validColors = list("brown","black","white") var/static/chicken_count = 0 - footstep_type = FOOTSTEP_MOB_BAREFOOT + STACON = 1 STASTR = 1 STASPD = 5 diff --git a/code/modules/mob/living/simple_animal/rogue/farm/cow.dm b/code/modules/mob/living/simple_animal/rogue/farm/cow.dm index 98e2d06c8b..916a726e98 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/cow.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/cow.dm @@ -7,15 +7,14 @@ icon_living = "cow" icon_dead = "cow_dead" icon_gib = "cow_gib" + + animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/bull + faction = list("cows") gender = FEMALE - mob_biotypes = MOB_ORGANIC|MOB_BEAST + footstep_type = FOOTSTEP_MOB_SHOE emote_hear = list("brays.") emote_see = list("shakes its head.", "chews her cud.") - speak_chance = 1 - turns_per_move = 5 - see_in_dark = 6 - move_to_delay = 8 - animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/bull + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, /obj/item/natural/hide = 1, /obj/item/alch/sinew = 1, @@ -24,28 +23,60 @@ /obj/item/natural/hide = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, - /obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 80 - maxHealth = 80 - food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 8, + /obj/item/natural/hide = 3, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = FEMALE_MOOBEAST_HEALTH + maxHealth = FEMALE_MOOBEAST_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat, + /obj/item/reagent_containers/food/snacks/produce/oat, + /obj/item/reagent_containers/food/snacks/produce/turnip, + /obj/item/reagent_containers/food/snacks/produce/cabbage) + pooptype = /obj/item/natural/poo/cow + var/milkies = TRUE tame_chance = 25 bonus_tame_chance = 15 - footstep_type = FOOTSTEP_MOB_SHOE - pooptype = /obj/item/natural/poo/cow - milkies = TRUE - faction = list("cows") - attack_verb_continuous = "headbutts" - attack_verb_simple = "headbutt" + + base_intents = list(/datum/intent/simple/headbutt) + attack_verb_continuous = "stomps" + attack_verb_simple = "stomps" melee_damage_lower = 10 melee_damage_upper = 12 STASPD = 4 STACON = 4 STASTR = 4 - childtype = list(/mob/living/simple_animal/hostile/retaliate/rogue/cow/cowlet = 95, /mob/living/simple_animal/hostile/retaliate/rogue/cow/bullet = 5) + childtype = list(/mob/living/simple_animal/hostile/retaliate/rogue/cow/cowlet = 95, + /mob/living/simple_animal/hostile/retaliate/rogue/cow/cowlet/bullet = 5) remains_type = /obj/effect/decal/remains/cow + var/obj/item/udder/udder = null + +/mob/living/simple_animal/hostile/retaliate/rogue/cow/Initialize() + ..() + if(milkies) + udder = new() + +/mob/living/simple_animal/hostile/retaliate/rogue/cow/Destroy() + qdel(udder) + udder = null + ..() +/mob/living/simple_animal/hostile/retaliate/rogue/cow/attackby(obj/item/O, mob/user, params) + if(!stat && istype(O, /obj/item/reagent_containers/glass)) + if(udder) + udder.milkAnimal(O, user) + return 1 + else + return ..() + +/mob/living/simple_animal/hostile/retaliate/rogue/cow/Life() + . = ..() + if(.) + if(udder) + if(production > 0) + production-- + udder.generateMilk() /obj/effect/decal/remains/cow name = "remains" @@ -65,32 +96,6 @@ return pick('sound/vo/mobs/cow/idle (1).ogg','sound/vo/mobs/cow/idle (2).ogg','sound/vo/mobs/cow/idle (3).ogg','sound/vo/mobs/cow/idle (4).ogg','sound/vo/mobs/cow/idle (5).ogg') -/mob/living/simple_animal/hostile/retaliate/rogue/cow/cowlet - name = "calf" - desc = "So cute!" - icon_state = "cowlet" - icon_living = "cowlet" - icon_dead = "cowlet_dead" - icon_gib = "cowlet_gib" - animal_species = null - botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - perfect_butcher_results = list(/obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - maxHealth = 20 - milkies = FALSE - melee_damage_lower = 1 - melee_damage_upper = 6 - STACON = 5 - STASTR = 5 - STASPD = 5 - defprob = 50 - adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/cow - - /mob/living/simple_animal/hostile/retaliate/rogue/cow/simple_limb_hit(zone) if(!zone) return "" @@ -153,38 +158,39 @@ icon_living = "bull" icon_dead = "bull_dead" icon_gib = "bull_gib" - gender = MALE + + faction = list("cows") + footstep_type = FOOTSTEP_MOB_SHOE emote_hear = list("chews.") emote_see = list("shakes his head.", "chews his cud.") - speak_chance = 1 - turns_per_move = 5 - see_in_dark = 6 - move_to_delay = 8 - base_intents = list(/datum/intent/simple/headbutt) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, /obj/item/alch/sinew = 1, /obj/item/alch/bone = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 6, + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 7, + /obj/item/natural/hide = 3, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, - /obj/item/natural/hide = 2) - faction = list("cows") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - attack_same = 0 - attack_verb_continuous = "headbutts" - attack_verb_simple = "headbutt" - health = 150 - maxHealth = 150 + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 9, + /obj/item/natural/hide = 4, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = MALE_MOOBEAST_HEALTH + maxHealth = MALE_MOOBEAST_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat, + /obj/item/reagent_containers/food/snacks/produce/oat, + /obj/item/reagent_containers/food/snacks/produce/turnip, + /obj/item/reagent_containers/food/snacks/produce/cabbage) + pooptype = /obj/item/natural/poo/cow + + base_intents = list(/datum/intent/simple/headbutt) + attack_verb_continuous = "gores" + attack_verb_simple = "gores" melee_damage_lower = 25 melee_damage_upper = 45 - environment_smash = ENVIRONMENT_SMASH_NONE retreat_distance = 0 minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat) - footstep_type = FOOTSTEP_MOB_SHOE - pooptype = /obj/item/natural/poo/cow STACON = 20 STASTR = 12 STASPD = 2 @@ -252,27 +258,43 @@ GiveTarget(user) return -/mob/living/simple_animal/hostile/retaliate/rogue/cow/bullet +/mob/living/simple_animal/hostile/retaliate/rogue/cow/cowlet name = "calf" - desc = "So cute! Be careful of those horns, though." - gender = MALE - icon_state = "bullet" - icon_living = "bullet" - icon_dead = "bullet_dead" - icon_gib = "bullet_gib" + desc = "So cute!" + icon_state = "cowlet" + icon_living = "cowlet" + icon_dead = "cowlet_dead" + icon_gib = "cowlet_gib" + animal_species = null + mob_size = MOB_SIZE_SMALL + pass_flags = PASSTABLE | PASSMOB + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - perfect_butcher_results = list(/obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - maxHealth = 20 - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/hide = 1) + + health = CALF_HEALTH + maxHealth = CALF_HEALTH milkies = FALSE + + base_intents = list(/datum/intent/simple/headbutt) melee_damage_lower = 1 melee_damage_upper = 6 STACON = 5 STASTR = 5 STASPD = 5 + defprob = 50 + adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/cow + +/mob/living/simple_animal/hostile/retaliate/rogue/cow/cowlet/bullet + desc = "So cute! Be careful of those horns, though." + icon_state = "bullet" + icon_living = "bullet" + icon_dead = "bullet_dead" + icon_gib = "bullet_gib" + + gender = MALE + adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/bull diff --git a/code/modules/mob/living/simple_animal/rogue/farm/goat.dm b/code/modules/mob/living/simple_animal/rogue/farm/goat.dm index 70e4cd6c21..38077dfb81 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/goat.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/goat.dm @@ -61,14 +61,13 @@ icon_living = "goat" icon_dead = "goat_dead" icon_gib = "goat_gib" + + animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/goatmale + faction = list("goats") gender = FEMALE - mob_biotypes = MOB_ORGANIC|MOB_BEAST + footstep_type = FOOTSTEP_MOB_SHOE emote_see = list("shakes her head.", "chews her cud.") - speak_chance = 1 - turns_per_move = 5 - see_in_dark = 6 - move_to_delay = 8 - animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/goatmale + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/natural/hide = 1, /obj/item/alch/sinew = 1, @@ -79,19 +78,27 @@ /obj/item/natural/fur/gote = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, - /obj/item/natural/hide = 1, - /obj/item/natural/fur/gote = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 80 - maxHealth = 80 - food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat,/obj/item/reagent_containers/food/snacks/produce/apple,/obj/item/reagent_containers/food/snacks/produce/berries/rogue) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 6, + /obj/item/reagent_containers/food/snacks/fat = 2, + /obj/item/natural/hide = 2, + /obj/item/natural/fur/gote = 2, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = FEMALE_GOTE_HEALTH + maxHealth = FEMALE_GOTE_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat, + /obj/item/reagent_containers/food/snacks/produce/oat, + /obj/item/reagent_containers/food/snacks/produce/apple, + /obj/item/reagent_containers/food/snacks/produce/turnip, + /obj/item/reagent_containers/food/snacks/produce/cabbage, + /obj/item/reagent_containers/food/snacks/produce/berries/rogue) tame_chance = 25 bonus_tame_chance = 15 - footstep_type = FOOTSTEP_MOB_SHOE pooptype = /obj/item/natural/poo/horse - milkies = TRUE - faction = list("goats") + var/milkies = TRUE + + base_intents = list(/datum/intent/simple/headbutt) attack_verb_continuous = "headbutts" attack_verb_simple = "headbutt" melee_damage_lower = 8 @@ -99,11 +106,38 @@ STASPD = 4 STACON = 4 STASTR = 4 - childtype = list(/mob/living/simple_animal/hostile/retaliate/rogue/goat/goatlet = 90, /mob/living/simple_animal/hostile/retaliate/rogue/goat/goatletboy = 10) + buckle_lying = FALSE + childtype = list(/mob/living/simple_animal/hostile/retaliate/rogue/goat/goatlet = 90, /mob/living/simple_animal/hostile/retaliate/rogue/goat/goatlet/boy = 10) can_buckle = TRUE - buckle_lying = 0 - can_saddle = FALSE remains_type = /obj/effect/decal/remains/cow + var/obj/item/gudder/gudder = null + + +/mob/living/simple_animal/hostile/retaliate/rogue/goat/Initialize() + ..() + if(milkies) + gudder = new() + +/mob/living/simple_animal/hostile/retaliate/rogue/goat/Destroy() + qdel(gudder) + gudder = null + ..() + +/mob/living/simple_animal/hostile/retaliate/rogue/goat/attackby(obj/item/O, mob/user, params) + if(!stat && istype(O, /obj/item/reagent_containers/glass)) + if(gudder) + gudder.milkAnimal(O, user) + return 1 + else + return ..() + +/mob/living/simple_animal/hostile/retaliate/rogue/goat/Life() + . = ..() + if(.) + if(gudder) + if(production > 0) + production-- + gudder.generateMilk() /mob/living/simple_animal/hostile/retaliate/rogue/goat/get_sound(input) switch(input) @@ -116,38 +150,6 @@ if("idle") return pick('sound/vo/mobs/goat/idle (1).ogg','sound/vo/mobs/goat/idle (2).ogg','sound/vo/mobs/goat/idle (3).ogg') - -/mob/living/simple_animal/hostile/retaliate/rogue/goat/goatlet - icon = 'icons/roguetown/mob/monster/gote.dmi' - name = "goatlet" - desc = "" - icon_state = "goatlet" - icon_living = "goatlet" - icon_dead = "goatlet_dead" - icon_gib = "goatlet_gib" - animal_species = null - botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - perfect_butcher_results = list(/obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - maxHealth = 20 - milkies = FALSE - gender = FEMALE - melee_damage_lower = 1 - melee_damage_upper = 6 - STACON = 5 - STASTR = 5 - STASPD = 5 - defprob = 50 - adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/goat - can_buckle = FALSE - buckle_lying = 0 - can_saddle = FALSE - - /mob/living/simple_animal/hostile/retaliate/rogue/goat/simple_limb_hit(zone) if(!zone) return "" @@ -196,13 +198,12 @@ icon_living = "goatmale" icon_dead = "goatmale_dead" icon_gib = "goatmale_gib" - gender = MALE + + faction = list("goats") + footstep_type = FOOTSTEP_MOB_SHOE emote_see = list("shakes his head.", "chews his cud.") - speak_chance = 1 turns_per_move = 3 - see_in_dark = 6 - move_to_delay = 8 - base_intents = list(/datum/intent/simple/headbutt) + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, /obj/item/natural/hide = 1, /obj/item/alch/sinew = 1, @@ -213,30 +214,36 @@ /obj/item/natural/fur/gote = 1, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, - /obj/item/natural/hide = 1, - /obj/item/natural/fur/gote = 1) - faction = list("goats") - mob_biotypes = MOB_ORGANIC|MOB_BEAST + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 6, + /obj/item/reagent_containers/food/snacks/fat = 2, + /obj/item/natural/hide = 2, + /obj/item/natural/fur/gote = 2, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = MALE_GOTE_HEALTH + maxHealth = MALE_GOTE_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat, + /obj/item/reagent_containers/food/snacks/produce/oat, + /obj/item/reagent_containers/food/snacks/produce/apple, + /obj/item/reagent_containers/food/snacks/produce/turnip, + /obj/item/reagent_containers/food/snacks/produce/cabbage, + /obj/item/reagent_containers/food/snacks/produce/berries/rogue) + pooptype = /obj/item/natural/poo/horse + + base_intents = list(/datum/intent/simple/headbutt) attack_verb_continuous = "headbutts" attack_verb_simple = "headbutt" - health = 150 - maxHealth = 150 melee_damage_lower = 14 melee_damage_upper = 22 - environment_smash = ENVIRONMENT_SMASH_NONE retreat_distance = 0 minimum_distance = 0 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat,/obj/item/reagent_containers/food/snacks/produce/apple,/obj/item/reagent_containers/food/snacks/produce/berries/rogue) - footstep_type = FOOTSTEP_MOB_SHOE - pooptype = /obj/item/natural/poo/horse STACON = 7 STASTR = 12 STASPD = 2 + can_buckle = TRUE - buckle_lying = 0 - can_saddle = FALSE + buckle_lying = FALSE tame_chance = 25 bonus_tame_chance = 15 remains_type = /obj/effect/decal/remains/cow @@ -349,32 +356,49 @@ return "foreleg" return ..() - -/mob/living/simple_animal/hostile/retaliate/rogue/goat/goatletboy +/mob/living/simple_animal/hostile/retaliate/rogue/goat/goatlet icon = 'icons/roguetown/mob/monster/gote.dmi' - name = "goatlet" + name = "gotelet" desc = "" - gender = MALE - icon_state = "goatletboy" - icon_living = "goatletboy" - icon_dead = "goatletboy_dead" - icon_gib = "goatletboyt_gib" + icon_state = "goatlet" + icon_living = "goatlet" + icon_dead = "goatlet_dead" + icon_gib = "goatlet_gib" + animal_species = null + gender = FEMALE + mob_size = MOB_SIZE_SMALL + pass_flags = PASSTABLE | PASSMOB + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince/beef = 1) butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - perfect_butcher_results = list(/obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - maxHealth = 20 - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/hide = 1) + + health = CALF_HEALTH + maxHealth = CALF_HEALTH milkies = FALSE + + base_intents = list(/datum/intent/simple/headbutt) melee_damage_lower = 1 melee_damage_upper = 6 STACON = 5 STASTR = 5 STASPD = 5 - adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/goatmale + defprob = 50 + + adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/goat can_buckle = FALSE - buckle_lying = 0 - can_saddle = FALSE + + + +/mob/living/simple_animal/hostile/retaliate/rogue/goat/goatlet/boy + icon_state = "goatletboy" + icon_living = "goatletboy" + icon_dead = "goatletboy_dead" + icon_gib = "goatletboyt_gib" + + gender = MALE + + adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/goatmale + diff --git a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm index a2aa03a606..dbc4caa878 100644 --- a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm +++ b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm @@ -39,30 +39,41 @@ icon_living = "saiga" icon_dead = "saiga_dead" icon_gib = "saiga_gib" + pixel_x = -8 + + animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck + faction = list("saiga") gender = FEMALE - mob_biotypes = MOB_ORGANIC|MOB_BEAST + footstep_type = FOOTSTEP_MOB_SHOE emote_see = list("looks around.", "chews some leaves.") - speak_chance = 1 - turns_per_move = 5 - see_in_dark = 6 - move_to_delay = 8 - animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/reagent_containers/food/snacks/fat = 1, /obj/item/natural/hide = 1, + /obj/item/alch/bone = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 2, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, - /obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 100 - maxHealth = 100 - food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat,/obj/item/reagent_containers/food/snacks/produce/apple, /obj/structure/spacevine) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 4, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = FEMALE_MOOBEAST_HEALTH + maxHealth = FEMALE_MOOBEAST_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat, + /obj/item/reagent_containers/food/snacks/produce/oat, + /obj/item/reagent_containers/food/snacks/produce/berries/rogue, + /obj/item/reagent_containers/food/snacks/produce/apple) tame_chance = 25 bonus_tame_chance = 15 - footstep_type = FOOTSTEP_MOB_SHOE pooptype = /obj/item/natural/poo/horse - faction = list("saiga") + + base_intents = list(/datum/intent/simple/headbutt) + attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') attack_verb_continuous = "headbutts" attack_verb_simple = "headbutt" melee_damage_lower = 10 @@ -72,13 +83,12 @@ STASPD = 15 STACON = 8 STASTR = 9 - childtype = list(/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid = 70, /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigaboy = 30) - pixel_x = -8 - attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') + childtype = list(/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid = 70, + /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid/boy = 30) can_buckle = TRUE - buckle_lying = 0 + buckle_lying = FALSE can_saddle = TRUE - aggressive = 1 + aggressive = TRUE remains_type = /obj/effect/decal/remains/saiga /obj/effect/decal/remains/saiga @@ -99,35 +109,6 @@ return pick('sound/vo/mobs/saiga/idle (1).ogg','sound/vo/mobs/saiga/idle (2).ogg','sound/vo/mobs/saiga/idle (3).ogg','sound/vo/mobs/saiga/idle (4).ogg','sound/vo/mobs/saiga/idle (5).ogg','sound/vo/mobs/saiga/idle (6).ogg','sound/vo/mobs/saiga/idle (7).ogg') -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid - icon = 'icons/roguetown/mob/monster/saiga.dmi' - name = "saiga" - icon_state = "saigakid" - icon_living = "saigakid" - icon_dead = "saigakid_dead" - icon_gib = "saigakid_gib" - animal_species = null - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1) - perfect_butcher_results = list(/obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - maxHealth = 20 - melee_damage_lower = 1 - melee_damage_upper = 6 - gender = FEMALE - STACON = 5 - STASTR = 5 - STASPD = 5 - defprob = 50 - pixel_x = -16 - adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/saiga - tame = TRUE - can_buckle = FALSE - aggressive = 1 - - /mob/living/simple_animal/hostile/retaliate/rogue/saiga/simple_limb_hit(zone) if(!zone) return "" @@ -176,47 +157,56 @@ icon_living = "buck" icon_dead = "buck_dead" icon_gib = "buck_gib" - gender = MALE + pixel_x = -8 + + faction = list("saiga") + footstep_type = FOOTSTEP_MOB_SHOE emote_see = list("stares.") - speak_chance = 1 turns_per_move = 3 - see_in_dark = 6 - move_to_delay = 8 - base_intents = list(/datum/intent/simple/headbutt) - botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, - /obj/item/natural/hide = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/reagent_containers/food/snacks/fat = 1, - /obj/item/natural/hide = 2) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, - /obj/item/natural/hide = 1) - faction = list("saiga") - mob_biotypes = MOB_ORGANIC|MOB_BEAST + /obj/item/natural/hide = 1, + /obj/item/alch/bone = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 3, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 5, + /obj/item/alch/sinew = 2, + /obj/item/alch/bone = 1) + + health = MALE_MOOBEAST_HEALTH + maxHealth = MALE_MOOBEAST_HEALTH + food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat, + /obj/item/reagent_containers/food/snacks/produce/oat, + /obj/item/reagent_containers/food/snacks/produce/berries/rogue, + /obj/item/reagent_containers/food/snacks/produce/apple) + pooptype = /obj/item/natural/poo/horse + + base_intents = list(/datum/intent/simple/headbutt) + attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') attack_verb_continuous = "headbutts" attack_verb_simple = "headbutt" - health = 200 - maxHealth = 200 melee_damage_lower = 15 melee_damage_upper = 20 environment_smash = ENVIRONMENT_SMASH_NONE retreat_distance = 0 minimum_distance = 0 retreat_health = 0.3 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat,/obj/item/reagent_containers/food/snacks/produce/oat,/obj/item/reagent_containers/food/snacks/produce/apple) - footstep_type = FOOTSTEP_MOB_SHOE - pooptype = /obj/item/natural/poo/horse STACON = 15 STASTR = 11 STASPD = 12 - pixel_x = -8 - attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') + can_buckle = TRUE buckle_lying = 0 can_saddle = TRUE tame_chance = 25 bonus_tame_chance = 15 - aggressive = 1 + aggressive = TRUE remains_type = /obj/effect/decal/remains/saiga /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck/update_icon() @@ -317,38 +307,53 @@ return ..() -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigaboy +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid icon = 'icons/roguetown/mob/monster/saiga.dmi' name = "saiga" - desc = "" - gender = MALE - icon_state = "saigaboy" - icon_living = "saigaboy" - icon_dead = "saigaboy_dead" - icon_gib = "saigaboy_gib" + icon_state = "saigakid" + icon_living = "saigakid" + icon_dead = "saigakid_dead" + icon_gib = "saigakid_gib" + animal_species = null - botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, - /obj/item/natural/hide = 1) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, - /obj/item/reagent_containers/food/snacks/fat = 1, - /obj/item/natural/hide = 2) - perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 2, - /obj/item/natural/hide = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - maxHealth = 20 + gender = FEMALE pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL - milkies = FALSE + + botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/hide = 1) + + health = CALF_HEALTH + maxHealth = CALF_HEALTH + + base_intents = list(/datum/intent/simple/headbutt) melee_damage_lower = 1 melee_damage_upper = 6 + STACON = 5 STASTR = 5 STASPD = 5 - adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck + defprob = 50 + pixel_x = -16 + adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/saiga tame = TRUE can_buckle = FALSE - aggressive = 1 + aggressive = TRUE + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid/boy + icon_state = "saigaboy" + icon_living = "saigaboy" + icon_dead = "saigaboy_dead" + icon_gib = "saigaboy_gib" + + gender = MALE + + health = CALF_HEALTH + maxHealth = CALF_HEALTH + + adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck /mob/living/simple_animal/hostile/retaliate/rogue/saiga/tame tame = TRUE diff --git a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm index 8bc8dd0107..656958599a 100644 --- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm +++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm @@ -1,32 +1,61 @@ +#define TROLL_HEALTH 600 +#define BOGTROLL_HEALTH 300 +#define MOLE_HEALTH 200 +#define BOGBUG_HEALTH 160 +#define SPIDER_HEALTH 120 +#define VOLF_HEALTH 110 +#define SHADE_HEALTH 75 +#define ROUS_HEALTH 35 + +#define FEMALE_MOOBEAST_HEALTH 100 +#define MALE_MOOBEAST_HEALTH 150 +#define FEMALE_GOTE_HEALTH 80 +#define MALE_GOTE_HEALTH 120 +#define CALF_HEALTH 20 +#define CHICKEN_HEALTH 15 + //these mobs run away when attacked /mob/living/simple_animal/hostile/retaliate/rogue - turns_per_move = 5 - see_in_dark = 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" + + gender = MALE faction = list("rogueanimal") - robust_searching = 1 mob_biotypes = MOB_ORGANIC|MOB_BEAST - attack_sound = PUNCHWOOSH + footstep_type = FOOTSTEP_MOB_BAREFOOT + speak_chance = 1 + + turns_per_move = 5 + move_to_delay = 8 + see_in_dark = 6 + robust_searching = TRUE + + botched_butcher_results = list(/obj/item/alch/bone = 1) // 50% chance to get if skill 0 in butchery + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/steak = 1) + perfect_butcher_results = list(/obj/item/natural/hide = 1) // level 5 butchery bonus + health = 40 maxHealth = 40 + food_type = list(/obj/item/reagent_containers/food/snacks/produce) + pooptype = null + move_to_delay = 5 d_intent = INTENT_DODGE minbodytemp = 180 lose_patience_timeout = 150 vision_range = 5 aggro_vision_range = 18 + attack_sound = PUNCHWOOSH harm_intent_damage = 5 - attack_same = 0 + attack_same = FALSE environment_smash = ENVIRONMENT_SMASH_NONE blood_volume = BLOOD_VOLUME_NORMAL - food_type = list(/obj/item/reagent_containers/food/snacks/grown) - footstep_type = FOOTSTEP_MOB_SHOE - stop_automated_movement_when_pulled = 0 + + stop_automated_movement_when_pulled = FALSE tame_chance = 0 retreat_distance = 10 minimum_distance = 10 @@ -34,8 +63,8 @@ dodge_sound = 'sound/combat/dodge.ogg' dodge_prob = 0 search_objects = TRUE - botched_butcher_results = list(/obj/item/alch/bone = 1) // 50% chance to get if skill 0 in butchery - perfect_butcher_results = list(/obj/item/natural/hide = 1) // level 5 butchery bonus + can_saddle = FALSE + //Should turn this into a flag thing but i dont want to touch too many things var/body_eater = FALSE //If the creature is doing something they should STOP MOVING. @@ -44,8 +73,7 @@ var/food_max = 50 var/deaggroprob = 10 var/eat_forever - var/obj/item/udder/udder = null - var/milkies = FALSE + /mob/living/simple_animal/hostile/retaliate/rogue/Move() //If you cant act and dont have a player stop moving. @@ -209,8 +237,6 @@ /mob/living/simple_animal/hostile/retaliate/rogue/Initialize() ..() - if(milkies) - udder = new() if(tame) tamed(owner) ADD_TRAIT(src, TRAIT_SIMPLE_WOUNDS, TRAIT_GENERIC) @@ -243,10 +269,6 @@ return ..() -/mob/living/simple_animal/hostile/retaliate/rogue/Destroy() - qdel(udder) - udder = null - ..() /mob/living/simple_animal/hostile/retaliate/rogue/Life() . = ..() @@ -283,10 +305,7 @@ else if(childtype) make_babies() - if(udder) - if(production > 0) - production-- - udder.generateMilk() + /mob/living/simple_animal/hostile/retaliate/rogue/Retaliate() // if(!enemies.len && message) @@ -297,13 +316,6 @@ mob_timers["aggro_time"] = world.time ..() -/mob/living/simple_animal/hostile/retaliate/rogue/attackby(obj/item/O, mob/user, params) - if(!stat && istype(O, /obj/item/reagent_containers/glass)) - if(udder) - udder.milkAnimal(O, user) - return 1 - else - return ..() //Prevents certain items from being targeted as food. /mob/living/simple_animal/hostile/retaliate/rogue/proc/PickyEater(atom/thing_to_eat) @@ -341,3 +353,38 @@ stop_automated_movement = TRUE Goto(user,move_to_delay) addtimer(CALLBACK(src, PROC_REF(return_action)), 3 SECONDS) + +// Goatmilk-udder +/obj/item/gudder + name = "udder" + var/in_use // so you can't spam milking sounds + +/obj/item/gudder/Initialize() + create_reagents(100) + reagents.add_reagent(/datum/reagent/consumable/milk/gote, rand(0,20)) + . = ..() + +/obj/item/gudder/proc/generateMilk() + reagents.add_reagent(/datum/reagent/consumable/milk/gote, 1) + +/obj/item/gudder/proc/milkAnimal(obj/O, mob/user) + var/obj/item/reagent_containers/glass/G = O + if(in_use) + return + if(G.reagents.total_volume >= G.volume) + to_chat(user, "[O] is full.") + return + if(!reagents.has_reagent(/datum/reagent/consumable/milk/gote, 5)) + to_chat(user, "The udder is dry. Wait a bit longer...") + return + beingmilked() + playsound(O, pick('modular/Creechers/sound/milking1.ogg', 'modular/Creechers/sound/milking2.ogg'), 100, TRUE, -1) + if(do_after(user, 20, target = src)) + reagents.trans_to(O, rand(5,10)) + user.visible_message("[user] milks [src] using \the [O].", "I milk [src] using \the [O].") + +/obj/item/gudder/proc/beingmilked() + in_use = TRUE + sleep(20) + in_use = FALSE + diff --git a/icons/roguetown/items/natural.dmi b/icons/roguetown/items/natural.dmi index 33dd2bf6b1c6c62838e13fb337b96f2d2bbff9a1..b968c01a2036215255ac29d63fbec7c367d70da2 100644 GIT binary patch delta 27845 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 aH!RGEe4L!;!rcsjzEqW-J+4qdg#0gvRLQ{r delta 27793 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 WKQupOsUQHLKMhqKl?o-h@c#ph$-9^U diff --git a/modular/Neu_Food/code/cooked/NeuFood_snacks.dm b/modular/Neu_Food/code/cooked/NeuFood_snacks.dm index 9e49752a00..950306541b 100644 --- a/modular/Neu_Food/code/cooked/NeuFood_snacks.dm +++ b/modular/Neu_Food/code/cooked/NeuFood_snacks.dm @@ -187,10 +187,10 @@ return ..() -/* ............. Fryspider ................ */ +/* ............. Frything ................ */ /obj/item/reagent_containers/food/snacks/rogue/meat/spider/fried - name = "fried spidermeat" - desc = "Spiderflesh, shaved and roasted." + name = "fried strange meat" + desc = "Whatever it was, its roasted." icon_state = "friedspider" eat_effect = null bonus_reagents = list(/datum/reagent/consumable/nutriment = SNACK_POOR) diff --git a/modular/Neu_Food/code/raw/NeuFood_meat.dm b/modular/Neu_Food/code/raw/NeuFood_meat.dm index b2ba708473..a8fe449d4d 100644 --- a/modular/Neu_Food/code/raw/NeuFood_meat.dm +++ b/modular/Neu_Food/code/raw/NeuFood_meat.dm @@ -54,7 +54,7 @@ become_rot_type = /obj/item/reagent_containers/food/snacks/rotten/bacon /obj/item/reagent_containers/food/snacks/rogue/meat/spider // Low-nutrient, kind of gross. Survival food. - name = "spidermeat" + name = "strange meat" icon_state = "spidermeat" fried_type = /obj/item/reagent_containers/food/snacks/rogue/meat/spider/fried cooked_type = /obj/item/reagent_containers/food/snacks/rogue/meat/spider/fried diff --git a/modular/Neu_Food/code/raw/NeuFood_processed.dm b/modular/Neu_Food/code/raw/NeuFood_processed.dm index 95cfc0d73c..3bf8906634 100644 --- a/modular/Neu_Food/code/raw/NeuFood_processed.dm +++ b/modular/Neu_Food/code/raw/NeuFood_processed.dm @@ -284,6 +284,9 @@ | Salted milk | \------------*/ // The base for making butter and cheese +/datum/reagent/consumable/milk/gote + taste_description = "gote milk" + /datum/reagent/consumable/milk/salted taste_description = "salty milk" From c3bfa9b20ee774a57da92873c05fb197f1e69000 Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Tue, 24 Sep 2024 12:14:58 +0200 Subject: [PATCH 04/12] annumal --- .../items/rogueitems/natural/animals.dm | 2 +- code/modules/clothing/rogueclothes/armor.dm | 3 +-- icons/roguetown/items/natural.dmi | Bin 29411 -> 29571 bytes 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/rogueitems/natural/animals.dm b/code/game/objects/items/rogueitems/natural/animals.dm index 55d6dc4c0a..6bcb19575b 100644 --- a/code/game/objects/items/rogueitems/natural/animals.dm +++ b/code/game/objects/items/rogueitems/natural/animals.dm @@ -12,7 +12,7 @@ drop_sound = 'sound/foley/dropsound/cloth_drop.ogg' sellprice = 5 -/obj/item/natural/fur // a piece of skin with animal hair on it is called a pelt, at least before a tanner gets to it. From it you can make fur lined cloaks and so on. +/obj/item/natural/fur // a piece of skin with animal hair on it. Could be called a fur but its untanned and also encompasses rat skins and goat skins so pelt is more suitable at least to my ears. name = "fur" icon_state = "wool1" desc = "pelt from one of Dendor's creachers." diff --git a/code/modules/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm index f1dc5d36fd..037cc474df 100644 --- a/code/modules/clothing/rogueclothes/armor.dm +++ b/code/modules/clothing/rogueclothes/armor.dm @@ -462,8 +462,7 @@ name = "leather vest" icon_state = "leathervest" item_state = "leathervest" -// color = null - color = "#ecb39e" + color = "#dfa590" // gives a slightly darker and reddish hue to contrast nicely with the leather pants. // Unique swashbuckler vest. Notice it doesn't cover arms. /obj/item/clothing/suit/roguetown/armor/leather/vest/sailor diff --git a/icons/roguetown/items/natural.dmi b/icons/roguetown/items/natural.dmi index b968c01a2036215255ac29d63fbec7c367d70da2..6da32ac69a84168987b099dfe53456f6bef382ee 100644 GIT binary patch literal 29571 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

=~7F;bV=5@x=8?vaC&AC^HFreO2z+PsJ^?&bbU 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 T2gcU{@J~}!SEW|jCi4FP{Cm%# literal 29411 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 Opsn#(y<8O<_J05{hR87h From 9121bedbc3234020170cd10db908409fa1f474b8 Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Tue, 24 Sep 2024 12:35:21 +0200 Subject: [PATCH 05/12] Update piggie.dmi --- modular/Creechers/icons/piggie.dmi | Bin 1775 -> 4972 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular/Creechers/icons/piggie.dmi b/modular/Creechers/icons/piggie.dmi index 829e27b4fa14915ebda2d28d68f308a47dce5409..d46107ea4b3fbaaa0705f5dc9666a96d8ab44e36 100644 GIT binary patch literal 4972 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 RD4&7!@7~w>sO9kdzW~Zuv5f!# delta 1749 zcmV;`1}gdNChrZ98B_xR006tak|_WH05ecbR7JqRz;{ARp>}q~tD;{tMnWb;*UP|D zQdeSMcZGxmphM|)fAW3Ff0rxCrM@;TscsE^ zf)B<$$eElDM~q%ZMV$g?7-=xQj^7ZXjF84+G<|PC*a9PEd{{h;Ixj6OGyMU(t)K#_ zR+j!}?G&_k&Qj4$!>}1=c{tC*sef?kii4bm&e?(O)A&AZEqQlp-cd43ffaCQX_&Y0{)glP3R5jO}~l27TOEYmG|{IU|EKeNYY1kPB)_D@Fe_-hW$7gKT4* z6o#D!U4}6lrTLCwY-clcM{1KEAsluf^ZpSZndJ|%7?k{D93R3%bz^nTKyL5I%_4=<_i)+sFc@6aE8 ze`5?O1!RenV@wn|jo>e`XMcP4L1?I|AvD96^f9cn8tZTEl>7t0Fwivemy7@nWVp-s z2DtY8Vkrx^ThF0DnR5t>mOsK6sm$tTW53|PGtxWwmt11pK~oyHBV00P<()KHVkbo~@lNH!`sLNY zZ7z#R5bztiM2c@twBiaE{UZ+pqN6CZ9;E!yE(rHgY<*a$Zs5%lyP2D{9A9D|>4%U( zyRUH3Kd&N5Pg((iF@HF!fr+Mu4TxT%4wwatWzsUyJ+tH=8eE7WO3;iDH#xqQ#Iem~ zH=6mN7qGfmujC&oqS!gjnt6ao1-N)#zfE|UrzYYk`IitnJpgJoH^1&imPt;Z4+k!O zd)Pnio)Uqx$?@cm1wj(<;gxMBa8w4J2R?^eq{ z-U-V7n>1Yz77=77oK!bMe!P>6A4TY-wsHy`hJHOp z_{I?!$4{Y~7@Tk@#bI=Xkn;zGA4}mvFiClFDqYps6TZj2fUhS17qVyNd~W$nvQ|O@ z{}4idSFKm&|9^xVo46BbL!OHQW$^Kb@ICYt*5v=z_;}3yyq?dW4M4_6S){$DOXaa9 z|2N?aM|O$^_+D#(RAYh$l&JIgh}UvW{?7!)@NpKO z@PF+0&HNuYmrkl`WPka2ovyDSG=u4k&i_#+q+FT>ZbVWtTmFyZb=(Pn`8r?S*?d+0 zkDpaD`+v&;gmw8pYCYZq-EZ;L=Ks3qi+XQ=|2QGF`9DJVq(_9`!fVpxTg2mh|Hbxc zcGaWlW&1R@D#FY5F;lm29rt_e>y*I%AMl?qHSlm;*J zdspm-VVs%oSudbX(*1LQ-@9Oc8f9W+%+2@d0?qth2Hyeuq@y=L*WITgsD0#VE4V)r z1}1(lhi@rzj)zX$pQcNz=X%87ll!bcf^S+%xhiJ%aSqRO6RSHWFT8TA6Z;Ynlx$Bq)C$|O?H|zX;N9#-|u~iWGSjL`0B^5% Date: Tue, 24 Sep 2024 12:43:48 +0200 Subject: [PATCH 06/12] Update simple_animal.dm --- code/modules/mob/living/simple_animal/simple_animal.dm | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e5cd9647f3..c50a1831b0 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -446,17 +446,11 @@ GLOBAL_VAR_INIT(farm_animals, FALSE) else butcher = butcher_results else -// butcher += butcher_results chicken works but not cow and gote uhhh wut - if(user.mind.get_skill_level(/datum/skill/labor/butchering) >= 5) + if(user.mind.get_skill_level(/datum/skill/labor/butchering) >= 5) // binary, butcher gets this bonus, no one else pretty much. Others just get the speed increase and avoid botches on lvl 1 and above. butcher = perfect_butcher_results else butcher = butcher_results -// if(perfect_butcher_results) -// if(user.mind.get_skill_level(/datum/skill/labor/butchering) >= 5) -// butcher = perfect_butcher_results -// if(guaranteed_butcher_results) -// butcher += guaranteed_butcher_results var/rotstuff = FALSE var/datum/component/rot/simple/CR = GetComponent(/datum/component/rot/simple) if(CR) From eff861ad3c2ab359baad6090abe938905d26bd55 Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Tue, 24 Sep 2024 13:27:01 +0200 Subject: [PATCH 07/12] Update rogueanimals.dm --- code/modules/mob/living/simple_animal/rogue/rogueanimals.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm index 656958599a..fef5623b35 100644 --- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm +++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm @@ -385,6 +385,6 @@ /obj/item/gudder/proc/beingmilked() in_use = TRUE - sleep(20) + sleep(15) in_use = FALSE From 788bb6dae59c5942d957d2d520f3bb0e6c3470c3 Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Tue, 24 Sep 2024 14:05:52 +0200 Subject: [PATCH 08/12] forgotrecipesdontusesubtypesbutnowitsok --- .../roguetown/roguecrafting/leather.dm | 59 +++++++++++++++++-- .../modules/roguetown/roguecrafting/sewing.dm | 19 +++++- .../roguetown/roguecrafting/weaving.dm | 17 +++++- 3 files changed, 88 insertions(+), 7 deletions(-) diff --git a/code/modules/roguetown/roguecrafting/leather.dm b/code/modules/roguetown/roguecrafting/leather.dm index 6feb9764bb..49ee52175e 100644 --- a/code/modules/roguetown/roguecrafting/leather.dm +++ b/code/modules/roguetown/roguecrafting/leather.dm @@ -47,10 +47,23 @@ /datum/crafting_recipe/roguetown/leather/heavygloves name = "heavy leather gloves" result = /obj/item/clothing/gloves/roguetown/angle - reqs = list(/obj/item/natural/hide = 1, /obj/item/natural/fur = 1) + reqs = list(/obj/item/natural/hide = 1, + /obj/item/natural/fur/gote = 1) sellprice = 20 craftdiff = 1 +/datum/crafting_recipe/roguetown/leather/heavygloves/two + reqs = list(/obj/item/natural/hide = 1, + /obj/item/natural/fur/volf = 1) + +/datum/crafting_recipe/roguetown/leather/heavygloves/three + reqs = list(/obj/item/natural/hide = 1, + /obj/item/natural/fur/mole = 1) + +/datum/crafting_recipe/roguetown/leather/heavygloves/four + reqs = list(/obj/item/natural/hide = 1, + /obj/item/natural/fur/rous = 1) + /datum/crafting_recipe/roguetown/leather/bracers name = "leather bracers (x2)" result = list(/obj/item/clothing/wrists/roguetown/bracers/leather, @@ -113,10 +126,22 @@ name = "hide armor" result = /obj/item/clothing/suit/roguetown/armor/leather/hide reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur = 1) + /obj/item/natural/fur/gote = 1) craftdiff = 2 sellprice = 35 +/datum/crafting_recipe/roguetown/leather/hidearmor/two + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur/volf = 1) + +/datum/crafting_recipe/roguetown/leather/hidearmor/three + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur/mole = 1) + +/datum/crafting_recipe/roguetown/leather/hidearmor/four + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur/rous = 1) + /datum/crafting_recipe/roguetown/leather/cloak name = "leather cloak" result = /obj/item/clothing/cloak/raincloak/brown @@ -128,7 +153,20 @@ /datum/crafting_recipe/roguetown/leather/cloakfur name = "fur cloak" result = /obj/item/clothing/cloak/raincloak/furcloak/crafted - reqs = list(/obj/item/natural/hide = 2, /obj/item/natural/fur = 1) + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur/gote = 1) + +/datum/crafting_recipe/roguetown/leather/cloakfur/two + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur/volf = 1) + +/datum/crafting_recipe/roguetown/leather/cloakfur/three + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur/mole = 1) + +/datum/crafting_recipe/roguetown/leather/cloakfur/four + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur/rous = 1) /obj/item/clothing/cloak/raincloak/furcloak/crafted sellprice = 35 @@ -136,7 +174,20 @@ /datum/crafting_recipe/roguetown/leather/papakha name = "papakha hat" result = /obj/item/clothing/head/roguetown/papakha/crafted - reqs = list(/obj/item/natural/fur = 1, /obj/item/natural/fibers = 2) + reqs = list(/obj/item/natural/fur/gote = 1, + /obj/item/natural/fibers = 2) + +/datum/crafting_recipe/roguetown/leather/papakha/two + reqs = list(/obj/item/natural/fur/volf = 1, + /obj/item/natural/fibers = 2) + +/datum/crafting_recipe/roguetown/leather/papakha/three + reqs = list(/obj/item/natural/fur/mole = 1, + /obj/item/natural/fibers = 2) + +/datum/crafting_recipe/roguetown/leather/papakha/four + reqs = list(/obj/item/natural/fur/rous = 1, + /obj/item/natural/fibers = 2) /obj/item/clothing/head/roguetown/papakha/crafted sellprice = 10 diff --git a/code/modules/roguetown/roguecrafting/sewing.dm b/code/modules/roguetown/roguecrafting/sewing.dm index 66b1cd66e5..ce3ff12da1 100644 --- a/code/modules/roguetown/roguecrafting/sewing.dm +++ b/code/modules/roguetown/roguecrafting/sewing.dm @@ -217,9 +217,24 @@ /obj/item/natural/fibers = 1) craftdiff = 3 +// could utilize the different types of fur better but will do for now /datum/crafting_recipe/roguetown/sewing/lordcloak name = "lordly cloak" result = list(/obj/item/clothing/cloak/lordcloak) - reqs = list(/obj/item/natural/fur = 2, + reqs = list(/obj/item/natural/fur/gote = 2, /obj/item/natural/hide = 4) - craftdiff = 5 \ No newline at end of file + craftdiff = 5 + +/datum/crafting_recipe/roguetown/sewing/lordcloak/two + reqs = list(/obj/item/natural/fur/volf = 2, + /obj/item/natural/hide = 4) + +/datum/crafting_recipe/roguetown/sewing/lordcloak/three + reqs = list(/obj/item/natural/fur/mole = 2, + /obj/item/natural/hide = 4) + +/datum/crafting_recipe/roguetown/sewing/lordcloak/four + reqs = list(/obj/item/natural/fur/rous = 2, + /obj/item/natural/hide = 4) + + diff --git a/code/modules/roguetown/roguecrafting/weaving.dm b/code/modules/roguetown/roguecrafting/weaving.dm index d920ea1212..504b104b4e 100644 --- a/code/modules/roguetown/roguecrafting/weaving.dm +++ b/code/modules/roguetown/roguecrafting/weaving.dm @@ -138,10 +138,25 @@ result = list (/obj/item/clothing/suit/roguetown/armor/silkcoat) reqs = list(/obj/item/natural/cloth = 1, /obj/item/natural/silk = 3, - /obj/item/natural/fur = 2) + /obj/item/natural/fur/gote = 2) craftdiff = 5 sellprice = 60 +/datum/crafting_recipe/roguetown/weaving/silkcoat/two + reqs = list(/obj/item/natural/cloth = 1, + /obj/item/natural/silk = 3, + /obj/item/natural/fur/volf = 2) + +/datum/crafting_recipe/roguetown/weaving/silkcoat/three + reqs = list(/obj/item/natural/cloth = 1, + /obj/item/natural/silk = 3, + /obj/item/natural/fur/mole = 2) + +/datum/crafting_recipe/roguetown/weaving/silkcoat/four + reqs = list(/obj/item/natural/cloth = 1, + /obj/item/natural/silk = 3, + /obj/item/natural/fur/rous = 2) + /datum/crafting_recipe/roguetown/weaving/armordress name = "padded dress" result = /obj/item/clothing/suit/roguetown/armor/armordress From 6f0c580c29d25a5bdcccbaa838d25ff3b76d901a Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Sun, 29 Sep 2024 11:13:33 +0200 Subject: [PATCH 09/12] subtype --- code/__DEFINES/roguetown.dm | 19 +- code/datums/components/crafting/recipes.dm | 2 +- .../roguetown/roguecrafting/leather.dm | 218 +++++++----------- .../modules/roguetown/roguecrafting/sewing.dm | 114 ++++----- 4 files changed, 145 insertions(+), 208 deletions(-) diff --git a/code/__DEFINES/roguetown.dm b/code/__DEFINES/roguetown.dm index f2f05774a6..4f3e707d14 100644 --- a/code/__DEFINES/roguetown.dm +++ b/code/__DEFINES/roguetown.dm @@ -141,14 +141,22 @@ GLOBAL_LIST_EMPTY(job_respawn_delays) #define M_WOOD 2 // one small log. #define M_CLOTH 2 // one cloth piece #define M_GRAIN 1 // one threshed wheat grain +#define M_FUR M_CLOTH * 2 #define M_SILK M_CLOTH * 2 // one silk thread -#define M_SALT 4 // one salt, or raw ore, or fur, or coal -#define M_LEATHER M_CLOTH * 4 +#define M_SALT 4 // one salt, or raw ore, or coal +#define M_LEATHER M_CLOTH * 2 // one hide #define M_IRON 12 // one iron bar Twelve is a good number for it can be halved, cut in three and four without fractions. Multiples of 6 #define M_STEEL M_IRON+W_MODERATE // one steel bar #define M_SILVER M_IRON*3 // one silver bar #define M_GOLD M_IRON*5 // one gold bar +// Skill costs - a rarity value add, items requiring a high skill to produce are rarer and has more intrinsic value. So craftsmen can make a profit. +#define SKILL_1 2 +#define SKILL_2 4 +#define SKILL_3 6 +#define SKILL_4 8 +#define SKILL_5 10 + // Work costs - valued VERY low compared to raw materials, this is a problem but at least its systemic and visible now and can be adjusted. Very rough, time to gather stuff, refine it etc etc as well as crafting time itself. #define W_MINOR 2 // Less than 10 seconds of work #define W_MODERATE W_MINOR * 3 // Less than 1 minute of work, high skill required @@ -181,11 +189,16 @@ GLOBAL_LIST_EMPTY(job_respawn_delays) #define VALUE_GOLD_ITEM M_GOLD+W_MODERATE #define VALUE_GOLD_RARE_ITEM VALUE_GOLD_ITEM+BONUS_VALUE_MODEST +#define VALUE_SMALL_LEATHER M_LEATHER+W_MINOR +#define VALUE_MEDIUM_LEATHER M_LEATHER*2+W_MINOR +#define VALUE_BIG_LEATHER M_LEATHER*3+W_MINOR +#define VALUE_SMALL_FUR M_FUR+M_MISC*2+W_MINOR -#define VALUE_PADDED_DRESS M_SILK*4+M_MISC*2+M_SALT+W_MODEST +#define VALUE_PADDED_DRESS M_SILK*4+M_MISC*2+M_FUR+W_MODEST #define VALUE_LIGHT_GAMBESSON M_CLOTH*2+M_MISC+W_MINOR #define VALUE_GAMBESSON M_CLOTH*4+M_MISC+W_MINOR #define VALUE_HEAVY_GAMBESSON M_CLOTH*6+M_MISC*4+W_MODERATE +#define VALUE_FUR_ARMOR M_LEATHER*2+M_FUR+W_MINOR #define VALUE_LEATHER_ARMOR M_LEATHER*2+W_MINOR #define VALUE_LEATHER_ARMOR_FUR VALUM_LEATHER_ARMOR+M_SALT #define VALUE_LEATHER_ARMOR_STUD VALUE_STEEL_SMALL_ITEM+M_LEATHER diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 136f50dfc6..9fdf8658aa 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -17,7 +17,7 @@ var/verbage = "craft" var/verbage_tp = "crafts" // Third person of verbage var var/craftsound = 'sound/foley/bandage.ogg' - var/subtype_reqs = FALSE + var/subtype_reqs = FALSE // If FALSE this does not allow Subtypes of the ingridients. Set it to TRUE to allow crafting with say, fur/gote and fur/volf interchangeably. Has drawbacks & advantages. var/structurecraft = null var/buildsame = FALSE //allows palisades to be built on top of each other just not the same dir var/wallcraft = FALSE diff --git a/code/modules/roguetown/roguecrafting/leather.dm b/code/modules/roguetown/roguecrafting/leather.dm index 49ee52175e..f04c8aa574 100644 --- a/code/modules/roguetown/roguecrafting/leather.dm +++ b/code/modules/roguetown/roguecrafting/leather.dm @@ -1,9 +1,15 @@ +// LEATHER AND FUR CRAFTING RECIPES /datum/crafting_recipe/roguetown/leather tools = list(/obj/item/needle) structurecraft = /obj/structure/fluff/dryingrack skillcraft = /datum/skill/craft/tanning craftdiff = 0 + subtype_reqs = TRUE // so you can use any subtype of fur + reqs = list(/obj/item/natural/hide = 1) + + +/*.............. recipes requiring no skill..............*/ /datum/crafting_recipe/roguetown/leather/pouch name = "leather pouch" @@ -13,88 +19,32 @@ /obj/item/natural/fibers = 1) sellprice = 6 -/datum/crafting_recipe/roguetown/leather/satchel - name = "leather satchel" - result = /obj/item/storage/backpack/rogue/satchel - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fibers = 1) - sellprice = 15 - craftdiff = 1 - -/datum/crafting_recipe/roguetown/leather/backpack - name = "leather backpack" - result = /obj/item/storage/backpack/rogue/backpack - reqs = list(/obj/item/natural/hide = 3, - /obj/item/natural/fibers = 2) - sellprice = 45 - craftdiff = 2 - -/datum/crafting_recipe/roguetown/leather/waterskin - name = "waterskin" - result = /obj/item/reagent_containers/glass/bottle/waterskin - reqs = list(/obj/item/natural/hide = 1, - /obj/item/natural/fibers = 2) - sellprice = 10 - craftdiff = 1 - /datum/crafting_recipe/roguetown/leather/gloves name = "leather gloves (x2)" result = list(/obj/item/clothing/gloves/roguetown/leather, /obj/item/clothing/gloves/roguetown/leather) - reqs = list(/obj/item/natural/hide = 1) - sellprice = 10 - -/datum/crafting_recipe/roguetown/leather/heavygloves - name = "heavy leather gloves" - result = /obj/item/clothing/gloves/roguetown/angle - reqs = list(/obj/item/natural/hide = 1, - /obj/item/natural/fur/gote = 1) - sellprice = 20 - craftdiff = 1 - -/datum/crafting_recipe/roguetown/leather/heavygloves/two - reqs = list(/obj/item/natural/hide = 1, - /obj/item/natural/fur/volf = 1) - -/datum/crafting_recipe/roguetown/leather/heavygloves/three - reqs = list(/obj/item/natural/hide = 1, - /obj/item/natural/fur/mole = 1) - -/datum/crafting_recipe/roguetown/leather/heavygloves/four - reqs = list(/obj/item/natural/hide = 1, - /obj/item/natural/fur/rous = 1) /datum/crafting_recipe/roguetown/leather/bracers name = "leather bracers (x2)" result = list(/obj/item/clothing/wrists/roguetown/bracers/leather, /obj/item/clothing/wrists/roguetown/bracers/leather) - reqs = list(/obj/item/natural/hide = 1) - sellprice = 10 /datum/crafting_recipe/roguetown/leather/pants name = "leather pants" result = list(/obj/item/clothing/under/roguetown/trou/leather) - reqs = list(/obj/item/natural/hide = 1) - sellprice = 10 /datum/crafting_recipe/roguetown/leather/shoes name = "leather shoes (x2)" result = list(/obj/item/clothing/shoes/roguetown/simpleshoes, /obj/item/clothing/shoes/roguetown/simpleshoes,) - reqs = list(/obj/item/natural/hide = 1) - sellprice = 10 /datum/crafting_recipe/roguetown/leather/boots name = "leather boots" result = /obj/item/clothing/shoes/roguetown/boots/leather - reqs = list(/obj/item/natural/hide = 1) - sellprice = 27 /datum/crafting_recipe/roguetown/leather/sandals name = "sandals" result = /obj/item/clothing/shoes/roguetown/sandals - reqs = list(/obj/item/natural/hide = 1) - sellprice = 10 /datum/crafting_recipe/roguetown/leather/gladiator name = "gladiator sandals" @@ -102,105 +52,83 @@ reqs = list(/obj/item/natural/hide = 2) sellprice = 17 -/datum/crafting_recipe/roguetown/leather/helmet - name = "leather helmet" - result = /obj/item/clothing/head/roguetown/helmet/leather - reqs = list(/obj/item/natural/hide = 2) - sellprice = 27 - craftdiff = 1 - /datum/crafting_recipe/roguetown/leather/hood name = "leather hood" result = /obj/item/clothing/head/roguetown/roguehood - reqs = list(/obj/item/natural/hide = 1) - sellprice = 26 - -/datum/crafting_recipe/roguetown/leather/armor - name = "leather armor" - result = /obj/item/clothing/suit/roguetown/armor/leather - reqs = list(/obj/item/natural/hide = 2) - sellprice = 26 - craftdiff = 1 - -/datum/crafting_recipe/roguetown/leather/hidearmor - name = "hide armor" - result = /obj/item/clothing/suit/roguetown/armor/leather/hide - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/gote = 1) - craftdiff = 2 - sellprice = 35 - -/datum/crafting_recipe/roguetown/leather/hidearmor/two - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/volf = 1) - -/datum/crafting_recipe/roguetown/leather/hidearmor/three - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/mole = 1) - -/datum/crafting_recipe/roguetown/leather/hidearmor/four - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/rous = 1) /datum/crafting_recipe/roguetown/leather/cloak name = "leather cloak" result = /obj/item/clothing/cloak/raincloak/brown reqs = list(/obj/item/natural/hide = 2) -/obj/item/clothing/cloak/raincloak/brown - sellprice = 30 - /datum/crafting_recipe/roguetown/leather/cloakfur name = "fur cloak" - result = /obj/item/clothing/cloak/raincloak/furcloak/crafted - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/gote = 1) - -/datum/crafting_recipe/roguetown/leather/cloakfur/two - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/volf = 1) - -/datum/crafting_recipe/roguetown/leather/cloakfur/three - reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/mole = 1) - -/datum/crafting_recipe/roguetown/leather/cloakfur/four + result = /obj/item/clothing/cloak/raincloak/furcloak reqs = list(/obj/item/natural/hide = 2, - /obj/item/natural/fur/rous = 1) + /obj/item/natural/fur = 1) -/obj/item/clothing/cloak/raincloak/furcloak/crafted - sellprice = 35 +/datum/crafting_recipe/roguetown/leather/quiver + name = "quiver" + result = /obj/item/quiver + reqs = list(/obj/item/natural/hide = 2, /obj/item/natural/fibers = 2) -/datum/crafting_recipe/roguetown/leather/papakha - name = "papakha hat" - result = /obj/item/clothing/head/roguetown/papakha/crafted - reqs = list(/obj/item/natural/fur/gote = 1, - /obj/item/natural/fibers = 2) +/datum/crafting_recipe/roguetown/leather/tribal_cloak + name = "tribal pelt" + result = /obj/item/clothing/cloak/tribal -/datum/crafting_recipe/roguetown/leather/papakha/two - reqs = list(/obj/item/natural/fur/volf = 1, - /obj/item/natural/fibers = 2) +/datum/crafting_recipe/roguetown/leather/tribal_shoes + name = "tribal shoes" + result = list(/obj/item/clothing/shoes/roguetown/tribal) -/datum/crafting_recipe/roguetown/leather/papakha/three - reqs = list(/obj/item/natural/fur/mole = 1, - /obj/item/natural/fibers = 2) -/datum/crafting_recipe/roguetown/leather/papakha/four - reqs = list(/obj/item/natural/fur/rous = 1, - /obj/item/natural/fibers = 2) -/obj/item/clothing/head/roguetown/papakha/crafted - sellprice = 10 +/*.............. recipes requiring skill 1 ..............*/ /datum/crafting_recipe/roguetown/leather/saddle name = "saddle" result = /obj/item/natural/saddle reqs = list(/obj/item/natural/hide = 2) + craftdiff = 1 -/datum/crafting_recipe/roguetown/leather/quiver - name = "quiver" - result = /obj/item/quiver - reqs = list(/obj/item/natural/hide = 2, /obj/item/natural/fibers = 2) +/datum/crafting_recipe/roguetown/leather/satchel + name = "leather satchel" + result = /obj/item/storage/backpack/rogue/satchel + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fibers = 1) + craftdiff = 1 + +/datum/crafting_recipe/roguetown/leather/waterskin + name = "waterskin" + result = /obj/item/reagent_containers/glass/bottle/waterskin + reqs = list(/obj/item/natural/hide = 1, + /obj/item/natural/fibers = 2) + craftdiff = 1 + +/datum/crafting_recipe/roguetown/leather/heavygloves + name = "heavy leather gloves" + result = /obj/item/clothing/gloves/roguetown/angle + reqs = list(/obj/item/natural/hide = 1, + /obj/item/natural/fur/gote = 1) + craftdiff = 1 + +/datum/crafting_recipe/roguetown/leather/helmet + name = "leather helmet" + result = /obj/item/clothing/head/roguetown/helmet/leather + reqs = list(/obj/item/natural/hide = 2) + craftdiff = 1 + +/datum/crafting_recipe/roguetown/leather/armor + name = "leather armor" + result = /obj/item/clothing/suit/roguetown/armor/leather + reqs = list(/obj/item/natural/hide = 2) + craftdiff = 1 + +/datum/crafting_recipe/roguetown/leather/papakha + name = "papakha hat" + result = /obj/item/clothing/head/roguetown/papakha + reqs = list(/obj/item/natural/fur = 1, + /obj/item/natural/fibers = 2) + craftdiff = 1 /datum/crafting_recipe/roguetown/leather/whip name = "leather whip" @@ -208,21 +136,29 @@ reqs = list(/obj/item/natural/hide = 2) craftdiff = 1 + +/*.............. recipes requiring skill 2 ..............*/ + +/datum/crafting_recipe/roguetown/leather/backpack + name = "leather backpack" + result = /obj/item/storage/backpack/rogue/backpack + reqs = list(/obj/item/natural/hide = 3, + /obj/item/natural/fibers = 2) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/leather/hidearmor + name = "hide armor" + result = /obj/item/clothing/suit/roguetown/armor/leather/hide + reqs = list(/obj/item/natural/hide = 2, + /obj/item/natural/fur = 1) + craftdiff = 2 + /datum/crafting_recipe/roguetown/leather/coif name = "leather coif" result = /obj/item/clothing/neck/roguetown/coif reqs = list(/obj/item/natural/hide = 1) craftdiff = 2 -/datum/crafting_recipe/roguetown/leather/tribal_cloak - name = "tribal pelt" - result = /obj/item/clothing/cloak/tribal - reqs = list(/obj/item/natural/hide = 1) - craftdiff = 0 -/datum/crafting_recipe/roguetown/leather/tribal_shoes - name = "tribal shoes x2" - result = list(/obj/item/clothing/shoes/roguetown/tribal, /obj/item/clothing/shoes/roguetown/tribal) - reqs = list(/obj/item/natural/hide = 1) - craftdiff = 0 + diff --git a/code/modules/roguetown/roguecrafting/sewing.dm b/code/modules/roguetown/roguecrafting/sewing.dm index ce3ff12da1..3978365d41 100644 --- a/code/modules/roguetown/roguecrafting/sewing.dm +++ b/code/modules/roguetown/roguecrafting/sewing.dm @@ -1,55 +1,65 @@ /datum/crafting_recipe/roguetown/sewing - tools = list(/obj/item/needle) - skillcraft = /datum/skill/misc/sewing + tools = list(/obj/item/needle) + skillcraft = /datum/skill/misc/sewing + subtype_reqs = TRUE // so you can use any subtype of fur + craftdiff = 0 - /* craftdiff of 0 */ +/*.............. recipes requiring no skill..............*/ /datum/crafting_recipe/roguetown/sewing/rags name = "rags" result = list(/obj/item/clothing/suit/roguetown/shirt/rags) reqs = list(/obj/item/natural/cloth = 2) - craftdiff = 0 /datum/crafting_recipe/roguetown/sewing/loincloth name = "loincloth" result = list(/obj/item/clothing/under/roguetown/loincloth) reqs = list(/obj/item/natural/cloth = 1) - craftdiff = 0 /datum/crafting_recipe/roguetown/sewing/halfcloak name = "cloth half cloak" result = list(/obj/item/clothing/cloak/half) reqs = list(/obj/item/natural/cloth = 1, /obj/item/natural/fibers = 1) - craftdiff = 0 /datum/crafting_recipe/roguetown/sewing/clothgloves name = "cloth gloves" result = list(/obj/item/clothing/gloves/roguetown/fingerless) reqs = list(/obj/item/natural/cloth = 1, /obj/item/natural/fibers = 1) - craftdiff = 0 /datum/crafting_recipe/roguetown/sewing/clothshirt name = "cloth shirt" result = list(/obj/item/clothing/suit/roguetown/shirt/undershirt) reqs = list(/obj/item/natural/cloth = 2, /obj/item/natural/fibers = 1) - craftdiff = 0 /datum/crafting_recipe/roguetown/sewing/clothtrou name = "cloth trousers" result = list(/obj/item/clothing/under/roguetown/trou) reqs = list(/obj/item/natural/cloth = 2, /obj/item/natural/fibers = 1) - craftdiff = 0 /datum/crafting_recipe/roguetown/sewing/headband name = "headband" result = list(/obj/item/clothing/head/roguetown/headband) reqs = list(/obj/item/natural/cloth = 2, /obj/item/natural/fibers = 1) - craftdiff = 0 + +/datum/crafting_recipe/roguetown/sewing/knitcap + name = "knit cap" + result = list(/obj/item/clothing/head/roguetown/knitcap) + reqs = list(/obj/item/natural/cloth = 2, + /obj/item/natural/fibers = 1) + +/datum/crafting_recipe/roguetown/sewing/zigbox + name = "zigbox" + result = list(/obj/item/storage/fancy/cigarettes/zig/empty) + reqs = list(/obj/item/paper = 1, + /obj/item/natural/fibers = 1) + + +/*.............. recipes requiring skill 1 ..............*/ /datum/crafting_recipe/roguetown/sewing/Reyepatch name = "right eye patch" @@ -65,22 +75,6 @@ /obj/item/natural/fibers = 1) craftdiff = 1 -/datum/crafting_recipe/roguetown/sewing/knitcap - name = "knit cap" - result = list(/obj/item/clothing/head/roguetown/knitcap) - reqs = list(/obj/item/natural/cloth = 2, - /obj/item/natural/fibers = 1) - craftdiff = 0 - -/datum/crafting_recipe/roguetown/sewing/zigbox - name = "zigbox" - result = list(/obj/item/storage/fancy/cigarettes/zig/empty) - reqs = list(/obj/item/paper = 1, - /obj/item/natural/fibers = 1) - craftdiff = 0 - -/* craftdiff of 1 */ - /datum/crafting_recipe/roguetown/sewing/strawhat name = "straw hat" result = list(/obj/item/clothing/head/roguetown/strawhat) @@ -107,7 +101,15 @@ /obj/item/natural/fibers = 1) craftdiff = 1 -/* craftdiff of 2 */ +/datum/crafting_recipe/roguetown/sewing/sleepingbag + name = "sleepcloth" + result = list(/obj/item/sleepingbag) + reqs = list(/obj/item/natural/cloth = 2, + /obj/item/natural/fibers = 1) + craftdiff = 1 + + +/*.............. recipes requiring skill 2 ..............*/ /datum/crafting_recipe/roguetown/sewing/gambeson name = "gambeson" @@ -131,13 +133,6 @@ /obj/item/natural/fibers = 1) craftdiff = 2 -/datum/crafting_recipe/roguetown/sewing/sleepingbag - name = "sleepcloth" - result = list(/obj/item/sleepingbag) - reqs = list(/obj/item/natural/cloth = 2, - /obj/item/natural/fibers = 1) - craftdiff = 1 - /datum/crafting_recipe/roguetown/sewing/bedsheet name = "bedsheet" result = list(/obj/item/bedsheet/rogue/cloth) @@ -152,7 +147,8 @@ /obj/item/natural/fibers = 1) craftdiff = 2 -/* craftdiff of 3+ */ + +/*.............. recipes requiring skill 3 ..............*/ /datum/crafting_recipe/roguetown/sewing/robe name = "robes" @@ -161,6 +157,23 @@ /obj/item/natural/fibers = 1) craftdiff = 3 +/datum/crafting_recipe/roguetown/sewing/hgambeson + name = "padded gambeson" + result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/heavy) + reqs = list(/obj/item/natural/cloth = 6, + /obj/item/natural/fibers = 4) + craftdiff = 3 + +/datum/crafting_recipe/roguetown/sewing/cape + name = "cape" + result = list(/obj/item/clothing/cloak/cape) + reqs = list(/obj/item/natural/cloth = 2, + /obj/item/natural/fibers = 1) + craftdiff = 3 + + +/* .............. recipes requiring skill 4 ..............*/ + /datum/crafting_recipe/roguetown/sewing/fancyhat name = "fancy hat" result = list(/obj/item/clothing/head/roguetown/fancyhat) @@ -203,38 +216,13 @@ /obj/item/natural/fibers = 1) craftdiff = 4 -/datum/crafting_recipe/roguetown/sewing/hgambeson - name = "padded gambeson" - result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/heavy) - reqs = list(/obj/item/natural/cloth = 6, - /obj/item/natural/fibers = 4) - craftdiff = 3 -/datum/crafting_recipe/roguetown/sewing/cape - name = "cape" - result = list(/obj/item/clothing/cloak/cape) - reqs = list(/obj/item/natural/cloth = 2, - /obj/item/natural/fibers = 1) - craftdiff = 3 +/*.............. recipes requiring skill 5 ..............*/ -// could utilize the different types of fur better but will do for now /datum/crafting_recipe/roguetown/sewing/lordcloak name = "lordly cloak" result = list(/obj/item/clothing/cloak/lordcloak) - reqs = list(/obj/item/natural/fur/gote = 2, - /obj/item/natural/hide = 4) - craftdiff = 5 - -/datum/crafting_recipe/roguetown/sewing/lordcloak/two - reqs = list(/obj/item/natural/fur/volf = 2, - /obj/item/natural/hide = 4) - -/datum/crafting_recipe/roguetown/sewing/lordcloak/three - reqs = list(/obj/item/natural/fur/mole = 2, - /obj/item/natural/hide = 4) - -/datum/crafting_recipe/roguetown/sewing/lordcloak/four - reqs = list(/obj/item/natural/fur/rous = 2, + reqs = list(/obj/item/natural/fur = 2, /obj/item/natural/hide = 4) - + craftdiff = 4 From 0ccefaff410a8005a278476840e6a0c93377a8de Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Sun, 29 Sep 2024 23:55:04 +0200 Subject: [PATCH 10/12] armingcapcraft --- code/modules/roguetown/roguecrafting/sewing.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/roguetown/roguecrafting/sewing.dm b/code/modules/roguetown/roguecrafting/sewing.dm index aa34560ea9..b7f46dcce8 100644 --- a/code/modules/roguetown/roguecrafting/sewing.dm +++ b/code/modules/roguetown/roguecrafting/sewing.dm @@ -108,6 +108,13 @@ /obj/item/natural/fibers = 1) craftdiff = 1 +/datum/crafting_recipe/roguetown/sewing/armingcap + name = "arming cap" + result = list(/obj/item/clothing/head/roguetown/armingcap) + reqs = list(/obj/item/natural/cloth = 2, + /obj/item/natural/fibers = 1) + craftdiff = 1 + /*.............. recipes requiring skill 2 ..............*/ From f66359f55c9e7eb4054396cebc76826ebb7be8da Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Mon, 30 Sep 2024 22:36:47 +0200 Subject: [PATCH 11/12] padgambtoloom --- .../modules/roguetown/roguecrafting/sewing.dm | 49 ++++++++----------- .../roguetown/roguecrafting/weaving.dm | 7 +++ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/code/modules/roguetown/roguecrafting/sewing.dm b/code/modules/roguetown/roguecrafting/sewing.dm index b7f46dcce8..06c61fd32f 100644 --- a/code/modules/roguetown/roguecrafting/sewing.dm +++ b/code/modules/roguetown/roguecrafting/sewing.dm @@ -154,6 +154,27 @@ /obj/item/natural/fibers = 1) craftdiff = 2 +/datum/crafting_recipe/roguetown/sewing/Bladress + name = "black dress" + result = list(/obj/item/clothing/suit/roguetown/shirt/dress/gen/black) + reqs = list(/obj/item/natural/cloth = 3, + /obj/item/natural/fibers = 1) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/sewing/Bludress + name = "blue dress" + result = list(/obj/item/clothing/suit/roguetown/shirt/dress/gen/blue) + reqs = list(/obj/item/natural/cloth = 3, + /obj/item/natural/fibers = 1) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/sewing/Purdress + name = "purple dress" + result = list(/obj/item/clothing/suit/roguetown/shirt/dress/gen/purple) + reqs = list(/obj/item/natural/cloth = 3, + /obj/item/natural/fibers = 1) + craftdiff = 2 + /*.............. recipes requiring skill 3 ..............*/ @@ -164,13 +185,6 @@ /obj/item/natural/fibers = 1) craftdiff = 3 -/datum/crafting_recipe/roguetown/sewing/hgambeson - name = "padded gambeson" - result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/heavy) - reqs = list(/obj/item/natural/cloth = 6, - /obj/item/natural/fibers = 4) - craftdiff = 3 - /datum/crafting_recipe/roguetown/sewing/cape name = "cape" result = list(/obj/item/clothing/cloak/cape) @@ -188,27 +202,6 @@ /obj/item/natural/fibers = 1) craftdiff = 4 -/datum/crafting_recipe/roguetown/sewing/Bladress - name = "black dress" - result = list(/obj/item/clothing/suit/roguetown/shirt/dress/gen/black) - reqs = list(/obj/item/natural/cloth = 3, - /obj/item/natural/fibers = 1) - craftdiff = 2 - -/datum/crafting_recipe/roguetown/sewing/Bludress - name = "blue dress" - result = list(/obj/item/clothing/suit/roguetown/shirt/dress/gen/blue) - reqs = list(/obj/item/natural/cloth = 3, - /obj/item/natural/fibers = 1) - craftdiff = 2 - -/datum/crafting_recipe/roguetown/sewing/Purdress - name = "purple dress" - result = list(/obj/item/clothing/suit/roguetown/shirt/dress/gen/purple) - reqs = list(/obj/item/natural/cloth = 3, - /obj/item/natural/fibers = 1) - craftdiff = 2 - /datum/crafting_recipe/roguetown/sewing/fancyhat name = "fancy hat" result = list(/obj/item/clothing/head/roguetown/fancyhat) diff --git a/code/modules/roguetown/roguecrafting/weaving.dm b/code/modules/roguetown/roguecrafting/weaving.dm index 504b104b4e..9d01ae71c5 100644 --- a/code/modules/roguetown/roguecrafting/weaving.dm +++ b/code/modules/roguetown/roguecrafting/weaving.dm @@ -157,6 +157,13 @@ /obj/item/natural/silk = 3, /obj/item/natural/fur/rous = 2) +/datum/crafting_recipe/roguetown/weaving/paddedgambeson + name = "padded gambeson" + result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/heavy) + reqs = list(/obj/item/natural/cloth = 6, + /obj/item/natural/fibers = 4) + craftdiff = 4 + /datum/crafting_recipe/roguetown/weaving/armordress name = "padded dress" result = /obj/item/clothing/suit/roguetown/armor/armordress From 68f2bfaee1c93a0446ed52baf400704848c9e108 Mon Sep 17 00:00:00 2001 From: NPC1314 Date: Tue, 1 Oct 2024 08:57:01 +0200 Subject: [PATCH 12/12] speedysaiga --- code/modules/mob/living/simple_animal/rogue/game/saiga.dm | 1 + code/modules/mob/living/simple_animal/rogue/rogueanimals.dm | 6 ++++-- modular/Creechers/code/trufflepig.dm | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm index dbc4caa878..c0b7dd3293 100644 --- a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm +++ b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm @@ -46,6 +46,7 @@ gender = FEMALE footstep_type = FOOTSTEP_MOB_SHOE emote_see = list("looks around.", "chews some leaves.") + move_to_delay = 7 botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/reagent_containers/food/snacks/fat = 1, diff --git a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm index fef5623b35..e383cecaab 100644 --- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm +++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm @@ -30,7 +30,7 @@ speak_chance = 1 turns_per_move = 5 - move_to_delay = 8 + move_to_delay = 8 // basically speed when player controlled. Lower is faster, a lot faster. see_in_dark = 6 robust_searching = TRUE @@ -43,7 +43,6 @@ food_type = list(/obj/item/reagent_containers/food/snacks/produce) pooptype = null - move_to_delay = 5 d_intent = INTENT_DODGE minbodytemp = 180 lose_patience_timeout = 150 @@ -75,6 +74,9 @@ var/eat_forever + + + /mob/living/simple_animal/hostile/retaliate/rogue/Move() //If you cant act and dont have a player stop moving. if(!can_act && !client) diff --git a/modular/Creechers/code/trufflepig.dm b/modular/Creechers/code/trufflepig.dm index c7a240cb26..562fbb75f1 100644 --- a/modular/Creechers/code/trufflepig.dm +++ b/modular/Creechers/code/trufflepig.dm @@ -92,7 +92,6 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - move_to_delay = 7 animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/trufflepig botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/fatty = 3, /obj/item/reagent_containers/food/snacks/fat = 1,