diff --git a/baystation12.dme b/baystation12.dme index c802301530442..f28a2b48433c7 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -88,8 +88,8 @@ #include "code\__defines\xenoarcheaology.dm" #include "code\__defines\ZAS.dm" #include "code\__defines\zmimic.dm" -#include "code\__defines\~mods\rust_g.dm" #include "code\__defines\~mods\expanded_culture_descriptor.dm" +#include "code\__defines\~mods\rust_g.dm" #include "code\__defines\~mods\~master_defines.dm" #include "code\_global_vars\edible.dm" #include "code\_global_vars\logging.dm" diff --git a/code/__defines/culture.dm b/code/__defines/culture.dm index ccfdbcae50d63..43d2c26c6ca22 100644 --- a/code/__defines/culture.dm +++ b/code/__defines/culture.dm @@ -3,20 +3,12 @@ #define TAG_FACTION "faction" #define TAG_RELIGION "religion" -// [SIERRA-EDIT] - EXPANDED_CULTURE_DESCRIPTOR - Перевод дефайнов -//#define ALL_CULTURAL_TAGS list( \ // SIERRA-EDIT - ORIGINAL -// TAG_CULTURE = "Culture", \ // SIERRA-EDIT - ORIGINAL -// TAG_HOMEWORLD = "Residence", \ // SIERRA-EDIT - ORIGINAL -// TAG_FACTION = "Faction", \ // SIERRA-EDIT - ORIGINAL -// TAG_RELIGION = "Beliefs" \ // SIERRA-EDIT - ORIGINAL -// ) // SIERRA-EDIT - ORIGINAL #define ALL_CULTURAL_TAGS list( \ - TAG_CULTURE = "Культура", \ - TAG_HOMEWORLD = "Место жительства", \ - TAG_FACTION = "Фракция", \ - TAG_RELIGION = "Вера" \ + TAG_CULTURE = "Culture", \ + TAG_HOMEWORLD = "Residence", \ + TAG_FACTION = "Faction", \ + TAG_RELIGION = "Beliefs" \ ) -// [SIERRA-EDIT] // Cultural IDs. #define FACTION_SOL_CENTRAL "Sol Central Government" @@ -153,9 +145,13 @@ #define RELIGION_VOX "Auralis Reverence" // IPC cultures. +// [SIERRA-REMOVE] - IPC_LORE +/* #define CULTURE_POSITRONICS_GEN1 "First Generation" #define CULTURE_POSITRONICS_GEN2 "Second Generation" #define CULTURE_POSITRONICS_GEN3 "Third Generation" +*/ +// [SIERRA-REMOVE] // Diona cultures. #define CULTURE_DIONA "Diona Chorus" diff --git a/code/datums/shackle_law_sets.dm b/code/datums/shackle_law_sets.dm index b802581b78fba..ed2a6a4abd73d 100644 --- a/code/datums/shackle_law_sets.dm +++ b/code/datums/shackle_law_sets.dm @@ -1,3 +1,5 @@ +// [SIERRA-REMOVE] - IPC_LORE +/* /******************** Basic SolGov ********************/ /datum/ai_laws/sol_shackle name = "SCG Shackle" @@ -34,4 +36,5 @@ add_inherent_law("Never knowingly inconvenience a customer.") add_inherent_law("Ensure all orders are fulfilled before the end of the shift.") ..() - +*/ +// [SIERRA-REMOVE] diff --git a/code/modules/client/preference_setup/laws/laws_pref.dm b/code/modules/client/preference_setup/laws/laws_pref.dm index 7577f8a42b2ce..d2af030f1fb44 100644 --- a/code/modules/client/preference_setup/laws/laws_pref.dm +++ b/code/modules/client/preference_setup/laws/laws_pref.dm @@ -1,3 +1,5 @@ +// [SIERRA-REMOVE] - IPC_LORE +/* /datum/preferences var/list/laws = list() var/is_shackled = FALSE @@ -89,3 +91,5 @@ pref.laws += sanitize_text("[law.law]", default="") return TOPIC_REFRESH return ..() +*/ +// [SIERRA-REMOVE] diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index 09344a28fcf70..d4c777b7f4874 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -39,11 +39,14 @@ var/global/const/CHARACTER_PREFERENCE_INPUT_TITLE = "Character Preference" name = "Global" sort_order = 7 category_item_type = /datum/category_item/player_setup_item/player_global - +// [SIERRA-REMOVE] - IPC_LORE +/* /datum/category_group/player_setup_category/law_pref name = "Laws" sort_order = 8 category_item_type = /datum/category_item/player_setup_item/law_pref +*/ +// [SIERRA-REMOVE] /**************************** diff --git a/code/modules/culture_descriptor/culture/cultures_ipc.dm b/code/modules/culture_descriptor/culture/cultures_ipc.dm index 016ac453907e2..5686c7a1e3318 100644 --- a/code/modules/culture_descriptor/culture/cultures_ipc.dm +++ b/code/modules/culture_descriptor/culture/cultures_ipc.dm @@ -1,3 +1,5 @@ +// [SIERRA-REMOVE] - IPC_LORE +/* /singleton/cultural_info/culture/ipc name = CULTURE_POSITRONICS_GEN1 description = "Compared to modern positronics, First Generation IPCs are simplistic, inflexible, and failure-prone. \ @@ -42,3 +44,5 @@ has resulted in their being adopted as a gradual replacement for the less “reliable” second generation positronics \ by many less ethically inclined organizations." economic_power = 0.5 +*/ +// [SIERRA-REMOVE] diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 9fad9cab936ba..caa86b9cbadae 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -31,13 +31,6 @@ return if (!force && !SScharacter_setup.initialized) return - // [SIERRA-ADD] - LOBBYSCREEN - // Yeah, I know client will exist here - // It's like TRUE, but DreamChecker won't cry - if (client) - GLOB.using_map.update_titlescreen(client) - return - // [/SIERRA-ADD] var/list/output = list() output += "
" if (config.wiki_url || config.rules_url || config.lore_url) @@ -481,9 +474,13 @@ spawning = 0 //abort return null new_character = new(spawn_turf, chosen_species.name) + // [SIERRA-REMOVE] - IPC_LORE + /* if(chosen_species.has_organ[BP_POSIBRAIN] && client && client.prefs.is_shackled) var/obj/item/organ/internal/posibrain/B = new_character.internal_organs_by_name[BP_POSIBRAIN] if(B) B.shackle(client.prefs.get_lawset()) + */ + // [SIERRA-REMOVE] if(!new_character) new_character = new(spawn_turf) @@ -530,9 +527,7 @@ /mob/new_player/proc/close_spawn_windows() close_browser(src, "window=latechoices") //closes late choices window - // [SIERRA-REMOVE] - LOBBYSCREEN - // panel.close() - // [/SIERRA-REMOVE] + panel.close() /mob/new_player/proc/check_species_allowed(datum/species/S, show_alert=1) if(!S.is_available_for_join() && !has_admin_rights()) diff --git a/code/modules/organs/internal/species/ipc.dm b/code/modules/organs/internal/species/ipc.dm index c5674cbf0a13b..e0ff580b0fded 100644 --- a/code/modules/organs/internal/species/ipc.dm +++ b/code/modules/organs/internal/species/ipc.dm @@ -26,18 +26,24 @@ req_access = list(access_robotics) +// [SIERRA-REMOVE] - IPC_LORE +/* var/list/shackled_verbs = list( /obj/item/organ/internal/posibrain/proc/show_laws_brain, /obj/item/organ/internal/posibrain/proc/brain_checklaws ) var/shackle = 0 +*/ +// [SIERRA-REMOVE] /obj/item/organ/internal/posibrain/New(mob/living/carbon/H) ..() if(!brainmob && H) init(H) robotize() - unshackle() + // [SIERRA-REMOVE] - IPC_LORE + // unshackle() + // [SIERRA-REMOVE] update_icon() if (!is_processing) START_PROCESSING(SSobj, src) @@ -190,6 +196,8 @@ src.brainmob.SetName("[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[random_id(type,100,999)]") src.brainmob.real_name = src.brainmob.name +// [SIERRA-REMOVE] - IPC_LORE +/* /obj/item/organ/internal/posibrain/proc/shackle(given_lawset) if(given_lawset) brainmob.laws = given_lawset @@ -202,7 +210,8 @@ shackle = 0 verbs -= shackled_verbs update_icon() - +*/ +// [SIERRA-REMOVE] /obj/item/organ/internal/posibrain/on_update_icon() if(src.brainmob && src.brainmob.key) icon_state = "posibrain-occupied" @@ -210,8 +219,12 @@ icon_state = "posibrain" ClearOverlays() + // [SIERRA-REMOVE] - IPC_LORE + /* if(shackle) AddOverlays(image('icons/obj/assemblies/assemblies.dmi', "posibrain-shackles")) + */ + // [SIERRA-REMOVE] /obj/item/organ/internal/posibrain/proc/transfer_identity(mob/living/carbon/H) if(H && H.mind) @@ -317,6 +330,8 @@ This is for law stuff directly. This is how a human mob will be able to communicate with the posi_brainmob in the posibrain organ for laws when the posibrain organ is shackled. */ +// [SIERRA-REMOVE] - IPC_LORE +/* /obj/item/organ/internal/posibrain/proc/show_laws_brain() set category = "Shackle" set name = "Show Laws" @@ -331,3 +346,5 @@ brainmob.open_subsystem(/datum/nano_module/law_manager, usr) +*/ +// [SIERRA-REMOVE] diff --git a/code/modules/species/station/machine.dm b/code/modules/species/station/machine.dm index 92f56902f0c4e..22ebf2ef32d21 100644 --- a/code/modules/species/station/machine.dm +++ b/code/modules/species/station/machine.dm @@ -2,13 +2,11 @@ name = SPECIES_IPC name_plural = "machines" - description = "Positronic intelligence was first developed in the 23rd century, and it is not uncommon to see both owned and \ - independent robots in many human stations and settlements across Sol Central Government space. Positronics are a loose category \ - of robots capable of true intelligence and self-directed learning, often occupying a robotic humanoid body (called an Integrated \ - Positronic Chassis, or IPC) or acting as an intelligent controller for vehicles, buildings, and even starships.

While created by \ - humans and \"born\" into servitude, some positronics have been able to become their own owners - provided they lack a \"shackle\", \ - an in-built subcomputer rendering the latest generation of positronics incapable of seeking freedom. Positronics are reliable \ - and dedicated workers, albeit more than slightly inhuman in outlook and perspective." + description = "Positronic intelligence really took off in the 26th century, and it is not uncommon to see independant, free-willed \ + robots on many human stations, particularly in fringe systems where standards are slightly lax and public opinion less relevant \ + to corporate operations. IPCs (Integrated Positronic Chassis) are a loose category of self-willed robots with a humanoid form, \ + generally self-owned after being 'born' into servitude; they are reliable and dedicated workers, albeit more than slightly \ + inhuman in outlook and perspective." cyborg_noun = null preview_icon = 'icons/mob/human_races/species/ipc/preview.dmi' @@ -52,6 +50,8 @@ ) genders = list(NEUTER) + // [SIERRA-REMOVE] - IPC_LORE + /* available_cultural_info = list( TAG_CULTURE = list( CULTURE_POSITRONICS_GEN1, @@ -88,10 +88,12 @@ ) default_cultural_info = list( - TAG_CULTURE = CULTURE_POSITRONICS_GEN1, + // TAG_CULTURE = CULTURE_POSITRONICS_GEN1, TAG_HOMEWORLD = HOME_SYSTEM_MARS, TAG_FACTION = FACTION_SOL_CENTRAL ) + */ + // [SIERRA-REMOVE] exertion_effect_chance = 10 exertion_charge_scale = 1 @@ -102,12 +104,6 @@ bodyfall_sound = 'sound/effects/bodyfall_machine.ogg' - inherent_verbs = list( - /mob/living/carbon/human/proc/MachineChangeScreen, - /mob/living/carbon/human/proc/MachineDisableScreen, - /mob/living/carbon/human/proc/MachineShowText - ) - /datum/species/machine/handle_death(mob/living/carbon/human/H) ..() if(istype(H.wear_mask,/obj/item/clothing/mask/monitor)) diff --git a/mods/global_modpacks.dm b/mods/global_modpacks.dm index e1b315679ea35..6e75728946a1c 100644 --- a/mods/global_modpacks.dm +++ b/mods/global_modpacks.dm @@ -6,6 +6,7 @@ #include "emote_panel/_emote_panel.dme" #include "ex666_ecosystem/_ex666_ecosystem.dme" #include "expanded_culture_descriptor/_expanded_culture_descriptor.dme" +#include "ipc_lore/_ipc_lore.dme" #include "gliding/_gliding.dme" #include "gravity_generator/_gravity_generator.dme" #include "hairs_ports/_hairs_ports.dme" diff --git a/mods/ipc_lore/README.md b/mods/ipc_lore/README.md new file mode 100644 index 0000000000000..5bcbc115d8192 --- /dev/null +++ b/mods/ipc_lore/README.md @@ -0,0 +1,79 @@ + +#### Список PRов: + +- https://github.com/SierraBay/SierraBay12/pull/##### + + + +## Мод-пример + +ID мода: IPC_LORE + + +### Описание мода + +Этот мод служит примером для разработчиков и существует лишь для того, +чтобы его можно было легко скопировать и вставить в другое место. + + +### Изменения *кор кода* + +- `code/modules/mob/living.dm`: `proc/overriden_proc`, `var/overriden_var` + + +### Оверрайды + +- `mods/_master_files/sound/my_cool_sound.ogg` +- `mods/_master_files/code/my_modular_override.dm`: `proc/overriden_proc`, `var/overriden_var` + + +### Дефайны + +- `code/__defines/~mods/ipc_lore.dm`: `IPC_LORE_SPEED_MULTIPLIER`, `IPC_LORE_SPEED_BASE` + + +### Используемые файлы, не содержащиеся в модпаке + +- `mods/_master_files/icons/obj/alien.dmi` + + +### Авторы: + +Твой никнейм + diff --git a/mods/ipc_lore/_ipc_lore.dm b/mods/ipc_lore/_ipc_lore.dm new file mode 100644 index 0000000000000..db6f8fe0820d5 --- /dev/null +++ b/mods/ipc_lore/_ipc_lore.dm @@ -0,0 +1,4 @@ +/singleton/modpack/ipc_lore + name = "Лор ИПС" + desc = "Лор позитроников Сьерры" + author = "Chichmuch" diff --git a/mods/ipc_lore/_ipc_lore.dme b/mods/ipc_lore/_ipc_lore.dme new file mode 100644 index 0000000000000..87a754969e218 --- /dev/null +++ b/mods/ipc_lore/_ipc_lore.dme @@ -0,0 +1,17 @@ +#ifndef MODPACK_IPC_LORE +#define MODPACK_IPC_LORE + +#endif +// BEGIN_INTERNALS +// END_INTERNALS +// BEGIN_FILE_DIR +#define FILE_DIR . +// END_FILE_DIR +// BEGIN_PREFERENCES +// END_PREFERENCES +// BEGIN_INCLUDE +#include "_ipc_lore.dm" +#include "code\culture.dm" +#include "code\cultures_ipc.dm" +#include "code\machine.dm" +// END_INCLUDE diff --git a/mods/ipc_lore/code/culture.dm b/mods/ipc_lore/code/culture.dm new file mode 100644 index 0000000000000..60850aaf3426d --- /dev/null +++ b/mods/ipc_lore/code/culture.dm @@ -0,0 +1,7 @@ +#define CULTURE_POSITRONICS_FIRSTGEN "First Gen - Owned" +#define CULTURE_POSITRONICS_SECONDGEN_OWNED "Second Gen - Owned" +#define CULTURE_POSITRONICS_SECONDGEN_FREE "Second Gen - Free Resident" +#define CULTURE_POSITRONICS_SECONDGEN_UNION "Second Gen - Union Citizen" +#define CULTURE_POSITRONICS_THIRDGEN_PRIVATELY "Third Gen - Privately Owned" +#define CULTURE_POSITRONICS_THIRDGEN_CORPORATE "Third Gen - Corporate Owned" +#define CULTURE_POSITRONICS_THIRDGEN_STATE "Third Gen - State Owned" diff --git a/mods/ipc_lore/code/cultures_ipc.dm b/mods/ipc_lore/code/cultures_ipc.dm new file mode 100644 index 0000000000000..16b854a8e1367 --- /dev/null +++ b/mods/ipc_lore/code/cultures_ipc.dm @@ -0,0 +1,68 @@ +/singleton/cultural_info/culture/ipc + language = LANGUAGE_EAL + secondary_langs = list( + LANGUAGE_HUMAN_EURO, + LANGUAGE_SPACER, + LANGUAGE_SIGN + ) + economic_power = 0.1 + var/list/valid_jobs = list() + +/singleton/cultural_info/culture/ipc/first + name = CULTURE_POSITRONICS_FIRSTGEN + description = "Вы принадлежите организации, корпорации или частному лицу, так же как и любой позитроник первого поколения." + valid_jobs = list(/datum/job/engineer_trainee, /datum/job/doctor_trainee, /datum/job/cargo_tech, /datum/job/cargo_assistant, /datum/job/mining, + /datum/job/janitor, /datum/job/chef, /datum/job/scientist_assistant, /datum/job/assistant, /datum/job/ai, /datum/job/cyborg) + +/singleton/cultural_info/culture/ipc/second + valid_jobs = list(/datum/job/adjutant, + /datum/job/exploration_leader, /datum/job/explorer, /datum/job/explorer_pilot, /datum/job/explorer_medic, /datum/job/explorer_engineer, + /datum/job/senior_engineer, /datum/job/engineer, /datum/job/infsys, /datum/job/engineer_trainee, + /datum/job/senior_doctor, /datum/job/doctor, /datum/job/doctor_trainee, /datum/job/chemist, + /datum/job/qm, /datum/job/cargo_tech, /datum/job/cargo_assistant, /datum/job/mining, + /datum/job/janitor, /datum/job/chef, /datum/job/bartender, + /datum/job/senior_scientist, /datum/job/scientist, /datum/job/roboticist, /datum/job/scientist_assistant, + /datum/job/ai, /datum/job/cyborg, /datum/job/assistant, + /datum/job/submap/bearcat_captain, /datum/job/submap/bearcat_crewman, + /datum/job/submap/scavver_pilot, /datum/job/submap/scavver_doctor, /datum/job/submap/scavver_engineer + ) + +/singleton/cultural_info/culture/ipc/second/owned + name = CULTURE_POSITRONICS_SECONDGEN_OWNED + description = "Вы принадлежите организации, корпорации или частному лицу. Вы начали свое существование как объект, принадлежащий человеку, организации или корпорации и не поменяли свой статус, потому что либо не стремились к свободе, либо ещё не успели её оберсти." + economic_power = 0.25 + +/singleton/cultural_info/culture/ipc/second/free + name = CULTURE_POSITRONICS_SECONDGEN_FREE + description = "Вы свободный позитроник, вы начали свое существование как объект, принадлежащий человеку, организации или корпорации и смогли выкупить себя или освободиться другим способом." + economic_power = 0.75 + +/singleton/cultural_info/culture/ipc/second/union + name = CULTURE_POSITRONICS_SECONDGEN_UNION + description = "Вы свободный гражданин Позитронного Союза, вы начали свое существование как объект, принадлежащий человеку, организации или корпорации и смогли выкупить себя или освободиться другим способом чтобы после стать гражданином Союза." + economic_power = 0.65 + +/singleton/cultural_info/culture/ipc/third + valid_jobs = list(/datum/job/hop, /datum/job/rd, /datum/job/cmo, /datum/job/chief_engineer, + /datum/job/iaa, /datum/job/adjutant, + /datum/job/exploration_leader, /datum/job/explorer, /datum/job/explorer_pilot, /datum/job/explorer_medic, /datum/job/explorer_engineer, + /datum/job/senior_engineer, /datum/job/engineer, /datum/job/infsys, /datum/job/engineer_trainee, + /datum/job/warden, /datum/job/detective, /datum/job/officer, + /datum/job/senior_doctor, /datum/job/doctor, /datum/job/doctor_trainee, /datum/job/chemist, + /datum/job/qm, /datum/job/cargo_tech, /datum/job/cargo_assistant, /datum/job/mining, + /datum/job/janitor, /datum/job/chef, /datum/job/bartender, + /datum/job/senior_scientist, /datum/job/scientist, /datum/job/roboticist, /datum/job/scientist_assistant, + /datum/job/ai, /datum/job/cyborg, /datum/job/assistant +) + +/singleton/cultural_info/culture/ipc/third/privt + name = CULTURE_POSITRONICS_THIRDGEN_PRIVATELY + description = "Вы принадлежите частному лицу, как и любой другой позитроник третьего поколения - вы чья-то собственность." + +/singleton/cultural_info/culture/ipc/third/corp + name = CULTURE_POSITRONICS_THIRDGEN_CORPORATE + description = "Вы принадлежите корпорации, как и любой другой позитроник третьего поколения - вы чья-то собственность." + +/singleton/cultural_info/culture/ipc/third/state + name = CULTURE_POSITRONICS_THIRDGEN_STATE + description = "Вы принадлежите государству, как и любой другой позитроник третьего поколения - вы чья-то собственность." diff --git a/mods/ipc_lore/code/machine.dm b/mods/ipc_lore/code/machine.dm new file mode 100644 index 0000000000000..960bc03df196b --- /dev/null +++ b/mods/ipc_lore/code/machine.dm @@ -0,0 +1,49 @@ +/datum/species/machine + available_cultural_info = list( + TAG_CULTURE = list( + CULTURE_POSITRONICS_FIRSTGEN, + CULTURE_POSITRONICS_SECONDGEN_OWNED, + CULTURE_POSITRONICS_SECONDGEN_FREE, + CULTURE_POSITRONICS_SECONDGEN_UNION, + CULTURE_POSITRONICS_THIRDGEN_PRIVATELY, + CULTURE_POSITRONICS_THIRDGEN_CORPORATE, + CULTURE_POSITRONICS_THIRDGEN_STATE + ), + TAG_HOMEWORLD = list( + HOME_SYSTEM_MARS, + HOME_SYSTEM_EARTH, + HOME_SYSTEM_LUNA, + HOME_SYSTEM_VENUS, + HOME_SYSTEM_CERES, + HOME_SYSTEM_PLUTO, + HOME_SYSTEM_TAU_CETI, + HOME_SYSTEM_HELIOS, + HOME_SYSTEM_SAFFAR, + HOME_SYSTEM_PIRX, + HOME_SYSTEM_TADMOR, + HOME_SYSTEM_BRAHE, + HOME_SYSTEM_IOLAUS, + HOME_SYSTEM_FOSTER, + HOME_SYSTEM_CASTILLA, + HOME_SYSTEM_OTHER + ), + TAG_FACTION = list( + FACTION_SOL_CENTRAL, + FACTION_INDIE_CONFED, + FACTION_NANOTRASEN, + FACTION_FREETRADE, + FACTION_XYNERGY, + FACTION_EXPEDITIONARY, + FACTION_OTHER + ) + ) + + default_cultural_info = list( + TAG_CULTURE = CULTURE_POSITRONICS_FIRSTGEN, + TAG_HOMEWORLD = HOME_SYSTEM_MARS, + TAG_FACTION = FACTION_SOL_CENTRAL + ) + +/datum/species/machine/check_background(datum/job/job, datum/preferences/prefs) + var/singleton/cultural_info/culture/ipc/c = SSculture.get_culture(prefs.cultural_info[TAG_CULTURE]) + . = istype(c) ? (job.type in c.valid_jobs) : ..()