//Look Sir, free crabs! /mob/living/basic/crab name = "crab" desc = "Free crabs!" icon_state = "crab" icon_living = "crab" icon_dead = "crab_dead" speak_emote = list("clicks") melee_damage_lower = 2 melee_damage_upper = 2 mob_biotypes = MOB_ORGANIC|MOB_CRUSTACEAN|MOB_AQUATIC butcher_results = list(/obj/item/food/meat/slab/rawcrab = 2) response_help_continuous = "pets" response_help_simple = "pet" response_disarm_continuous = "gently pushes aside" response_disarm_simple = "gently push aside" response_harm_continuous = "stomps" response_harm_simple = "stomp" friendly_verb_continuous = "pinches" friendly_verb_simple = "pinch" gold_core_spawnable = FRIENDLY_SPAWN mob_size = MOB_SIZE_SMALL ///In the case 'melee_damage_upper' is somehow raised above 0 attack_verb_continuous = "snips" attack_verb_simple = "snip" attack_sound = 'sound/items/weapons/bite.ogg' attack_vis_effect = ATTACK_EFFECT_BITE ai_controller = /datum/ai_controller/basic_controller/crab /mob/living/basic/crab/Initialize(mapload) . = ..() add_traits(list(TRAIT_NODROWN, TRAIT_SWIMMER, TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) AddElement(/datum/element/sideway_movement) AddElement(/datum/element/tiny_mob_hunter, MOB_SIZE_TINY) AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) AddComponent(/datum/component/speechmod, replacements = strings("crustacean_replacement.json", "crustacean")) //COFFEE! SQUEEEEEEEEE! /mob/living/basic/crab/coffee name = "Coffee" real_name = "Coffee" desc = "It's Coffee, the other pet!" gender = FEMALE gold_core_spawnable = NO_SPAWN /mob/living/basic/crab/jon //holodeck crab name = "Jon" real_name = "Jon" gold_core_spawnable = NO_SPAWN /mob/living/basic/crab/evil name = "Evil Crab" real_name = "Evil Crab" desc = "Unnerving, isn't it? It has to be planning something nefarious..." icon_state = "evilcrab" icon_living = "evilcrab" icon_dead = "evilcrab_dead" gold_core_spawnable = FRIENDLY_SPAWN /mob/living/basic/crab/kreb name = "Kreb" desc = "This is a real crab. The other crabs are simply gubbucks in disguise!" real_name = "Kreb" icon_state = "kreb" icon_living = "kreb" icon_dead = "kreb_dead" gold_core_spawnable = NO_SPAWN /mob/living/basic/crab/evil/kreb name = "Evil Kreb" real_name = "Evil Kreb" icon_state = "evilkreb" icon_living = "evilkreb" icon_dead = "evilkreb_dead" gold_core_spawnable = NO_SPAWN ///The basic ai controller for crabs /datum/ai_controller/basic_controller/crab blackboard = list( BB_ALWAYS_IGNORE_FACTION = TRUE, BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/of_size/smaller, BB_FLEE_TARGETING_STRATEGY = /datum/targeting_strategy/basic, ) ai_traits = DEFAULT_AI_FLAGS | STOP_MOVING_WHEN_PULLED ai_movement = /datum/ai_movement/basic_avoidance idle_behavior = /datum/idle_behavior/idle_random_walk planning_subtrees = list( /datum/ai_planning_subtree/escape_captivity, /datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee/from_flee_key, /datum/ai_planning_subtree/flee_target/from_flee_key, /datum/ai_planning_subtree/simple_find_target, /datum/ai_planning_subtree/basic_melee_attack_subtree, /datum/ai_planning_subtree/random_speech/crab, /datum/ai_planning_subtree/go_for_swim, )