From 292c1545cbc5f86b6fe151e806d5923f8c074100 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Sun, 20 Sep 2015 16:13:20 +0200 Subject: [PATCH 1/2] Species datums now include pass flags. Utilized to allow Pun-Pun and other monkeys to once again climb tables. --- code/modules/mob/living/carbon/human/species/species.dm | 3 +++ code/modules/mob/living/carbon/human/species/station/monkey.dm | 2 ++ 2 files changed, 5 insertions(+) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 74e9b637a7b..885d045e191 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -150,6 +150,8 @@ var/push_flags = ~HEAVY // What can we push? var/swap_flags = ~HEAVY // What can we swap place with? + var/pass_flags = 0 + /datum/species/New() if(hud_type) hud = new hud_type() @@ -282,6 +284,7 @@ H.mob_bump_flag = bump_flag H.mob_swap_flags = swap_flags H.mob_push_flags = push_flags + H.pass_flags = pass_flags /datum/species/proc/handle_death(var/mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns). return diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index 74293d11768..29082cd27c2 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -38,6 +38,8 @@ swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL push_flags = MONKEY|SLIME|SIMPLE_ANIMAL|ALIEN + pass_flags = PASSTABLE + /datum/species/monkey/handle_npc(var/mob/living/carbon/human/H) if(H.stat != CONSCIOUS) return From d891fba1cc0cf5fabe1823fdebb81848895915ac Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Sun, 20 Sep 2015 17:12:07 +0200 Subject: [PATCH 2/2] Mob size tweaks. Merges the use of the is_small and mob_size into one. Changes the species size handling to set the mob size instead of being yet another separate var to check. --- code/__defines/mobs.dm | 7 +++++++ code/game/machinery/doors/door.dm | 2 +- code/game/machinery/doors/windowdoor.dm | 2 +- code/game/machinery/floor_light.dm | 2 +- code/game/machinery/kitchen/gibber.dm | 4 ++-- code/game/objects/items/bodybag.dm | 2 +- code/game/objects/items/weapons/material/twohanded.dm | 4 ++-- code/game/objects/items/weapons/storage/internal.dm | 2 +- code/game/objects/structures/crates_lockers/closets.dm | 9 +++------ code/game/objects/structures/kitchen_spike.dm | 2 +- code/game/supplyshuttle.dm | 6 +----- .../hydroponics/spreading/spreading_response.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 10 +++++----- .../modules/mob/living/carbon/human/species/species.dm | 3 ++- .../mob/living/carbon/human/species/station/monkey.dm | 2 +- .../mob/living/carbon/human/species/station/resomi.dm | 2 +- .../mob/living/carbon/human/species/station/slime.dm | 2 +- code/modules/mob/living/living_defines.dm | 3 --- code/modules/mob/living/silicon/pai/pai.dm | 2 +- code/modules/mob/living/silicon/robot/drone/drone.dm | 3 +++ .../mob/living/simple_animal/constructs/constructs.dm | 2 +- code/modules/mob/living/simple_animal/friendly/cat.dm | 2 +- code/modules/mob/living/simple_animal/friendly/crab.dm | 2 +- .../mob/living/simple_animal/friendly/farm_animals.dm | 8 ++++---- .../mob/living/simple_animal/friendly/lizard.dm | 3 +-- .../modules/mob/living/simple_animal/friendly/mouse.dm | 3 +-- .../mob/living/simple_animal/friendly/mushroom.dm | 2 +- .../mob/living/simple_animal/friendly/spiderbot.dm | 5 ++--- code/modules/mob/living/simple_animal/parrot.dm | 2 +- code/modules/mob/living/simple_animal/simple_animal.dm | 6 +++--- code/modules/mob/mob_defines.dm | 4 +--- code/modules/mob/mob_grab_specials.dm | 2 +- code/modules/mob/mob_helpers.dm | 7 +++---- 33 files changed, 57 insertions(+), 62 deletions(-) diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 5bcab4704d4..e99f62d2b79 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -107,3 +107,10 @@ #define COMPANY_ALIGNMENTS list(COMPANY_LOYAL,COMPANY_SUPPORTATIVE,COMPANY_NEUTRAL,COMPANY_SKEPTICAL,COMPANY_OPPOSED) + +// Defines mob sizes, used by lockers and to determine what is considered a small sized mob, etc. +#define MOB_LARGE 40 +#define MOB_MEDIUM 20 +#define MOB_SMALL 10 +#define MOB_TINY 5 +#define MOB_MINISCULE 1 diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 692cda28bd9..daa2123d1c6 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -99,7 +99,7 @@ var/mob/M = AM if(world.time - M.last_bumped <= 10) return //Can bump-open one airlock per second. This is to prevent shock spam. M.last_bumped = world.time - if(!M.restrained() && !M.small) + if(!M.restrained() && !issmall(M)) bumpopen(M) return diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index e50af2bcf0a..88eda4c7741 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -77,7 +77,7 @@ return if (src.operating) return - if (src.density && !M.small && src.allowed(AM)) + if (src.density && !issmall(M) && src.allowed(AM)) open() if(src.check_access(null)) sleep(50) diff --git a/code/game/machinery/floor_light.dm b/code/game/machinery/floor_light.dm index 0eff1a3e3ca..9267f1edbeb 100644 --- a/code/game/machinery/floor_light.dm +++ b/code/game/machinery/floor_light.dm @@ -43,7 +43,7 @@ var/list/floor_light_cache = list() /obj/machinery/floor_light/attack_hand(var/mob/user) - if(user.a_intent == "hurt" && !user.small) + if(user.a_intent == I_HURT && !issmall(user)) if(!isnull(damaged) && !(stat & BROKEN)) visible_message("\The [user] smashes \the [src]!") playsound(src, "shatter", 70, 1) diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 3d18d80a1e2..9a950cc023c 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -88,7 +88,7 @@ emagged = !emagged user << "You [emagged ? "disable" : "enable"] the gibber safety guard." return 1 - + /obj/machinery/gibber/attackby(var/obj/item/W, var/mob/user) var/obj/item/weapon/grab/G = W @@ -195,7 +195,7 @@ slab_type = H.species.meat_type // Small mobs don't give as much nutrition. - if(src.occupant.small) + if(issmall(src.occupant)) slab_nutrition *= 0.5 slab_nutrition /= slab_count diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 68084ff5c9c..081767fe6f6 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -39,7 +39,7 @@ close_sound = 'sound/items/zip.ogg' var/item_path = /obj/item/bodybag density = 0 - storage_capacity = (default_mob_size * 2) - 1 + storage_capacity = (MOB_MEDIUM * 2) - 1 var/contains_body = 0 /obj/structure/closet/body_bag/attackby(W as obj, mob/user as mob) diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 6102c760260..aac0b98679f 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -92,7 +92,7 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user - if(H.species.is_small) + if(issmall(H)) user << "It's too heavy for you to wield fully." return else @@ -175,7 +175,7 @@ else if(istype(A,/obj/effect/plant)) var/obj/effect/plant/P = A P.die_off() - + //spears, bay edition /obj/item/weapon/material/twohanded/spear icon_state = "spearglass0" diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm index 89f058ba477..b135c439b60 100644 --- a/code/game/objects/items/weapons/storage/internal.dm +++ b/code/game/objects/items/weapons/storage/internal.dm @@ -9,7 +9,7 @@ name = master_item.name verbs -= /obj/item/verb/verb_pickup //make sure this is never picked up. ..() - + /obj/item/weapon/storage/internal/Destroy() master_item = null ..() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 5bbaeac7a50..b680002df8f 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -11,7 +11,7 @@ var/wall_mounted = 0 //never solid (You can always pass over it) var/health = 100 var/breakout = 0 //if someone is currently breaking out. mutex - var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate + var/storage_capacity = 2 * MOB_MEDIUM //This is so that someone can't pack hundreds of items in a locker/crate //then open it in a populated area to crash clients. var/open_sound = 'sound/machines/click.ogg' var/close_sound = 'sound/machines/click.ogg' @@ -20,8 +20,6 @@ var/store_items = 1 var/store_mobs = 1 - var/const/default_mob_size = 15 - /obj/structure/closet/initialize() if(!opened) // if closed, any item at the crate's loc is put in the contents var/obj/item/I @@ -145,14 +143,13 @@ for(var/mob/living/M in src.loc) if(M.buckled || M.pinned.len) continue - var/current_mob_size = (M.mob_size ? M.mob_size : default_mob_size) - if(stored_units + added_units + current_mob_size > storage_capacity) + if(stored_units + added_units + M.mob_size > storage_capacity) break if(M.client) M.client.perspective = EYE_PERSPECTIVE M.client.eye = src M.forceMove(src) - added_units += current_mob_size + added_units += M.mob_size return added_units /obj/structure/closet/proc/toggle(mob/user as mob) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index e865805991b..8596ce037d7 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -32,7 +32,7 @@ if(istype(victim, /mob/living/carbon/human)) var/mob/living/carbon/human/H = victim - if(!H.species.is_small) + if(!issmall(H)) return 0 meat_type = H.species.meat_type icon_state = "spikebloody" diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 523a83a080e..5825c32d484 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -70,11 +70,7 @@ var/list/mechtoys = list( for(var/mob_type in mobs_can_pass) if(istype(A, mob_type)) return ..() - if(istype(A, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.species.is_small) - return ..() - return 0 + return issmall(M) return ..() diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm index c9ed2ee79ef..2b9407aecd0 100644 --- a/code/modules/hydroponics/spreading/spreading_response.dm +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -7,7 +7,7 @@ if(!istype(M)) return - if(!buckled_mob && !M.buckled && !M.anchored && (M.small || prob(round(seed.get_trait(TRAIT_POTENCY)/6)))) + if(!buckled_mob && !M.buckled && !M.anchored && (issmall(M) || prob(round(seed.get_trait(TRAIT_POTENCY)/6)))) //wait a tick for the Entered() proc that called HasProximity() to finish (and thus the moving animation), //so we don't appear to teleport from two tiles away when moving into a turf adjacent to vines. spawn(1) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 71e17a3fcfe..bcec368d7d4 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -701,21 +701,21 @@ /mob/living/carbon/human/proc/headcheck(var/target_zone, var/brain_tag = "brain") if(!species.has_organ[brain_tag]) return 0 - + var/obj/item/organ/affecting = internal_organs_by_name[brain_tag] - + target_zone = check_zone(target_zone) if(!affecting || affecting.parent_organ != target_zone) return 0 - + //if the parent organ is significantly larger than the brain organ, then hitting it is not guaranteed var/obj/item/organ/parent = get_organ(target_zone) if(!parent) return 0 - + if(parent.w_class > affecting.w_class + 1) return prob(100 / 2**(parent.w_class - affecting.w_class - 1)) - + return 1 /mob/living/carbon/human/IsAdvancedToolUser(var/silent) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 885d045e191..d77493b0b36 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -28,7 +28,7 @@ var/tail_hair var/race_key = 0 // Used for mob icon cache string. var/icon/icon_template // Used for mob icon generation for non-32x32 species. - var/is_small + var/mob_size = MOB_MEDIUM var/show_ssd = "fast asleep" var/virus_immune var/short_sighted @@ -285,6 +285,7 @@ H.mob_swap_flags = swap_flags H.mob_push_flags = push_flags H.pass_flags = pass_flags + H.mob_size = mob_size /datum/species/proc/handle_death(var/mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns). return diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index 29082cd27c2..d9d8347550c 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -11,7 +11,7 @@ language = null default_language = "Chimpanzee" greater_form = "Human" - is_small = 1 + mob_size = MOB_SMALL has_fine_manipulation = 0 show_ssd = null diff --git a/code/modules/mob/living/carbon/human/species/station/resomi.dm b/code/modules/mob/living/carbon/human/species/station/resomi.dm index e8a853c399f..238f022aabb 100644 --- a/code/modules/mob/living/carbon/human/species/station/resomi.dm +++ b/code/modules/mob/living/carbon/human/species/station/resomi.dm @@ -27,7 +27,7 @@ total_health = 50 brute_mod = 1.35 burn_mod = 1.35 - is_small = 1 + mob_size = MOB_SMALL holder_type = /obj/item/weapon/holder/human short_sighted = 1 gluttonous = 1 diff --git a/code/modules/mob/living/carbon/human/species/station/slime.dm b/code/modules/mob/living/carbon/human/species/station/slime.dm index bb5b921710f..38db9549323 100644 --- a/code/modules/mob/living/carbon/human/species/station/slime.dm +++ b/code/modules/mob/living/carbon/human/species/station/slime.dm @@ -1,7 +1,7 @@ /datum/species/slime name = "Slime" name_plural = "slimes" - is_small = 1 + mob_size = MOB_SMALL icobase = 'icons/mob/human_races/r_slime.dmi' deform = 'icons/mob/human_races/r_slime.dmi' diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index bc441e665fc..5a671afe992 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -39,10 +39,7 @@ var/tod = null // Time of death var/update_slimes = 1 var/silent = null // Can't talk. Value goes down every life proc. - var/mob_size // Used by lockers. var/on_fire = 0 //The "Are we on fire?" var var/fire_stacks var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. - - diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 10446ba8fa8..cb90cd176b4 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -4,8 +4,8 @@ icon_state = "repairbot" emote_type = 2 // pAIs emotes are heard, not seen, so they can be seen through a container (eg. person) - small = 1 pass_flags = 1 + mob_size = MOB_SMALL var/network = "SS13" var/obj/machinery/camera/current = null diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index ee71d225f77..56d608fd658 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -42,6 +42,8 @@ var/list/mob_hat_cache = list() mob_push_flags = SIMPLE_ANIMAL mob_always_swap = 1 + mob_size = MOB_TINY + //Used for self-mailing. var/mail_destination = "" var/obj/machinery/drone_fabricator/master_fabricator @@ -68,6 +70,7 @@ var/list/mob_hat_cache = list() can_pull_mobs = 1 hat_x_offset = 1 hat_y_offset = -12 + mob_size = MOB_SMALL /mob/living/silicon/robot/drone/New() diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index de7d397f866..f023df1617e 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -98,7 +98,7 @@ melee_damage_lower = 30 melee_damage_upper = 30 attacktext = "smashed their armoured gauntlet into" - mob_size = 20 + mob_size = MOB_LARGE speed = 3 environment_smash = 2 attack_sound = 'sound/weapons/heavysmash.ogg' diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index daf7b3768e9..67097c3725c 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -23,7 +23,7 @@ minbodytemp = 223 //Below -50 Degrees Celcius maxbodytemp = 323 //Above 50 Degrees Celcius holder_type = /obj/item/weapon/holder/cat - mob_size = 5 + mob_size = MOB_SMALL /mob/living/simple_animal/cat/Life() //MICE! diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index ed32eec986c..5b57bad674a 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -5,7 +5,7 @@ icon_state = "crab" icon_living = "crab" icon_dead = "crab_dead" - small = 1 + mob_size = MOB_SMALL speak_emote = list("clicks") emote_hear = list("clicks") emote_see = list("clacks") 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 60ddd0638b9..68578ca08ed 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -55,9 +55,9 @@ if(!pulledby) var/obj/effect/plant/food - food = locate(/obj/effect/plant) in oview(5,loc) + food = locate(/obj/effect/plant) in oview(5,loc) if(food) - var/step = get_step_to(src, food, 0) + var/step = get_step_to(src, food, 0) Move(step) /mob/living/simple_animal/hostile/retaliate/goat/Retaliate() @@ -167,7 +167,7 @@ health = 1 var/amount_grown = 0 pass_flags = PASSTABLE | PASSGRILLE - small = 1 + mob_size = MOB_MINISCULE /mob/living/simple_animal/chick/New() ..() @@ -209,7 +209,7 @@ var/global/chicken_count = 0 var/eggsleft = 0 var/body_color pass_flags = PASSTABLE - small = 1 + mob_size = MOB_SMALL /mob/living/simple_animal/chicken/New() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index 66fb31406a4..fe1ab1dcd05 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -5,7 +5,6 @@ icon_state = "lizard" icon_living = "lizard" icon_dead = "lizard-dead" - small = 1 speak_emote = list("hisses") health = 5 maxHealth = 5 @@ -15,4 +14,4 @@ response_help = "pets" response_disarm = "shoos" response_harm = "stomps on" - mob_size = 1 + mob_size = MOB_MINISCULE diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index e0ffc718ff0..c102b2062c6 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -10,7 +10,6 @@ emote_hear = list("squeeks","squeaks","squiks") emote_see = list("runs in a circle", "shakes", "scritches at something") pass_flags = PASSTABLE - small = 1 speak_chance = 1 turns_per_move = 5 see_in_dark = 6 @@ -29,7 +28,7 @@ universal_speak = 0 universal_understand = 1 holder_type = /obj/item/weapon/holder/mouse - mob_size = 1 + mob_size = MOB_MINISCULE /mob/living/simple_animal/mouse/Life() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/mushroom.dm b/code/modules/mob/living/simple_animal/friendly/mushroom.dm index 195cb443bc0..4d455e5050c 100644 --- a/code/modules/mob/living/simple_animal/friendly/mushroom.dm +++ b/code/modules/mob/living/simple_animal/friendly/mushroom.dm @@ -4,7 +4,7 @@ icon_state = "mushroom" icon_living = "mushroom" icon_dead = "mushroom_dead" - small = 1 + mob_size = MOB_SMALL speak_chance = 0 turns_per_move = 1 maxHealth = 5 diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 53fab43ca68..0c578cee773 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -5,7 +5,7 @@ max_co2 = 0 minbodytemp = 0 maxbodytemp = 500 - mob_size = 5 + mob_size = MOB_SMALL var/obj/item/device/radio/borg/radio = null var/mob/living/silicon/ai/connected_ai = null @@ -39,7 +39,6 @@ var/obj/item/held_item = null //Storage for single item they can hold. speed = -1 //Spiderbots gotta go fast. pass_flags = PASSTABLE - small = 1 speak_emote = list("beeps","clicks","chirps") /mob/living/simple_animal/spiderbot/New() @@ -132,7 +131,7 @@ else attacked_with_item(O, user) - + /mob/living/simple_animal/spiderbot/emag_act(var/remaining_charges, var/mob/user) if (emagged) user << "[src] is already overloaded - better run." diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index a05f3941776..658f0f6d4e8 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -33,7 +33,7 @@ icon_living = "parrot_fly" icon_dead = "parrot_dead" pass_flags = PASSTABLE - small = 1 + mob_size = MOB_SMALL speak = list("Hi","Hello!","Cracker?","BAWWWWK george mellons griffing me") speak_emote = list("squawks","says","yells") diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 82cd1683ccf..acce1e39b19 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -285,7 +285,7 @@ if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead. if(istype(O, /obj/item/weapon/material/knife) || istype(O, /obj/item/weapon/material/knife/butch)) harvest(user) - else + else attacked_with_item(O, user) //TODO: refactor mob attackby(), attacked_by(), and friends. @@ -307,7 +307,7 @@ usr << "This weapon is ineffective, it does no damage." visible_message("\The [src] has been attacked with \the [O] by [user].") - user.do_attack_animation(src) + user.do_attack_animation(src) /mob/living/simple_animal/movement_delay() var/tally = 0 //Incase I need to add stuff other than "speed" later @@ -396,7 +396,7 @@ for(var/i=0;i[user] chops up \the [src]!") new/obj/effect/decal/cleanable/blood/splatter(get_turf(src)) qdel(src) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index c72bb838567..6bbc3aff2e2 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -88,7 +88,6 @@ var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. var/lastpuke = 0 var/unacidable = 0 - var/small = 0 var/list/pinned = list() // List of things pinning this creature to walls (see living_defense.dm) var/list/embedded = list() // Embedded items, since simple mobs don't have organs. var/list/languages = list() // For speaking/listening. @@ -221,5 +220,4 @@ var/list/shouldnt_see = list() //list of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes var/list/active_genes=list() - - + var/mob_size = MOB_MEDIUM diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index 4f8bd02a13e..cc1a5458c6c 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -149,7 +149,7 @@ if(istype(H) && H.species.gluttonous) if(H.species.gluttonous == 2) can_eat = 2 - else if(!ishuman(target) && !issmall(target) && (target.small || iscarbon(target))) + else if((H.mob_size > target.mob_size) && !ishuman(target) && iscarbon(target)) can_eat = 1 if(can_eat) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 1fadadf64fb..f6734b00843 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -6,10 +6,9 @@ return 0 /proc/issmall(A) - if(A && istype(A, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = A - if(H.species && H.species.is_small) - return 1 + if(A && istype(A, /mob/living)) + var/mob/living/L = A + return L.mob_size <= MOB_SMALL return 0 /mob/living/proc/isSynthetic()