conflict resolution

This commit is contained in:
KasparoVy
2017-02-05 17:13:34 -05:00
619 changed files with 18580 additions and 11660 deletions
+2 -1
View File
@@ -43,7 +43,8 @@ other types of metals and chemistry for reagents).
var/build_type = null //Flag as to what kind machine the design is built in. See defines.
var/list/materials = list() //List of materials. Format: "id" = amount.
var/construction_time //Amount of time required for building the object
var/build_path = "" //The file path of the object that gets created
var/build_path = null //The file path of the object that gets created
var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator.
var/locked = 0 //If true it will spawn inside a lockbox with currently sec access
var/access_requirement = list(access_armory) //What special access requirements will the lockbox have? Defaults to armory.
var/category = null //Primarily used for Mech Fabricators, but can be used for anything
@@ -162,6 +162,14 @@
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
build_path = /obj/item/weapon/firealarm_electronics
category = list("initial", "Electronics")
/datum/design/earmuffs
name = "Earmuffs"
id = "earmuffs"
build_type = AUTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/ears/earmuffs
category = list("initial", "Miscellaneous")
/datum/design/igniter
name = "Igniter"
@@ -188,7 +196,7 @@
category = list("initial", "Medical")
/datum/design/kitchen_knife
name = "Kitchen knife"
name = "Kitchen Knife"
id = "kitchen_knife"
build_type = AUTOLATHE
materials = list(MAT_METAL = 12000)
@@ -196,19 +204,19 @@
category = list("initial","Miscellaneous")
/datum/design/minihoe
name = "Mini hoe"
name = "Mini Hoe"
id = "mini_hoe"
build_type = AUTOLATHE
materials = list(MAT_METAL = 50)
build_path = /obj/item/weapon/minihoe
build_path = /obj/item/weapon/cultivator
category = list("initial","Miscellaneous")
/datum/design/plant_analyzer
name = "Plant analyzer"
name = "Plant Analyzer"
id = "plant_analyzer"
build_type = AUTOLATHE
materials = list(MAT_METAL = 30, MAT_GLASS = 20)
build_path = /obj/item/device/analyzer/plant_analyzer
build_path = /obj/item/device/plant_analyzer
category = list("initial","Miscellaneous")
/datum/design/shovel
@@ -324,12 +332,12 @@
category = list("initial", "Miscellaneous")
/datum/design/foambox
name = "Box of Foam Force darts"
id = "foamforce"
build_type = AUTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/ammo_box/foambox
category = list("initial", "Miscellaneous")
name = "Box of Foam Force darts"
id = "foamforce"
build_type = AUTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/ammo_box/foambox
category = list("initial", "Miscellaneous")
/datum/design/canvas/twentythreeXtwentythree
name = "23px by 23px Canvas"
@@ -0,0 +1,220 @@
///////////////////////////////////
///////Biogenerator Designs ///////
///////////////////////////////////
/datum/design/milk
name = "10 milk"
id = "milk"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 20)
make_reagents = list("milk" = 10)
category = list("initial","Food")
/datum/design/cream
name = "10 cream"
id = "cream"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 30)
make_reagents = list("cream" = 10)
category = list("initial","Food")
/datum/design/milk_carton
name = "Milk carton"
id = "milk_carton"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 100)
build_path = /obj/item/weapon/reagent_containers/food/condiment/milk
category = list("initial","Food")
/datum/design/cream_carton
name = "Cream carton"
id = "cream_carton"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/reagent_containers/food/drinks/bottle/cream
category = list("initial","Food")
/datum/design/black_pepper
name = "10u black pepper"
id = "black_pepper"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 25)
make_reagents = list("blackpepper" = 10)
category = list("initial","Food")
/datum/design/pepper_mill
name = "Pepper mill"
id = "pepper_mill"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/food/condiment/peppermill
make_reagents = list()
category = list("initial","Food")
/datum/design/monkey_cube
name = "Monkey cube"
id = "mcube"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 250)
build_path = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
category = list("initial", "Food")
/datum/design/ez_nut
name = "E-Z-Nutrient"
id = "ez_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 10)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez
category = list("initial","Botany Chemicals")
/datum/design/l4z_nut
name = "Left 4 Zed"
id = "l4z_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 20)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z
category = list("initial","Botany Chemicals")
/datum/design/rh_nut
name = "Robust Harvest"
id = "rh_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 25)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh
category = list("initial","Botany Chemicals")
/datum/design/weed_killer
name = "Weed Killer"
id = "weed_killer"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/weedkiller
category = list("initial","Botany Chemicals")
/datum/design/pest_spray
name = "Pest Killer"
id = "pest_spray"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/pestkiller
category = list("initial","Botany Chemicals")
/datum/design/botany_bottle
name = "Empty Bottle"
id = "botany_bottle"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 5)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/empty
category = list("initial", "Botany Chemicals")
/datum/design/cloth
name = "Roll of cloth"
id = "cloth"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/stack/sheet/cloth
category = list("initial","Leather and Cloth")
/datum/design/wallet
name = "Wallet"
id = "wallet"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 100)
build_path = /obj/item/weapon/storage/wallet
category = list("initial","Leather and Cloth")
/datum/design/botany_gloves
name = "Botanical gloves"
id = "botany_gloves"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 150)
build_path = /obj/item/clothing/gloves/botanic_leather
category = list("initial","Leather and Cloth")
/datum/design/toolbelt
name = "Utility Belt"
id = "toolbelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/utility
category = list("initial","Leather and Cloth")
/datum/design/hydrobelt
name = "Botanist belt"
id = "hydrobelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/botany
category = list("initial","Leather and Cloth")
/datum/design/secbelt
name = "Security belt"
id = "secbelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/security
category = list("initial","Leather and Cloth")
/datum/design/medbelt
name = "Medical belt"
id = "medbel"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/medical
category = list("initial","Leather and Cloth")
/datum/design/janibelt
name = "Janitorial belt"
id = "janibelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/janitor
category = list("initial","Leather and Cloth")
/datum/design/bandolier
name = "Bandolier belt"
id = "bandolier"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/bandolier
category = list("initial","Leather and Cloth")
/datum/design/s_holster
name = "Shoulder holster"
id = "s_holster"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 400)
build_path = /obj/item/weapon/storage/belt/holster
category = list("initial","Leather and Cloth")
/datum/design/leather_satchel
name = "Leather satchel"
id = "leather_satchel"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 400)
build_path = /obj/item/weapon/storage/backpack/satchel
category = list("initial","Leather and Cloth")
/datum/design/leather_jacket
name = "Leather jacket"
id = "leather_jacket"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 500)
build_path = /obj/item/clothing/suit/jacket/leather
category = list("initial","Leather and Cloth")
/datum/design/leather_overcoat
name = "Leather overcoat"
id = "leather_overcoat"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 1000)
build_path = /obj/item/clothing/suit/jacket/leather/overcoat
category = list("initial","Leather and Cloth")
/datum/design/rice_hat
name = "Rice hat"
id = "rice_hat"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/clothing/head/rice_hat
category = list("initial","Leather and Cloth")
@@ -340,7 +340,7 @@
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/seed_extractor
category = list ("Misc. Machinery")
category = list ("Hydroponics Machinery")
/datum/design/processor
name = "Machine Design (Processor Board)"
@@ -512,23 +512,12 @@
build_path = /obj/item/weapon/circuitboard/gameboard
category = list("Misc. Machinery")
/datum/design/botany_extractor
name = "Machine Design (Lysis-Isolation Centrifuge)"
desc = "The circuit board for a lysis-isolation centrifuge."
id = "botany_extractor"
req_tech = list("biotech" = 3, "programming" = 3)
/datum/design/plantgenes
name = "Machine Design (Plant DNA Manipulator Board)"
desc = "The circuit board for a plant DNA manipulator."
id = "plantgenes"
req_tech = list("programming" = 4, "biotech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS=1000, "sacid"=20)
build_path = /obj/item/weapon/circuitboard/botany_extractor
category = list("Hydroponics Machinery")
/datum/design/botany_editor
name = "Machine Design (Bioballistic Delivery System)"
desc = "The circuit board for a bioballistic delivery system."
id = "botany_editor"
req_tech = list("biotech" = 3, "programming" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS=1000, "sacid"=20)
build_path = /obj/item/weapon/circuitboard/botany_editor
category = list("Hydroponics Machinery")
build_path = /obj/item/weapon/circuitboard/plantgenes
category = list("Hydroponics Machinery")
@@ -11,6 +11,16 @@
build_path = /obj/item/weapon/disk/design_disk
category = list("Miscellaneous")
/datum/design/diskplantgene
name = "Plant data disk"
desc = "A disk for storing plant genetic data."
id = "diskplantgene"
req_tech = list("programming" = 4, "biotech" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL=200, MAT_GLASS=100)
build_path = /obj/item/weapon/disk/plantgene
category = list("Miscellaneous")
/datum/design/intellicard
name = "Intellicard"
desc = "Allows for the construction of an intellicard."
+3
View File
@@ -410,6 +410,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(being_built)
var/power = 2000
var/amount=text2num(href_list["amount"])
if(being_built.make_reagents.len)
return 0
amount = max(1, min(10, amount))
for(var/M in being_built.materials)
power += round(being_built.materials[M] * amount / 5)
@@ -718,6 +720,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(b_type & AUTOLATHE) lathe_types += "Autolathe"
if(b_type & MECHFAB) lathe_types += "Mech Fabricator"
if(b_type & PODFAB) lathe_types += "Spacepod Fabricator"
if(b_type & BIOGENERATOR) lathe_types += "Biogenerator"
var/list/materials = list()
disk_data["materials"] = materials
for(var/M in d_disk.blueprint.materials)
+15 -6
View File
@@ -178,6 +178,21 @@ research holder datum.
return
..()
//Biogenerator files
/datum/research/biogenerator/New()
for(var/T in (subtypesof(/datum/tech)))
possible_tech += new T(src)
for(var/path in subtypesof(/datum/design))
var/datum/design/D = new path(src)
possible_designs += D
if((D.build_type & BIOGENERATOR) && ("initial" in D.category))
AddDesign2Known(D)
/datum/research/biogenerator/AddDesign2Known(datum/design/D)
if(!(D.build_type & BIOGENERATOR))
return
..()
/***************************************************************
** Technology Datums **
** Includes all the various technoliges and what they make. **
@@ -311,10 +326,7 @@ datum/tech/robotics
/obj/item/weapon/disk/tech_disk
name = "\improper Technology Disk"
desc = "A disk for storing technology data for further research."
icon = 'icons/obj/cloning.dmi'
icon_state = "datadisk2"
item_state = "card-id"
w_class = 1
materials = list(MAT_METAL=30, MAT_GLASS=10)
var/datum/tech/stored
var/default_name = "\improper Technology Disk"
@@ -339,10 +351,7 @@ datum/tech/robotics
/obj/item/weapon/disk/design_disk
name = "\improper Component Design Disk"
desc = "A disk for storing device design data for construction in lathes."
icon = 'icons/obj/cloning.dmi'
icon_state = "datadisk2"
item_state = "card-id"
w_class = 1
materials = list(MAT_METAL=30, MAT_GLASS=10)
var/datum/design/blueprint
// I'm doing this so that disk paths with pre-loaded designs don't get weird names
@@ -210,6 +210,6 @@
M.lastattacker = user
if(inserted_battery.battery_effect)
user.attack_log += "\[[time_stamp()]\]<font color='red'> Tapped [key_name(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])</font>"
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Tapped by [key_name(user)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])</font>"
user.create_attack_log("<font color='red'> Tapped [key_name(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])</font>")
M.create_attack_log("<font color='orange'> Tapped by [key_name(user)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])</font>")
msg_admin_attack("[key_name_admin(user)] tapped [key_name_admin(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])" )
@@ -25,8 +25,8 @@
..()
/obj/item/slime_extract/New()
..()
create_reagents(100)
..()
create_reagents(100)
/obj/item/slime_extract/grey
name = "grey slime extract"
@@ -124,7 +124,9 @@
w_class = 1
origin_tech = "biotech=4"
/obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user , proximity)
/obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user, proximity_flag)
if(!proximity_flag)
return
if(istype(target))
to_chat(user, "<span class='notice'>You cannot transfer [src] to [target]! It appears the potion must be given directly to a slime to absorb.</span>") // le fluff faec
return
@@ -174,7 +176,7 @@
/obj/item/slimepotion/sentience
name = "sentience potion"
desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels. Unlike normal slime potions, it can be absorbed by any nonsentient being."
desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
origin_tech = "biotech=5"
@@ -182,7 +184,9 @@
var/being_used = 0
var/sentience_type = SENTIENCE_ORGANIC
/obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user)
/obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user, proximity_flag)
if(!proximity_flag)
return
if(being_used || !ismob(M))
return
if(!isanimal(M) || M.ckey) //only works on animals that aren't player controlled
@@ -221,6 +225,50 @@
being_used = 0
..()
/obj/item/slimepotion/transference
name = "consciousness transference potion"
desc = "A strange slime-based chemical that, when used, allows the user to transfer their consciousness to a lesser being."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
origin_tech = "biotech=6"
var/prompted = FALSE
var/animal_type = SENTIENCE_ORGANIC
/obj/item/slimepotion/transference/afterattack(mob/living/M, mob/user, proximity_flag)
if(!proximity_flag)
return
if(prompted || !ismob(M))
return
if(!isanimal(M) || M.ckey) //much like sentience, these will not work on something that is already player controlled
to_chat(user, "<span class='warning'>[M] already has a higher consciousness!</span>")
return ..()
if(M.stat)
to_chat(user, "<span class='warning'>[M] is dead!</span>")
return ..()
var/mob/living/simple_animal/SM = M
if(SM.sentience_type != animal_type)
to_chat(user, "<span class='warning'>You cannot transfer your consciousness to [SM].</span>") //no controlling machines
return ..()
if(jobban_isbanned(user, ROLE_SENTIENT))
to_chat(user, "<span class='warning'>Your mind goes blank as you attempt to use the potion.</span>")
return
prompted = TRUE
if(alert("This will permanently transfer your consciousness to [SM]. Are you sure you want to do this?",,"Yes","No")=="No")
prompted = FALSE
return
to_chat(user, "<span class='notice'>You drink the potion then place your hands on [SM]...</span>")
user.mind.transfer_to(SM)
SM.universal_speak = 1
SM.faction = user.faction
SM.sentience_act() //Same deal here as with sentience
user.death()
to_chat(SM, "<span class='notice'>In a quick flash, you feel your consciousness flow into [SM]!</span>")
to_chat(SM, "<span class='warning'>You are now [SM]. Your allegiances, alliances, and roles are still the same as they were prior to consciousness transfer!</span>")
SM.name = "[SM.name] as [user.real_name]"
qdel(src)
/obj/item/slimepotion/steroid
name = "slime steroid"
desc = "A potent chemical mix that will cause a baby slime to generate more extract."
@@ -303,15 +351,17 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
/obj/item/slimepotion/speed/afterattack(obj/item/C, mob/user)
/obj/item/slimepotion/speed/afterattack(obj/item/C, mob/user, proximity_flag)
if(!proximity_flag)
return
..()
if(!istype(C))
to_chat(user, "<span class='warning'>The potion can only be used on items!</span>")
return
if(C.slowdown <= 0)
to_chat(user, "<span class='warning'>The [C] can't be made any faster!</span>")
to_chat(user, "<span class='warning'>[C] can't be made any faster!</span>")
return..()
to_chat(user, "<span class='notice'>You slather the red gunk over the [C], making it faster.</span>")
to_chat(user, "<span class='notice'>You slather the red gunk over [C], making it faster.</span>")
C.color = "#FF0000"
C.slowdown = 0
qdel(src)
@@ -323,8 +373,10 @@
icon_state = "bottle17"
var/uses = 3
/obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user)
/obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user, proximity_flag)
..()
if(!proximity_flag)
return
if(!uses)
qdel(src)
return
@@ -332,9 +384,9 @@
to_chat(user, "<span class='warning'>The potion can only be used on clothing!</span>")
return
if(C.max_heat_protection_temperature == FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT)
to_chat(user, "<span class='warning'>The [C] is already fireproof!</span>")
to_chat(user, "<span class='warning'>[C] is already fireproof!</span>")
return ..()
to_chat(user, "<span class='notice'>You slather the blue gunk over the [C], fireproofing it.</span>")
to_chat(user, "<span class='notice'>You slather the blue gunk over [C], fireproofing it.</span>")
C.name = "fireproofed [C.name]"
C.color = "#000080"
C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
@@ -366,9 +418,9 @@
else
icon_state = "golem"
/obj/effect/golemrune/attack_hand(mob/living/user as mob)
/obj/effect/golemrune/attack_hand(mob/living/user)
var/mob/dead/observer/ghost
for(var/mob/dead/observer/O in src.loc)
for(var/mob/dead/observer/O in loc)
if(!check_observer(O))
to_chat(O, "\red You are not eligible to become a golem.")
continue
@@ -391,21 +443,22 @@
volunteer(O)
/obj/effect/golemrune/attack_ghost(var/mob/dead/observer/O)
if(!O) return
if(!O)
return
volunteer(O)
/obj/effect/golemrune/proc/check_observer(var/mob/dead/observer/O)
if(!O)
return 0
return FALSE
if(!O.client)
return 0
return FALSE
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
return 0
return FALSE
if(!O.can_reenter_corpse)
return 0
return FALSE
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
return 0
return 1
return FALSE
return TRUE
/obj/effect/golemrune/proc/volunteer(var/mob/dead/observer/O)
if(O in ghosts)
@@ -448,8 +501,8 @@
/obj/effect/timestop/proc/timestop()
playsound(get_turf(src), 'sound/magic/TIMEPARADOX2.ogg', 100, 1, -1)
for(var/i in 1 to duration-1)
for(var/A in orange (freezerange, src.loc))
if(istype(A, /mob/living))
for(var/A in orange (freezerange, loc))
if(isliving(A))
var/mob/living/M = A
if(M in immune)
continue