diff --git a/_maps/map_files/coyote_bayou/foxybar.dmm b/_maps/map_files/coyote_bayou/foxybar.dmm
index 13c710032a..d8cdfbe97d 100644
--- a/_maps/map_files/coyote_bayou/foxybar.dmm
+++ b/_maps/map_files/coyote_bayou/foxybar.dmm
@@ -7,7 +7,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"abR" = (
/obj/effect/turf_decal/weather/dirt{
color = "#a98c5d";
@@ -283,7 +283,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"aTn" = (
/obj/structure/chair/stool/retro/backed{
dir = 1
@@ -761,7 +761,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"cRl" = (
/obj/structure/mirror{
layer = 4;
@@ -1116,7 +1116,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"ewn" = (
/obj/effect/turf_decal/stripes/asteroid/line{
dir = 9
@@ -1315,7 +1315,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain2bottom"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"fdf" = (
/obj/effect/overlay/fog/fog2{
plane = -2
@@ -1802,7 +1802,7 @@
/turf/open/indestructible/ground/outside/dirt{
color = "#6D6D6D"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"gVS" = (
/obj/effect/turf_decal/stripes/asteroid/line{
dir = 6
@@ -1834,7 +1834,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain1"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"hcd" = (
/obj/effect/turf_decal/siding/wood{
dir = 4;
@@ -2224,6 +2224,14 @@
},
/turf/open/floor/circuit/telecomms/mainframe,
/area/f13/wasteland/city/newboston/outdoors)
+"iCC" = (
+/obj/effect/overlay/fog/fog2{
+ plane = -2
+ },
+/turf/open/indestructible/ground/outside/dirt{
+ color = "#6D6D6D"
+ },
+/area/f13/wasteland/city/newboston/outdoors)
"iDj" = (
/obj/machinery/telecomms/server/presets/legion,
/turf/open/floor/circuit/telecomms/mainframe,
@@ -2309,7 +2317,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain2"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"iVQ" = (
/obj/effect/turf_decal/siding/wood{
color = "#3B2B1A"
@@ -2694,6 +2702,34 @@
color = "#779999"
},
/area/f13/fb/bar)
+"kRY" = (
+/obj/effect/overlay/fog/fog2{
+ plane = -2
+ },
+/turf/open/indestructible/ground/outside/gravel{
+ color = "#999999"
+ },
+/area/f13/wasteland/city/newboston/outdoors)
+"kUb" = (
+/obj/effect/turf_decal/siding/wood{
+ dir = 8;
+ color = "#3B2B1A"
+ },
+/obj/effect/turf_decal/siding/wood{
+ dir = 1;
+ color = "#3B2B1A"
+ },
+/obj/effect/overlay/fog/fog2{
+ plane = -2;
+ pixel_y = 0
+ },
+/obj/structure/decoration/clock/active{
+ pixel_y = 26
+ },
+/turf/open/floor/wood_common{
+ color = "#99BBBB"
+ },
+/area/f13/fb/bar)
"kWD" = (
/obj/structure/flora/ausbushes/lavendergrass,
/obj/structure/flora/ausbushes/ppflowers,
@@ -2884,7 +2920,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"lXt" = (
/obj/structure/railing{
color = "#A47449";
@@ -2943,7 +2979,7 @@
/turf/open/indestructible/ground/outside/dirt{
color = "#6D6D6D"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"miw" = (
/obj/structure/closet/cabinet/anchored,
/obj/item/clothing/under/fancy_red_formaldress,
@@ -3027,7 +3063,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain1"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"mBj" = (
/obj/effect/turf_decal/weather/dirt{
color = "#a98c5d";
@@ -3081,7 +3117,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain3"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"mSr" = (
/obj/machinery/light/floor{
light_color = "#444499";
@@ -3168,7 +3204,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain1"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"nlI" = (
/obj/effect/turf_decal/weather/dirt{
color = "#a98c5d";
@@ -3372,7 +3408,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain2"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"oKw" = (
/obj/structure/flora/ausbushes/lavendergrass,
/obj/effect/overlay/fog/fog2{
@@ -3505,7 +3541,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"pyN" = (
/obj/structure/table/abductor,
/obj/effect/turf_decal/siding/wood{
@@ -4187,7 +4223,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"rZT" = (
/obj/effect/turf_decal/weather/dirt{
dir = 1
@@ -4271,7 +4307,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain2"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"skf" = (
/obj/structure/holohoop{
dir = 1
@@ -4279,7 +4315,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"soW" = (
/obj/effect/overlay/fog/fog2{
plane = -2
@@ -4559,6 +4595,11 @@
/obj/effect/overlay/fog/fog2{
plane = -2
},
+/obj/machinery/light/floor{
+ light_color = "#444499";
+ color = "#444499";
+ alpha = 10
+ },
/turf/open/floor/carpet/purple,
/area/f13/fb/bar)
"tLM" = (
@@ -4887,7 +4928,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain2top"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"uQE" = (
/mob/living/simple_animal/cow/brahmin/cow{
name = "Big Bess"
@@ -5248,7 +5289,7 @@
/turf/open/indestructible/ground/outside/road{
icon_state = "verticalinnermain0"
},
-/area/f13/fb/park)
+/area/f13/wasteland/city/newboston/outdoors)
"wsB" = (
/obj/effect/decal/cleanable/glitter/white{
color = "#884444"
@@ -5494,6 +5535,11 @@
/obj/effect/overlay/fog/fog2{
plane = -2
},
+/obj/machinery/light/floor{
+ light_color = "#444499";
+ color = "#444499";
+ alpha = 10
+ },
/turf/open/floor/carpet/purple,
/area/f13/fb/bar)
"xyd" = (
@@ -13191,7 +13237,7 @@ bPG
bPG
hHE
bPG
-fDO
+kUb
nyA
bUG
bPG
@@ -13970,19 +14016,19 @@ xNF
xNF
xNF
xWe
-soW
-soW
-soW
-soW
-soW
-soW
-gHF
-soW
-soW
-soW
-soW
-soW
-soW
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+kRY
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
soW
soW
btj
@@ -14227,19 +14273,19 @@ xNF
xNF
xNF
xWe
-soW
-soW
-soW
-soW
-soW
-soW
-gHF
-soW
-soW
-soW
-soW
-soW
-soW
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+kRY
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
soW
soW
btj
@@ -14484,8 +14530,8 @@ xNF
xNF
xNF
xWe
-soW
-soW
+iCC
+iCC
abA
rYw
rYw
@@ -14741,7 +14787,7 @@ xNF
xNF
xNF
xWe
-soW
+iCC
gOe
fcV
lXb
@@ -14998,7 +15044,7 @@ xNF
xNF
xNF
xWe
-soW
+iCC
gOe
rYw
cQG
@@ -15255,8 +15301,8 @@ xNF
xNF
xNF
xWe
-soW
-soW
+iCC
+iCC
oIe
niY
rYw
@@ -15512,8 +15558,8 @@ xNF
xNF
xNF
xWe
-soW
-soW
+iCC
+iCC
rYw
cQG
rYw
@@ -15769,8 +15815,8 @@ xNF
xNF
xNF
xWe
-soW
-soW
+iCC
+iCC
mOD
iVm
fcV
@@ -16026,8 +16072,8 @@ xNF
xNF
xNF
xWe
-soW
-soW
+iCC
+iCC
abA
mAk
fcV
@@ -16283,19 +16329,19 @@ xNF
xNF
xNF
xWe
-soW
-soW
-soW
-soW
-soW
-soW
-soW
-soW
-soW
-soW
-soW
-soW
-soW
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
+iCC
soW
soW
dXY
@@ -16540,19 +16586,19 @@ xNF
xNF
xNF
xWe
-soW
-soW
-soW
+iCC
+iCC
+iCC
mip
mip
mip
-soW
-soW
-soW
+iCC
+iCC
+iCC
mip
mip
mip
-soW
+iCC
soW
hox
hox
diff --git a/_maps/map_files/coyote_bayou/foxybarupper.dmm b/_maps/map_files/coyote_bayou/foxybarupper.dmm
index 23788ae7e8..ecb18ee4a5 100644
--- a/_maps/map_files/coyote_bayou/foxybarupper.dmm
+++ b/_maps/map_files/coyote_bayou/foxybarupper.dmm
@@ -1211,9 +1211,6 @@
},
/area/f13/caves)
"tF" = (
-/obj/machinery/computer/slot_machine{
- pixel_y = 16
- },
/obj/effect/turf_decal/siding/wood{
dir = 1;
color = "#3B2B1A"
@@ -1223,6 +1220,10 @@
dir = 4;
color = "#3B2B1A"
},
+/obj/machinery/computer/slot_machine{
+ pixel_y = 16;
+ density = 0
+ },
/turf/open/floor/carpet/black,
/area/f13/fb/bar)
"tJ" = (
@@ -1540,14 +1541,15 @@
},
/area/f13/fb/bar)
"yx" = (
-/obj/machinery/computer/slot_machine{
- pixel_y = 16
- },
/obj/effect/turf_decal/siding/wood{
dir = 1;
color = "#3B2B1A"
},
/obj/structure/chair/stool/retro/tan,
+/obj/machinery/computer/slot_machine{
+ pixel_y = 16;
+ density = 0
+ },
/turf/open/floor/carpet/black,
/area/f13/fb/bar)
"yH" = (
@@ -1938,10 +1940,6 @@
color = "#3B2B1A"
},
/obj/structure/chair/stool/retro/tan,
-/obj/machinery/computer/slot_machine{
- pixel_y = 16;
- density = 0
- },
/turf/open/floor/carpet/black,
/area/f13/fb/bar)
"Do" = (
diff --git a/code/datums/components/storage/concrete/bags.dm b/code/datums/components/storage/concrete/bags.dm
index 941a593f21..858a4b6ff4 100644
--- a/code/datums/components/storage/concrete/bags.dm
+++ b/code/datums/components/storage/concrete/bags.dm
@@ -38,6 +38,20 @@
. = ..()
can_hold = GLOB.storage_produce_bag_can_hold
+/// dice cup
+/datum/component/storage/concrete/bag/dice_cup
+ max_items = STORAGE_TRASH_BAG_MAX_ITEMS
+ max_w_class = WEIGHT_CLASS_NORMAL
+ max_combined_w_class = STORAGE_TRASH_BAG_MAX_TOTAL_SPACE
+ max_volume = STORAGE_TRASH_BAG_MAX_TOTAL_SPACE
+ display_numerical_stacking = FALSE
+ limited_random_access = FALSE
+ allow_quick_empty = FALSE
+
+/datum/component/storage/concrete/bag/dice_cup/Initialize()
+ . = ..()
+ can_hold = typecacheof(/obj/item/dice)
+
/// Salvage bag
/datum/component/storage/concrete/bag/salvage
max_items = STORAGE_SALVAGE_BAG_MAX_ITEMS
diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index 267be965f0..4233c890d1 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -98,19 +98,19 @@
if(master)
change_master(master)
- RegisterSignal(parent, COMSIG_CONTAINS_STORAGE,PROC_REF(on_check))
- RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED,PROC_REF(check_locked))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW,PROC_REF(signal_show_attempt))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT,PROC_REF(signal_insertion_attempt))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT,PROC_REF(signal_can_insert))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE,PROC_REF(signal_take_type))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE,PROC_REF(signal_fill_type))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE,PROC_REF(set_locked))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE,PROC_REF(signal_take_obj))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY,PROC_REF(signal_quick_empty))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM,PROC_REF(signal_hide_attempt))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL,PROC_REF(close_all))
- RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY,PROC_REF(signal_return_inv))
+ RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, PROC_REF(on_check))
+ RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, PROC_REF(check_locked))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW, PROC_REF(signal_show_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, PROC_REF(signal_insertion_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT, PROC_REF(signal_can_insert))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE, PROC_REF(signal_take_type))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE, PROC_REF(signal_fill_type))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE, PROC_REF(set_locked))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE, PROC_REF(signal_take_obj))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY, PROC_REF(signal_quick_empty))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM, PROC_REF(signal_hide_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL, PROC_REF(close_all))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY, PROC_REF(signal_return_inv))
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(attackby))
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 8a2c36bf2d..2ee2d1d3fc 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -8,7 +8,7 @@
#define SMALL_PRIZE 25
#define BIG_PRIZE 50
#define DEFAULT_JACKPOT 100
-#define SPIN_TIME 60 //As always, deciseconds.
+#define SPIN_TIME 50 //As always, deciseconds.
#define REEL_DEACTIVATE_DELAY 7
#define SEVEN "7"
#define MAX_CASH_STACK_AMOUNT 15000 // This should be the currencies max limit.
@@ -159,7 +159,7 @@
visible_message(span_notice("[user] pulls the lever and the slot machine starts spinning!"))
//we put the sound here, so it plays when you pull the lever
- playsound(src, 'sound/machines/slotmachine.ogg', 100, TRUE, -1)
+ playsound(src, 'sound/machines/slotmachine.ogg.ogg', 100, TRUE, -1)
balance -= SPIN_PRICE
money += SPIN_PRICE
@@ -216,30 +216,31 @@
if(reels[1][2] + reels[2][2] + reels[3][2] + reels[4][2] + reels[5][2] == "[SEVEN][SEVEN][SEVEN][SEVEN][SEVEN]")
visible_message("[src] says, 'JACKPOT! You win [money] coins!'")
- playsound(src, 'sound/machines/jackpot.ogg', 70, TRUE, -1)
+ playsound(src, 'sound/machines/jackpot.ogg', 50, TRUE, -1)
jackpots += 1
- give_money(money)
+ drop_caps(money)
money = 0
else if(linelength == 5)
visible_message("[src] says, 'Big Winner! You win [BIG_PRIZE] coins!'")
- playsound(src, 'sound/machines/bigwin.ogg', 70, TRUE, -1)
- give_money(BIG_PRIZE)
+ playsound(src, 'sound/machines/bigwin.ogg', 50, TRUE, -1)
+ drop_caps(BIG_PRIZE)
else if(linelength == 4)
visible_message("[src] says, 'Winner! You win [SMALL_PRIZE] coins!'")
- playsound(src, 'sound/machines/smallwin.ogg', 70, TRUE, -1)
- give_money(SMALL_PRIZE)
+ playsound(src, 'sound/machines/smallwin.ogg', 50, TRUE, -1)
+ drop_caps(SMALL_PRIZE)
else if(linelength == 3)
to_chat(user, span_notice("You win three free games!"))
- give_money(SPIN_PRICE * 4)
- playsound(src, 'sound/machines/smallwin.ogg', 70, TRUE, -1)
+ drop_caps(SPIN_PRICE * 4)
+ playsound(src, 'sound/machines/smallwin.ogg', 50, TRUE, -1)
money = max(money - SPIN_PRICE * 4, money)
else
to_chat(user, span_warning("No luck!"))
playsound(src, 'sound/machines/fail.ogg', 100, TRUE, -1)
+
/obj/machinery/computer/slot_machine/proc/get_lines()
var/amountthesame
for(var/i = 1, i <= 3, i++)
@@ -258,11 +259,7 @@
return amountthesame
/obj/machinery/computer/slot_machine/proc/give_money(amt)
- var/turf/here = get_turf(src)
- var/obj/item/stack/f13Cash/caps/money = locate(/obj/item/stack/f13Cash/caps) in here
- if(!money)
- money = new /obj/item/stack/f13Cash/caps(here)
- money.amount += amt
+ balance += amt
#undef SEVEN
#undef SPIN_TIME
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index fd2c33bc2d..4e8edb4e58 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -159,7 +159,7 @@
diceroll(thrownby)
. = ..()
-/obj/item/dice/proc/diceroll(mob/user)
+/obj/item/dice/proc/diceroll(mob/user, sayit = TRUE)
result = roll(sides)
if(rigged && result != rigged)
if(prob(clamp(1/(sides - 1) * 100, 25, 80)))
@@ -175,7 +175,11 @@
result = (result - 1)*10
if(special_faces.len == sides)
result = special_faces[result]
- if(user != null) //Dice was rolled in someone's hand
+ if(sayit)
+ say_result(user, fake_result, comment)
+
+/obj/item/dice/proc/say_result(mob/user, fake_result, comment)
+ if(!isnull(user)) //Dice was rolled in someone's hand
user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
span_notice("You throw [src]. It lands on [result]. [comment]"), \
span_italic("You hear [src] rolling, it sounds like a [fake_result]."))
@@ -191,26 +195,61 @@
rigged = result
..(M)
-/obj/item/storage/bag/tray/dice_cup
- name = "tray"
- desc = "A metal tray to lay food on."
+/obj/item/storage/bag/dice_cup
+ name = "dice cup"
+ desc = "Put dice in this cup! Click it to roll them inside the cup! Smack it on a table to dump em out! Gambling is fun!"
icon = 'icons/obj/drinks.dmi'
icon_state = "stone_mug"
- max_items = 2000
+ max_reach = 7
+ component_type = /datum/component/storage/concrete/bag/dice_cup
-/obj/item/storage/bag/tray/dice_cup/ComponentInitialize()
- . = ..()
- var/datum/component/storage/STR = GetComponent(/datum/component/storage)
- STR.max_w_class = WEIGHT_CLASS_NORMAL
- STR.can_hold = typecacheof(/obj/item/dice)
- STR.insert_preposition = "in"
- STR.max_items = max_items
-
-/obj/item/storage/bag/tray/dice_cup/attack(mob/living/M, mob/living/user)
- var/list/oldContents = contents.Copy()
- for(var/obj/item/dice/D in oldContents)
- D.diceroll(user)
+/obj/item/storage/bag/dice_cup/ComponentInitialize()
. = ..()
- // Drop all the things. All of them.
-
-
+ RegisterSignal(src, COMSIG_ITEM_ATTACK_SELF, PROC_REF(rattle_them_bones))
+ RegisterSignal(src, COMSIG_TABLE_CLICKED_WITH_ITEM, PROC_REF(click_on_table))
+
+/obj/item/storage/bag/dice_cup/proc/rattle_them_bones(datum/source, mob/M)
+ if(!M)
+ return
+ if(!LAZYLEN(contents))
+ M.visible_message(
+ span_notice("[M] rattles [M.p_their()] empty dice cup! Pass the dice, please!"),
+ span_italic("You rattle your empty dice cup!"))
+ return
+ M.visible_message(
+ span_notice("[M] rattles [M.p_their()] dice cup! The dice inside clatter!"),
+ span_italic("You rattle your dice cup! The dice inside clatter!"))
+
+/// actually rolls the dice and chunks them out on the table
+/// must be a table, but ya know
+/obj/item/storage/bag/dice_cup/proc/click_on_table(datum/source, obj/structure/table/T, mob/user, params)
+ if(!T || !user)
+ return
+ /// first check if there are any dice on the table
+ var/turf/tabturf = get_turf(T)
+ if(!tabturf)
+ return
+ var/haz_dice = FALSE
+ for(var/obj/item/dice/D in tabturf.contents)
+ if(SEND_SIGNAL(src, COMSIG_TRY_STORAGE_INSERT, D, user, TRUE))
+ haz_dice = TRUE
+ if(haz_dice)
+ user.visible_message(
+ span_notice("[user] gathers up the dice on the table and puts them in [src]."),
+ span_italic("You gather up the dice on the table and put them in [src]."))
+ return TABLE_NO_PLACE // I love this anime, Table No Place
+ /// if there are no dice on the table, dump the dice cup's contents
+ if(!LAZYLEN(contents))
+ return
+ var/list/output_messages = list()
+ for(var/obj/item/dice/D in contents)
+ if(!SEND_SIGNAL(src, COMSIG_TRY_STORAGE_TAKE, D, tabturf, FALSE))
+ continue
+ D.diceroll(user, FALSE)
+ output_messages += "[FOURSPACES]\A [D] rolls: [D.result]"
+ D.pixel_x = rand(-16, 16)
+ D.pixel_y = rand(-16, 16)
+ var/msg_out = span_green("[user] dumps the dice out of \the [src]! And here are the results...
")
+ msg_out += span_notice(output_messages.Join("
"))
+ user.visible_message(msg_out)
+ return TABLE_NO_PLACE
diff --git a/code/modules/fallout/areas/area.dm b/code/modules/fallout/areas/area.dm
index dacf335531..e65cb89d11 100644
--- a/code/modules/fallout/areas/area.dm
+++ b/code/modules/fallout/areas/area.dm
@@ -31,7 +31,6 @@
/datum/looping_sound/ambient/swamp,
/datum/looping_sound/ambient/critters/birds,
/datum/looping_sound/ambient/critters/birds/crow,
- /datum/looping_sound/ambient/critters/frogs,
/datum/looping_sound/ambient/forest,
)
outdoors = 1
@@ -61,9 +60,7 @@
name = "City"
icon_state = "yellow"
ambience_area = list(
- /datum/looping_sound/ambient/city,
/datum/looping_sound/ambient/critters,
-
/datum/looping_sound/ambient/swamp/quiet,
/datum/looping_sound/ambient/critters/birds,
/datum/looping_sound/ambient/critters/birds/crow,
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index baa4bdcecf..e4d9d0c804 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -612,16 +612,7 @@
for(var/i in GLOB.player_list)
if(isliving(i))
- if(istype(humanc.get_item_by_slot(SLOT_WEAR_ID), /obj/item/card/id/selfassign))
- var/obj/item/card/id/selfassign/id = humanc.get_item_by_slot(SLOT_WEAR_ID)
- to_chat(i, span_nicegreen("You hear through the grapevine that [humanc.name] the [id.assignment] may be poking around the bar."))
-
- else if(istype(humanc.get_item_by_slot(SLOT_WEAR_ID), /obj/item/pda))
- var/obj/item/pda/id = humanc.get_item_by_slot(SLOT_WEAR_ID)
- to_chat(i, span_nicegreen("You hear through the grapevine that [humanc.name] the [id.ownjob] may be poking around the bar."))
-
- else
- to_chat(i, span_nicegreen("You hear through the grapevine that [humanc.name] the [rank] may be poking around the bar."))
+ to_chat(i, span_nicegreen("You overhear a mention that [humanc.name] may be poking around the bar."))
/mob/dead/new_player/proc/AddEmploymentContract(mob/living/carbon/human/employee)
//TODO: figure out a way to exclude wizards/nukeops/demons from this.
diff --git a/sound/machines/slotmachine.ogg b/sound/machines/slotmachine.ogg
deleted file mode 100644
index 654d0c3fd6..0000000000
Binary files a/sound/machines/slotmachine.ogg and /dev/null differ
diff --git a/sound/machines/slotmachine.ogg.ogg b/sound/machines/slotmachine.ogg.ogg
new file mode 100644
index 0000000000..fe56820c3d
Binary files /dev/null and b/sound/machines/slotmachine.ogg.ogg differ