From bf7838aded6ecb2a918fb8d8e1f81d826b370745 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 27 Dec 2017 13:47:09 -0800 Subject: [PATCH] [READY]Adds picking up corgis and pAIs! --- code/modules/mob/living/inhand_holder.dm | 84 ++++++++++++++++++ code/modules/mob/living/living.dm | 31 +++++++ code/modules/mob/living/living_defines.dm | 3 +- code/modules/mob/living/silicon/pai/pai.dm | 6 +- .../mob/living/silicon/pai/pai_shell.dm | 18 +++- .../mob/living/simple_animal/friendly/dog.dm | 8 +- .../simple_animal/friendly/drone/_drone.dm | 2 +- .../friendly/drone/drones_as_items.dm | 44 --------- .../friendly/drone/interaction.dm | 6 +- icons/mob/monkey_held.dmi | Bin 0 -> 988 bytes icons/mob/mouse_held.dmi | Bin 0 -> 1240 bytes icons/mob/pai_item_head.dmi | Bin 0 -> 1297 bytes icons/mob/pai_item_lh.dmi | Bin 0 -> 1186 bytes icons/mob/pai_item_rh.dmi | Bin 0 -> 1209 bytes icons/mob/pets_held_lh.dmi | Bin 0 -> 401 bytes icons/mob/pets_held_rh.dmi | Bin 0 -> 399 bytes tgstation.dme | 1 + 17 files changed, 149 insertions(+), 54 deletions(-) create mode 100644 code/modules/mob/living/inhand_holder.dm create mode 100644 icons/mob/monkey_held.dmi create mode 100644 icons/mob/mouse_held.dmi create mode 100644 icons/mob/pai_item_head.dmi create mode 100644 icons/mob/pai_item_lh.dmi create mode 100644 icons/mob/pai_item_rh.dmi create mode 100644 icons/mob/pets_held_lh.dmi create mode 100644 icons/mob/pets_held_rh.dmi diff --git a/code/modules/mob/living/inhand_holder.dm b/code/modules/mob/living/inhand_holder.dm new file mode 100644 index 0000000000..6a2308b621 --- /dev/null +++ b/code/modules/mob/living/inhand_holder.dm @@ -0,0 +1,84 @@ +//Generic system for picking up mobs. +//Currently works for head and hands. +/obj/item/clothing/head/mob_holder + name = "bugged mob" + desc = "Yell at coderbrush." + icon = null + icon_state = "" + flags_1 = DROPDEL_1 + 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) + . = ..() + can_head = _can_head + if(head_icon) + alternate_worn_icon = head_icon + 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 + deposit(M) + +/obj/item/clothing/head/mob_holder/Destroy() + destroying = TRUE + if(held_mob) + release(FALSE) + return ..() + +/obj/item/clothing/head/mob_holder/proc/deposit(mob/living/L) + if(!istype(L)) + return FALSE + L.setDir(SOUTH) + update_visuals(L) + held_mob = L + L.forceMove(src) + name = L.name + desc = L.desc + return TRUE + +/obj/item/clothing/head/mob_holder/proc/update_visuals(mob/living/L) + appearance = L.appearance + +/obj/item/clothing/head/mob_holder/proc/release(del_on_release = TRUE) + if(!held_mob) + if(del_on_release && !destroying) + qdel(src) + return FALSE + if(isliving(loc)) + var/mob/living/L = loc + to_chat(L, "[held_mob] wriggles free!") + L.dropItemToGround(src) + held_mob.forceMove(get_turf(src)) + held_mob.reset_perspective() + held_mob.setDir(SOUTH) + held_mob.visible_message("[held_mob] uncurls!") + held_mob = null + if(del_on_release && !destroying) + qdel(src) + return TRUE + +/obj/item/clothing/head/mob_holder/relaymove() + release() + +/obj/item/clothing/head/mob_holder/container_resist() + release() + +/obj/item/clothing/head/mob_holder/drone/deposit(mob/living/L) + . = ..() + if(!isdrone(L)) + qdel(src) + name = "drone (hiding)" + desc = "This drone is scared and has curled up into a ball!" + +/obj/item/clothing/head/mob_holder/drone/update_visuals(mob/living/L) + var/mob/living/simple_animal/drone/D = L + if(!D) + return ..() + icon = 'icons/mob/drone.dmi' + icon_state = "[D.visualAppearence]_hat" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9b47a8c66b..467a7524b8 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1064,3 +1064,34 @@ /mob/living/onTransitZ(old_z,new_z) ..() update_z(new_z) +<<<<<<< HEAD +======= + +/mob/living/MouseDrop(mob/over) + . = ..() + 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 + +/mob/living/proc/mob_try_pickup(mob/living/user) + if(!ishuman(user)) + return + if(user.get_active_held_item()) + to_chat(user, "Your hands are full!") + return FALSE + if(buckled) + to_chat(user, "[src] is buckled to something!") + return FALSE + user.visible_message("[user] starts trying to scoop up [src]!") + if(!do_after(user, 20, target = src)) + return FALSE + mob_pickup(user) + return TRUE +>>>>>>> e3d69de... [READY]Adds picking up corgis and pAIs! (#33442) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 6990262409..904e9b9c21 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -81,4 +81,5 @@ var/list/obj/effect/proc_holder/abilities = list() - var/registered_z \ No newline at end of file + var/registered_z + var/can_be_held = FALSE //whether this can be picked up and held. diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 924ab615b8..91541fccf1 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -11,6 +11,7 @@ health = 500 maxHealth = 500 layer = BELOW_MOB_LAYER + can_be_held = TRUE var/network = "SS13" var/obj/machinery/camera/current = null @@ -57,7 +58,10 @@ var/canholo = TRUE var/obj/item/card/id/access_card = null var/chassis = "repairbot" - var/list/possible_chassis = list("cat", "mouse", "monkey", "corgi", "fox", "repairbot", "rabbit") + var/list/possible_chassis = list("cat" = TRUE, "mouse" = TRUE, "monkey" = TRUE, "corgi" = FALSE, "fox" = FALSE, "repairbot" = TRUE, "rabbit" = 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 8a3121166e..dad7d710e7 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -68,9 +68,12 @@ lay_down() /mob/living/silicon/pai/proc/choose_chassis() + if(!isturf(loc) && loc != card) + to_chat(src, "You can not change your holochassis composite while not on the ground or in your card!") + return FALSE var/choice = input(src, "What would you like to use for your holochassis composite?") as null|anything in possible_chassis if(!choice) - return 0 + return FALSE chassis = choice icon_state = "[chassis]" if(resting) @@ -103,3 +106,16 @@ /mob/living/silicon/pai/movement_delay() . = ..() . += 1 //A bit slower than humans, so they're easier to smash + +/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!") + return FALSE + return ..() diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index adc88c5633..4330b58411 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -32,6 +32,7 @@ var/obj/item/inventory_back var/nofur = 0 //Corgis that have risen past the material plane of existence. gold_core_spawnable = FRIENDLY_SPAWN + can_be_held = TRUE /mob/living/simple_animal/pet/dog/pug name = "\improper pug" @@ -121,7 +122,12 @@ ..() 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(usr.stat) 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 ea159a5749..5266f44e98 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -49,6 +49,7 @@ dextrous = TRUE dextrous_hud_type = /datum/hud/dextrous/drone lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + can_be_held = TRUE var/staticChoice = "static" var/list/staticChoices = list("static", "blank", "letter", "animal") var/picked = FALSE //Have we picked our visual appearence (+ colour if applicable) @@ -67,7 +68,6 @@ var/seeStatic = 1 //Whether we see static instead of mobs var/visualAppearence = MAINTDRONE //What we appear as var/hacked = FALSE //If we have laws to destroy the station - var/can_be_held = TRUE //if assholes can pick us up var/flavortext = \ "\nDO NOT INTERFERE WITH THE ROUND AS A DRONE OR YOU WILL BE DRONE BANNED\n"+\ "Drones are a ghost role that are allowed to fix the station and build things. Interfering with the round as a drone is against the rules.\n"+\ diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index 20e25e3a18..0ef3250e74 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -4,8 +4,6 @@ //DRONES AS ITEMS// /////////////////// //Drone shells -//Drones as hats - //DRONE SHELL /obj/item/drone_shell @@ -62,45 +60,3 @@ D.admin_spawned = admin_spawned D.key = user.key qdel(src) - - -//DRONE HOLDER -/obj/item/clothing/head/drone_holder//Only exists in someones hand.or on their head - name = "drone (hiding)" - desc = "This drone is scared and has curled up into a ball." - icon = 'icons/mob/drone.dmi' - icon_state = "drone_maint_hat" - var/mob/living/simple_animal/drone/drone //stored drone - -/obj/item/clothing/head/drone_holder/proc/uncurl() - if(!drone) - return - - if(isliving(loc)) - var/mob/living/L = loc - to_chat(L, "[drone] is trying to escape!") - if(!do_after(drone, 50, target = L)) - return - L.dropItemToGround(src) - - contents -= drone - drone.forceMove(drop_location()) - drone.reset_perspective() - drone.setDir(SOUTH )//Looks better - drone.visible_message("[drone] uncurls!") - drone = null - qdel(src) - - -/obj/item/clothing/head/drone_holder/relaymove() - uncurl() - -/obj/item/clothing/head/drone_holder/container_resist(mob/living/user) - uncurl() - - -/obj/item/clothing/head/drone_holder/proc/updateVisualAppearence(mob/living/simple_animal/drone/D) - if(!D) - return - icon_state = "[D.visualAppearence]_hat" - . = icon_state diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index df67c720b4..6d87563ae9 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -29,7 +29,6 @@ if("Nothing") return - /mob/living/simple_animal/drone/attack_hand(mob/user) if(ishuman(user)) if(stat == DEAD || status_flags & GODMODE || !can_be_held) @@ -49,11 +48,8 @@ return to_chat(user, "You pick [src] up.") drop_all_held_items() - var/obj/item/clothing/head/drone_holder/DH = new /obj/item/clothing/head/drone_holder(src) - DH.updateVisualAppearence(src) - DH.drone = src + var/obj/item/clothing/head/mob_holder/drone/DH = new(get_turf(src), src) user.put_in_hands(DH) - forceMove(DH) /mob/living/simple_animal/drone/proc/try_reactivate(mob/living/user) var/mob/dead/observer/G = get_ghost() diff --git a/icons/mob/monkey_held.dmi b/icons/mob/monkey_held.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6a9eb8aac78341c1507dd4648f7bc8041b4a07b4 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/icons/mob/mouse_held.dmi b/icons/mob/mouse_held.dmi new file mode 100644 index 0000000000000000000000000000000000000000..92a8c03bfb2d5f36c673596007c1934614baf3bf GIT binary patch literal 1240 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 literal 0 HcmV?d00001 diff --git a/icons/mob/pai_item_rh.dmi b/icons/mob/pai_item_rh.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7e0919afbd0aed742c549604a310a3057be6c98e GIT binary patch literal 1209 zcmV;q1V;ObP)004jp0{{R3yS^dQ&T!RIu;fd85tSCz`#O6QYR-T0GTrY|1)D@VLd%PNl8gnQ&TG| zH2|(7d3kv=003iSV;>(MI5;>hEiEW0C>R(RCv^ZGLf7s90004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6# za*U0*I5Sc+(=$pSoZ^zil2jm5sVKD|F|#NszeI_PGbOXA7^IPlGp#5wHx>Hor1K(tkwjPK`TbiKSggYah8sc*=JO^&f%agV$ z+paC$X=m!HG+|{`-|yH})?)wZvgm}|yN}D2d3n;7W!ttUby%>pf{&3x4qx|DbdHwo z7~vA^ROc78gawDt8VVFr58tF{9Sw!hK0#IZdXUuzGXxJ&es;71J*aJdE!+dmbB0;N zIrj}hcDTO7g4L+`C>WCPUd4?vFK^~UlpkY1>{p<#MTCY2{+<3UAqavX2!bF8!Us4x z@Xu&cLz4if_@OyhT4)+u1zC2%VxwU0a|{adqM4FA(l0h=p5gihc>^y|EH~#CY@h^O zSq(IXb2d?+-8%B>7+-& zrWilRC=}=55L<2q{=UAKeIIGyTPbF)rNpU&c+Bkv66|yrDJXj1Qmj>g1h3nmeUHJw zHmUt-XN2@F#SZri2Hi-eO^ve$-FvQi!*XL}=o}LSK@bE%5X66n@RTaVgd^Ky>4ok! zB7+I<#bOGDZI8wrzw0rAQm%xs?ePdLW%Q(I@RREf!?jO92w%NSF#L#Yk7noqGne&G zXJ>}URTmy{?ePr9HLtsJRW+;Z}wIHT_lAy%hCDtv*-;T%U zn=KOHPLG!Ng4s@QT7o1&8}D0za_-Z^T>|4bI4#NvZF?Cy!@^$Wo!d~lN-M`vj~U`N zcqtgw-rgy-cC9k@+I0kNSIiJMiRlW~*!IG|`YL`o1=(DI86|if5H~?wdo0NZUJ2$z zr{q{PN@|ZwmLjO(p9z8>2!bGpm-FtQ$Y)(jdRY8*Pin!)OMblf`(u0 zPpZ_ClgsdY3O%EJTfcw=&qnaPMQr}TA@~)1hTOjhYXncRfL*JZfeAHAnvEGSi=H zJ%GZWK7G1zSi#p~Mrm#a3ri^_E)4#;1T2!xgdLH8ZhJ*bv#gC rp#6Yl*0B~9E5=wxpNkp`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` literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index cebbabd8da..629bc83ffc 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1734,6 +1734,7 @@ #include "code\modules\mob\living\damage_procs.dm" #include "code\modules\mob\living\death.dm" #include "code\modules\mob\living\emote.dm" +#include "code\modules\mob\living\inhand_holder.dm" #include "code\modules\mob\living\life.dm" #include "code\modules\mob\living\living.dm" #include "code\modules\mob\living\living_defense.dm"