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"