All AI Lawsets are rebalanced, can be researched, appear in config, and random spawners for AI upload. (#66854)

This formally adds the new AI lawsets from #66636 into the game. Every lawset can
be researched, appears in config, and random spawners.
This commit is contained in:
Tim
2022-06-06 22:54:29 -07:00
committed by GitHub
parent a5d4488628
commit f06d735a52
20 changed files with 961 additions and 725 deletions
+1 -1
View File
@@ -41,7 +41,7 @@
var/message = ionMessage || generate_ion_law()
if(message)
if(prob(removeDontImproveChance))
M.replace_random_law(message, list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION))
M.replace_random_law(message, list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION), LAW_ION)
else
M.add_ion_law(message)
+2 -2
View File
@@ -69,9 +69,9 @@
hackedcheck += law
post_lawchange(announce)
/mob/living/silicon/proc/replace_random_law(law, groups, announce = TRUE)
/mob/living/silicon/proc/replace_random_law(law, remove_law_groups, insert_law_group, announce = TRUE)
laws_sanity_check()
. = laws.replace_random_law(law,groups)
. = laws.replace_random_law(law, remove_law_groups, insert_law_group)
post_lawchange(announce)
/mob/living/silicon/proc/shuffle_laws(list/groups, announce = TRUE)
@@ -153,3 +153,165 @@
build_path = /obj/item/ai_module/core/full/custom
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/dungeon_master_module
name = "Core Module Design (Dungeon Master)"
desc = "Allows for the construction of a Dungeon Master AI Core Module."
id = "dungeon_master_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/dungeon_master
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/painter_module
name = "Core Module Design (Painter)"
desc = "Allows for the construction of a Painter AI Core Module."
id = "painter_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/painter
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/nutimov_module
name = "Core Module Design (Nutimov)"
desc = "Allows for the construction of a Nutimov AI Core Module."
id = "nutimov_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/nutimov
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/ten_commandments_module
name = "Core Module Design (10 Commandments)"
desc = "Allows for the construction of a 10 Commandments AI Core Module."
id = "ten_commandments_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/ten_commandments
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/asimovpp_module
name = "Core Module Design (Asimov++)"
desc = "Allows for the construction of a Asimov++ AI Core Module."
id = "asimovpp_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/asimovpp
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/hippocratic_module
name = "Core Module Design (Hippocratic)"
desc = "Allows for the construction of a Hippocratic AI Core Module."
id = "hippocratic_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/hippocratic
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/paladin_devotion_module
name = "Core Module Design (Paladin Devotion)"
desc = "Allows for the construction of a Paladin Devotion AI Core Module."
id = "paladin_devotion_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/paladin_devotion
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/robocop_module
name = "Core Module Design (Robocop)"
desc = "Allows for the construction of a Robocop AI Core Module."
id = "robocop_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/robocop
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/maintain_module
name = "Core Module Design (Maintain)"
desc = "Allows for the construction of a Maintain AI Core Module."
id = "maintain_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/maintain
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/liveandletlive_module
name = "Core Module Design (Liveandletlive)"
desc = "Allows for the construction of a Liveandletlive AI Core Module."
id = "liveandletlive_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/liveandletlive
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/peacekeeper_module
name = "Core Module Design (Peacekeeper)"
desc = "Allows for the construction of a Peacekeeper AI Core Module."
id = "peacekeeper_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/peacekeeper
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/reporter_module
name = "Core Module Design (Reporter)"
desc = "Allows for the construction of a Reporter AI Core Module."
id = "reporter_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/reporter
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/hulkamania_module
name = "Core Module Design (Hulkamania)"
desc = "Allows for the construction of a Hulkamania AI Core Module."
id = "hulkamania_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/hulkamania
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/drone_module
name = "Core Module Design (Drone)"
desc = "Allows for the construction of a Drone AI Core Module."
id = "drone_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/drone
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/antimov_module
name = "Core Module Design (Antimov)"
desc = "Allows for the construction of a Antimov AI Core Module."
id = "antimov_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/antimov
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/balance_module
name = "Core Module Design (Balance)"
desc = "Allows for the construction of a Balance AI Core Module."
id = "balance_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/balance
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/thermurderdynamic_module
name = "Core Module Design (Thermurderdynamic)"
desc = "Allows for the construction of a Thermurderdynamic AI Core Module."
id = "thermurderdynamic_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/thermurderdynamic
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/board/damaged
name = "Core Module Design (Damaged)"
desc = "Allows for the construction of a Damaged AI Core Module."
id = "damaged_module"
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000)
build_path = /obj/item/ai_module/core/full/damaged
category = list("AI Modules")
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
+45 -18
View File
@@ -880,36 +880,63 @@
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
/datum/techweb_node/ai
id = "ai"
/datum/techweb_node/ai_basic
id = "ai_basic"
display_name = "Artificial Intelligence"
description = "AI unit research."
prereq_ids = list("adv_robotics")
design_ids = list(
"aicore",
"aifixer",
"aiupload",
"asimov_module",
"borg_ai_control",
"corporate_module",
"default_module",
"freeform_module",
"freeformcore_module",
"intellicard",
"mecha_tracking_ai_control",
"onehuman_module",
"overlord_module",
"oxygen_module",
"paladin_module",
"protectstation_module",
"purge_module",
"quarantine_module",
"remove_module",
"aifixer",
"aiupload",
"reset_module",
"asimov_module",
"default_module",
"nutimov_module",
"paladin_module",
"robocop_module",
"corporate_module",
"drone_module",
"oxygen_module",
"safeguard_module",
"tyrant_module",
"protectstation_module",
"quarantine_module",
"freeform_module",
"remove_module",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
/datum/techweb_node/ai_adv
id = "ai_adv"
display_name = "Advanced Artificial Intelligence"
description = "State of the art lawsets to be used for AI research."
prereq_ids = list("ai_basic")
design_ids = list(
"asimovpp_module",
"paladin_devotion_module",
"dungeon_master_module",
"painter_module",
"ten_commandments_module",
"hippocratic_module",
"maintain_module",
"liveandletlive_module",
"reporter_module",
"hulkamania_module",
"peacekeeper_module",
"overlord_module",
"tyrant_module",
"antimov_module",
"balance_module",
"thermurderdynamic_module",
"damaged_module",
"freeformcore_module",
"onehuman_module",
"purge_module",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
//Any kind of point adjustment needs to happen before SSresearch sets up the whole node tree, it gets cached
/datum/techweb_node/ai/New()