/mob/living/carbon/monkey name = "monkey" verb_say = "chimpers" initial_language_holder = /datum/language_holder/monkey icon = 'icons/mob/monkey.dmi' icon_state = "" gender = NEUTER pass_flags = PASSTABLE ventcrawler = VENTCRAWLER_NUDE mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1) type_of_meat = /obj/item/reagent_containers/food/snacks/meat/slab/monkey gib_type = /obj/effect/decal/cleanable/blood/gibs unique_name = TRUE bodyparts = list(/obj/item/bodypart/chest/monkey, /obj/item/bodypart/head/monkey, /obj/item/bodypart/l_arm/monkey, /obj/item/bodypart/r_arm/monkey, /obj/item/bodypart/r_leg/monkey, /obj/item/bodypart/l_leg/monkey) /mob/living/carbon/monkey/Initialize(mapload, cubespawned=FALSE, mob/spawner) verbs += /mob/living/proc/mob_sleep verbs += /mob/living/proc/lay_down if(unique_name) //used to exclude pun pun gender = pick(MALE, FEMALE) real_name = name //initialize limbs create_bodyparts() create_internal_organs() . = ..() if (cubespawned) if (LAZYLEN(SSmobs.cubemonkeys) > SSmobs.cubemonkeycap) if (spawner) to_chat(spawner, "Bluespace harmonics prevent the spawning of more than [SSmobs.cubemonkeycap] monkeys on the station at one time!") return INITIALIZE_HINT_QDEL SSmobs.cubemonkeys += src create_dna(src) dna.initialize_dna(random_blood_type()) /mob/living/carbon/monkey/Destroy() SSmobs.cubemonkeys -= src return ..() /mob/living/carbon/monkey/create_internal_organs() internal_organs += new /obj/item/organ/appendix internal_organs += new /obj/item/organ/lungs internal_organs += new /obj/item/organ/heart internal_organs += new /obj/item/organ/brain internal_organs += new /obj/item/organ/tongue internal_organs += new /obj/item/organ/eyes internal_organs += new /obj/item/organ/ears internal_organs += new /obj/item/organ/liver internal_organs += new /obj/item/organ/stomach ..() /mob/living/carbon/monkey/movement_delay() if(reagents) if(reagents.has_reagent("morphine")) return -1 if(reagents.has_reagent("nuka_cola")) return -1 . = ..() var/health_deficiency = (100 - health) if(health_deficiency >= 45) . += (health_deficiency / 25) if (bodytemperature < 283.222) . += (283.222 - bodytemperature) / 10 * 1.75 var/static/config_monkey_delay if(isnull(config_monkey_delay)) config_monkey_delay = CONFIG_GET(number/monkey_delay) . += config_monkey_delay /mob/living/carbon/monkey/Stat() ..() if(statpanel("Status")) stat(null, "Intent: [a_intent]") stat(null, "Move Mode: [m_intent]") if(client && mind) var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) if(changeling) stat("Chemical Storage", "[changeling.chem_charges]/[changeling.chem_storage]") stat("Absorbed DNA", changeling.absorbedcount) return /mob/living/carbon/monkey/verb/removeinternal() set name = "Remove Internals" set category = "IC" internal = null return /mob/living/carbon/monkey/IsAdvancedToolUser()//Unless its monkey mode monkeys cant use advanced tools if(mind && is_monkey(mind)) return TRUE return FALSE /mob/living/carbon/monkey/reagent_check(datum/reagent/R) //can metabolize all reagents return FALSE /mob/living/carbon/monkey/canBeHandcuffed() return TRUE /mob/living/carbon/monkey/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) if(judgement_criteria & JUDGE_EMAGGED) return 10 //Everyone is a criminal! var/threatcount = 0 //Securitrons can't identify monkeys if( !(judgement_criteria & JUDGE_IGNOREMONKEYS) && (judgement_criteria & JUDGE_IDCHECK) ) threatcount += 4 //Lasertag bullshit if(lasercolor) if(lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve if(is_holding_item_of_type(/obj/item/gun/energy/laser/redtag)) threatcount += 4 if(lasercolor == "r") if(is_holding_item_of_type(/obj/item/gun/energy/laser/bluetag)) threatcount += 4 return threatcount //Check for weapons if( (judgement_criteria & JUDGE_WEAPONCHECK) && weaponcheck ) for(var/obj/item/I in held_items) if(weaponcheck.Invoke(I)) threatcount += 4 //mindshield implants imply trustworthyness if(isloyal()) threatcount -= 1 return threatcount /mob/living/carbon/monkey/get_permeability_protection() var/protection = 0 if(head) protection = 1 - head.permeability_coefficient if(wear_mask) protection = max(1 - wear_mask.permeability_coefficient, protection) protection = protection/7 //the rest of the body isn't covered. return protection /mob/living/carbon/monkey/IsVocal() if(!getorganslot(ORGAN_SLOT_LUNGS)) return 0 return 1 /mob/living/carbon/monkey/can_use_guns(obj/item/G) return TRUE /mob/living/carbon/monkey/angry aggressive = TRUE /mob/living/carbon/monkey/angry/Initialize() . = ..() if(prob(10)) var/obj/item/clothing/head/helmet/justice/escape/helmet = new(src) equip_to_slot_or_del(helmet,slot_head) helmet.attack_self(src) // todo encapsulate toggle