Merge branch 'master' into familyport
This commit is contained in:
@@ -7,9 +7,9 @@
|
||||
GAS_N2=10,
|
||||
)
|
||||
normal_gases = list(
|
||||
GAS_O2=10,
|
||||
GAS_N2=10,
|
||||
GAS_CO2=10,
|
||||
GAS_O2=5,
|
||||
GAS_N2=5,
|
||||
GAS_CO2=5,
|
||||
)
|
||||
restricted_gases = list(
|
||||
GAS_BZ=0.1,
|
||||
|
||||
@@ -295,6 +295,16 @@
|
||||
/obj/item/stack/sheet/sinew = 1)
|
||||
category = CAT_PRIMAL
|
||||
|
||||
/datum/crafting_recipe/bone_anvil
|
||||
name = "Bone Anvil"
|
||||
result = /obj/structure/anvil/obtainable/bone
|
||||
time = 200
|
||||
reqs = list(/obj/item/stack/sheet/bone = 6,
|
||||
/obj/item/stack/sheet/sinew = 2,
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide = 2)
|
||||
tools = list(/obj/item/weldingtool/experimental/ashwalker, /obj/item/wirecutters/ashwalker, /obj/item/crowbar/ashwalker)
|
||||
category = CAT_PRIMAL
|
||||
|
||||
/datum/crafting_recipe/bone_glaive
|
||||
name = "Necropolis Glaive"
|
||||
result = /obj/item/kinetic_crusher/glaive/bone
|
||||
|
||||
@@ -362,6 +362,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
color = "#e3dac9"
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/bone
|
||||
strength_modifier = 1.05
|
||||
value_per_unit = 0.05
|
||||
armor_modifiers = list("melee" = 1.2, "bullet" = 0.75, "laser" = 0.75, "energy" = 1.2, "bomb" = 1, "bio" = 1, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
|
||||
beauty_modifier = -0.2
|
||||
|
||||
@@ -761,7 +761,8 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(bone_recipes, list(
|
||||
new /datum/stack_recipe("Bone Dagger", /obj/item/kitchen/knife/combat/bone, 2, time = 20), \
|
||||
new /datum/stack_recipe("Skull Helmet", /obj/item/clothing/head/helmet/skull, 4, time = 30), \
|
||||
new /datum/stack_recipe("Bone Armor", /obj/item/clothing/suit/armor/bone, 6, time = 30)))
|
||||
new /datum/stack_recipe("Bone Armor", /obj/item/clothing/suit/armor/bone, 6, time = 30),\
|
||||
new /datum/stack_recipe("Processable Bone", /obj/item/ingot/bone, 2, time = 20)))
|
||||
|
||||
/obj/item/stack/sheet/bone
|
||||
name = "bones"
|
||||
|
||||
@@ -161,13 +161,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
var/client/initiator //semi-misnomer, it's the person who ahelped/was bwoinked
|
||||
var/initiator_ckey
|
||||
var/initiator_key_name
|
||||
var/heard_by_no_admins = FALSE
|
||||
|
||||
var/list/_interactions //use AddInteraction() or, preferably, admin_ticket_log()
|
||||
|
||||
var/obj/effect/statclick/ahelp/statclick
|
||||
|
||||
var/static/ticket_counter = 0
|
||||
/// did we send "answered" to irc yet
|
||||
var/answered = FALSE
|
||||
|
||||
//call this on its own to create a ticket, don't manually assign current_ticket
|
||||
//msg is the title of the ticket: usually the ahelp text
|
||||
@@ -209,7 +210,6 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.")
|
||||
if(admin_number_present <= 0)
|
||||
to_chat(C, "<span class='notice'>No active admins are online, your adminhelp was sent to the admin irc.</span>")
|
||||
heard_by_no_admins = TRUE
|
||||
else
|
||||
// citadel edit: send anyways
|
||||
send2adminchat(initiator_ckey, "Ticket #[id]: [name] - Heard by [admin_number_present] admins present with +BAN.")
|
||||
@@ -223,9 +223,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
return ..()
|
||||
|
||||
/datum/admin_help/proc/AddInteraction(formatted_message)
|
||||
// if(heard_by_no_admins usr && usr.ckey != initiator_ckey)
|
||||
// heard_by_no_admins = FALSE
|
||||
if(usr && (usr.ckey != initiator_ckey))
|
||||
if(usr && (usr.ckey != initiator_ckey) && !answered)
|
||||
answered = TRUE
|
||||
send2adminchat(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]")
|
||||
_interactions += "[TIME_STAMP("hh:mm:ss", FALSE)]: [formatted_message]"
|
||||
|
||||
|
||||
@@ -403,6 +403,9 @@
|
||||
if("incheck")
|
||||
send_signal(device_id, list("checks" = text2num(params["val"])^2), usr)
|
||||
. = TRUE
|
||||
if("direction")
|
||||
send_signal(device_id, list("direction" = text2num(params["val"])), usr)
|
||||
. = TRUE
|
||||
if("set_external_pressure", "set_internal_pressure")
|
||||
|
||||
var/target = params["value"]
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
var/obj/machinery/atmospherics/components/unary/heat_exchanger/partner = null
|
||||
var/update_cycle
|
||||
var/old_temperature = 0
|
||||
var/other_old_temperature = 0
|
||||
|
||||
pipe_state = "heunary"
|
||||
|
||||
@@ -59,9 +61,6 @@
|
||||
var/other_air_heat_capacity = partner_air_contents.heat_capacity()
|
||||
var/combined_heat_capacity = other_air_heat_capacity + air_heat_capacity
|
||||
|
||||
var/old_temperature = air_contents.return_temperature()
|
||||
var/other_old_temperature = partner_air_contents.return_temperature()
|
||||
|
||||
if(combined_heat_capacity > 0)
|
||||
var/combined_energy = partner_air_contents.return_temperature()*other_air_heat_capacity + air_heat_capacity*air_contents.return_temperature()
|
||||
|
||||
@@ -71,6 +70,8 @@
|
||||
|
||||
if(abs(old_temperature-air_contents.return_temperature()) > 1)
|
||||
update_parents()
|
||||
old_temperature = air_contents.return_temperature()
|
||||
|
||||
if(abs(other_old_temperature-partner_air_contents.return_temperature()) > 1)
|
||||
partner.update_parents()
|
||||
other_old_temperature = partner_air_contents.return_temperature()
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
"device" = "VP",
|
||||
"timestamp" = world.time,
|
||||
"power" = on,
|
||||
"direction" = pump_direction ? "release" : "siphon",
|
||||
"direction" = pump_direction,
|
||||
"checks" = pressure_checks,
|
||||
"internal" = internal_pressure_bound,
|
||||
"external" = external_pressure_bound,
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
typepath = /datum/round_event/ghost_role/operative
|
||||
weight = 0 //Admin only
|
||||
max_occurrences = 1
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
/datum/round_event/ghost_role/operative
|
||||
minimum_required = 1
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
var/pirate_type = PIRATES_ROGUES //pick(PIRATES_ROGUES, PIRATES_SILVERSCALES, PIRATES_DUTCHMAN)
|
||||
var/datum/comm_message/threat_msg = new
|
||||
var/payoff = 0
|
||||
var/payoff_min = 1000
|
||||
var/payoff_min = 10000 //documented this time
|
||||
var/ship_template
|
||||
var/ship_name = "Space Privateers Association"
|
||||
var/initial_send_time = world.time
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 0
|
||||
spawn_positions = 4
|
||||
spawn_positions = 0
|
||||
supervisors = "the security team"
|
||||
|
||||
outfit = /datum/outfit/job/prisoner
|
||||
|
||||
@@ -235,6 +235,9 @@
|
||||
icon_state = "crusher-bone"
|
||||
item_state = "crusher0-bone"
|
||||
|
||||
/obj/item/kinetic_crusher/glaive/bone/update_icon_state()
|
||||
item_state = "crusher[wielded]-bone"
|
||||
|
||||
//destablizing force
|
||||
/obj/item/projectile/destabilizer
|
||||
name = "destabilizing force"
|
||||
|
||||
@@ -358,8 +358,16 @@
|
||||
var/obj/singularity/energy_ball/tesla = source
|
||||
if(istype(tesla))
|
||||
if(istype(closest_atom,/obj/machinery/power/grounding_rod) && tesla.energy>13 && !tesla.contained)
|
||||
qdel(closest_atom) // each rod deletes two miniballs,
|
||||
tesla.energy = round(tesla.energy/1.5625) // if there are no miniballs the rod stays and continues to pull the ball in
|
||||
|
||||
// getting the grounding rod's capacitor rating for quick maths
|
||||
var/obj/machinery/power/grounding_rod/rod = closest_atom
|
||||
// assuming the rod is fully constructed the second part will always be a capacitor
|
||||
var/obj/item/stock_parts/capacitor/capacitor = rod.component_parts[2]
|
||||
|
||||
tesla.energy = round(tesla.energy/(1 + 0.28125 * capacitor.rating))
|
||||
qdel(closest_atom) // each rod removes tesla energy depending on the power of the capacitor,
|
||||
// if there are no miniballs the rod stays and continues to pull the ball in
|
||||
|
||||
if(prob(20))//I know I know
|
||||
tesla_zap(closest_atom, next_range, power * 0.5, zap_flags, shocked_targets)
|
||||
tesla_zap(closest_atom, next_range, power * 0.5, zap_flags, shocked_targets)
|
||||
|
||||
@@ -286,6 +286,13 @@
|
||||
anvilquality = 0
|
||||
itemqualitymax = 6
|
||||
|
||||
/obj/structure/anvil/obtainable/bone
|
||||
name = "bone anvil"
|
||||
desc = "An anvil. It's made of goliath bones and hide and held together by watcher sinews."
|
||||
icon_state = "bonevil"
|
||||
anvilquality = 0
|
||||
itemqualitymax = 6
|
||||
|
||||
/obj/structure/anvil/obtainable/ratvar
|
||||
name = "brass anvil"
|
||||
desc = "A big block of what appears to be brass. Useable as an anvil, if whatever's holding the brass together lets you."
|
||||
|
||||
@@ -49,6 +49,9 @@
|
||||
/obj/item/ingot/iron
|
||||
custom_materials = list(/datum/material/iron=12000)
|
||||
|
||||
/obj/item/ingot/bone
|
||||
custom_materials = list(/datum/material/bone=4000)
|
||||
|
||||
/obj/item/ingot/diamond
|
||||
custom_materials = list(/datum/material/diamond=12000)
|
||||
|
||||
|
||||
@@ -530,8 +530,8 @@
|
||||
gas_max[GAS_N2] = PP(breath, GAS_N2) + 5
|
||||
var/datum/breathing_class/class = GLOB.gas_data.breathing_classes[breathing_class]
|
||||
var/o2_pp = class.get_effective_pp(breath)
|
||||
safe_breath_min = 0.3 * o2_pp
|
||||
safe_breath_max = 1.3 * o2_pp
|
||||
safe_breath_min = min(3, 0.3 * o2_pp)
|
||||
safe_breath_max = max(18, 1.3 * o2_pp + 1)
|
||||
..()
|
||||
#undef SAFE_THRESHOLD_RATIO
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
playsound(src, pick('sound/vehicles/clowncar_ram1.ogg', 'sound/vehicles/clowncar_ram2.ogg', 'sound/vehicles/clowncar_ram3.ogg'), 75)
|
||||
log_combat(src, hittarget_living, "sucked up")
|
||||
return
|
||||
if(!istype(bumped, /turf/closed))
|
||||
if(!istype(bumped, /turf/closed) && !istype(bumped, /obj/machinery/door/airlock/external))
|
||||
return
|
||||
visible_message(span_warning("[src] rams into [bumped] and crashes!"))
|
||||
playsound(src, pick('sound/vehicles/clowncar_crash1.ogg', 'sound/vehicles/clowncar_crash2.ogg'), 75)
|
||||
@@ -237,6 +237,11 @@
|
||||
for(var/mob/busdriver as anything in return_drivers())
|
||||
busdriver.client.give_award(/datum/award/achievement/misc/the_best_driver, busdriver)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/driver_move(mob/user, direction) //Prevent it from moving onto space
|
||||
if(isspaceturf(get_step(src, direction)))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/twitch_plays
|
||||
key_type = null
|
||||
explode_on_death = FALSE
|
||||
|
||||
Reference in New Issue
Block a user