mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-28 23:51:17 +01:00
Stacking Die (#12929)
This commit is contained in:
@@ -1,77 +1,96 @@
|
||||
/obj/item/dice
|
||||
/obj/item/stack/dice
|
||||
name = "d6"
|
||||
desc = "A dice with six sides."
|
||||
icon = 'icons/obj/dice.dmi'
|
||||
icon_state = "d66"
|
||||
w_class = ITEMSIZE_TINY
|
||||
attack_verb = list("diced")
|
||||
max_amount = 6
|
||||
|
||||
var/base_icon = "d6"
|
||||
var/side_mult = 1 // Used for d100s.
|
||||
var/sides = 6
|
||||
var/weighted = FALSE //if this dice can cheat or something
|
||||
var/weight_roll = 0 // chance of the dice falling on its favored number
|
||||
var/favored_number = 1 //related to the var above
|
||||
var/weighted_value = 70 //what is the chance of falling on the favored number
|
||||
attack_verb = list("diced")
|
||||
|
||||
/obj/item/dice/Initialize()
|
||||
/obj/item/stack/dice/Initialize()
|
||||
. = ..()
|
||||
icon_state = "[base_icon][rand(1,sides)]"
|
||||
|
||||
/obj/item/dice/update_icon(var/result)
|
||||
/obj/item/stack/dice/update_icon(var/result)
|
||||
check_maptext(SMALL_FONTS(7, get_amount()))
|
||||
if(result)
|
||||
icon_state = "[base_icon][result]"
|
||||
|
||||
/obj/item/dice/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
var/result
|
||||
if((weighted) && (prob(weighted_value)))
|
||||
result = favored_number
|
||||
/obj/item/stack/dice/attack_self(mob/user)
|
||||
if(amount > 1)
|
||||
user.visible_message("<b>[user]</b> shakes the die in their hand...", SPAN_NOTICE("You shake the die in your hands..."))
|
||||
else
|
||||
result = rand(1, sides)
|
||||
user.visible_message("<b>[user]</b> raises the dice to their mouth and blows on it...", SPAN_NOTICE("You raise the dice to your mouth and blow on it..."))
|
||||
|
||||
var/comment = ""
|
||||
if(sides == 20 && result == 20)
|
||||
comment = "Nat 20!"
|
||||
else if(sides == 20 && result == 1)
|
||||
comment = "Ouch, bad luck."
|
||||
update_icon(result)
|
||||
src.visible_message("<span class='notice'>\The [name] lands on [result * side_mult]. [comment]</span>")
|
||||
/obj/item/stack/dice/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
|
||||
/obj/item/dice/d4
|
||||
var/total_result = 0
|
||||
var/list/results = list()
|
||||
for(var/i = 1 to amount)
|
||||
if(weight_roll && prob(weight_roll))
|
||||
message_admins("hit weight roll")
|
||||
results += favored_number
|
||||
else
|
||||
results += rand(1, sides)
|
||||
total_result += results[i]
|
||||
|
||||
if(amount > 1)
|
||||
visible_message(SPAN_NOTICE("The die rolls, revealing... <b>[total_result * side_mult]</b>! ([english_list(results, "", " + ", " + ", "")])"))
|
||||
update_icon(results[length(results)])
|
||||
else
|
||||
visible_message(SPAN_NOTICE("\The [name] lands on <b>[total_result * side_mult]</b>.[get_comment(total_result)]"))
|
||||
update_icon(total_result)
|
||||
|
||||
/obj/item/stack/dice/proc/get_comment(var/result)
|
||||
if(sides == result)
|
||||
return " Nat [sides * side_mult]!"
|
||||
if(result == 1)
|
||||
return " Ouch, bad luck."
|
||||
return ""
|
||||
|
||||
/obj/item/stack/dice/d4
|
||||
name = "d4"
|
||||
desc = "A dice with four sides."
|
||||
icon_state = "d44"
|
||||
sides = 4
|
||||
base_icon = "d4"
|
||||
|
||||
/obj/item/dice/d8
|
||||
/obj/item/stack/dice/d8
|
||||
name = "d8"
|
||||
desc = "A dice with eight sides."
|
||||
icon_state = "d88"
|
||||
sides = 8
|
||||
base_icon = "d8"
|
||||
|
||||
/obj/item/dice/d10
|
||||
/obj/item/stack/dice/d10
|
||||
name = "d10"
|
||||
desc = "A dice with ten sides."
|
||||
icon_state = "d1010"
|
||||
sides = 10
|
||||
base_icon = "d10"
|
||||
|
||||
/obj/item/dice/d12
|
||||
/obj/item/stack/dice/d12
|
||||
name = "d12"
|
||||
desc = "A dice with twelve sides."
|
||||
icon_state = "d1212"
|
||||
sides = 12
|
||||
base_icon = "d12"
|
||||
|
||||
/obj/item/dice/d20
|
||||
/obj/item/stack/dice/d20
|
||||
name = "d20"
|
||||
desc = "A dice with twenty sides."
|
||||
icon_state = "d2020"
|
||||
sides = 20
|
||||
base_icon = "d20"
|
||||
|
||||
/obj/item/dice/d100
|
||||
/obj/item/stack/dice/d100
|
||||
name = "d100"
|
||||
desc = "A dice with ten sides. This one is for the tens digit."
|
||||
icon_state = "d10010"
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
item_state = "pill_canister"
|
||||
center_of_mass = list("x" = 16,"y" = 12)
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/reagent_containers/pill,/obj/item/dice,/obj/item/paper)
|
||||
can_hold = list(/obj/item/reagent_containers/pill,/obj/item/stack/dice,/obj/item/paper)
|
||||
allow_quick_gather = 1
|
||||
use_to_pickup = 1
|
||||
use_sound = 'sound/items/storage/pillbottle.ogg'
|
||||
@@ -286,4 +286,4 @@ obj/item/storage/pill_bottle/butazoline
|
||||
/obj/item/storage/pill_bottle/parvosil
|
||||
name = "bottle of 2u Parvosil pills"
|
||||
desc = "Contains pills used to treat anxiety disorders such as phobias and social anxiety."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/parvosil = 3)
|
||||
starts_with = list(/obj/item/reagent_containers/pill/parvosil = 3)
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
drop_sound = 'sound/items/drop/hat.ogg'
|
||||
pickup_sound = 'sound/items/pickup/hat.ogg'
|
||||
starts_with = list(
|
||||
/obj/item/dice = 1,
|
||||
/obj/item/dice/d20 = 1
|
||||
/obj/item/stack/dice = 12,
|
||||
/obj/item/stack/dice/d20 = 4
|
||||
)
|
||||
|
||||
/obj/item/storage/pill_bottle/dice/gaming
|
||||
@@ -16,11 +16,11 @@
|
||||
desc = "It's a small container with gaming dice inside."
|
||||
icon_state = "magicdicebag"
|
||||
starts_with = list(
|
||||
/obj/item/dice/d4 = 1,
|
||||
/obj/item/dice/d8 = 1,
|
||||
/obj/item/dice/d10 = 1,
|
||||
/obj/item/dice/d12 = 1,
|
||||
/obj/item/dice/d100 = 1
|
||||
/obj/item/stack/dice/d4 = 4,
|
||||
/obj/item/stack/dice/d8 = 4,
|
||||
/obj/item/stack/dice/d10 = 4,
|
||||
/obj/item/stack/dice/d12 = 4,
|
||||
/obj/item/stack/dice/d100 = 4
|
||||
)
|
||||
|
||||
/obj/item/storage/card
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/obj/item/seeds,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/coin,
|
||||
/obj/item/dice,
|
||||
/obj/item/stack/dice,
|
||||
/obj/item/disk,
|
||||
/obj/item/implanter,
|
||||
/obj/item/flame/lighter,
|
||||
@@ -228,4 +228,4 @@
|
||||
if(!plastic_film)
|
||||
plastic_film = image('icons/mob/lanyard_overlays.dmi', icon_state = "plasticfilm")
|
||||
I.add_overlay(plastic_film)
|
||||
return I
|
||||
return I
|
||||
|
||||
Reference in New Issue
Block a user