From 4a21e3d34d5f80de64a8467d824b44608ffda158 Mon Sep 17 00:00:00 2001 From: Matej Seifert Date: Fri, 8 Sep 2023 14:45:16 +0200 Subject: [PATCH] poker chips --- code/game/objects/items/toys/poker_chips.dm | 185 ++++++++++++++++++ .../objects/items/weapons/storage/boxes.dm | 7 + code/modules/materials/materials/plastic.dm | 3 +- icons/obj/items.dmi | Bin icons/obj/poker.dmi | Bin 0 -> 620 bytes icons/obj/storage.dmi | Bin 64057 -> 64397 bytes maps/cynosure/cynosure-2.dmm | 160 ++++++++------- polaris.dme | 1 + 8 files changed, 274 insertions(+), 82 deletions(-) create mode 100644 code/game/objects/items/toys/poker_chips.dm mode change 100644 => 100755 icons/obj/items.dmi create mode 100644 icons/obj/poker.dmi diff --git a/code/game/objects/items/toys/poker_chips.dm b/code/game/objects/items/toys/poker_chips.dm new file mode 100644 index 0000000000..52f9fd5839 --- /dev/null +++ b/code/game/objects/items/toys/poker_chips.dm @@ -0,0 +1,185 @@ +/obj/item/poker_chip + name = "poker chip" + gender = PLURAL + icon = 'icons/obj/poker.dmi' + icon_state = "chip1" + throw_speed = 3 + throw_range = 10 + w_class = ITEMSIZE_TINY + drop_sound = 'sound/items/drop/ring.ogg' + pickup_sound = 'sound/items/pickup/component.ogg' + var/static/list/chip_worths = list(5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1) + var/worth = 0 + + +/obj/item/poker_chip/Initialize(mapload, new_worth) + . = ..() + if (new_worth) + worth = new_worth + name = "[worth] poker chip" + desc = "A poker chip with a value of [worth]." + update_icon() + + +/obj/item/poker_chip/attackby(obj/item/item, mob/living/user) + if (!istype(item, /obj/item/poker_chip)) + return ..() + var/obj/item/poker_chip/chip = item + chip.worth += worth + chip.update_icon() + user.visible_message( + SPAN_ITALIC("\The [user] combines some poker chips."), + SPAN_ITALIC("You combine some poker chips into a set worth [chip.worth]."), + SPAN_ITALIC("You hear the click of plastic on plastic."), + range = 5 + ) + user.unEquip(src) + user.unEquip(chip) + user.put_in_hands(chip) + qdel(src) + return TRUE + + +/obj/item/poker_chip/update_icon() + cut_overlays() + if (worth in chip_worths) + name = "[worth] poker chip" + icon_state = "chip[worth]" + desc = "A poker chip with a value of [worth]." + return + name = "poker chips" + desc = "Some poker chips with a value of [worth]." + var/sum = worth + var/list/chip_overlays = list() + for (var/chip_worth in chip_worths) + for (var/i = 1 to 5) + if (sum < chip_worth) + break + sum -= chip_worth + var/image/chip_overlay = image('icons/obj/poker.dmi', "chip[i]") + var/matrix/chip_transform = matrix() + chip_transform.Translate(rand(-3, 3), rand(-4, 4)) + chip_transform.Turn(pick(-45, -27.5, 0, 0, 0, 0, 0, 0, 0, 27.5, 45)) + chip_overlay.transform = chip_transform + chip_overlays += chip_overlay + if (!length(chip_overlays)) + chip_overlays += "chip1" + add_overlay(chip_overlays) + + +/obj/item/poker_chip/attack_self(mob/living/user) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if (user.a_intent != I_HELP) + user.visible_message( + SPAN_ITALIC("\The [user] kisses \the [src] for luck!"), + SPAN_ITALIC("You kiss \the [src] for luck!"), + range = 5 + ) + return + RemoveChip(user) + + +/obj/item/poker_chip/MouseDrop(mob/living/user) + if (user != usr || !istype(user, /mob/living/carbon/human)) + return + var/mob/living/carbon/human/human = user + if (!Adjacent(human)) + return + if (human.stat || human.restrained()) + to_chat(user, SPAN_WARNING("You're in no condition to do that.")) + return + if (human.get_active_hand()) + to_chat(user, SPAN_WARNING("Your hand is occupied.")) + return + var/obj/item/organ/external/hand = human.organs_by_name[human.hand ? "l_hand" : "r_hand"] + if (!hand || !hand.is_usable()) + to_chat(user, SPAN_WARNING("Your hand is unusable.")) + return + RemoveChip(user) + + +/obj/item/poker_chip/proc/RemoveChip(mob/living/user) + var/biggest_index = 0 + for (var/i = 1 to length(chip_worths)) + if (worth > chip_worths[i]) + biggest_index = i + break + else if (worth == chip_worths[i]) + biggest_index = i + 1 + break + if (!biggest_index || biggest_index > length(chip_worths)) + return + var/list/available_chips = chip_worths.Copy(biggest_index) + var/amount = input(user, "Available Chips:") as null | anything in available_chips + if (QDELETED(src) || !(amount in available_chips) || !Adjacent(user)) + return + worth -= amount + update_icon() + var/obj/item/poker_chip/chip = new(user.loc, amount) + user.put_in_hands(chip) + user.visible_message( + SPAN_ITALIC("\The [user] picks up a poker chip."), + SPAN_ITALIC("You pick up a poker chip worth [amount]."), + SPAN_ITALIC("You hear the click of plastic on plastic."), + range = 5 + ) + + +/obj/item/poker_chip/c1 + icon_state = "chip1" + worth = 1 + + +/obj/item/poker_chip/c2 + icon_state = "chip2" + worth = 2 + + +/obj/item/poker_chip/c5 + icon_state = "chip5" + worth = 5 + + +/obj/item/poker_chip/c10 + icon_state = "chip10" + worth = 10 + + +/obj/item/poker_chip/c20 + icon_state = "chip20" + worth = 20 + + +/obj/item/poker_chip/c50 + icon_state = "chip50" + worth = 50 + + +/obj/item/poker_chip/c100 + icon_state = "chip100" + worth = 100 + + +/obj/item/poker_chip/c200 + icon_state = "chip200" + worth = 200 + + +/obj/item/poker_chip/c500 + icon_state = "chip500" + worth = 500 + + +/obj/item/poker_chip/c1000 + icon_state = "chip1000" + worth = 1000 + + +/obj/item/poker_chip/c2000 + icon_state = "chip2000" + worth = 2000 + + +/obj/item/poker_chip/c5000 + icon_state = "chip5000" + worth = 5000 diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 329dd9d1a6..7fde234979 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -444,6 +444,13 @@ icon_state = "mousetraps" starts_with = list(/obj/item/assembly/mousetrap = 7) +/obj/item/storage/box/poker_chips + name = "box of poker chips" + desc = "This box contains playing chips." + icon = 'icons/obj/storage.dmi' + icon_state = "poker_chips" + starts_with = list(/obj/item/poker_chip/c5000 = 7) + /obj/item/storage/box/pillbottles name = "box of pill bottles" desc = "It has pictures of pill bottles on its front." diff --git a/code/modules/materials/materials/plastic.dm b/code/modules/materials/materials/plastic.dm index 9d077103a9..e92a19e74c 100644 --- a/code/modules/materials/materials/plastic.dm +++ b/code/modules/materials/materials/plastic.dm @@ -30,7 +30,8 @@ new /datum/stack_recipe("lampshade", /obj/item/lampshade, 1, time = 1, pass_stack_color = TRUE, recycle_material = "[name]"), new /datum/stack_recipe("plastic net", /obj/item/material/fishing_net, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"), new /datum/stack_recipe("plastic fishtank", /obj/item/glass_jar/fish/plastic, 2, time = 30 SECONDS, recycle_material = "[name]"), - new /datum/stack_recipe("reagent tubing", /obj/item/stack/hose, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") + new /datum/stack_recipe("reagent tubing", /obj/item/stack/hose, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("playing chip", /obj/item/poker_chip/c100, 1, 100, 20, pass_stack_color = TRUE, recycle_material = "[name]") ) /datum/material/cardboard diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi old mode 100644 new mode 100755 diff --git a/icons/obj/poker.dmi b/icons/obj/poker.dmi new file mode 100644 index 0000000000000000000000000000000000000000..062793483386c5d12c6b68d53e0b803e4cd576cb GIT binary patch literal 620 zcmV-y0+aoTP)MxY0BC4v{{S=p0L=epGyj>)u9Xzw%wWK!9Bc%Ft^fc40d!JM zQvg8b*k%9#0F8Q7Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1D@x2w zg|Jan84;z*lqgk(2EMZs(U5;~nF7hqW~0Ld-@+aIvuAfg0Hpa22~4li)x zoDwL2;7Xu?3y59AZRQyhpwlGWXFnb-t)ztt(fJ3 z`|8Mi=p}r|1n{V*KuA3UV(OmjCM*D!-?(dGC)xuGawg{hEd9<$M_@&|U=r8$Xiee( zaS8G!imy@pkQ7Bxl$YXR-uHZb;y(H0?u4mNeH3SG5SaCuC7R8J?+^w-N!vBF-`jS_0{X+UvQTd<)LRSn z=?&OkJ2!b%m2=`n)6~>=ZF?s!4-l6iZ=(1b#SckQ{yIN|LX7K4{#*$F0000M?u*uZawasku7Z7}oVm`85+ibgjaV)OoI@p*fm1;=GOU$Sk)nG^ zD7jYik-uIm@S!ST)I3Y+S$6nPb%Z`nATXeuR!` z%T~9W^r3#vD19hp>gvlz=|dT051e-NR6oU(S|s>oc9XF)D$E1mR|`ImWZN_M_v___ z=SXvN+g!aneO^>kH}wLpZ_pW)y0x8AVI8?1bO-k0C}L`VmoTK=$O{$G6(poLv+J1* z+w~HLwCgpd_`sn%K3?(~7SbKbdhR6EgUykIK^-}5aJ@QmLSphG-NAJIZ5&A;x*bR; zCY;RsN#sI z;1$w_-$T@Y86Uo0_{7b-tDC1nd8BhC*vDtiv`Bo?0d>k&jewZsjK)s2UJ2d@0bC(y zoUyurN)XOZkH(iql{x5(fbV-tWNA+lPA~C(1 zcHa66_I)5>jrDIDIuqVN zm-G;`fXQTniiqR7EybzcPd?&ZMEbu+9{J{)JwZP!If8&)PiXy82li`k0hrOVo9rtG zru6J4`_Vc5w@G$Dm>+e^*190)e<|>``SkU!x%=|@@;_GY@T~Y;c2cu51ycNo~ucTGhluX2Glp7>3ed1zda% zjInuYA$egXBxNKG*v+63ev!P0+c%@Hn!vml#tvH-gF_h!#P%Sei8e+TP_50(3MFx= zTjSw4k%AnJ0527nMkNX{%tl6~1(6F^{8yByg%iLP*(DyFIpl zKYK)yGns%cNs@Op0zCk#8-Wid0Vja=MqoseHKmF#*DzoB(NVqZ;=du z$K#Pto;;b7J~%j-SNt*iIslpmAf3~H62U(d3dPgv>+1o;On@4ig34lG@VY$k(RoZw zKT1m9^Xg7?oa&|tAfy5iT>(lXAWT4)B*{P9$X5g4rHx}@1Qt*j1CTEMh~VGf-ycsq zefl(jmo$&d5u-onN^iU`Sx7!WB-w$;ekH;f_=VJoi zIas(sC4ae*`=8P5`k89^05CQE2SF)6M4+!@VsGzNr}49fmPk(xdZ~%V4AJJ%k6!Y`*0D$G?<)pmx^Ye&Cqe=Pm<(-3)ym#leyvwJ% zUoJt=?D~T4b7!#U)tyOc9jCeh0G%Dj)0P?d=zP+7IapRaNo)K>BWh%}`%!L3mC7Bn8{Hb=-ZFJs{i*3Zo}#^SPoP2T+{)j-)GYyB8w>te08}H@1k`Q^&b=kc z7p~~*2B@p6!?9z>^xOgfaP{g{-S?>C?@2U9l->wIeuFuZS;>|aH3H!^|ytFk57XFsyq#q0#{Q$9@ zQMK^TEnfno#?->c0+%d!u`AvWUdm?><|i2Z((rDWbirRxC=;-6-#$IX0nh+sV^f{X zKA#T&;C8#?$KqUly--UElCR<8zuw4DRv*19#?`*J zg8qtuE3GxRbjrP|u7FY@^u*^kDgchTmM|7bex{OX2QFDK3XBDe9gC5z`M*#m;P8`% znBjB*L-rZCTrOCxRz#yw1cN~wZaAE{J~IT*KR%3~54XLiN7@u@>RkYt0=v=-6a(9~ z^^Dtty4LuArj?KS`Vck$CyUXPt-=2Z8vLK6y{0TnDu=By_^-L8v*c^f3r(ZG1NCPv z^>e7_|1YbqU$`=A5eo+a2@{}8G^p4R>zdxNV+X8OYvQ`gm1vby1#_rv_F)=ZL z|Abb5Ri#!DS-F1{%7oWmz|#l0)l#+e+uGV< z`oBr^ZI@F2{SEy$il|QrA(`0B{C{Br#M%M*j0bQy9J-#9WJl8gsOR(>jdSsKZ2vrP z=gysY`mdg!0v4yJUj$}nXQ3YOCu;glV>bZ+cbebabXh`3`JwFpR|fw=uKcIw#EBDs z#keg|kkJ4P4-Z@1Zny4c9G}mZ*PkQ0vWDnN=Ibv<{uMvgUTGk8&OG%u&)vJ90~tp0 zN50WskK@8yr5Z@5K?|9oBuac`xho4pXq=M-o;1% zV)I4d$}PX4KfKxX1(yasHu@0=AzOre*Z$YL762(8Thag!rR^A%qZ381O5T!mbcQ2qA=!vVaDF5JCtsAv6Gl5JHF^384WX dgb+eZ$Pc}M?O>A^+pPcq002ovPDHLkV1nnaFI4~l delta 2796 zcmV_XD}~1CS(t26|LjbVOxyV{&P5bZKvH004NLotn*V+%^!$&-POY$+2k> zJ8{vAFNK35honXO0K$lz6{kyalp(cV<>`Cy?pm(B=3jv?Ht?GvIULTH{I>c1(;uI| zHg{h>U+&nlXlibokH5UXyto%%LUY@ExW2pyEPW^sf8;`io7?7pO{e=emls|vH@D5z z<;BKm;D_H&jCcU~GuEk2{oGNXt6(1~XRdRj#E6_=BbEyR=TJ#y;8YNe3~QxSr08A} zO0Ly>H3iAN?)q>9>+4ju+{d#%f zInvzRHdpUXKQF4On|cA)H|UH?-P+Emu#Q|0x&wQ06fw1bOBm8_A1`?g3+awzJ$I7o!RAQ9ppKk2xLzGOAu;)p?qIt9HjX3^-3}xa z6HexRB_Q0q5D=Crjrlte2@V`|>Gw>dCd{E0ETnr3YN+l7yUtlx(GctPpqe^@J0znVSO(_OhwrGZ zqYPKJts|f~Tf%L<5AVdav6Iqo$3}@JF44uy8j8NeIH0zWBp4*XTlrk zk{)6fFquqH5pi6%r8w35$w$14NdNc9BVVrB6ZCH-M-Z^<39Vo1z<%v505f`all>yV zl%CyWKRT!XHp%XMn19=R`g+&geffO(AJOOIcN^Mi`LjF)R^S2@nzNMUYz=?@Vc4)? z{(cK>8u7d55D0|--`?GYHg$$^0RKmA?bk4~t`5pdnHB;gI_jXKXN55~7X^E zBx0Tmy!3La~0CofT+6J7H zB-swYGo)XRaz|1LKvRrcl=ktiWkf`#S5_E$KGQ78T1kLYlH@8I&L`pQuE{+Y&tvkzOvHconmrY0IoZx6fM^pCLjlS}KqLW9Ns`}QJFW!4j0*KYp_xXIV+wE|K`jaJ$`5muYHhl9NdSP8>>-5C*B>E z@A0)-`2aBaUr_oX*!Z0fFl(bC_w>y4;m+uKe@9Z#E2wkjWrCVu;D{{HGD;Q88i(F0JT zQXOemc+6M)jv((vTIR46A4Cdyi{8e^LUUjIte_R2B~ zfav2>k?--<-T6u_C);uAt7ZVeh3~Iycx*a3>z#6!r^~PwsL}E3ole=)mEHKtN=AHt zqbfinDqnwP(o=^LbQ$p7#rIbJ{j=Q@;9Ohq#{!@j(MdpAA<%YIk~?}i3}6Pjeaz`@ zy(gr2hvu%z;zU0ziD@bM9v{H`^8lXB2hcxo6IE4_sr|lv@8b7ACd03PzUGP8KQ%Rl z!-qaX`Oea$V(S`7|3{iB{>X^YClGovsuh0QaumRs@i%aEU=DHJ3qY%4S0)3QU@chHd_3O$LHMC}9OI`(wEUmV2cjO;?i;9f--x+S zS(Y}BT$%h=SKpfTwdX}lqkaSRch2^CsIUKDRPFER9kPgpgMjrUAWNr5Nr?MqKyyrEq|dQ;?_P|LkK<48vZ~ZF{HuxG^iVfGjE#RU z#(y&zeTCLqW}hDnJ#Pg@ zM@PfkKi)bC%uh0Y224#&K|SG5wDfC-`vCx>b%*0FOGM_Q9RF8V{#^Ob+%yw_zP>(- z!{JD|8^`5xCH2n{SXx0~NqhfJ|8L>f`YR1YUo+46@w;>9HlQ(+-~U2?l}CTQvP5J~ zB>-L`bSa=7WiJ5bCfy!@WGnAf`B%5V^Ym33KQZw!_`#rUv z008FZqSqOio14`wOGM_Q?Ea6Z^)HeDcK_$5)EAr2fZhSOq5mxT9$)D0xoq?)5K)du zcI|&w{<$kB696(EZ{JHqO3F}{Kftm7&43925fN?ZAH{1{{+k0603ssN#R`9OO799W yL_|bn3QPcqh=}qK696J2qCCU|fQX1F5B(1g6;{cJ+|XeF0000