Add Snails! (#26176)

* Add snails!

* Shitty inhands, bugs

* recoil icon

* me & mickael

* eggs and inhands

* garlic => shrooms
This commit is contained in:
ShiftyRail
2020-04-14 03:12:13 +02:00
committed by GitHub
parent 1285641135
commit ac315d6288
23 changed files with 280 additions and 6 deletions

View File

@@ -302,6 +302,12 @@
amount = 1 //Only the back left foot is considered lucky.
butcher_time = 10
/datum/butchering_product/snail_carapace
result = /obj/item/clothing/head/helmet/snail_helm
verb_name = "remove carapace"
verb_gerund = "removing the carapace from"
butcher_time = 10
#define TEETH_FEW /datum/butchering_product/teeth/few //4-8
#define TEETH_BUNCH /datum/butchering_product/teeth/bunch //8-16
@@ -327,6 +333,7 @@ var/global/list/animal_butchering_products = list(
/mob/living/simple_animal/hostile/deer/flesh = list(/datum/butchering_product/skin/deer, /datum/butchering_product/deer_head),
/mob/living/carbon/monkey = list(/datum/butchering_product/skin/monkey, TEETH_FEW),
/mob/living/simple_animal/rabbit = list(/datum/butchering_product/rabbit_ears, /datum/butchering_product/rabbit_foot),
/mob/living/simple_animal/snail = list(/datum/butchering_product/snail_carapace),
/mob/living/carbon/human = list(TEETH_HUMAN, /datum/butchering_product/skin/human),
/mob/living/carbon/human/unathi = list(TEETH_LOTS, /datum/butchering_product/skin/lizard/lots),

View File

@@ -2165,6 +2165,14 @@ var/list/all_supply_groups = list("Supplies","Clothing","Security","Hospitality"
containername = "cat crate"
group = "Hydroponics"
/datum/supply_packs/snails
name = "Snails"
contains = list()
cost = 25
containertype = /obj/structure/largecrate/snails
containername = "snail crate"
group = "Hydroponics"
/datum/supply_packs/weedcontrol
name = "Weed control equipment"
contains = list(/obj/item/weapon/scythe,

View File

@@ -116,3 +116,14 @@
if(iscrowbar(W))
new /mob/living/simple_animal/cat/Proc(loc)
..()
/obj/structure/largecrate/snails
icon_state = "lisacrate"
/obj/structure/largecrate/snails/attackby(obj/item/weapon/W, mob/user)
if(iscrowbar(W))
new /mob/living/simple_animal/snail(loc)
new /mob/living/simple_animal/snail(loc)
new /mob/living/simple_animal/snail(loc)
new /mob/living/simple_animal/snail(loc)
..()

View File

@@ -298,3 +298,13 @@
armor = list(melee = 10, bullet = 15, laser = 2,energy = 2, bomb = 2, bio = 2, rad = 0)
flags = FPRINT
siemens_coefficient = 1
/obj/item/clothing/head/helmet/snail_helm
name = "snail helmet"
desc = "You feel arrogant and important just by wearing it."
icon_state = "snail_helm"
item_state = "snail_helm"
armor = list(melee = 10, bullet = 5, laser = 2,energy = 2, bomb = 2, bio = 2, rad = 0)
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/hats.dmi', "right_hand" = 'icons/mob/in-hand/right/hats.dmi')
flags = FPRINT
siemens_coefficient = 1

View File

@@ -2775,3 +2775,25 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/peanut,
)
result = /obj/item/weapon/reagent_containers/food/snacks/peanutbutter
/datum/recipe/escargot
reagents = list (SODIUMCHLORIDE = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/meat/snail,
/obj/item/clothing/head/helmet/snail_helm,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
/obj/item/weapon/reagent_containers/food/snacks/peanutbutter,
)
result = /obj/item/weapon/reagent_containers/food/snacks/escargot
/datum/recipe/es_cargo
reagents = list (SODIUMCHLORIDE = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/meat/snail,
/obj/item/clothing/head/helmet/snail_helm,
/obj/item/weapon/reagent_containers/food/snacks/grown/garlic,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
/obj/item/stack/sheet/cardboard,
/obj/item/weapon/paper,
)
result = /obj/item/weapon/reagent_containers/food/snacks/es_cargo

View File

@@ -167,6 +167,14 @@
item_state = "frog"
slot_flags = SLOT_HEAD
//SNAIL
/obj/item/weapon/holder/animal/snail
name = "snail holder"
desc = "Eh, it's all gooey and sticky."
item_state = "snail"
slot_flags = SLOT_HEAD
//SALEM
/obj/item/weapon/holder/animal/salem

View File

@@ -28,7 +28,7 @@
idle_vision_range = 6
search_objects = 1
var/static/list/edibles = list(/mob/living/simple_animal/cockroach, /obj/item/weapon/reagent_containers/food/snacks/roach_eggs, /mob/living/simple_animal/bee) //Add bugs to this as they get added in
var/static/list/edibles = list(/mob/living/simple_animal/cockroach, /obj/item/weapon/reagent_containers/food/snacks/roach_eggs, /mob/living/simple_animal/bee, /mob/living/simple_animal/snail) //Add bugs to this as they get added in
/mob/living/simple_animal/hostile/lizard/UnarmedAttack(var/atom/A)
if(is_type_in_list(A, edibles))
@@ -94,3 +94,4 @@
icon_dead = "smallfrog_dead"
speak_emote = list("ribbits")
holder_type = /obj/item/weapon/holder/animal/frog

View File

@@ -0,0 +1,135 @@
//snail
/mob/living/simple_animal/snail
species_type = /mob/living/simple_animal/snail
name = "space snail"
desc = "Taking on the world at its own pace. Larger than its cousins down on Earth."
icon_state = "snail"
icon_living = "snail"
icon_dead = "snail_dead"
speak_emote = list("") // Silent
response_help = "pets"
response_disarm = "pokes"
response_harm = "stomps on"
maxHealth = 12
health = 12
holder_type = /obj/item/weapon/holder/animal/snail
size = SIZE_TINY
pass_flags = PASSTABLE | PASSGRILLE | PASSMACHINE
stop_automated_movement_when_pulled = 1
turns_per_move = 8 //8 life ticks / move
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/snail
var/in_shell = 0
var/being_romantic = 0
var/mob/living/simple_animal/snail/loving_partner = null
/mob/living/simple_animal/snail/Destroy()
if (loving_partner)
loving_partner.loving_partner = null
loving_partner = null
return ..()
/mob/living/simple_animal/snail/bite_act(mob/living/carbon/human/H)
if(size >= H.size)
return
playsound(H,'sound/items/eatfood.ogg', rand(10,50), 1)
H.visible_message("<span class='warning'>[H] tries to eat \the [src], but hurts \his teeth doing so! The idiot!</span>", "<span class='warning'>You break your teeth on \the [src]! Imbecile!</span>")
return
/mob/living/simple_animal/snail/Life()
if (timestopped)
return 0
if (in_shell)
in_shell--
return
if (!in_shell)
icon_state = initial(icon_state)
if (being_romantic)
being_romantic--
if (being_romantic == 0)
new /obj/item/weapon/reagent_containers/food/snacks/egg/snail(get_turf(src))
visible_message("<span class='notice'>\The [src] gently goes off its partner.</span>")
loving_partner.being_romantic = 0
loving_partner.loving_partner = null
loving_partner = null
return
return ..()
/mob/living/simple_animal/snail/Crossed(mob/living/O)
if (!in_shell)
recoil()
return ..()
/mob/living/simple_animal/snail/proc/recoil()
if (loving_partner)
loving_partner.being_romantic = 0
loving_partner.loving_partner = null
loving_partner.recoil()
being_romantic = 0
loving_partner = null
icon_state = "snail_recoil"
visible_message("<span class = 'notice'>\The [src] stops whatever it was doing and recoils into its shell.</span>")
in_shell = 5 // Shy for some cycles
/mob/living/simple_animal/snail/wander_move(turf/dest)
..()
for(var/mob/living/simple_animal/snail/partner in loc)
if (partner.being_romantic)
return // the other snail is busy
if (prob(80))
return
being_romantic = 15
loving_partner = partner
partner.being_romantic = 15
partner.loving_partner = src
visible_message("<span class='notice'>\The [src] begins to softly approach \the [partner]...</span>")
/mob/living/simple_animal/snail/examine(var/mob/user)
. = ..()
if (in_shell)
to_chat(user, "It's currently hiding in its shell.")
if (being_romantic)
to_chat(user, "It looks pretty busy.")
/mob/living/simple_animal/snail/attackby(var/obj/item/O, var/mob/user, var/no_delay = FALSE, var/originator = null)
if (!in_shell)
recoil()
return ..()
/mob/living/simple_animal/snail/kick_act(mob/living/carbon/human/M)
if (!in_shell)
recoil()
return ..()
/mob/living/simple_animal/snail/airflow_stun()
if (!in_shell)
recoil()
return ..()
/mob/living/simple_animal/snail/airflow_hit(atom/A)
if (!in_shell)
recoil()
return ..()
/mob/living/simple_animal/snail/adjustBruteLoss(var/damage)
if (in_shell)
return ..(damage/2)
return ..()
// -- Greasy snail. Lube up hallways as he go. Tougher than its regular counterpart
/mob/living/simple_animal/snail/greasy
maxHealth = 40
health = 40
/mob/living/simple_animal/snail/greasy/wander_move(turf/simulated/dest)
if (istype(dest) && prob(20))
dest.wet(800, TURF_WET_LUBE)
return ..()

View File

@@ -6241,3 +6241,56 @@ obj/item/weapon/reagent_containers/food/snacks/butterfingers_l
/obj/item/weapon/reagent_containers/food/snacks/breadslice/paibread/attackby(obj/item/I,mob/user,params)
return ..() //sorry no custom pai sandwiches
/obj/item/weapon/reagent_containers/food/snacks/escargot
icon_state = "escargot"
name = "cooked escargot"
desc = "A fine treat and an exquisite cuisine."
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/food.dmi', "right_hand" = 'icons/mob/in-hand/right/food.dmi')
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/escargot/New()
. = ..()
reagents.add_reagent(NUTRIMENT,10)
reagents.add_reagent(SODIUMCHLORIDE, 2)
reagents.add_reagent(HOLYWATER, 2)
/obj/item/weapon/reagent_containers/food/snacks/es_cargo
icon_state = "es_cargo_closed"
name = "es-cargo"
desc = "Je-ne-veux-pas-travailler !"
bitesize = 1
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/food.dmi', "right_hand" = 'icons/mob/in-hand/right/food.dmi')
var/open = FALSE
/obj/item/weapon/reagent_containers/food/snacks/es_cargo/New()
. = ..()
reagents.add_reagent(NUTRIMENT,10)
reagents.add_reagent(SODIUMCHLORIDE, 2)
reagents.add_reagent(HOLYWATER, 2)
/obj/item/weapon/reagent_containers/food/snacks/es_cargo/can_consume(mob/living/carbon/eater, mob/user)
if (!open)
visible_message("<span class='notice'>\The [eater] cannot eat from \the [src] if it's closed, imbecile!</span>","<span class='notice'>You must first open it!</span>", drugged_message = "<span class='danger'>Oh lalala, this is not it, not it at all !</span>")
return FALSE
return ..()
/obj/item/weapon/reagent_containers/food/snacks/es_cargo/attack_self(var/mob/user)
if (!open)
open = TRUE
icon_state = "es_cargo_opened"
visible_message("<span class='notice'>\The [user] opens \the [src]!</span>", drugged_message = "<span class='notice'>This smells très bon !</span>")
return
return ..()
/obj/item/weapon/reagent_containers/food/snacks/es_cargo/verb/toggle_open()
set name = "Toggle open"
set category = "Object"
if (!open)
open = TRUE
icon_state = "es_cargo_opened"
visible_message("<span class='notice'>\The [usr] opens \the [src]!</span>", drugged_message = "<span class='notice'>This smells très bon !</span>")
else
open = FALSE
icon_state = "es_cargo_closed"
visible_message("<span class='notice'>\The [usr] closes \the [src]!</span>", drugged_message = "<span class='notice'>Enough for today !</span>")

View File

@@ -143,3 +143,10 @@
new choice(get_turf(src))
processing_objects.Remove(src)
qdel(src)
/obj/item/weapon/reagent_containers/food/snacks/egg/snail
name = "snail egg"
desc = "Proud and arrogant, even before birth."
icon_state = "egg-snail"
can_color = FALSE
hatch_type = /mob/living/simple_animal/snail

View File

@@ -319,3 +319,14 @@ var/global/list/valid_random_food_types = existing_typesof(/obj/item/weapon/reag
/obj/item/weapon/reagent_containers/food/snacks/meat/slime/New()
..()
reagents.add_reagent(SLIMEJELLY, 10)
/obj/item/weapon/reagent_containers/food/snacks/meat/snail
icon_state = "snail_meat"
name = "snail meat"
desc = "How uncivilised ! You cannot be expected to eat that without cooking it, mon Dieu !"
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/food.dmi', "right_hand" = 'icons/mob/in-hand/right/food.dmi')
/obj/item/weapon/reagent_containers/food/snacks/meat/snail/New()
. = ..()
reagents.add_reagent(NUTRIMENT,5)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 KiB

After

Width:  |  Height:  |  Size: 522 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View File

@@ -1865,6 +1865,7 @@
#include "code\modules\mob\living\simple_animal\shade.dm"
#include "code\modules\mob\living\simple_animal\shade_powers.dm"
#include "code\modules\mob\living\simple_animal\simple_animal.dm"
#include "code\modules\mob\living\simple_animal\snail.dm"
#include "code\modules\mob\living\simple_animal\vox.dm"
#include "code\modules\mob\living\simple_animal\worm.dm"
#include "code\modules\mob\living\simple_animal\bees\bees_datums.dm"