Merge remote-tracking branch 'VOREStation/master' into upstream-merge-7790

This commit is contained in:
Unknown
2021-02-27 14:43:48 -05:00
597 changed files with 461304 additions and 23163 deletions
+6
View File
@@ -26,6 +26,12 @@
name = "mechanical trap"
path =/obj/item/weapon/beartrap
/datum/category_item/autolathe/devices/barbedwire
name = "barbed wire"
path = /obj/item/weapon/material/barbedwire
hidden = 1
resources = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/category_item/autolathe/devices/electropack
name = "electropack"
path =/obj/item/device/radio/electropack
+5
View File
@@ -48,6 +48,11 @@
path = /obj/item/weapon/reagent_containers/spray
resources = list(MAT_PLASTIC = 2000)
/datum/category_item/autolathe/devices/slowwire
name = "snare wire"
path = /obj/item/weapon/material/barbedwire/plastic
resources = list(MAT_PLASTIC = 10000)
/datum/category_item/autolathe/tools/spraynozzle
name = "spray nozzle"
path = /obj/item/weapon/reagent_containers/spray
+7 -3
View File
@@ -55,6 +55,9 @@
var/rev_cooldown = 0
var/tcrystals = 0
var/list/purchase_log = new
var/used_TC = 0
// the world.time since the mob has been brigged, or -1 if not at all
var/brigged_since = -1
@@ -73,7 +76,7 @@
/datum/mind/New(var/key)
src.key = key
purchase_log = list()
..()
/datum/mind/proc/transfer_to(mob/living/new_character)
@@ -510,8 +513,9 @@
//HUMAN
/mob/living/carbon/human/mind_initialize()
..()
if(!mind.assigned_role) mind.assigned_role = USELESS_JOB //defualt //VOREStation Edit - Visitor not Assistant
. = ..()
if(!mind.assigned_role)
mind.assigned_role = USELESS_JOB //defualt //VOREStation Edit - Visitor not Assistant
//slime
/mob/living/simple_mob/slime/mind_initialize()
+4 -1
View File
@@ -15,11 +15,14 @@
shoes = /obj/item/clothing/shoes/boots/swat
gloves = /obj/item/clothing/gloves/swat
l_ear = /obj/item/device/radio/headset/ert
belt = /obj/item/weapon/gun/energy/gun
glasses = /obj/item/clothing/glasses/sunglasses
back = /obj/item/weapon/storage/backpack/satchel
id_type = /obj/item/weapon/card/id/centcom/ERT
pda_type = /obj/item/device/pda/centcom
post_equip(var/mob/living/carbon/human/H)
..()
ert.add_antagonist(H.mind)
/decl/hierarchy/outfit/job/clown
name = OUTFIT_JOB_NAME("Clown")
+7
View File
@@ -0,0 +1,7 @@
#define GOAL_GENERAL "Common Goal"
#define GOAL_MEDICAL "Medical Goal"
#define GOAL_SECURITY "Security Goal"
#define GOAL_ENGINEERING "Engineering Goal"
#define GOAL_CARGO "Cargo Goal"
#define GOAL_RESEARCH "Research Goal"
+101
View File
@@ -0,0 +1,101 @@
GLOBAL_LIST(department_goals)
GLOBAL_LIST(active_department_goals)
/hook/startup/proc/initializeDepartmentGoals()
GLOB.department_goals = list(GOAL_GENERAL, GOAL_MEDICAL, GOAL_SECURITY, GOAL_ENGINEERING, GOAL_CARGO, GOAL_RESEARCH)
GLOB.active_department_goals = list(GOAL_GENERAL, GOAL_MEDICAL, GOAL_SECURITY, GOAL_ENGINEERING, GOAL_CARGO, GOAL_RESEARCH)
for(var/category in GLOB.department_goals)
GLOB.department_goals[category] = list()
for(var/subtype in subtypesof(/datum/goal))
var/datum/goal/SG = new subtype()
if(SG.name == "goal")
continue
if(SG.category == category)
GLOB.department_goals[category] |= SG
for(var/category in GLOB.active_department_goals)
GLOB.active_department_goals[category] = list()
var/list/cat_goals = GLOB.department_goals[category]
var/goal_count = rand(2,4)
for(var/count = 1 to goal_count)
var/datum/goal/G
if(LAZYLEN(cat_goals))
G = pick(cat_goals)
if(G)
G.active_goal = TRUE
cat_goals -= G
GLOB.active_department_goals[category] |= G
return 1
/hook/roundend/proc/checkDepartmentGoals()
for(var/category in GLOB.active_department_goals)
var/list/cat_goals = GLOB.active_department_goals[category]
to_world("<span class='filter_system'><b>[category]</b></span>")
if(!LAZYLEN(cat_goals))
to_world("<span class='filter_system'>There were no assigned goals!</span>")
else
for(var/datum/goal/G in cat_goals)
var/success = G.check_completion()
to_world("<span class='filter_system'>[success ? "<span class='notice'>[G.name]</span>" : "<span class='warning'>[G.name]</span>"]</span>")
to_world("<span class='filter_system'>[G.goal_text]</span>")
return 1
/datum/goal
var/name = "goal"
var/goal_text = "Do nothing! Congratulations."
var/active_goal = FALSE
var/category = GOAL_GENERAL
/datum/goal/proc/check_completion()
return FALSE
/datum/goal/common
name = "goal"
goal_text = "Congratulations, you still do nothing."
/datum/goal/medical
name = "goal"
goal_text = "Congratulations, you still do nothing."
category = GOAL_MEDICAL
/datum/goal/security
name = "goal"
goal_text = "Congratulations, you still do nothing."
category = GOAL_SECURITY
/datum/goal/engineering
name = "goal"
goal_text = "Congratulations, you still do nothing."
category = GOAL_ENGINEERING
/datum/goal/cargo
name = "goal"
goal_text = "Congratulations, you still do nothing."
category = GOAL_CARGO
/datum/goal/research
name = "goal"
goal_text = "Congratulations, you still do nothing."
category = GOAL_RESEARCH
+8
View File
@@ -77,6 +77,14 @@
containertype = /obj/structure/closet/crate/focalpoint
containername = "advanced hull shield generator crate"
/datum/supply_pack/eng/pointdefense
name = "Point Defense Turret"
contains = list(/obj/machinery/porta_turret/pointdefense/orderable)
cost = 70
containertype = /obj/structure/closet/crate/large/secure/heph
containername = "point defense crate"
access = access_security
/datum/supply_pack/eng/electrical
name = "Electrical maintenance crate"
contains = list(
+2 -1
View File
@@ -84,7 +84,8 @@
/obj/item/toy/plushie/borgplushie/scrubpuppy,
/obj/item/toy/plushie/foxbear,
/obj/item/toy/plushie/nukeplushie,
/obj/item/toy/plushie/otter)
/obj/item/toy/plushie/otter,
/obj/item/toy/plushie/vox)
//VOREStation Add End
name = "Plushies Crate"
cost = 15
+1 -1
View File
@@ -51,7 +51,7 @@
/obj/item/weapon/reagent_containers/glass/paint/purple,
/obj/item/weapon/reagent_containers/glass/paint/black,
/obj/item/weapon/reagent_containers/glass/paint/white,
/obj/item/weapon/contraband/poster,
/obj/item/weapon/contraband/poster/custom,
/obj/item/weapon/wrapping_paper = 3
)
cost = 10
+11 -1
View File
@@ -186,4 +186,14 @@
/datum/category_item/underwear/undershirt/pinkblack_tshirt
name = "Pink and Black T-Shirt"
icon_state = "pinkblack_tshirt"
icon_state = "pinkblack_tshirt"
/datum/category_item/underwear/undershirt/turtle
name = "Turtleneck"
icon_state = "turtleneck"
has_color = TRUE
/datum/category_item/underwear/undershirt/sleevelessturtle
name = "Turtleneck, Sleeveless"
icon_state = "sleevelessturtle"
has_color = TRUE
+2
View File
@@ -18,3 +18,5 @@
name = "Void cell"
path = /obj/item/weapon/cell/device/weapon/recharge/alien/hybrid
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5
antag_roles = list("ert")
blacklisted = 1
+3 -3
View File
@@ -11,7 +11,7 @@
This type comes with a directional shield projector, a supressive fire energy weapon, \
a stunbaton, handcuffs, an agent ID, energy sword, pinpointer, and a jetpack."
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5
antag_roles = list("mercenary")
antag_roles = list("mercenary", "ert") //VOREStation Edit
path = /obj/item/weapon/antag_spawner/syndicate_drone/protector
/datum/uplink_item/item/backup/syndicate_drone_combat_medic
@@ -21,7 +21,7 @@
a powerful hypospray that can create many potent chemicals, an agent ID, energy \
sword, pinpointer, and a jetpack."
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5
antag_roles = list("mercenary")
antag_roles = list("mercenary", "ert") //VOREStation Edit
path = /obj/item/weapon/antag_spawner/syndicate_drone/combat_medic
/datum/uplink_item/item/backup/syndicate_drone_mechanist
@@ -31,5 +31,5 @@
a cryptographic sequencer, an AI detector, the ability to analyze and repair full-body prosthetics, \
a set of construction materials, an ionic rapier, an agent ID, energy sword, pinpointer, and a jetpack."
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5
antag_roles = list("mercenary")
antag_roles = list("mercenary", "ert") //VOREStation Edit
path = /obj/item/weapon/antag_spawner/syndicate_drone/mechanist
+7 -7
View File
@@ -22,22 +22,22 @@
desc = "Buys you one random item."
/datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user)
var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.uses)
var/datum/uplink_item/item = default_uplink_selection.get_random_item((user ? user.mind.tcrystals : DEFAULT_TELECRYSTAL_AMOUNT), U)
return item.buy(U, user)
/datum/uplink_item/item/badassery/random_one/can_buy(obj/item/device/uplink/U)
return default_uplink_selection.get_random_item(U.uses, U) != null
/datum/uplink_item/item/badassery/random_one/can_buy(var/obj/item/device/uplink/U, var/telecrystals)
return default_uplink_selection.get_random_item(telecrystals, U) != null
/datum/uplink_item/item/badassery/random_many
name = "Random Items"
desc = "Buys you as many random items you can afford. Convenient packaging NOT included."
/datum/uplink_item/item/badassery/random_many/cost(var/telecrystals)
/datum/uplink_item/item/badassery/random_many/cost(obj/item/device/uplink/U, var/telecrystals)
return max(1, telecrystals)
/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/device/uplink/U, var/loc)
/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/M)
var/list/bought_items = list()
for(var/datum/uplink_item/UI in get_random_uplink_items(U, U.uses, loc))
for(var/datum/uplink_item/UI in get_random_uplink_items(U, M.mind.tcrystals, loc))
UI.purchase_log(U)
var/obj/item/I = UI.get_goods(U, loc)
if(istype(I))
@@ -47,7 +47,7 @@
/datum/uplink_item/item/badassery/random_many/purchase_log(obj/item/device/uplink/U)
feedback_add_details("traitor_uplink_items_bought", "[src]")
log_and_message_admins("used \the [U.loc] to buy \a [src]")
log_and_message_admins("used \the [U.loc] to buy \a [src] at random")
/****************
* Surplus Crate *
+63
View File
@@ -100,3 +100,66 @@
name = "Healing Nanite pill bottle"
item_cost = 30
path = /obj/item/weapon/storage/pill_bottle/healing_nanites
/datum/uplink_item/item/medical/vermicetol
name = "Vermicetol Bottle"
item_cost = 30
path = /obj/item/weapon/reagent_containers/glass/bottle/vermicetol
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/dermaline
name = "Dermaline Bottle"
item_cost = 30
path = /obj/item/weapon/reagent_containers/glass/bottle/dermaline
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/carthatoline
name = "Carthatoline Bottle"
item_cost = 30
path = /obj/item/weapon/reagent_containers/glass/bottle/carthatoline
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/dexalinp
name = "Dexalin Plus Bottle"
item_cost = 30
path = /obj/item/weapon/reagent_containers/glass/bottle/dexalinp
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/tramadol
name = "Tramadol Bottle"
item_cost = 30
path = /obj/item/weapon/reagent_containers/glass/bottle/tramadol
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/arithrazine
name = "Arithrazine Bottle"
item_cost = 50
path = /obj/item/weapon/reagent_containers/glass/bottle/arithrazine
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/corophizine
name = "Corophizine Bottle"
item_cost = 50
path = /obj/item/weapon/reagent_containers/glass/bottle/corophizine
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/rezadone
name = "Rezadone Bottle"
item_cost = 50
path = /obj/item/weapon/reagent_containers/glass/bottle/rezadone
antag_roles = list("ert")
blacklisted = 1
/datum/uplink_item/item/medical/defib
name = "Combat Defibrilator"
item_cost = 90
path = /obj/item/device/defib_kit/compact/combat
antag_roles = list("mercenary", "ert")
blacklisted = 1
+4 -4
View File
@@ -5,8 +5,8 @@
category = /datum/uplink_category/telecrystals
blacklisted = 1
/datum/uplink_item/item/telecrystal/get_goods(var/obj/item/device/uplink/U, var/loc)
return new /obj/item/stack/telecrystal(loc, cost(U.uses))
/datum/uplink_item/item/telecrystal/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/M)
return new /obj/item/stack/telecrystal(loc, cost(U, M.mind.tcrystals))
/datum/uplink_item/item/telecrystal/one
name = "Telecrystal - 01"
@@ -35,5 +35,5 @@
/datum/uplink_item/item/telecrystal/all
name = "Telecrystals - Empty Uplink"
/datum/uplink_item/item/telecrystal/all/cost(var/telecrystals)
return max(1, telecrystals)
/datum/uplink_item/item/telecrystal/all/cost(obj/item/device/uplink/U, mob/M)
return max(1, M.mind.tcrystals)
+6
View File
@@ -92,6 +92,12 @@
desc = "A device which is capable of disrupting subspace communications, preventing the use of headsets, PDAs, and communicators within \
a radius of seven meters. It runs off weapon cells, which can be replaced as needed. One cell will last for approximately ten minutes."
/datum/uplink_item/item/tools/wall_elecrtifier
name = "Wall Electrifier"
item_cost = 10
path = /obj/item/weapon/cell/spike
desc = "A modified powercell which will electrify walls and reinforced floors in a 3x3 tile range around it. Always active."
/datum/uplink_item/item/tools/emag
name = "Cryptographic Sequencer"
item_cost = 30
+20
View File
@@ -26,6 +26,11 @@
item_cost = 5
path = /obj/item/device/survivalcapsule
/datum/uplink_item/item/tools/popcabin
name = "Cabin Capsule"
item_cost = 5
path = /obj/item/device/survivalcapsule/popcabin
/datum/uplink_item/item/tools/nanopaste
name = "Nanopaste (Advanced)"
item_cost = 10
@@ -36,11 +41,26 @@
item_cost = 10
path = /obj/item/clothing/suit/space/void/autolok
/datum/uplink_item/item/tools/inflatable
name = "Inflatables"
item_cost = 10
path = /obj/item/weapon/storage/briefcase/inflatable
/datum/uplink_item/item/tools/elitetablet
name = "Tablet (Advanced)"
item_cost = 15
path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced
/datum/uplink_item/item/tools/metal
name = "Metal (50 sheets)"
item_cost = 15
path = /obj/fiftyspawner/steel
/datum/uplink_item/item/tools/glass
name = "Glass (50 sheets)"
item_cost = 15
path = /obj/fiftyspawner/glass
/datum/uplink_item/item/tools/elitelaptop
name = "Laptop (Advanced)"
item_cost = 20
-6
View File
@@ -6,12 +6,6 @@
..()
items = list()
/datum/uplink_category/proc/can_view(obj/item/device/uplink/U)
for(var/datum/uplink_item/item in items)
if(item.can_view(U))
return 1
return 0
datum/uplink_category/ammunition
name = "Ammunition"
+20 -36
View File
@@ -31,7 +31,7 @@ var/datum/uplink/uplink = new()
var/item_cost = 0
var/datum/uplink_category/category // Item category
var/list/datum/antagonist/antag_roles // Antag roles this item is displayed to. If empty, display to all.
var/blacklisted = 0
var/blacklisted = FALSE
/datum/uplink_item/item
var/path = null
@@ -48,50 +48,34 @@ var/datum/uplink/uplink = new()
if(!extra_args)
return
if(!can_buy(U))
if(!can_buy(U, user.mind.tcrystals))
return
if(U.CanUseTopic(user, GLOB.tgui_inventory_state) != STATUS_INTERACTIVE)
if(U.tgui_status(user, GLOB.tgui_deep_inventory_state) != STATUS_INTERACTIVE)
return
var/cost = cost(U.uses, U)
var/cost = cost(U, user.mind.tcrystals)
var/goods = get_goods(U, get_turf(user), user, extra_args)
if(!goods)
return
purchase_log(U)
purchase_log(user)
user.mind.tcrystals -= cost
U.used_TC += cost
user.mind.used_TC += cost
return goods
// Any additional arguments you wish to send to the get_goods
/datum/uplink_item/proc/extra_args(var/mob/user)
return 1
return TRUE
/datum/uplink_item/proc/can_buy(obj/item/device/uplink/U)
if(cost(U.uses, U) > U.uses)
return 0
/datum/uplink_item/proc/can_buy(var/obj/item/device/uplink/U, var/telecrystals)
if(cost(U, telecrystals) > telecrystals)
return FALSE
return can_view(U)
return TRUE
/datum/uplink_item/proc/can_view(obj/item/device/uplink/U)
// Making the assumption that if no uplink was supplied, then we don't care about antag roles
if(!U || !antag_roles.len)
return 1
// With no owner, there's no need to check antag status.
if(!U.uplink_owner)
return 0
for(var/antag_role in antag_roles)
var/datum/antagonist/antag = all_antag_types[antag_role]
if(!isnull(antag))
if(antag.is_antagonist(U.uplink_owner))
return 1
return 0
/datum/uplink_item/proc/cost(var/telecrystals, obj/item/device/uplink/U)
/datum/uplink_item/proc/cost(obj/item/device/uplink/U, mob/M)
. = item_cost
if(U)
. = U.get_item_cost(src, .)
@@ -100,19 +84,19 @@ var/datum/uplink/uplink = new()
return desc
// get_goods does not necessarily return physical objects, it is simply a way to acquire the uplink item without paying
/datum/uplink_item/proc/get_goods(var/obj/item/device/uplink/U, var/loc)
return 0
/datum/uplink_item/proc/get_goods(var/obj/item/device/uplink/U, var/loc, mob/user)
return FALSE
/datum/uplink_item/proc/log_icon()
return
/datum/uplink_item/proc/purchase_log(obj/item/device/uplink/U)
/datum/uplink_item/proc/purchase_log(mob/M)
feedback_add_details("traitor_uplink_items_bought", "[src]")
log_and_message_admins("used \the [U.loc] to buy \a [src]")
U.purchase_log[src] = U.purchase_log[src] + 1
log_and_message_admins("\the [M] bought \a [src] through the uplink")
M.mind.purchase_log[src] += 1
datum/uplink_item/dd_SortValue()
return cost(INFINITY)
return item_cost
/********************************
* *
@@ -133,7 +117,7 @@ datum/uplink_item/dd_SortValue()
A.put_in_any_hand_if_possible(I)
return I
/datum/uplink_item/item/get_goods(var/obj/item/device/uplink/U, var/loc)
/datum/uplink_item/item/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user)
var/obj/item/I = new path(loc)
return I
@@ -208,7 +192,7 @@ datum/uplink_item/dd_SortValue()
/proc/get_surplus_items(var/obj/item/device/uplink/U, var/remaining_TC, var/loc)
var/list/bought_items = list()
var/override = 1
var/override = TRUE
while(remaining_TC)
var/datum/uplink_item/I = all_uplink_selection.get_random_item(remaining_TC, U, bought_items, override)
if(!I)
+1 -1
View File
@@ -103,7 +103,7 @@
name = "Anti-Materiel Rifle (14.5mm)"
item_cost = DEFAULT_TELECRYSTAL_AMOUNT
path = /obj/item/weapon/gun/projectile/heavysniper
antag_roles = list("mercenary")
antag_roles = list("mercenary", "ert") //VOREStation Edit
/datum/uplink_item/item/visible_weapons/heavysnipertraitor
name = "Anti-Materiel Rifle (14.5mm)"
+22 -2
View File
@@ -1,5 +1,5 @@
/datum/wires/mines
wire_count = 6
wire_count = 7
randomize = TRUE
holder_type = /obj/effect/mine
proper_name = "Explosive Wires"
@@ -7,6 +7,7 @@
/datum/wires/mines/New(atom/_holder)
wires = list(WIRE_EXPLODE, WIRE_EXPLODE_DELAY, WIRE_DISARM, WIRE_BADDISARM)
return ..()
#define WIRE_TRAP 64
/datum/wires/mines/get_status()
. = ..()
@@ -29,7 +30,13 @@
if(WIRE_DISARM)
C.visible_message("[bicon(C)] *click!*", "[bicon(C)] *click!*")
new C.mineitemtype(get_turf(C))
var/obj/effect/mine/MI = new C.mineitemtype(get_turf(C))
if(C.trap)
MI.trap = C.trap
C.trap = null
MI.trap.forceMove(MI)
spawn(0)
qdel(C)
@@ -37,6 +44,15 @@
C.visible_message("[bicon(C)] *BEEPBEEPBEEP*", "[bicon(C)] *BEEPBEEPBEEP*")
spawn(20)
C.explode()
if(WIRE_TRAP)
C.visible_message("[bicon(C)] *click!*", "[bicon(C)] *click!*")
if(mend)
C.visible_message("[bicon(C)] - The mine recalibrates[C.camo_net ? ", revealing \the [C.trap] inside." : "."]")
C.alpha = 255
..()
/datum/wires/mines/on_pulse(wire)
@@ -57,6 +73,10 @@
if(WIRE_BADDISARM)
C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*")
if(WIRE_TRAP)
C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*")
..()
/datum/wires/mines/interactable(mob/user)