Merge branch 'master' of https://github.com/tgstation/-tg-station into prisoners

This commit is contained in:
Bawhoppen
2020-03-02 19:30:48 -06:00
94 changed files with 113754 additions and 23424 deletions
+7 -4
View File
@@ -374,7 +374,9 @@
showpiece_type = /obj/item/reagent_containers/food
alert = FALSE //No, we're not calling the fire department because someone stole your cookie.
glass_fix = FALSE //Fixable with tools instead.
///The price of the item being sold. Altered by grab intent ID use.
var/sale_price = 20
///The Account which will recieve payment for purchases. Set by the first ID to swipe the tray.
var/datum/bank_account/payments_acc = null
/obj/structure/displaycase/forsale/update_icon() //remind me to fix my shitcode later
@@ -401,9 +403,6 @@
if(!potential_acc.registered_account)
to_chat(user, "<span class='warning'>This ID card has no account registered!</span>")
return
if(payments_acc && payments_acc != potential_acc.registered_account)
to_chat(user, "<span class='warning'>This Vend-a-tray is already registered!</span>")
return
if(!payments_acc && potential_acc.registered_account)
payments_acc = potential_acc.registered_account
playsound(src, 'sound/machines/click.ogg', 20, TRUE)
@@ -440,12 +439,16 @@
//Setting the object's price.
if(INTENT_GRAB)
var/new_price_input = input(user,"Set the sale price for this vend-a-tray.","new price",0) as num|null
if(isnull(new_price_input) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
if(isnull(new_price_input) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || (payments_acc != potential_acc.registered_account))
return
new_price_input = clamp(round(new_price_input, 1), 10, 1000)
sale_price = new_price_input
to_chat(user, "<span class='notice'>The cost is now set to [sale_price].</span>")
return TRUE
if(INTENT_DISARM || INTENT_HARM)
if(payments_acc && payments_acc != potential_acc.registered_account)
to_chat(user, "<span class='warning'>This Vend-a-tray is already registered!</span>")
return
if(I.tool_behaviour == TOOL_WRENCH && open && user.a_intent == INTENT_HELP )
if(anchored)
to_chat(user, "<span class='notice'>You start unsecuring [src]...</span>")
@@ -33,6 +33,45 @@
//Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers.
/obj/structure/ash_walker_eggshell
name = "ash walker egg"
desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within. The egg shell looks resistant to temperature but otherwise rather brittle."
icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
icon_state = "large_egg"
resistance_flags = LAVA_PROOF | FIRE_PROOF | FREEZE_PROOF
max_integrity = 80
var/obj/effect/mob_spawn/human/ash_walker/egg
/obj/structure/ash_walker_eggshell/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) //lifted from xeno eggs
switch(damage_type)
if(BRUTE)
if(damage_amount)
playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
else
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
if(BURN)
if(damage_amount)
playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
/obj/structure/ash_walker_eggshell/attack_ghost(mob/user) //Pass on ghost clicks to the mob spawner
if(egg)
egg.attack_ghost(user)
. = ..()
/obj/structure/ash_walker_eggshell/Destroy()
if(!egg)
return ..()
var/mob/living/carbon/human/yolk = new /mob/living/carbon/human/(get_turf(src))
yolk.fully_replace_character_name(null,random_unique_lizard_name(gender))
yolk.set_species(/datum/species/lizard/ashwalker)
yolk.underwear = "Nude"
yolk.equipOutfit(/datum/outfit/ashwalker)//this is an authentic mess we're making
yolk.update_body()
yolk.gib()
qdel(egg)
return ..()
/obj/effect/mob_spawn/human/ash_walker
name = "ash walker egg"
desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within."
@@ -43,7 +82,6 @@
outfit = /datum/outfit/ashwalker
roundstart = FALSE
death = FALSE
anchored = FALSE
move_resist = MOVE_FORCE_NORMAL
density = FALSE
short_desc = "You are an ash walker. Your tribe worships the Necropolis."
@@ -52,10 +90,17 @@
Fresh sacrifices for your nest."
assignedrole = "Ash Walker"
var/datum/team/ashwalkers/team
var/obj/structure/ash_walker_eggshell/eggshell
/obj/effect/mob_spawn/human/ash_walker/allow_spawn(mob/user)
if(!(user.key in team.players_spawned))//one per person unless you get a bonus spawn
return TRUE
to_chat(user, "<span class='warning'><b>You have exhausted your usefulness to the Necropolis</b>.</span>")
return FALSE
/obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn)
new_spawn.fully_replace_character_name(null,random_unique_lizard_name(gender))
to_chat(new_spawn, "<b>Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Don't leave your nest undefended, protect it with your life. Glory to the Necropolis!</b>")
to_chat(new_spawn, "<b>Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Invade the strange structure of the outsiders if you must. Do not cause unnecessary destruction, as littering the wastes with ugly wreckage is certain to not gain you favor. Glory to the Necropolis!</b>")
new_spawn.mind.add_antag_datum(/datum/antagonist/ashwalker, team)
@@ -63,11 +108,18 @@
var/mob/living/carbon/human/H = new_spawn
H.underwear = "Nude"
H.update_body()
ADD_TRAIT(H, TRAIT_PRIMITIVE, ROUNDSTART_TRAIT)
team.players_spawned += (new_spawn.key)
eggshell.egg = null
qdel(eggshell)
/obj/effect/mob_spawn/human/ash_walker/Initialize(mapload, datum/team/ashwalkers/ashteam)
. = ..()
var/area/A = get_area(src)
team = ashteam
eggshell = new /obj/structure/ash_walker_eggshell(get_turf(loc))
eggshell.egg = src
src.forceMove(eggshell)
if(A)
notify_ghosts("An ash walker egg is ready to hatch in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_ASHWALKER)
+5 -4
View File
@@ -9,7 +9,8 @@
max_integrity = 50
layer = LATTICE_LAYER //under pipes
plane = FLOOR_PLANE
var/number_of_rods = 1
var/number_of_mats = 1
var/build_material = /obj/item/stack/rods
canSmoothWith = list(/obj/structure/lattice,
/turf/open/floor,
/turf/closed/wall,
@@ -45,7 +46,7 @@
/obj/structure/lattice/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
new /obj/item/stack/rods(get_turf(src), number_of_rods)
new build_material(get_turf(src), number_of_mats)
qdel(src)
/obj/structure/lattice/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
@@ -71,7 +72,7 @@
desc = "A catwalk for easier EVA maneuvering and cable placement."
icon = 'icons/obj/smooth_structures/catwalk.dmi'
icon_state = "catwalk"
number_of_rods = 2
number_of_mats = 2
smooth = SMOOTH_TRUE
canSmoothWith = null
obj_flags = CAN_BE_HIT | BLOCK_Z_FALL
@@ -96,7 +97,7 @@
desc = "A specialized support beam for building across lava. Watch your step."
icon = 'icons/obj/smooth_structures/catwalk.dmi'
icon_state = "catwalk"
number_of_rods = 1
number_of_mats = 1
color = "#5286b9ff"
smooth = SMOOTH_TRUE
canSmoothWith = null
+4 -3
View File
@@ -13,6 +13,7 @@
climbable = FALSE
/obj/structure/railing/attackby(obj/item/I, mob/living/user, params)
..()
add_fingerprint(user)
if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP)
@@ -53,8 +54,8 @@
/obj/structure/railing/CheckExit(atom/movable/O, turf/target)
..()
if(get_dir(loc, target) & dir)
return 0
return 1
return FALSE
return TRUE
/obj/structure/railing/corner/CheckExit()
return 1
return TRUE
@@ -45,3 +45,14 @@
name = "command department"
desc = "A direction sign, pointing out which way the Command department is."
icon_state = "direction_bridge"
/obj/structure/sign/directions/vault
name = "vault directions"
desc = "A direction sign, pointing out which way the station's Vault is."
icon_state = "direction_vault"
/obj/structure/sign/directions/upload
name = "upload directions"
desc = "A direction sign, pointing out which way the station's AI Upload is."
icon_state = "direction_upload"