mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 12:07:27 +01:00
Merge remote-tracking branch 'upstream/master' into holo-projector
# Conflicts: # _maps/map_files/cyberiad/cyberiad.dmm # paradise.dme
This commit is contained in:
@@ -354,3 +354,13 @@
|
||||
reqs = list(/obj/item/grown/log = 5)
|
||||
result = /obj/structure/bonfire
|
||||
category = CAT_PRIMAL
|
||||
|
||||
/datum/crafting_recipe/guillotine
|
||||
name = "Guillotine"
|
||||
result = /obj/structure/guillotine
|
||||
time = 150 // Building a functioning guillotine takes time
|
||||
reqs = list(/obj/item/stack/sheet/plasteel = 3,
|
||||
/obj/item/stack/sheet/wood = 20,
|
||||
/obj/item/stack/cable_coil = 10)
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wrench, /obj/item/weldingtool)
|
||||
category = CAT_MISC
|
||||
@@ -122,6 +122,8 @@ log transactions
|
||||
if(issilicon(user))
|
||||
to_chat(user, "<span class='warning'>Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per Nanotrasen regulation #1005.</span>")
|
||||
return
|
||||
if(!linked_db)
|
||||
reconnect_database()
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atm/attack_ghost(mob/user)
|
||||
@@ -199,12 +201,9 @@ log transactions
|
||||
authenticated_account.security_level = new_sec_level
|
||||
if("attempt_auth")
|
||||
if(linked_db)
|
||||
// check if they have low security enabled
|
||||
scan_user(usr)
|
||||
|
||||
if(!ticks_left_locked_down && held_card)
|
||||
if(!ticks_left_locked_down)
|
||||
var/tried_account_num = text2num(href_list["account_num"])
|
||||
if(!tried_account_num)
|
||||
if(!tried_account_num && held_card)
|
||||
tried_account_num = held_card.associated_account_number
|
||||
var/tried_pin = text2num(href_list["account_pin"])
|
||||
|
||||
@@ -323,30 +322,3 @@ log transactions
|
||||
//create the most effective combination of notes to make up the requested amount
|
||||
/obj/machinery/atm/proc/withdraw_arbitrary_sum(arbitrary_sum)
|
||||
new /obj/item/stack/spacecash(get_step(get_turf(src), turn(dir, 180)), arbitrary_sum)
|
||||
|
||||
//stolen wholesale and then edited a bit from newscasters, which are awesome and by Agouri
|
||||
/obj/machinery/atm/proc/scan_user(mob/living/carbon/human/H)
|
||||
if(!authenticated_account && linked_db)
|
||||
if(H.wear_id)
|
||||
var/obj/item/card/id/I
|
||||
if(istype(H.wear_id, /obj/item/card/id) )
|
||||
I = H.wear_id
|
||||
else if(istype(H.wear_id, /obj/item/pda) )
|
||||
var/obj/item/pda/P = H.wear_id
|
||||
I = P.id
|
||||
if(I)
|
||||
authenticated_account = attempt_account_access(I.associated_account_number)
|
||||
if(authenticated_account)
|
||||
to_chat(H, "[bicon(src)]<span class='notice'>Access granted. Welcome user '[authenticated_account.owner_name].'</span>")
|
||||
|
||||
//create a transaction log entry
|
||||
var/datum/transaction/T = new()
|
||||
T.target_name = authenticated_account.owner_name
|
||||
T.purpose = "Remote terminal access"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = station_time_timestamp()
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
|
||||
view_screen = NO_SCREEN
|
||||
SSnanoui.update_uis(src)
|
||||
|
||||
@@ -1250,7 +1250,13 @@
|
||||
/obj/item/reagent_containers/food/snacks/monkeycube/proc/Expand()
|
||||
if(!QDELETED(src))
|
||||
visible_message("<span class='notice'>[src] expands!</span>")
|
||||
new/mob/living/carbon/human(get_turf(src), monkey_type)
|
||||
if(fingerprintslast)
|
||||
log_game("Cube ([monkey_type]) inflated, last touched by: " + fingerprintslast)
|
||||
else
|
||||
log_game("Cube ([monkey_type]) inflated, last touched by: NO_DATA")
|
||||
var/mob/living/carbon/human/creature = new /mob/living/carbon/human(get_turf(src), monkey_type)
|
||||
if(fingerprintshidden.len)
|
||||
creature.fingerprintshidden = fingerprintshidden.Copy()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/monkeycube/farwacube
|
||||
|
||||
@@ -6,26 +6,26 @@
|
||||
icon_state = "orebox0"
|
||||
name = "ore box"
|
||||
desc = "A heavy wooden box, which can be filled with a lot of ores."
|
||||
density = 1
|
||||
pressure_resistance = 5*ONE_ATMOSPHERE
|
||||
density = TRUE
|
||||
pressure_resistance = 5 * ONE_ATMOSPHERE
|
||||
|
||||
/obj/structure/ore_box/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/structure/ore_box/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/t_scanner/adv_mining_scanner))
|
||||
attack_hand(user)
|
||||
return
|
||||
if(istype(W, /obj/item/ore))
|
||||
if(!user.drop_item())
|
||||
return
|
||||
W.loc = src
|
||||
W.forceMove(src)
|
||||
if(istype(W, /obj/item/storage))
|
||||
var/obj/item/storage/S = W
|
||||
S.hide_from(usr)
|
||||
for(var/obj/item/ore/O in S.contents)
|
||||
S.remove_from_storage(O, src) //This will move the item to this item's contents
|
||||
CHECK_TICK
|
||||
to_chat(user, "<span class='notice'>You empty the satchel into the box.</span>")
|
||||
return
|
||||
|
||||
/obj/structure/ore_box/attack_hand(mob/user as mob)
|
||||
/obj/structure/ore_box/attack_hand(mob/user)
|
||||
var/amt_gold = 0
|
||||
var/amt_silver = 0
|
||||
var/amt_diamond = 0
|
||||
@@ -90,20 +90,19 @@
|
||||
var/datum/browser/popup = new(user, "orebox", name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
return
|
||||
|
||||
/obj/structure/ore_box/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
add_fingerprint(usr)
|
||||
if(href_list["removeall"])
|
||||
for(var/obj/item/ore/O in contents)
|
||||
contents -= O
|
||||
O.loc = src.loc
|
||||
O.forceMove(loc)
|
||||
CHECK_TICK
|
||||
to_chat(usr, "<span class='notice'>You empty the box.</span>")
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
updateUsrDialog()
|
||||
|
||||
obj/structure/ore_box/ex_act(severity, target)
|
||||
if(prob(100 / severity) && severity < 3)
|
||||
@@ -115,11 +114,11 @@ obj/structure/ore_box/ex_act(severity, target)
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(!istype(usr, /mob/living/carbon/human)) //Only living, intelligent creatures with hands can empty ore boxes.
|
||||
if(!ishuman(usr)) //Only living, intelligent creatures with hands can empty ore boxes.
|
||||
to_chat(usr, "<span class='warning'>You are physically incapable of emptying the ore box.</span>")
|
||||
return
|
||||
|
||||
if( usr.stat || usr.restrained() )
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
|
||||
if(!Adjacent(usr)) //You can only empty the box if you can physically reach it
|
||||
@@ -134,7 +133,6 @@ obj/structure/ore_box/ex_act(severity, target)
|
||||
|
||||
for(var/obj/item/ore/O in contents)
|
||||
contents -= O
|
||||
O.loc = src.loc
|
||||
to_chat(usr, "<span class='notice'>You empty the ore box.</span>")
|
||||
|
||||
return
|
||||
O.forceMove(loc)
|
||||
CHECK_TICK
|
||||
to_chat(usr, "<span class='notice'>You empty the ore box.</span>")
|
||||
@@ -102,6 +102,8 @@
|
||||
on_CD = handle_emote_CD()
|
||||
if("sneeze", "sneezes")
|
||||
on_CD = handle_emote_CD()
|
||||
if("clap", "claps")
|
||||
on_CD = handle_emote_CD()
|
||||
//Everything else, including typos of the above emotes
|
||||
else
|
||||
on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown
|
||||
@@ -302,11 +304,30 @@
|
||||
message = "<B>[src]</B> makes a peculiar noise."
|
||||
m_type = 2
|
||||
if("clap", "claps")
|
||||
if(!restrained())
|
||||
message = "<B>[src]</B> claps."
|
||||
if(miming)
|
||||
message = "<B>[src]</B> claps silently."
|
||||
m_type = 1
|
||||
else
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
var/obj/item/organ/external/L = get_organ("l_hand")
|
||||
var/obj/item/organ/external/R = get_organ("r_hand")
|
||||
|
||||
var/left_hand_good = FALSE
|
||||
var/right_hand_good = FALSE
|
||||
|
||||
if(L && (!(L.status & ORGAN_SPLINTED)) && (!(L.status & ORGAN_BROKEN)))
|
||||
left_hand_good = TRUE
|
||||
if(R && (!(R.status & ORGAN_SPLINTED)) && (!(R.status & ORGAN_BROKEN)))
|
||||
right_hand_good = TRUE
|
||||
|
||||
if(left_hand_good && right_hand_good)
|
||||
message = "<b>[src]</b> claps."
|
||||
var/clap = pick('sound/misc/clap1.ogg', 'sound/misc/clap2.ogg', 'sound/misc/clap3.ogg', 'sound/misc/clap4.ogg')
|
||||
playsound(loc, clap, 50, 1, -1)
|
||||
|
||||
else
|
||||
to_chat(usr, "You need your hands working in order to clap.")
|
||||
|
||||
if("flap", "flaps")
|
||||
if(!restrained())
|
||||
message = "<B>[src]</B> flaps \his wings."
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/obj/item/ammo_casing/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)][BB ? "-live" : ""]"
|
||||
desc = "[initial(desc)][BB ? "" : " This one is spent"]"
|
||||
desc = "[initial(desc)][BB ? "" : " This one is spent."]"
|
||||
|
||||
/obj/item/ammo_casing/proc/newshot(params) //For energy weapons, shotgun shells and wands (!).
|
||||
if(!BB)
|
||||
|
||||
@@ -214,19 +214,18 @@ datum/chemical_reaction/flash_powder
|
||||
var/datum/effect_system/smoke_spread/chem/S = new
|
||||
S.attach(location)
|
||||
playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
spawn(0)
|
||||
if(S)
|
||||
S.set_up(holder, 10, 0, location)
|
||||
if(created_volume < 5)
|
||||
S.start(1)
|
||||
if(created_volume >=5 && created_volume < 10)
|
||||
S.start(2)
|
||||
if(created_volume >= 10 && created_volume < 15)
|
||||
S.start(3)
|
||||
if(created_volume >=15)
|
||||
S.start(4)
|
||||
if(holder && holder.my_atom)
|
||||
holder.clear_reagents()
|
||||
if(S)
|
||||
S.set_up(holder, 10, 0, location)
|
||||
if(created_volume < 5)
|
||||
S.start(1)
|
||||
if(created_volume >=5 && created_volume < 10)
|
||||
S.start(2)
|
||||
if(created_volume >= 10 && created_volume < 15)
|
||||
S.start(3)
|
||||
if(created_volume >=15)
|
||||
S.start(4)
|
||||
if(holder && holder.my_atom)
|
||||
holder.clear_reagents()
|
||||
|
||||
/datum/chemical_reaction/smoke/smoke_powder
|
||||
name = "smoke_powder_smoke"
|
||||
|
||||
@@ -452,16 +452,6 @@
|
||||
build_path = /obj/item/circuitboard/arcade/orion_trail
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
/datum/design/programmable
|
||||
name = "Machine Board (Programmable Unloader)"
|
||||
desc = "The circuit board for a Programmable Unloader."
|
||||
id = "selunload"
|
||||
req_tech = list("engineering" = 1, "programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/programmable
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
/datum/design/pod
|
||||
name = "Machine Board (Mass Driver and Pod Doors Control)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Mass Driver and Pod Doors Control."
|
||||
|
||||
Reference in New Issue
Block a user