diff --git a/code/__DEFINES/roguetown.dm b/code/__DEFINES/roguetown.dm index 1364dd285..cf00881a4 100644 --- a/code/__DEFINES/roguetown.dm +++ b/code/__DEFINES/roguetown.dm @@ -142,14 +142,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 @@ -182,11 +190,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 136f50dfc..9fdf8658a 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/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index 0672cf821..e84034292 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 4d4ed80ac..6bcb19575 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 @@ -12,21 +12,33 @@ 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. 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 = "Fur from one of Dendor's creachers." + desc = "pelt from one of Dendor's creachers." + dropshrink = 0.90 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 31401ac6c..666434c6d 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/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm index 870ae08a5..15ff14e1b 100644 --- a/code/modules/clothing/rogueclothes/armor.dm +++ b/code/modules/clothing/rogueclothes/armor.dm @@ -482,7 +482,7 @@ name = "leather vest" icon_state = "leathervest" item_state = "leathervest" - color = null + 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/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 1c00d6105..bfbcd32fa 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 3731fbf21..82b386169 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/bigrat.dm @@ -5,42 +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 + + 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, + /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) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1, /obj/item/natural/fur = 1) - faction = list("rats") - mob_biotypes = MOB_ORGANIC|MOB_BEAST 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 9baac01f3..5f4abd1e1 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 e50924be7..b57830542 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/honeyspider.dm @@ -5,39 +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 + + 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/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/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) - 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) - faction = list("bugs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - attack_sound = 'sound/combat/wooshes/punch/punchwoosh (2).ogg' - health = 120 - maxHealth = 120 + 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 @@ -47,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 fca341bf6..6130f2346 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/mole.dm @@ -5,47 +5,58 @@ 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, + /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) - faction = list("orcs") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - health = 200 - maxHealth = 200 + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 3, + /obj/item/natural/hide = 2, + /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 @@ -57,7 +68,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/shade.dm b/code/modules/mob/living/simple_animal/rogue/creacher/shade.dm index bd7670e2c..b53caee94 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 15f598ed5..4d1e1ddd0 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 a588e1a05..b61f9bad2 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 65ea6097c..17f7bedd7 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/volf.dm @@ -5,45 +5,55 @@ 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) 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) - 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 4678c8050..1eeefc7f0 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/zizoid.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/zizoid.dm @@ -7,20 +7,25 @@ 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 + + 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/simple/stab, /datum/intent/unarmed/claw) - food_type = list(/obj/item/reagent_containers/food/snacks/rogue/meat, /obj/item/bodypart, /obj/item/organ) - footstep_type = FOOTSTEP_MOB_HEAVY - pooptype = null + 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 @@ -32,14 +37,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 9459e2f28..aba8042b3 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm @@ -2,41 +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/claw) + 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") - 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) + perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/fat = 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 = 8 + 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 46422b236..916a726e9 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/cow.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/cow.dm @@ -7,39 +7,76 @@ 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, + /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) - 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" @@ -59,30 +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 - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 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 "" @@ -145,33 +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) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 6, + + 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 = 7, + /obj/item/natural/hide = 3, /obj/item/alch/sinew = 2, /obj/item/alch/bone = 1) - 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 = 50 - environment_smash = ENVIRONMENT_SMASH_NONE + melee_damage_upper = 45 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 @@ -239,25 +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 - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - maxHealth = 20 - pass_flags = PASSTABLE | PASSMOB 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/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 75f5d603d..38077dfb8 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/goat.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/goat.dm @@ -61,42 +61,83 @@ 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, + /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) - 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 = 10 + melee_damage_lower = 8 melee_damage_upper = 12 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) @@ -109,36 +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 - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 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 "" @@ -187,40 +198,52 @@ 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, + /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) - 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 = 25 - melee_damage_upper = 50 - environment_smash = ENVIRONMENT_SMASH_NONE + melee_damage_lower = 14 + melee_damage_upper = 22 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 @@ -333,30 +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 - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - maxHealth = 20 - pass_flags = PASSTABLE | PASSMOB + 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/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 85d291441..dbc4caa87 100644 --- a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm +++ b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm @@ -39,28 +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) - 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 @@ -70,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 @@ -97,34 +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) - 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 "" @@ -173,43 +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 = 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) - faction = list("saiga") - mob_biotypes = MOB_ORGANIC|MOB_BEAST + /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() @@ -310,32 +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 - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 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 ea483e44d..fef5623b3 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,6 +63,8 @@ dodge_sound = 'sound/combat/dodge.ogg' dodge_prob = 0 search_objects = TRUE + 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. @@ -42,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. @@ -207,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) @@ -241,10 +269,6 @@ return ..() -/mob/living/simple_animal/hostile/retaliate/rogue/Destroy() - qdel(udder) - udder = null - ..() /mob/living/simple_animal/hostile/retaliate/rogue/Life() . = ..() @@ -281,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) @@ -295,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) @@ -339,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(15) + in_use = FALSE + diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 9a41bbd27..c50a1831b 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/perfect_butcher_results + /mob/living/simple_animal/Initialize() . = ..() GLOB.simple_animals[AIStatus] += src @@ -227,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) @@ -437,11 +440,17 @@ 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(guaranteed_butcher_results) - butcher += guaranteed_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 + else + butcher = butcher_results + else + 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 + var/rotstuff = FALSE var/datum/component/rot/simple/CR = GetComponent(/datum/component/rot/simple) if(CR) diff --git a/code/modules/roguetown/roguecrafting/leather.dm b/code/modules/roguetown/roguecrafting/leather.dm index 6feb9764b..f04c8aa57 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,75 +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 = 1) - sellprice = 20 - craftdiff = 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" @@ -89,67 +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 = 1) - craftdiff = 2 - sellprice = 35 /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 = 1) + result = /obj/item/clothing/cloak/raincloak/furcloak + reqs = list(/obj/item/natural/hide = 2, + /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 = 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/tribal_shoes + name = "tribal shoes" + result = list(/obj/item/clothing/shoes/roguetown/tribal) -/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" @@ -157,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 442f03a1a..aa34560ea 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,23 +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 ..............*/ /datum/crafting_recipe/roguetown/sewing/lordcloak name = "lordly cloak" result = list(/obj/item/clothing/cloak/lordcloak) reqs = list(/obj/item/natural/fur = 2, /obj/item/natural/hide = 4) - craftdiff = 5 \ No newline at end of file + craftdiff = 4 + diff --git a/code/modules/roguetown/roguecrafting/weaving.dm b/code/modules/roguetown/roguecrafting/weaving.dm index d920ea121..504b104b4 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 diff --git a/icons/roguetown/items/natural.dmi b/icons/roguetown/items/natural.dmi index ce761f699..6da32ac69 100644 Binary files a/icons/roguetown/items/natural.dmi and b/icons/roguetown/items/natural.dmi differ diff --git a/modular/Creechers/code/trufflepig.dm b/modular/Creechers/code/trufflepig.dm index c87e6d78f..c7a240cb2 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/Creechers/icons/piggie.dmi b/modular/Creechers/icons/piggie.dmi index 829e27b4f..d46107ea4 100644 Binary files a/modular/Creechers/icons/piggie.dmi and b/modular/Creechers/icons/piggie.dmi differ diff --git a/modular/Neu_Food/code/cooked/NeuFood_snacks.dm b/modular/Neu_Food/code/cooked/NeuFood_snacks.dm index 9e49752a0..950306541 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 e3da15ad9..a8fe449d4 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" @@ -55,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 95cfc0d73..3bf890663 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"