From 558db1e806c0177d86eea5dd1d1be596a001e4cf Mon Sep 17 00:00:00 2001 From: imsxz Date: Sun, 1 Mar 2020 06:00:19 -0500 Subject: [PATCH] adds sloth holding (#49439) * fixing some kevcode * kills a runtime * hold everyone * adds some sprites * makes drone and pai up to date with mob holding * this was meant for the last commit * hold every pet and put them into a washing machine * Update monkey.dm * the cutting edge in pet holding technology * i hate travis * i love janitors * every time i make a commit i tell myself its the last one and then i close out of the tab and dont check back for a few hours --- code/game/machinery/washing_machine.dm | 9 ++++++--- code/modules/mob/living/inhand_holder.dm | 19 ++++++++++-------- code/modules/mob/living/living.dm | 19 +++++++++--------- code/modules/mob/living/living_defines.dm | 15 ++++++++++---- code/modules/mob/living/silicon/pai/pai.dm | 7 ++++--- .../mob/living/silicon/pai/pai_shell.dm | 10 +++------ .../mob/living/simple_animal/friendly/cat.dm | 6 ++++++ .../mob/living/simple_animal/friendly/dog.dm | 15 +++++++------- .../simple_animal/friendly/drone/_drone.dm | 1 + .../mob/living/simple_animal/friendly/fox.dm | 2 ++ .../living/simple_animal/friendly/mouse.dm | 4 ++++ .../living/simple_animal/friendly/sloth.dm | 1 + icons/mob/monkey_held.dmi | Bin 988 -> 0 bytes icons/mob/pets_held.dmi | Bin 0 -> 508 bytes icons/mob/pets_held_lh.dmi | Bin 401 -> 9803 bytes icons/mob/pets_held_rh.dmi | Bin 399 -> 9849 bytes 16 files changed, 66 insertions(+), 42 deletions(-) delete mode 100644 icons/mob/monkey_held.dmi create mode 100644 icons/mob/pets_held.dmi diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 8f5d243696a..96b9b94805d 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -218,7 +218,7 @@ GLOBAL_LIST_INIT(dye_registry, list( new /obj/item/reagent_containers/food/snacks/meat/slab/corgi(loc) qdel(src) -/mob/living/simple_animal/pet/dog/corgi/machine_wash(obj/machinery/washing_machine/WM) +/mob/living/simple_animal/pet/machine_wash(obj/machinery/washing_machine/WM) WM.bloody_mess = TRUE gib() @@ -239,6 +239,10 @@ GLOBAL_LIST_INIT(dye_registry, list( addtimer(VARSET_CALLBACK(src, freshly_laundered, FALSE), 5 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE) ..() +/obj/item/clothing/head/mob_holder/machine_wash(obj/machinery/washing_machine/WM) + ..() + held_mob.machine_wash(WM) + /obj/item/clothing/shoes/sneakers/machine_wash(obj/machinery/washing_machine/WM) if(chained) chained = 0 @@ -292,7 +296,6 @@ GLOBAL_LIST_INIT(dye_registry, list( if(!user.transferItemToLoc(W, src)) to_chat(user, "\The [W] is stuck to your hand, you cannot put it in the washing machine!") return TRUE - if(W.dye_color) color_source = W update_icon() @@ -313,7 +316,7 @@ GLOBAL_LIST_INIT(dye_registry, list( if(L.buckled || L.has_buckled_mobs()) return if(state_open) - if(iscorgi(L)) + if(istype(L, /mob/living/simple_animal/pet)) L.forceMove(src) update_icon() return diff --git a/code/modules/mob/living/inhand_holder.dm b/code/modules/mob/living/inhand_holder.dm index cce936d2789..917075b81f0 100644 --- a/code/modules/mob/living/inhand_holder.dm +++ b/code/modules/mob/living/inhand_holder.dm @@ -5,24 +5,22 @@ desc = "Yell at coderbrush." icon = null icon_state = "" - item_flags = DROPDEL + slot_flags = NONE var/mob/living/held_mob - var/can_head = TRUE var/destroying = FALSE -/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/M, _worn_state, head_icon, lh_icon, rh_icon, _can_head = TRUE) +/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/M, worn_state, head_icon, lh_icon, rh_icon, worn_slot_flags = NONE) . = ..() - can_head = _can_head if(head_icon) mob_overlay_icon = head_icon - if(_worn_state) - item_state = _worn_state + if(worn_state) + item_state = worn_state if(lh_icon) lefthand_file = lh_icon if(rh_icon) righthand_file = rh_icon - if(!can_head) - slot_flags = NONE + if(worn_slot_flags) + slot_flags = worn_slot_flags deposit(M) /obj/item/clothing/head/mob_holder/Destroy() @@ -45,6 +43,11 @@ /obj/item/clothing/head/mob_holder/proc/update_visuals(mob/living/L) appearance = L.appearance +/obj/item/clothing/head/mob_holder/dropped() + ..() + if(held_mob && isturf(loc)) + release() + /obj/item/clothing/head/mob_holder/proc/release(del_on_release = TRUE) if(!held_mob) if(del_on_release && !destroying) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8f142dea3c9..eeddc54d56f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1285,18 +1285,19 @@ ..() update_z(new_z) -/mob/living/MouseDrop(mob/over) +/mob/living/MouseDrop_T(atom/dropping, atom/user) + var/mob/living/U = user + if(isliving(dropping)) + var/mob/living/M = dropping + if(M.can_be_held && U.pulling == M) + M.mob_try_pickup(U)//blame kevinz + return//dont open the mobs inventory if you are picking them up . = ..() - var/mob/living/user = usr - if(!istype(over) || !istype(user)) - return - if(!over.Adjacent(src) || (user != src) || !canUseTopic(over)) - return - if(can_be_held) - mob_try_pickup(over) /mob/living/proc/mob_pickup(mob/living/L) - return + var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, held_state, head_icon, held_lh, held_rh, worn_slot_flags) + L.visible_message("[L] scoops up [src]!") + L.put_in_hands(holder) /mob/living/proc/set_name() numba = rand(1, 1000) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index e5c83816829..22ec966267b 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -113,7 +113,8 @@ var/list/obj/effect/proc_holder/abilities = list() - var/can_be_held = FALSE ///whether this can be picked up and held. + var/can_be_held = FALSE //whether this can be picked up and held. + var/worn_slot_flags = NONE //if it can be held, can it be equipped to any slots? (think pAI's on head) var/radiation = 0 ///If the mob is irradiated. var/ventcrawl_layer = PIPING_LAYER_DEFAULT @@ -125,8 +126,14 @@ var/slowed_by_drag = TRUE ///Whether the mob is slowed down when dragging another prone mob - var/list/ownedSoullinks ///soullinks we are the owner of - var/list/sharedSoullinks ///soullinks we are a/the sharer of - + var/list/ownedSoullinks //soullinks we are the owner of + var/list/sharedSoullinks //soullinks we are a/the sharer of + /// List of changes to body temperature, used by desease symtoms like fever var/list/body_temp_changes = list() + + //this stuff is here to make it simple for admins to mess with custom held sprites + var/icon/held_lh = 'icons/mob/pets_held_lh.dmi'//icons for holding mobs + var/icon/held_rh = 'icons/mob/pets_held_rh.dmi' + var/icon/head_icon = 'icons/mob/pets_held.dmi'//what it looks like on your head + var/held_state = ""//icon state for the above diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 07aa17ea900..b545c1acce4 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -13,6 +13,10 @@ maxHealth = 500 layer = BELOW_MOB_LAYER can_be_held = TRUE + worn_slot_flags = ITEM_SLOT_HEAD + held_lh = 'icons/mob/pai_item_lh.dmi' + held_rh = 'icons/mob/pai_item_rh.dmi' + head_icon = 'icons/mob/pai_item_head.dmi' radio = /obj/item/radio/headset/silicon/pai var/network = "ss13" var/obj/machinery/camera/current = null @@ -65,9 +69,6 @@ var/obj/item/card/id/access_card = null var/chassis = "repairbot" var/list/possible_chassis = list("cat" = TRUE, "mouse" = TRUE, "monkey" = TRUE, "corgi" = FALSE, "fox" = FALSE, "repairbot" = TRUE, "rabbit" = TRUE, "bat" = FALSE, "butterfly" = FALSE, "hawk" = FALSE, "lizard" = FALSE, "duffel" = TRUE) //assoc value is whether it can be picked up. - var/static/item_head_icon = 'icons/mob/pai_item_head.dmi' - var/static/item_lh_icon = 'icons/mob/pai_item_lh.dmi' - var/static/item_rh_icon = 'icons/mob/pai_item_rh.dmi' var/emitterhealth = 20 var/emittermaxhealth = 20 diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index a32316f9afc..2e404b29dbe 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -36,6 +36,7 @@ client.eye = src set_light(0) icon_state = "[chassis]" + held_state = "[chassis]" visible_message("[src] folds out its holochassis emitter and forms a holoshell around itself!") holoform = TRUE @@ -74,6 +75,8 @@ if(!choice) return FALSE chassis = choice + icon_state = "[chassis]" + held_state = "[chassis]" update_resting() to_chat(src, "You switch your holochassis projection composite to [chassis].") @@ -97,13 +100,6 @@ set_light(0) to_chat(src, "You disable your integrated light.") -/mob/living/silicon/pai/mob_pickup(mob/living/L) - var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, chassis, item_head_icon, item_lh_icon, item_rh_icon) - if(!L.put_in_hands(holder)) - qdel(holder) - else - L.visible_message("[L] scoops up [src]!") - /mob/living/silicon/pai/mob_try_pickup(mob/living/user) if(!possible_chassis[chassis]) to_chat(user, "[src]'s current form isn't able to be carried!") diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index f0768339c14..4f1f0fadd57 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -34,6 +34,8 @@ var/mob/living/simple_animal/mouse/movement_target gold_core_spawnable = FRIENDLY_SPAWN collar_type = "cat" + can_be_held = TRUE + held_state = "cat2" footstep_type = FOOTSTEP_MOB_CLAW @@ -61,6 +63,7 @@ unsuitable_atmos_damage = 0 minbodytemp = TCMB maxbodytemp = T0C + 40 + held_state = "spacecat" /mob/living/simple_animal/pet/cat/original name = "Batsy" @@ -71,6 +74,7 @@ icon_dead = "original_dead" collar_type = null unique_pet = TRUE + held_state = "original" /mob/living/simple_animal/pet/cat/kitten name = "kitten" @@ -97,6 +101,7 @@ var/list/children = list()//Actual mob instances of children var/cats_deployed = 0 var/memory_saved = FALSE + held_state = "cat" /mob/living/simple_animal/pet/cat/Runtime/Initialize() if(prob(5)) @@ -265,6 +270,7 @@ attacked_sound = 'sound/items/eatfood.ogg' deathmessage = "loses its false life and collapses!" deathsound = "bodyfall" + held_state = "cak" /mob/living/simple_animal/pet/cat/cak/CheckParts(list/parts) ..() diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index ace11bd8543..1273a4261e3 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -16,6 +16,7 @@ see_in_dark = 5 speak_chance = 1 turns_per_move = 10 + can_be_held = TRUE var/turns_since_scan = 0 var/obj/movement_target @@ -84,11 +85,11 @@ icon_state = "corgi" icon_living = "corgi" icon_dead = "corgi_dead" + held_state = "corgi" butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1) childtype = list(/mob/living/simple_animal/pet/dog/corgi/puppy = 95, /mob/living/simple_animal/pet/dog/corgi/puppy/void = 5) animal_species = /mob/living/simple_animal/pet/dog gold_core_spawnable = FRIENDLY_SPAWN - can_be_held = TRUE collar_type = "corgi" var/obj/item/inventory_head var/obj/item/inventory_back @@ -123,6 +124,7 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/pug = 3) gold_core_spawnable = FRIENDLY_SPAWN collar_type = "pug" + held_state = "pug" /mob/living/simple_animal/pet/dog/corgi/exoticcorgi name = "Exotic Corgi" @@ -210,13 +212,6 @@ ..() update_corgi_fluff() -/mob/living/simple_animal/pet/dog/corgi/mob_pickup(mob/living/L) - var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, "corgi", null, 'icons/mob/pets_held_lh.dmi', 'icons/mob/pets_held_rh.dmi', FALSE) - if(!L.put_in_hands(holder)) - qdel(holder) - else - L.visible_message("[L] scoops up [src]!") - /mob/living/simple_animal/pet/dog/corgi/Topic(href, href_list) if(!(iscarbon(usr) || iscyborg(usr)) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) usr << browse(null, "window=mob[REF(src)]") @@ -420,6 +415,7 @@ else if(age == record_age) icon_state = "old_corgi" icon_living = "old_corgi" + held_state = "old_corgi" icon_dead = "old_corgi_dead" desc = "At a ripe old age of [record_age], Ian's not as spry as he used to be, but he'll always be the HoP's beloved corgi." //RIP turns_per_move = 20 @@ -493,6 +489,7 @@ gold_core_spawnable = NO_SPAWN nofur = TRUE unique_pet = TRUE + held_state = "narsian" /mob/living/simple_animal/pet/dog/corgi/narsie/Life() ..() @@ -596,6 +593,7 @@ unsuitable_atmos_damage = 0 minbodytemp = TCMB maxbodytemp = T0C + 40 + held_state = "void_puppy" /mob/living/simple_animal/pet/dog/corgi/puppy/void/Process_Spacemove(movement_dir = 0) return 1 //Void puppies can navigate space. @@ -618,6 +616,7 @@ response_disarm_simple = "bop" response_harm_continuous = "kicks" response_harm_simple = "kick" + held_state = "lisa" var/puppies = 0 //Lisa already has a cute bow! diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 4d69998f7c6..afb90604318 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -51,6 +51,7 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE see_in_dark = 7 can_be_held = TRUE + worn_slot_flags = ITEM_SLOT_HEAD held_items = list(null, null) var/staticChoice = "static" var/list/staticChoices = list("static", "blank", "letter", "animal") diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index 365d7262ebe..29500c78663 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -21,6 +21,8 @@ response_harm_continuous = "kicks" response_harm_simple = "kick" gold_core_spawnable = FRIENDLY_SPAWN + can_be_held = TRUE + held_state = "fox" footstep_type = FOOTSTEP_MOB_CLAW diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 51c7db91c28..e86b7cf0e8c 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -28,6 +28,8 @@ var/body_color //brown, gray and white, leave blank for random gold_core_spawnable = FRIENDLY_SPAWN var/chew_probability = 1 + can_be_held = TRUE + held_state = "mouse_gray" /mob/living/simple_animal/mouse/Initialize() . = ..() @@ -99,6 +101,7 @@ /mob/living/simple_animal/mouse/white body_color = "white" icon_state = "mouse_white" + held_state = "mouse_white" /mob/living/simple_animal/mouse/gray body_color = "gray" @@ -107,6 +110,7 @@ /mob/living/simple_animal/mouse/brown body_color = "brown" icon_state = "mouse_brown" + held_state = "mouse_brown" /mob/living/simple_animal/mouse/Destroy() SSmobs.cheeserats -= src diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 9b022d4fd0b..adf0f5bd8a5 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -25,6 +25,7 @@ maxHealth = 50 speed = 10 glide_size = 2 + held_state = "sloth" footstep_type = FOOTSTEP_MOB_CLAW diff --git a/icons/mob/monkey_held.dmi b/icons/mob/monkey_held.dmi deleted file mode 100644 index 6a9eb8aac78341c1507dd4648f7bc8041b4a07b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmV<210(#2P)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DK|eaJGC-CBUOouGbOXA7^IPlGp#5wHxV_Y&IJH+sWhQ%1u0$t00QhuL_t(oh3#0uj@uvxbpIcRxdhcQL*)=%E4<63$t!m|oW9PvzJg{XZ5aK|KfRk{k z1>!fn3fN9_FJTLQcnBz5sT`6ISl~k-nhhU_OlcUF{nuDv(>EYum+yodVvaW;E*hLc z3FoC2<99;GTf-k`a;u@dgD@=+jWeK1DG5SZKzY}qD>%w3P>?~Sc+8N&G-H9b38EvW zWN-*1cgKvo^D~Iwo}aP6uk$w$DZ+&E!&K_-HxyuL0XQw3u-s4MaFsv4gIe*kz_+pZ z0;ZkyqV9$?E|IVYs2!fG#3UZcOk&C&ORzoR+h{XeY!VAZDP6LBwE$U2ZaL=_D^{#n z@h>A~;w->|xI}SCnK;)-dm~4yJ*N1Ql!CmsI4an5C{1q@!VR9W2))1tQY^aRIZAAuj9koVng8+VepPus)}8 zUQCY6p*VIUiCI+xH(?A|n*D-507N$j3+1>yCMs|asH;Et-|+|D)Lbnd2%EA>9p diff --git a/icons/mob/pets_held.dmi b/icons/mob/pets_held.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1a8d30b6abfada68bd53d6757af36c398890fa3e GIT binary patch literal 508 zcmVV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DK|eaJGD}Yi!&v&s2HS+i!-e#F*g;&Hsn%PaP@Nmn+pJ2;~Jrf zp9lK@009_DL_t(YiS1NDYQr!PTvar^T8JdqQ0D&UH`Lly`t42yfru9FLHv;i;f_3z^<%`kz4B`!NQ0qE#PwGs&>*wWreE#(#PYH+ zMeWNB%yfebup2XG{2PQyV~YIN4?54{ym+x2LiVX(OE)c>_gJuM=;Kqzw8E0~CEQNN z0#mthld!6YpHi(f5g_Wgf~7VlTp8!RkC7vu+G{HKY(K^Wrv+nM=AzPTs@HHc>3wse y$r4NuaF^_3byqnECM?DD;Q_yx%j`Kb5_|)qwIQOY(yo*M0000MG literal 0 HcmV?d00001 diff --git a/icons/mob/pets_held_lh.dmi b/icons/mob/pets_held_lh.dmi index 6b2db6e9c280010bfbffbe3aa9c2e46ebd1a5564..b5b7fe7bf7a86378cc40ab925946a7077e45035c 100644 GIT binary patch literal 9803 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 FKLECm-`W5G literal 401 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 JxtKw~{{nd5AXNYW literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|exd5LK*8>L*JZfeAHAnvET92R0 zOo76mK7G1zSi#p~Mrm#a3ri^_5Umbd$-k5O6zXb0|VoLW#$~%{;cDG4OmS%7vBX(9H)gi9ais8aGScX~|4rJ;UMNDPgc-h0n>B&z8XsD%?(u6BrHJ)feoZ#ksJ-mvKcl o(=H}67U5taoi5)3kqNvE{*8QpZ{1Y;26Qxor>mdKI;Vst0G(ZrPyhe`