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