diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 8bc450a4e89..7dda2b1ac45 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -786,3 +786,11 @@ /obj/item/shovel/spade = 1) result = /obj/item/shovel/serrated category = CAT_PRIMAL + +/datum/crafting_recipe/lasso + name = "Bone Lasso" + reqs = list( + /obj/item/stack/sheet/bone = 1, + /obj/item/stack/sheet/sinew = 5) + result = /obj/item/key/lasso + category = CAT_PRIMAL diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 529492e3ed7..cfc5d4682d1 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -197,7 +197,7 @@ handle_vehicle_layer() handle_vehicle_offsets() else - to_chat(user, "You'll need the keys in one of your hands to [drive_verb] [AM].") + to_chat(user, "You'll need a special item in one of your hands to [drive_verb] [AM].") /datum/component/riding/proc/Unbuckle(atom/movable/M) addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 10ff8274e4f..245f734784e 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -160,6 +160,7 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \ new/datum/stack_recipe("leather jacket", /obj/item/clothing/suit/jacket/leather, 7), \ new/datum/stack_recipe("leather shoes", /obj/item/clothing/shoes/laceup, 2), \ new/datum/stack_recipe("leather overcoat", /obj/item/clothing/suit/jacket/leather/overcoat, 10), \ + new/datum/stack_recipe("saddle", /obj/item/saddle, 5), \ )) /obj/item/stack/sheet/leather/get_main_recipes() diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 618c33c9f87..3015efbe45a 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -288,7 +288,8 @@ /obj/item/organ/regenerative_core, /obj/item/wormhole_jaunter, /obj/item/storage/bag/plants, - /obj/item/stack/marker_beacon + /obj/item/stack/marker_beacon, + /obj/item/key/lasso )) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 52360540c29..65e802c7f48 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -169,6 +169,7 @@ D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) D.set_vehicle_dir_layer(EAST, OBJ_LAYER) D.set_vehicle_dir_layer(WEST, OBJ_LAYER) + D.drive_verb = "ride" /mob/living/simple_animal/cow/Life() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index 4cecdf37dee..c835d5cc011 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -32,6 +32,7 @@ move_force = MOVE_FORCE_VERY_STRONG move_resist = MOVE_FORCE_VERY_STRONG pull_force = MOVE_FORCE_VERY_STRONG + gender = MALE//lavaland elite goliath says that i'''' 't s female and i ''t s stronger because of sexual dimorphism, so normal goliaths should be male var/pre_attack = 0 var/pre_attack_icon = "Goliath_preattack" loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) @@ -49,9 +50,11 @@ return icon_state = pre_attack_icon -/mob/living/simple_animal/hostile/asteroid/goliath/revive(full_heal = FALSE, admin_revive = FALSE) +/mob/living/simple_animal/hostile/asteroid/goliath/revive(full_heal = FALSE, admin_revive = FALSE)//who the fuck anchors mobs if(..()) - anchored = TRUE + move_force = MOVE_FORCE_VERY_STRONG + move_resist = MOVE_FORCE_VERY_STRONG + pull_force = MOVE_FORCE_VERY_STRONG . = 1 /mob/living/simple_animal/hostile/asteroid/goliath/death(gibbed) @@ -99,6 +102,39 @@ loot = list() stat_attack = UNCONSCIOUS robust_searching = 1 + food_type = list(/obj/item/reagent_containers/food/snacks/customizable/salad/ashsalad, /obj/item/reagent_containers/food/snacks/customizable/soup/ashsoup, /obj/item/reagent_containers/food/snacks/grown/ash_flora)//use lavaland plants to feed the lavaland monster + tame_chance = 10 + bonus_tame_chance = 5 + var/saddled = FALSE + +/mob/living/simple_animal/hostile/asteroid/goliath/beast/tamed(whomst) + if(isliving(whomst)) + var/mob/living/fren = whomst + friends = fren + faction = fren.faction.Copy() + ..() + +/mob/living/simple_animal/hostile/asteroid/goliath/beast/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/saddle) && !saddled) + if(tame && do_after(user,55,target=src)) + user.visible_message("You manage to put [O] on [src], you can now ride [p_them()].") + qdel(O) + saddled = TRUE + can_buckle = TRUE + buckle_lying = FALSE + add_overlay("goliath_saddled") + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 8), TEXT_SOUTH = list(0, 8), TEXT_EAST = list(-2, 8), TEXT_WEST = list(2, 8))) + D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER) + D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) + D.set_vehicle_dir_layer(EAST, OBJ_LAYER) + D.set_vehicle_dir_layer(WEST, OBJ_LAYER) + D.keytype = /obj/item/key/lasso + D.drive_verb = "ride" + else + user.visible_message("[src] is rocking around! You can't put the saddle on!") + return + ..() /mob/living/simple_animal/hostile/asteroid/goliath/beast/random/Initialize() . = ..() @@ -202,3 +238,9 @@ icon_state = "Goliath_tentacle_retract" deltimer(timerid) timerid = QDEL_IN(src, 7) + +/obj/item/saddle + name = "saddle" + desc = "This saddle will solve all your problems with being killed by lava beasts!" + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "saddle" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 70319db4621..dc674ba56ff 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -184,12 +184,12 @@ return if (prob(tame_chance)) //note: lack of feedback message is deliberate, keep them guessing! tame = TRUE - tamed() + tamed(user) else tame_chance += bonus_tame_chance ///Extra effects to add when the mob is tamed, such as adding a riding component -/mob/living/simple_animal/proc/tamed() +/mob/living/simple_animal/proc/tamed(whomst) return /mob/living/simple_animal/examine(mob/user) diff --git a/code/modules/vehicles/lavaboat.dm b/code/modules/vehicles/lavaboat.dm index 89b0a5c7bc6..8015024753d 100644 --- a/code/modules/vehicles/lavaboat.dm +++ b/code/modules/vehicles/lavaboat.dm @@ -15,7 +15,7 @@ /obj/vehicle/ridden/lavaboat/Initialize() . = ..() var/datum/component/riding/D = LoadComponent(/datum/component/riding) - D.keytype = /obj/item/oar + D.keytype = list(/obj/item/oar) D.allowed_turf_typecache = typecacheof(allowed_turf) /obj/item/oar diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index 204a10bd17e..0847512f094 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -13,3 +13,14 @@ desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." icon_state = "keyjanitor" +/obj/item/key/lasso + name = "bone lasso" + desc = "Perfect for taming all kinds of supernatural beasts! (Warning: only perfect for taming one kind of supernatural beast.)" + force = 12 + icon_state = "lasso" + item_state = "chain" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + attack_verb = list("flogged", "whipped", "lashed", "disciplined") + hitsound = 'sound/weapons/whip.ogg' + slot_flags = ITEM_SLOT_BELT diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 79b0a9b76c9..5b495fd993a 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi index 38283d45e29..ff49753f22b 100644 Binary files a/icons/obj/vehicles.dmi and b/icons/obj/vehicles.dmi differ