diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm
index 48dfe916303..87e3ac87e67 100644
--- a/code/game/asteroid.dm
+++ b/code/game/asteroid.dm
@@ -88,8 +88,8 @@ var/global/max_secret_rooms = 6
theme = "cavein"
walltypes = list(/turf/simulated/mineral/random/high_chance=1)
floortypes = list(/turf/simulated/floor/plating/airless/asteroid, /turf/simulated/floor/beach/sand)
- treasureitems = list(/obj/mecha/working/ripley/mining=1, /obj/item/weapon/pickaxe/drill/diamonddrill=2,/obj/item/weapon/gun/energy/kinetic_accelerator=1,
- /obj/item/weapon/resonator=1, /obj/item/weapon/pickaxe/drill/jackhammer=5)
+ treasureitems = list(/obj/mecha/working/ripley/mining=1, /obj/item/weapon/pickaxe/drill/diamonddrill=2,/obj/item/weapon/gun/energy/kinetic_accelerator/hyper=1,
+ /obj/item/weapon/resonator/upgraded=1, /obj/item/weapon/pickaxe/drill/jackhammer=5)
fluffitems = list(/obj/effect/decal/cleanable/blood=3,/obj/effect/decal/remains/human=1,/obj/item/clothing/under/overalls=1,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili=1,/obj/item/weapon/tank/oxygen/red=2)
@@ -165,6 +165,10 @@ var/global/max_secret_rooms = 6
valid = 0
continue
+ if(locate(/area/mine/abandoned) in surroundings)
+ valid = 0
+ continue
+
if(locate(/turf/space) in surroundings)
valid = 0
continue
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 4cfad239a4f..096cea11505 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -451,7 +451,7 @@
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.loc = src.loc
+ src.occupant.forceMove(get_turf(src))
src.eject_wait = 0 //If it's still set somehow.
domutcheck(src.occupant) //Waiting until they're out before possible notransform.
src.occupant = null
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 87560b65d20..a7703f651ab 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -584,7 +584,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=3;engineering=5;bluespace=5;materials=4"
frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin."
req_components = list(
- /obj/item/bluespace_crystal = 3,
+ /obj/item/weapon/ore/bluespace_crystal = 3,
/obj/item/weapon/stock_parts/matter_bin = 1)
/obj/item/weapon/circuitboard/teleporter_station
@@ -594,7 +594,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=4;engineering=4;bluespace=4"
frame_desc = "Requires 2 Bluespace Crystals, 2 Capacitors and 1 Console Screen."
req_components = list(
- /obj/item/bluespace_crystal = 2,
+ /obj/item/weapon/ore/bluespace_crystal = 2,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
@@ -605,7 +605,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=4;engineering=3;materials=3;bluespace=4"
frame_desc = "Requires 2 Bluespace Crystals, 1 Capacitor, 1 piece of cable and 1 Console Screen."
req_components = list(
- /obj/item/bluespace_crystal = 2,
+ /obj/item/weapon/ore/bluespace_crystal = 2,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 7e132f64614..0c2894ff960 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -9,41 +9,48 @@ var/datum/announcement/minor/slotmachine_announcement = new(do_log = 0)
density = 1
var/plays = 0
var/working = 0
- var/balance=0
+ var/datum/money_account/account = null
+ var/result = null
+ var/resultlvl = null
-/obj/machinery/slot_machine/attack_hand(var/mob/user as mob)
- if(user.mind)
- if(user.mind.initial_account)
- balance = user.mind.initial_account.money
- user.machine = src
- if (working)
- var/dat = {"Slot Machine
-
- Please wait!
"}
- user << browse(dat, "window=slotmachine;size=450x500")
- onclose(user, "slotmachine")
- else
- var/dat = {"Slot Machine
-
- Five credits to play!
- Credits Remaining: [balance]
- [plays] players have tried their luck today!
-
- Play!
"}
- user << browse(dat, "window=slotmachine;size=400x500")
- onclose(user, "slotmachine")
+/obj/machinery/slot_machine/attack_hand(mob/user as mob)
+ account = user.get_worn_id_account()
+ if(!account)
+ if(istype(user.get_active_hand(), /obj/item/weapon/card/id))
+ account = get_card_account(user.get_active_hand())
+ else
+ account = null
+
+ ui_interact(user)
+
+/obj/machinery/slot_machine/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
+ var/data[0]
+
+ data["working"] = working
+ data["money"] = account ? account.money : null
+ data["plays"] = plays
+ data["result"] = result
+ data["resultlvl"] = resultlvl
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "slotmachine.tmpl", name, 350, 200)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
/obj/machinery/slot_machine/Topic(href, href_list)
+ add_fingerprint(usr)
+
if(href_list["ops"])
var/operation = text2num(href_list["ops"])
if(operation == 1) // Play
if (working == 1)
- usr << "You need to wait until the machine stops spinning!"
return
- if (balance < 5)
- usr << "Insufficient money to play!"
+ if (!account || account.money < 5)
+ return
+ if(!account.charge(5, transaction_purpose = "Bet", dest_name = name))
return
- usr.mind.initial_account.money -= 5
plays += 1
working = 1
icon_state = "slots-on"
@@ -51,26 +58,43 @@ var/datum/announcement/minor/slotmachine_announcement = new(do_log = 0)
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
spawn(30)
if (roll == 1)
- playsound(src.loc, 'sound/effects/engine_alert2.ogg', 50, 0)
visible_message("[src] says, 'JACKPOT! [usr.name] has won two hundred and fifty thousand credits!'")
slotmachine_announcement.Announce("Congratulations to [usr.name] on winning the jackpot of two hundred and fifty thousand credits!", "Jackpot Winner")
- usr.mind.initial_account.money += 250000
+ result = "JACKPOT! You win two hundred and fifty thousand credits!"
+ resultlvl = "highlight"
+ win_money(250000, 'sound/effects/engine_alert2.ogg')
else if (roll > 1 && roll <= 10)
- playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
visible_message("[src] says, 'Big Winner! [usr.name] has won five thousand credits!'")
- usr.mind.initial_account.money += 5000
+ result = "Big Winner! You win five thousand credits!"
+ resultlvl = "good"
+ win_money(5000)
else if (roll > 10 && roll <= 100)
- playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
- visible_message("[src] says, 'Winner! [usr.name] has won win five hundred credits!'")
- usr.mind.initial_account.money += 500
+ visible_message("[src] says, 'Winner! [usr.name] has won five hundred credits!'")
+ result = "You win five hundred credits!"
+ resultlvl = "good"
+ win_money(500)
else if (roll > 100 && roll <= 1000)
- playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
- usr << "You win 5 credits!"
- usr.mind.initial_account.money += 5
+ result = "You win 5 credits!"
+ resultlvl = "good"
+ win_money(5)
else
- usr << "No luck!"
+ result = "No luck!"
+ resultlvl = "average"
working = 0
icon_state = "slots-off"
- add_fingerprint(usr)
- updateUsrDialog()
- return
+
+/obj/machinery/slot_machine/proc/win_money(amt, sound='sound/machines/ping.ogg')
+ if(sound)
+ playsound(loc, sound, 50)
+
+ if(!account)
+ return
+ account.money += amt
+
+ var/datum/transaction/T = new()
+ T.target_name = account.owner_name
+ T.purpose = "Slot Winnings"
+ T.amount = "[amt]"
+ T.date = current_date_string
+ T.time = worldtime2text()
+ account.transaction_log.Add(T)
\ No newline at end of file
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 2df044d7e8a..6a4dbe224d7 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -276,9 +276,9 @@
link_power_station()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/teleporter_hub(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
RefreshParts()
@@ -286,9 +286,9 @@
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/teleporter_hub(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin/super(null)
RefreshParts()
@@ -385,8 +385,8 @@
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/teleporter_station(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
- component_parts += new /obj/item/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
+ component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 8d414c2168a..49dd158adf3 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1096,7 +1096,7 @@
icon_state = "engivend"
icon_deny = "engivend-deny"
req_access_txt = "11" //Engineering Equipment access
- products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/apc_electronics = 10,/obj/item/weapon/airalarm_electronics = 10,/obj/item/weapon/stock_parts/cell/high = 10)
+ products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/firealarm_electronics = 10,/obj/item/weapon/apc_electronics = 10,/obj/item/weapon/airalarm_electronics = 10,/obj/item/weapon/stock_parts/cell/high = 10)
contraband = list(/obj/item/weapon/stock_parts/cell/potato = 3)
premium = list(/obj/item/weapon/storage/belt/utility = 3)
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index 12a64dc01bb..41b6b99fb87 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -1090,7 +1090,9 @@
return
var/list/occupant = list()
occupant |= mecha.occupant
+ mecha.occupant.sight |= SEE_TURFS
scanning = 1
mineral_scan_pulse(occupant,get_turf(loc))
spawn(equip_cooldown)
scanning = 0
+ mecha.occupant.sight -= SEE_TURFS
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 5e684b9ddef..844ccd978eb 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -1204,7 +1204,7 @@
"backkey"=/obj/item/weapon/crowbar,
"desc"="The bluespace crystal is installed."),
//10
- list("key"=/obj/item/bluespace_crystal,
+ list("key"=/obj/item/weapon/ore/bluespace_crystal,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="Super capacitor is secured."),
//11
@@ -1394,7 +1394,7 @@
holder.icon_state = "phazon16"
else
user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].")
- new /obj/item/bluespace_crystal(get_turf(holder))
+ new /obj/item/weapon/ore/bluespace_crystal(get_turf(holder))
holder.icon_state = "phazon14"
if(8)
if(diff==FORWARD)
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index 3eba9cc2132..0666f6472af 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -20,6 +20,10 @@
return
*/
+/obj/mecha/working/ripley/Move()
+ . = ..()
+ update_pressure()
+
/obj/mecha/working/ripley/Destroy()
while(src.damage_absorption.["brute"] < 0.6)
new /obj/item/asteroid/goliath_hide(src.loc)
@@ -165,4 +169,18 @@
if(T)
T.Entered(A)
step_rand(A)
- return ..()
\ No newline at end of file
+ return ..()
+
+/obj/mecha/working/ripley/proc/update_pressure()
+ var/turf/T = get_turf(loc)
+ var/datum/gas_mixture/environment = T.return_air()
+ var/pressure = environment.return_pressure()
+
+ if(pressure < 20)
+ step_in = 3
+ for(var/obj/item/mecha_parts/mecha_equipment/tool/drill/drill in equipment)
+ drill.equip_cooldown = initial(drill.equip_cooldown)/2
+ else
+ step_in = 5
+ for(var/obj/item/mecha_parts/mecha_equipment/tool/drill/drill in equipment)
+ drill.equip_cooldown = initial(drill.equip_cooldown)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/walllocker.dm b/code/game/objects/structures/crates_lockers/walllocker.dm
index 2937e7b58ac..03a81a7ca5b 100644
--- a/code/game/objects/structures/crates_lockers/walllocker.dm
+++ b/code/game/objects/structures/crates_lockers/walllocker.dm
@@ -11,6 +11,10 @@
icon_closed = "wall-locker"
icon_opened = "wall-lockeropen"
+/obj/structure/closet/walllocker/close()
+ ..()
+ density = 0 //It's a locker in a wall, you aren't going to be walking into it.
+
//spawns endless (3 sets) amounts of breathmask, emergency oxy tank and crowbar
/obj/structure/closet/walllocker/emerglocker
@@ -19,12 +23,14 @@
var/list/spawnitems = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/weapon/crowbar)
var/amount = 3 // spawns each items X times.
icon_state = "emerg"
+ icon_closed = "emerg"
+ icon_opened = "emergopen"
/obj/structure/closet/walllocker/emerglocker/attack_hand(mob/user as mob)
if (istype(user, /mob/living/silicon/ai)) //Added by Strumpetplaya - AI shouldn't be able to
return //activate emergency lockers. This fixes that. (Does this make sense, the AI can't call attack_hand, can it? --Mloc)
if(!amount)
- usr << "It's empty.."
+ usr << "It's empty."
return
if(amount)
usr << "You take out some items from \the [src]."
diff --git a/code/modules/arcade/claw_game.dm b/code/modules/arcade/claw_game.dm
index 30dae8567d0..9d423383b08 100644
--- a/code/modules/arcade/claw_game.dm
+++ b/code/modules/arcade/claw_game.dm
@@ -34,7 +34,6 @@
if(!claw_game_html)
claw_game_html = file2text('code/modules/arcade/crane.html')
- claw_game_html = replacetext(claw_game_html, "/* ref src */", "\ref[src]")
/obj/machinery/arcade/claw/RefreshParts()
var/bin_upgrades = 0
@@ -69,7 +68,8 @@
user << browse_rsc('page.css')
for(var/i=1, i<=img_resources.len, i++)
user << browse_rsc(img_resources[i])
- user << browse(claw_game_html, "window=[window_name];size=700x600")
+ var/my_game_html = replacetext(claw_game_html, "/* ref src */", "\ref[src]")
+ user << browse(my_game_html, "window=[window_name];size=700x600")
/obj/machinery/arcade/claw/Topic(href, list/href_list)
if(..())
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 324b5e7b427..e7987280d48 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -433,11 +433,11 @@ datum/preferences
dat += "