From e0fdbb4a52857a53bd7ecd07aa3b28553ecb2f08 Mon Sep 17 00:00:00 2001 From: faaaay <69845288+faaaay@users.noreply.github.com> Date: Fri, 20 Jan 2023 11:40:50 +0000 Subject: [PATCH 1/4] loaded dice --- code/modules/games/dice.dm | 46 +++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/code/modules/games/dice.dm b/code/modules/games/dice.dm index 9b796995c5..024d7b70e0 100644 --- a/code/modules/games/dice.dm +++ b/code/modules/games/dice.dm @@ -6,11 +6,48 @@ w_class = ITEMSIZE_TINY var/sides = 6 var/result = 6 + var/loaded = null //Set to an integer when the die is loaded + var/cheater = FALSE //TRUE if the die is able to be weighted by hand + var/tamper_proof = FALSE //Set to TRUE if the die needs to be unable to be weighted, such as for events attack_verb = list("diced") /obj/item/weapon/dice/New() icon_state = "[name][rand(1,sides)]" +/obj/item/weapon/dice/attackby(obj/item/weapon/W, mob/user) + ..() + if(istype(W, /obj/item/weapon/weldingtool) || istype(W, /obj/item/weapon/flame/lighter)) + if(cheater) + to_chat(user, "Wait, this [name] is already weighted!") + else if(tamper_proof) + to_chat(user, "This [name] is proofed against tampering!") + else + var/to_weight = input("What should the [name] be weighted towards? You can't undo this later, only change the number!","Set the desired result") as null|num + if(isnull(to_weight) || (to_weight < 1) || (to_weight > sides)) //You must input a number higher than 0 and no greater than the number of sides + return 0 + else + to_chat(user, "You partially melt the [name], weighting it towards [to_weight]...") + desc = "[initial(desc)] It looks a little misshapen, somehow..." + loaded = to_weight + +/obj/item/weapon/dice/AltClick(mob/user) + ..() + if(cheater) + if(!loaded) + var/to_weight = input("What should the [name] be weighted towards?","Set the desired result") as null|num + if(isnull(to_weight) || (to_weight < 1) || (to_weight > sides) ) //You must input a number higher than 0 and no greater than the number of sides + return 0 + else + to_chat(user, "You sneakily set the [name] to land on [to_weight]...") + loaded = to_weight + else + to_chat(user, "You set the [name] to roll randomly again.") + loaded = null + +/obj/item/weapon/dice/loaded + description_info = "This is a loaded die! To change the number it's weighted to, alt-click it. To put it back to normal, alt-click it again." + cheater = TRUE + /obj/item/weapon/dice/d4 name = "d4" desc = "A dice with four sides." @@ -58,6 +95,11 @@ /obj/item/weapon/dice/proc/rollDice(mob/user as mob, var/silent = 0) result = rand(1, sides) + if(loaded) + if(cheater) + result = loaded + else if(prob(75)) //makeshift weighted dice don't always work + result = loaded icon_state = "[name][result]" if(!silent) @@ -158,4 +200,6 @@ /obj/item/weapon/storage/dicecup/loaded/New() ..() for(var/i = 1 to 5) - new /obj/item/weapon/dice( src ) \ No newline at end of file + new /obj/item/weapon/dice( src ) + +//Loaded d6 From f27f7ea770300599636fbb9c218af55cd8cc2a8d Mon Sep 17 00:00:00 2001 From: faaaay <69845288+faaaay@users.noreply.github.com> Date: Fri, 20 Jan 2023 11:41:04 +0000 Subject: [PATCH 2/4] vending machines --- code/modules/economy/vending_machines_vr.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index 58d01d002e..cfc09e2e3e 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -1165,7 +1165,8 @@ /obj/item/weapon/deck/schnapsen = 100, /obj/item/weapon/deck/egy = 100) premium = list(/obj/item/toy/bosunwhistle = 1) - contraband = list(/obj/item/toy/katana = 1) + contraband = list(/obj/item/toy/katana = 1, + /obj/item/weapon/dice/loaded = 5) /obj/machinery/vending/loadout/overwear name = "Big D's Best" From 4f2c9e371f4d0da4d191a06f1bdec53163503b13 Mon Sep 17 00:00:00 2001 From: faaaay <69845288+faaaay@users.noreply.github.com> Date: Fri, 20 Jan 2023 11:41:11 +0000 Subject: [PATCH 3/4] custom item --- .../loadout/loadout_fluffitems_vr.dm | 6 ++++++ .../vore/fluffstuff/custom_items_vr.dm | 14 ++++++++++++++ icons/obj/dice.dmi | Bin 3130 -> 3435 bytes 3 files changed, 20 insertions(+) diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index 21675dc006..cb27f19b8a 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -1463,6 +1463,12 @@ ckeywhitelist = list("yecrowbarman") character_name = list("Lemon Yellow", "Lemon Gettler Yellow", "Lemon Lee Yellow", "Lemon Jade Yellow") //different sleeves, same char +/datum/gear/fluff/cephyra_d6 + path = /obj/item/weapon/dice/loaded/ceph + display_name = "engraved d6" + ckeywhitelist = list("yeehawguvnah") + character_name = list("Cephyra") + // Z CKEYS /datum/gear/fluff/tachika_medal path = /obj/item/clothing/accessory/medal/conduct diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index ba24dccabd..ee91f280cb 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1556,3 +1556,17 @@ playsound(src, 'sound/items/drop/plushie.ogg', 25, 0) visible_message("[src] says, \"[pokephrase]\"") last_message = world.time + +//Yeehawguvnah - Cephyra + +/obj/item/weapon/dice/loaded/ceph + name = "engraved d6" + desc = "A die with six sides. It's fairly well-made, made of an unclear black material with silver pips. If you were to touch it, your hands tingle slightly as though from static. On closer inspection, it's finely engraved with curving, fractal patterns." + icon_state = "ceph_d66" + +/obj/item/weapon/dice/loaded/ceph/rollDice(mob/user, silent) + ..() + icon_state = "ceph_d6[result]" + +/obj/item/weapon/dice/loaded/ceph/New() + icon_state = "ceph_d6[rand(1,sides)]" diff --git a/icons/obj/dice.dmi b/icons/obj/dice.dmi index 17a3c64cd4163fba6faeeb4f102f22071d6aec7d..c017e2d082dbd2ddeeaf27ce92bc05feb190ce1f 100644 GIT binary patch delta 3303 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 delta 2995 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 Date: Fri, 20 Jan 2023 11:52:28 +0000 Subject: [PATCH 4/4] add prob() to cheater dice --- code/modules/games/dice.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/games/dice.dm b/code/modules/games/dice.dm index 024d7b70e0..b91fb73d1e 100644 --- a/code/modules/games/dice.dm +++ b/code/modules/games/dice.dm @@ -97,7 +97,8 @@ result = rand(1, sides) if(loaded) if(cheater) - result = loaded + if(prob(90)) + result = loaded else if(prob(75)) //makeshift weighted dice don't always work result = loaded icon_state = "[name][result]" @@ -201,5 +202,3 @@ ..() for(var/i = 1 to 5) new /obj/item/weapon/dice( src ) - -//Loaded d6