mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Merge remote-tracking branch 'skrat/master' into upstream-2024-02-03
# Conflicts: # _maps/map_files/IceBoxStation/IceBoxStation.dmm # _maps/map_files/KiloStation/KiloStation.dmm # _maps/map_files/tramstation/tramstation.dmm # _maps/skyrat/automapper/automapper_config.toml # code/controllers/subsystem/statpanel.dm # code/datums/chatmessage.dm # code/datums/quirks/negative_quirks/claustrophobia.dm # code/game/objects/items/tools/weldingtool.dm # code/modules/client/preferences/middleware/quirks.dm # code/modules/mob/living/carbon/carbon_defense.dm # code/modules/mob/living/carbon/human/human_defense.dm # code/modules/mob/living/carbon/human/inventory.dm # code/modules/mob/living/living_say.dm # code/modules/modular_computers/file_system/programs/jobmanagement.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/research/designs/mechfabricator_designs.dm # code/modules/research/machinery/_production.dm # code/modules/surgery/organs/internal/_internal_organ.dm # html/changelogs/archive/2024-01.yml # modular_skyrat/modules/automapper/code/area_spawn_entries.dm # modular_skyrat/modules/jukebox/code/jukebox_subsystem.dm # modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm # modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm # modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm # modular_skyrat/modules/synths/code/bodyparts/power_cord.dm # tgstation.dme # tgui/packages/tgui/components/Dropdown.tsx # tgui/packages/tgui/components/Input.tsx # tgui/packages/tgui/interfaces/Fabrication/DesignBrowser.tsx # tgui/packages/tgui/interfaces/Jukebox.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/QuirksPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/data.ts # tgui/packages/tgui/interfaces/common/SearchBar.tsx
This commit is contained in:
@@ -32,6 +32,9 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
|
||||
list(/datum/quirk/spacer_born, /datum/quirk/oversized),
|
||||
list(/datum/quirk/feline_aspect, /datum/quirk/item_quirk/canine, /datum/quirk/item_quirk/avian),
|
||||
list(/datum/quirk/all_nighter, /datum/quirk/heavy_sleeper),
|
||||
list(/datum/quirk/light_drinker, /datum/quirk/drunkhealing),
|
||||
list(/datum/quirk/oversized, /datum/quirk/freerunning),
|
||||
list(/datum/quirk/oversized, /datum/quirk/item_quirk/settler),
|
||||
//SKYRAT EDIT ADDITION END
|
||||
))
|
||||
|
||||
@@ -126,10 +129,15 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
||||
var/bonus_quirks = max((length(user.quirks) + rand(-RANDOM_QUIRK_BONUS, RANDOM_QUIRK_BONUS)), MINIMUM_RANDOM_QUIRKS)
|
||||
var/added_quirk_count = 0 //How many we've added
|
||||
var/list/quirks_to_add = list() //Quirks we're adding
|
||||
var/good_count = 0 //Maximum of 6 good perks
|
||||
var/good_count = 0
|
||||
var/score //What point score we're at
|
||||
///Cached list of possible quirks
|
||||
var/list/possible_quirks = quirks.Copy()
|
||||
|
||||
var/max_positive_quirks = CONFIG_GET(number/max_positive_quirks)
|
||||
if(max_positive_quirks < 0)
|
||||
max_positive_quirks = 6
|
||||
|
||||
//Create a random list of stuff to start with
|
||||
while(bonus_quirks > added_quirk_count)
|
||||
var/quirk = pick(possible_quirks) //quirk is a string
|
||||
@@ -159,19 +167,20 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
||||
quirks_to_add += quirk
|
||||
|
||||
//And have benefits too
|
||||
while(score < 0 && good_count <= MAX_QUIRKS)
|
||||
if(!length(possible_quirks))//Lets not get stuck
|
||||
break
|
||||
var/quirk = pick(quirks)
|
||||
if(quirk in GLOB.quirk_blacklist) //prevent blacklisted
|
||||
possible_quirks -= quirk
|
||||
continue
|
||||
if(!quirk_points[quirk] > 0) //positive only
|
||||
possible_quirks -= quirk
|
||||
continue
|
||||
good_count++
|
||||
score += quirk_points[quirk]
|
||||
quirks_to_add += quirk
|
||||
if(max_positive_quirks > 0)
|
||||
while(score < 0 && good_count <= max_positive_quirks)
|
||||
if(!length(possible_quirks))//Lets not get stuck
|
||||
break
|
||||
var/quirk = pick(quirks)
|
||||
if(quirk in GLOB.quirk_blacklist) //prevent blacklisted
|
||||
possible_quirks -= quirk
|
||||
continue
|
||||
if(!(quirk_points[quirk] > 0)) //positive only
|
||||
possible_quirks -= quirk
|
||||
continue
|
||||
good_count++
|
||||
score += quirk_points[quirk]
|
||||
quirks_to_add += quirk
|
||||
|
||||
for(var/datum/quirk/quirk as anything in user.quirks)
|
||||
if(quirk.name in quirks_to_add) //Don't delete ones we keep
|
||||
@@ -189,6 +198,8 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
||||
/datum/controller/subsystem/processing/quirks/proc/filter_invalid_quirks(list/quirks, list/augments) // SKYRAT EDIT - AUGMENTS+
|
||||
var/list/new_quirks = list()
|
||||
var/list/positive_quirks = list()
|
||||
var/points_enabled = !CONFIG_GET(flag/disable_quirk_points)
|
||||
var/max_positive_quirks = CONFIG_GET(number/max_positive_quirks)
|
||||
var/balance = 0
|
||||
|
||||
var/list/all_quirks = get_quirks()
|
||||
@@ -225,7 +236,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
||||
|
||||
var/value = initial(quirk.value)
|
||||
if (value > 0)
|
||||
if (positive_quirks.len == MAX_QUIRKS)
|
||||
if (max_positive_quirks >= 0 && positive_quirks.len == max_positive_quirks)
|
||||
continue
|
||||
|
||||
positive_quirks[quirk_name] = value
|
||||
@@ -233,7 +244,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
||||
balance += value
|
||||
new_quirks += quirk_name
|
||||
|
||||
if (balance > 0)
|
||||
if (points_enabled && balance > 0)
|
||||
var/balance_left_to_remove = balance
|
||||
|
||||
for (var/positive_quirk in positive_quirks)
|
||||
|
||||
Reference in New Issue
Block a user