From e16db54c678ee66d2579c2f370c7bc825c82e685 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 5 Feb 2018 04:42:13 -0600 Subject: [PATCH] [MIRROR] Bartender Drink Sliding: Intrinsic to Extrinsic (#5297) * Bartender Drink Sliding: Intrinsic to Extrinsic * Update packs.dm --- code/game/objects/items/manuals.dm | 57 +++++++++++++++++++ code/modules/cargo/packs.dm | 3 +- code/modules/jobs/job_types/cargo_service.dm | 2 +- code/modules/reagents/reagent_containers.dm | 6 +- icons/mob/actions.dmi | Bin 2412 -> 3210 bytes 5 files changed, 65 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm index 9d47efe862..d1d9e16b4c 100644 --- a/code/game/objects/items/manuals.dm +++ b/code/game/objects/items/manuals.dm @@ -957,3 +957,60 @@ author = "Engineering Encyclopedia" title = "Hacking" page_link = "Hacking" + +///Reusable books that grant actions (knowledge is power) +/obj/item/book/action_granting + due_date = 0 // Game time in 1/10th seconds + unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified + var/datum/action/granted_action = null + var/list/remarks = list() //things to read about while learning. + var/pages_to_mastery = 3 //Essentially controls how long a mob must keep the book in his hand to actually successfully learn + +/obj/item/book/action_granting/attack_self(mob/user) + if(!granted_action) + return + var/datum/action/G = new granted_action + for(var/datum/action/A in user.actions) + if(A.type == G.type) + to_chat(user, "You already know all about [G.name].") + qdel(G) + return + to_chat(user, "You start reading about [G.name]...") + for(var/i=1, i<=pages_to_mastery, i++) + if(!turn_page(user)) + to_chat(user, "You stop reading...") + qdel(G) + return + if(do_after(user,50, user)) + to_chat(user, "You feel like you've got a good handle on [G.name]!") + G.Grant(user) + +/obj/item/book/action_granting/proc/turn_page(mob/user) + playsound(user, pick('sound/effects/pageturn1.ogg','sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg'), 30, 1) + if(do_after(user,50, user)) + to_chat(user, "[pick(remarks)]") + return 1 + return 0 + +/obj/item/book/action_granting/drink_fling + name = "Tapper: This One's For You" + desc = "A seminal work on the dying art of booze sliding." + icon_state = "barbook" + granted_action = /datum/action/innate/drink_fling + remarks = list("The trick is keeping a low center of gravity it seems...", "The viscosity of the liquid is important...", "Accounting for crosswinds... really?", "Drag coefficients of various popular drinking glasses...", "What the heck is laminar flow and why does it matter here?", "Greasing the bar seems like it'd be cheating...", "I don't think I'll be working with superfluids...") + +/datum/action/innate/drink_fling + name = "Drink Flinging" + desc = "Toggles your ability to satifyingly throw glasses without spilling them." + button_icon_state = "drinkfling_off" + check_flags = 0 + +/datum/action/innate/drink_fling/Activate() + button_icon_state = "drinkfling_on" + active = TRUE + UpdateButtonIcon() + +/datum/action/innate/drink_fling/Deactivate() + button_icon_state = "drinkfling_off" + active = FALSE + UpdateButtonIcon() \ No newline at end of file diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 2cc619d284..cc2beb3c2a 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1212,7 +1212,8 @@ /obj/item/vending_refill/boozeomat, /obj/item/vending_refill/coffee, /obj/item/vending_refill/coffee, - /obj/item/vending_refill/coffee) + /obj/item/vending_refill/coffee, + /obj/item/book/action_granting/drink_fling) crate_name = "bartending supply crate" /datum/supply_pack/organic/vending/snack diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index 441a88a3bd..ee44a16db5 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -163,7 +163,7 @@ Bartender ears = /obj/item/device/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/bartender suit = /obj/item/clothing/suit/armor/vest - backpack_contents = list(/obj/item/storage/box/beanbag=1) + backpack_contents = list(/obj/item/storage/box/beanbag=1,/obj/item/book/action_granting/drink_fling=1) shoes = /obj/item/clothing/shoes/laceup /* diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 640f828e18..d6213a391b 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -79,7 +79,11 @@ SplashReagents(target, TRUE) /obj/item/reagent_containers/proc/bartender_check(atom/target) - return (target.CanPass(src, get_turf(src)) && thrownby && thrownby.mind && thrownby.mind.assigned_role == "Bartender") + . = FALSE + if(target.CanPass(src, get_turf(src)) && thrownby && thrownby.actions) + for(var/datum/action/innate/drink_fling/D in thrownby.actions) + if(D.active) + return TRUE /obj/item/reagent_containers/proc/SplashReagents(atom/target, thrown = FALSE) if(!reagents || !reagents.total_volume || !spillable) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 3a7b0648fd0f4f03126f69a1af0fba1ba65bc39a..5c2b85dcf67b5b980d00890f15c0b278fc7790c0 100644 GIT binary patch literal 3210 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 literal 2412 zcmV-y36u7TP)V=-0C=2*%DW1~AQ*<>+5aj&lD+h_x)eikNN%AB{!t+@;32vF4uNjP?S0|t z@fzNGf*LjLoO0MAB%YTmi6hwJA@R7A@En{k=j37vL!z@ho4S;agbgV};znXlX63Vg zF8l3hA|EU_(Y}>7T1<4+IR300>p$INm=x5g=?h$QN7-z5JTCwM2$@MlK~#90?Obh4 z9LE`c<~ULrXdE{x7|X$ctKyRqpl$*uVwK_Rz_MleB4a8!k`<%41c{G2vM{Qusy}Kw zKa$!YQHq5tq(rKNWg^R!;ST7uve0p@Eg(>0HjRim(1~)Eq_)$8CR{=e+Fg!R~$S zUUQGMn%&vi*}3$I*j2wR8FbD&;P_2iQaI&c}OZiW2h#8 z&wf7h#cD`GJ(3F07^(=6&iAh%zQkn`N9scO;zW~-4W8PT4 zQ^A;w0CoWQ7631RRmRx5(&xhpLp4M?fV{@W#y_W~8Z+kR=I>BSk2A(Lv=|JfG{s`E z4CUwN9bI4ddiwkOe*|D2z?VwD=RApDWxef zes2&cr74w_m4mf)hmY1bya}Vxm;qqd(=jSWqA36Xh|lN4`uf)}o6E53`N~QN1}UZW z@lpb%G^MJlaLqwv1t?wL;~NnP@CgEzmRE4>_!}rJEVfov zRmDXKe&bgS78Vv;j~#ylOUoBBMc80nx~8%PAG&p#nmHf&<^jm9DFpo|+mOA0Iz? z{`~ovylZrH^v6|IRfApKUDl>|n(^6Zu893WLMwm}1M>6p@Y|l>U}k!HXncIUK9*Y( zjIoWev9bD@>FJ@~o*v}q=Yf#OOc?ZZwDxsk8xav02*K{GOx*tD7G`FqhQ`Lm;*y93 zNSK)#y8X#5?9R%Bfe?i2j1w^v77PXhQd6IU!!ZHI7@zrZ+Ye%lZBR<<1p$NU8Q-=R z|KL>^3_vDcj9e)4#wEV`1pAJ$nf1egEu~e z*X#8Fc>HvXijimvSOqZO-`}5yXWP-5?1TaVC0HTZj#kr0;CnzU_w?iSy&w^h&{5F; z0}MdyXK3=MBni+MNdh#6t`adysY6=F7&D8n-#vM4;r)-_ z-t+FsYYWo0y#D=<-`*3dKN*;}ZxTD`#tBnO9fHi>E+IsggtG7b@R79b#OL>Oxbb

I>hyQfNm5Z z1y_We0;J%IkSZWlzb2CjE|&|8F*Bt!s^eA*-6%i`t_V5fH#IeFO0ZVHb6=71dB5EF z(Hw8M(1ik&WUP!ab5m23qqn!$EF}N{czthgZ@{p9jVFSf_SycMn@G}H0gA)Wk&%&Y zKc>{y)`tB-M}e~h;Gg|x&YTHqBPFG;@x;Q_&eK7Tx~=iVf|LX;p(+n(ZD|R4udBNo zBO@b1BqVU$b^W{au<5(9vAvw}dHwb4*8zk!J^)1kk!<-Q5ulYO5s(0D5|QCIP?k z#n)2k&De5Ky##RuxZQ5J-EP?J_P}|xu$A%oI$rQ9?8{K^O2+b&1a%#=q((t2qaD(95X_TSvY9c|lFhun5)ASaY#))Lzi(0;B( z$jZtLT-)t-m<}8O0JvsnQBzX`yWI`|sHv$5w9CrM#PaeA#LtF;Tv8<7$Km(IF+M*R zho$2Ce3o+(wjG2<*fJ4oKi4AAigMMRK3Vm^>Aa7k;vy_9E~2yJ=V3WyN~uFh#wty~ zLZMG4{M2ti1XP#K1P z`nOMI>$~oqM(d#gl)P3F)*vX!a^Rx_q3@r9gOlKNIu|S!%L8c}o6WYsN$6;xj*{G+ zvVHA*F%@qeqYk~0pgIigx_3JG`mDcPTU(2GKq)<6mhwY-Pip+jmoFdT=N60Qfm9hg zUrY@;GWV+bFO8T(6#-&ni?7iKv>qCW%78YSUzprzenIyMRJ5RqfYw6;Kp&ow5M|?Y z$jyE^T)1%I4_n=TtzuWHT&X9hUV_9V#KQO-N>m_Tg5>a*KR%w6EA<4$1nk(cBXG`1 z(8~BWo9!U5Sphbi?Vvak;_JQi&>Iv*K_1T&tgWr#m6u-$)LnZyC=dy>RSPC8o9QWR z4jXw?bZRybhL)6+?BUUl&1PG$SS$~0HrqjIRP^2rX6|U9j+J}Q>h?bG|Ed4_k5^Y= zs4hN9${`S%iU^Q`M?IVfX)YkfTgRwl@AJkW0<_MAbxQ!?Cn1#a#c(>E3tJhVLoWVL e5}+}(Cg6W>Wk=&2Ud9ao0000