Merge remote-tracking branch 'upstream/master' into holo-projector

# Conflicts:
#	_maps/map_files/cyberiad/cyberiad.dmm
#	paradise.dme
This commit is contained in:
Fox McCloud
2018-05-04 16:37:24 -04:00
33 changed files with 8102 additions and 1780 deletions
+10
View File
@@ -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
+4 -32
View File
@@ -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)
+7 -1
View File
@@ -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
+15 -17
View File
@@ -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>")
+25 -4
View File
@@ -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."
+1 -1
View File
@@ -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."