diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 3fb2661cea..12ae0092f0 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2337,9 +2337,12 @@ /turf/open/floor/plasteel/dark, /area/security/prison) "afJ" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/basic, -/area/space/nearstation) +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "afK" = ( /obj/machinery/atmospherics/components/unary/tank/air{ dir = 1 @@ -20027,9 +20030,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "aUQ" = ( @@ -20044,6 +20045,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /turf/open/floor/plasteel/dark, /area/hydroponics) "aUR" = ( @@ -20485,8 +20489,16 @@ /turf/closed/wall, /area/janitor) "aVT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "jangarage"; + name = "Custodial Closet Shutters" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/janitor) "aVU" = ( /obj/machinery/door/window/eastright{ @@ -20510,6 +20522,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/janitor) "aVV" = ( @@ -20892,9 +20905,6 @@ /obj/machinery/camera{ c_tag = "Custodial Quarters" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, /obj/machinery/light/small{ dir = 1 }, @@ -20915,6 +20925,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/janitor) "aWO" = ( @@ -20934,6 +20947,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, /turf/open/floor/plasteel/dark, /area/janitor) "aWP" = ( @@ -23004,9 +23020,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "baW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, /obj/machinery/button/door{ id = "jangarage"; name = "Custodial Closet Shutters Control"; @@ -23014,14 +23027,12 @@ req_access_txt = "26" }, /obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/central) "baX" = ( /obj/vehicle/ridden/janicart, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/machinery/light{ dir = 8 }, @@ -23034,6 +23045,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, /turf/open/floor/plasteel, /area/janitor) "baY" = ( @@ -23398,6 +23412,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel, /area/janitor) "bbY" = ( @@ -31173,17 +31190,26 @@ "bup" = ( /obj/machinery/rnd/destructive_analyzer, /obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/lab) "buq" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/lab) "bur" = ( /obj/effect/turf_decal/delivery, /obj/machinery/rnd/production/protolathe/department/science, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/lab) "bus" = ( @@ -31202,6 +31228,9 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, /turf/open/floor/plasteel/white, /area/science/lab) "but" = ( @@ -31664,6 +31693,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/lab) "bvA" = ( @@ -32372,6 +32402,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/lab) "bxh" = ( @@ -33056,12 +33087,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "byD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/machinery/door/airlock/research{ name = "R&D Lab"; req_one_access_txt = "7;29;30" @@ -33070,6 +33095,12 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/lab) "byE" = ( @@ -33091,7 +33122,6 @@ /turf/open/floor/plasteel/white, /area/science/lab) "byG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/cable{ icon_state = "1-2" }, @@ -33919,10 +33949,6 @@ /area/hallway/primary/aft) "bAm" = ( /obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/hallway/primary/aft) "bAo" = ( @@ -33952,7 +33978,6 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/purple{ dir = 1 }, @@ -34404,17 +34429,14 @@ name = "RD Office APC"; pixel_x = -25 }, -/obj/structure/cable{ - icon_state = "0-4" - }, /obj/effect/turf_decal/tile/purple{ dir = 1 }, /obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hor) @@ -34425,8 +34447,8 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hor) @@ -34434,6 +34456,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hor) "bBt" = ( @@ -34441,6 +34466,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hor) "bBu" = ( @@ -34478,6 +34506,9 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hor) "bBw" = ( @@ -35240,6 +35271,7 @@ /obj/structure/cable{ icon_state = "0-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/crew_quarters/heads/hor) "bCK" = ( @@ -44248,9 +44280,11 @@ /turf/open/floor/engine/co2, /area/engine/atmos) "bWh" = ( -/obj/effect/turf_decal/sand, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, /turf/open/floor/plasteel, -/area/chapel/office) +/area/hallway/primary/aft) "bWi" = ( /obj/structure/flora/ausbushes/leafybush, /obj/structure/flora/ausbushes/reedbush, @@ -52824,6 +52858,9 @@ /turf/closed/wall/r_wall, /area/science/lab) "cCt" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /turf/open/floor/plasteel/white, /area/science/lab) "cCB" = ( @@ -53058,6 +53095,9 @@ freq = 1400; location = "Research Division" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/science/lab) "cXW" = ( @@ -53151,10 +53191,6 @@ /area/maintenance/department/security/brig) "dhz" = ( /obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/chair{ dir = 8; name = "Defense" @@ -53163,9 +53199,6 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "dir" = ( @@ -53960,11 +53993,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" }, /turf/open/floor/plasteel, /area/hallway/primary/aft) @@ -55488,6 +55521,12 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "ioj" = ( @@ -55591,6 +55630,9 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "iyg" = ( @@ -56345,9 +56387,13 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "koz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "kpK" = ( @@ -56634,10 +56680,14 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "kSb" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space) +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/lab) "kSF" = ( /obj/structure/cable{ icon_state = "1-4" @@ -56711,6 +56761,10 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "lcU" = ( @@ -57121,6 +57175,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/lab) "meF" = ( @@ -57128,8 +57183,9 @@ /turf/closed/wall/r_wall, /area/engine/supermatter) "mfC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plasteel, /area/hallway/primary/aft) @@ -59343,6 +59399,7 @@ /area/hallway/secondary/exit/departure_lounge) "qVk" = ( /obj/machinery/door/poddoor/incinerator_atmos_aux, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/disposal/incinerator) "qVP" = ( @@ -60493,6 +60550,9 @@ id = "research_shutters_2"; name = "research shutters" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/lab) "tLP" = ( @@ -60815,12 +60875,6 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, /obj/structure/chair{ dir = 8; name = "Defense" @@ -61500,12 +61554,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"wfG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/crew_quarters/heads/hor) "wfO" = ( /mob/living/simple_animal/hostile/retaliate/poison/snake, /turf/open/floor/plating, @@ -76969,7 +77017,7 @@ aaa bOv bNs bNs -bWh +bQg bQg bQg bQg @@ -84176,7 +84224,7 @@ bIZ cbb bDi ccO -bIZ +bva cjm cjm xgh @@ -84436,8 +84484,8 @@ bva bva aht aht -kSb -kSb +fon +fon aht aht mau @@ -86691,7 +86739,7 @@ aXL aYL aZN baW -aKI +afJ aKI beb aKI @@ -86947,8 +86995,8 @@ aVS aXM aVS aVS -aXM -bbW +aVS +aVT bbW aVS aVS @@ -87149,7 +87197,7 @@ aaa aaa aaa aaa -afJ +cFB aby aaa agQ @@ -87456,7 +87504,7 @@ aRJ aSz aSz aUP -aVT +aVS aWN aXO aYM @@ -89468,7 +89516,7 @@ aaa aaa aaa aaa -afJ +cFB aaa aaa abI @@ -94932,12 +94980,12 @@ jcT xje tTl tTl -tTl +bWh gkS tTl tTl tTl -koz +tTl dgg phJ phJ @@ -95189,7 +95237,7 @@ bjm mhn cqi cqi -cqi +koz cqi cqi imE @@ -95708,7 +95756,7 @@ duF bxa byE bBp -wfG +bBp bBp bBp bBp @@ -95961,7 +96009,7 @@ cCl brq byF cCt -byF +kSb bxc nIU bAo diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 153a82ad5e..8e7cf8763b 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -61,7 +61,7 @@ #define BODYPART_NANITES 4 #define HYBRID_BODYPART_DAMAGE_THRESHHOLD 25 //How much damage has to be suffered until the damage threshhold counts as passed -#define HYBRID_BODYPART_THESHHOLD_MINDAMAGE 15 //Which damage value this limb cannot be healed out of via easy nonsurgical means if the threshhold has been passed, state resets if damage value goes below mindamage. +#define HYBRID_BODYPART_THESHHOLD_MINDAMAGE 10 //Which damage value this limb cannot be healed out of via easy nonsurgical means if the threshhold has been passed, state resets if damage value goes below mindamage. #define BODYPART_NOT_DISABLED 0 #define BODYPART_DISABLED_DAMAGE 1 diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index fad9ddcda5..e2ace84156 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -40,6 +40,9 @@ #define STATUS_EFFECT_DETERMINED /datum/status_effect/determined //currently in a combat high from being seriously wounded +#define STATUS_EFFECT_MANTRA /datum/status_effect/mantra // a toggled self buff that makes you stronger and more resilient, but drains stamina over time +#define STATUS_EFFECT_ASURA /datum/status_effect/asura // like a weaker version of mantra, drains HP instead of stamina and has no armor + ///////////// // DEBUFFS // ///////////// diff --git a/code/__DEFINES/vote.dm b/code/__DEFINES/vote.dm index a3617e21d0..88e70b884e 100644 --- a/code/__DEFINES/vote.dm +++ b/code/__DEFINES/vote.dm @@ -2,7 +2,7 @@ #define APPROVAL_VOTING "APPROVAL" #define SCHULZE_VOTING "SCHULZE" #define SCORE_VOTING "SCORE" -#define MAJORITY_JUDGEMENT_VOTING "MAJORITY_JUDGEMENT" +#define HIGHEST_MEDIAN_VOTING "HIGHEST_MEDIAN" #define INSTANT_RUNOFF_VOTING "IRV" #define SHOW_RESULTS (1<<0) @@ -18,7 +18,7 @@ GLOBAL_LIST_INIT(vote_type_names,list(\ "IRV (single winner ranked choice)" = INSTANT_RUNOFF_VOTING,\ "Schulze (ranked choice, higher result=better)" = SCHULZE_VOTING,\ "Raw Score (returns results from 0 to 1, winner is 1)" = SCORE_VOTING,\ -"Majority Judgement (single-winner score voting)" = MAJORITY_JUDGEMENT_VOTING,\ +"Highest Median (single-winner score voting)" = HIGHEST_MEDIAN_VOTING,\ )) GLOBAL_LIST_INIT(display_vote_settings, list(\ diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index be5071419f..f386c5f79b 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -271,7 +271,7 @@ Turf and target are separate in case you want to teleport some distance from a t if(skip_mindless && (!M.mind && !M.ckey)) if(!isbot(M) && !iscameramob(M) && !ismegafauna(M)) continue - if(M.client && M.client.holder && M.client.holder.fakekey) //stealthmins + if(M.client?.holder?.fakekey && isobserver(M)) continue var/name = avoid_assoc_duplicate_keys(M.name, namecounts) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 694e913d53..b41b7356a8 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -89,7 +89,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/effect/spawner/lootdrop/welder_tools = 3, /obj/effect/spawner/lootdrop/low_tools = 5, /obj/item/relic = 3, - /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 2, + /obj/item/weaponcrafting/receiver = 2, /obj/item/clothing/head/cone = 2, /obj/item/grenade/smokebomb = 2, /obj/item/geiger_counter = 3, diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 880802fd5c..fb8299d108 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -141,8 +141,8 @@ SUBSYSTEM_DEF(vote) choices[choices[i]]++ // higher shortest path = better candidate, so we add to choices here // choices[choices[i]] is the schulze ranking, here, rather than raw vote numbers -/datum/controller/subsystem/vote/proc/calculate_majority_judgement_vote(var/blackbox_text) - // https://en.wikipedia.org/wiki/Majority_judgment +/datum/controller/subsystem/vote/proc/calculate_highest_median(var/blackbox_text) + // https://en.wikipedia.org/wiki/Highest_median_voting_rules var/list/scores_by_choice = list() for(var/choice in choices) scores_by_choice += "[choice]" @@ -161,33 +161,24 @@ SUBSYSTEM_DEF(vote) // END BALLOT GATHERING for(var/score_name in scores_by_choice) var/list/score = scores_by_choice[score_name] - for(var/indiv_score in score) - SSblackbox.record_feedback("nested tally","voting",1,list(blackbox_text,"Scores",score_name,GLOB.vote_score_options[indiv_score])) - if(score.len == 0) - scores_by_choice -= score_name - while(scores_by_choice.len > 1) - var/highest_median = 0 - for(var/score_name in scores_by_choice) // first get highest median - var/list/score = scores_by_choice[score_name] - if(!score.len) - scores_by_choice -= score_name - continue + if(!score.len) + choices[score_name] = 0 + else var/median = score[max(1,round(score.len/2))] - if(median >= highest_median) - highest_median = median - for(var/score_name in scores_by_choice) // then, remove - var/list/score = scores_by_choice[score_name] - var/median = score[max(1,round(score.len/2))] - if(median < highest_median) - scores_by_choice -= score_name - for(var/score_name in scores_by_choice) // after removals - var/list/score = scores_by_choice[score_name] - if(score.len == 0) - choices[score_name] += 100 // we're in a tie situation--just go with the first one - return - var/median_pos = max(1,round(score.len/2)) - score.Cut(median_pos,median_pos+1) - choices[score_name]++ + var/p = 0 // proponents (those with higher than median) + var/q = 0 // opponents (lower than median) + var/list/this_score_list = scores_by_choice[score_name] + for(var/indiv_score in score) + SSblackbox.record_feedback("nested tally","voting",1,list(blackbox_text,"Scores",score_name,GLOB.vote_score_options[indiv_score])) + if(indiv_score < median) // this is possible to do in O(logn) but n is never more than 200 so this is fine + q += 1 + else if(indiv_score > median) + p += 1 + p /= this_score_list.len + q /= this_score_list.len + choices[score_name] = median + (((p - q) / (1 - p - q)) * 0.5) // usual judgement + // choices[score_name] = median + p - q // typical judgement + // choices[score_name] = median + (((p - q) / (p + q)) * 0.5) // central judgement /datum/controller/subsystem/vote/proc/calculate_scores(var/blackbox_text) for(var/choice in choices) @@ -245,8 +236,8 @@ SUBSYSTEM_DEF(vote) calculate_condorcet_votes(vote_title_text) if(vote_system == SCORE_VOTING) calculate_scores(vote_title_text) - if(vote_system == MAJORITY_JUDGEMENT_VOTING) - calculate_majority_judgement_vote(vote_title_text) // nothing uses this at the moment + if(vote_system == HIGHEST_MEDIAN_VOTING) + calculate_highest_median(vote_title_text) // nothing uses this at the moment var/list/winners = vote_system == INSTANT_RUNOFF_VOTING ? get_runoff_results() : get_result() var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic" if(winners.len > 0) @@ -255,8 +246,8 @@ SUBSYSTEM_DEF(vote) if(display_votes & SHOW_RESULTS) if(vote_system == SCHULZE_VOTING) text += "\nIt should be noted that this is not a raw tally of votes (impossible in ranked choice) but the score determined by the schulze method of voting, so the numbers will look weird!" - if(vote_system == MAJORITY_JUDGEMENT_VOTING) - text += "\nIt should be noted that this is not a raw tally of votes but the number of runoffs done by majority judgement!" + if(vote_system == HIGHEST_MEDIAN_VOTING) + text += "\nThis is the highest median score plus the tiebreaker!" for(var/i=1,i<=choices.len,i++) var/votes = choices[choices[i]] if(!votes) @@ -302,7 +293,7 @@ SUBSYSTEM_DEF(vote) if(vote_system != SCORE_VOTING) if(vote_system == SCHULZE_VOTING) admintext += "\nIt should be noted that this is not a raw tally of votes (impossible in ranked choice) but the score determined by the schulze method of voting, so the numbers will look weird!" - else if(vote_system == MAJORITY_JUDGEMENT_VOTING) + else if(vote_system == HIGHEST_MEDIAN_VOTING) admintext += "\nIt should be noted that this is not a raw tally of votes but the number of runoffs done by majority judgement!" for(var/i=1,i<=choices.len,i++) var/votes = choices[choices[i]] @@ -429,7 +420,7 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] = list() voted[usr.ckey] += vote saved -= usr.ckey - if(SCORE_VOTING,MAJORITY_JUDGEMENT_VOTING) + if(SCORE_VOTING,HIGHEST_MEDIAN_VOTING) if(!(usr.ckey in voted)) voted += usr.ckey voted[usr.ckey] = list() @@ -584,7 +575,7 @@ SUBSYSTEM_DEF(vote) . += "

Vote any number of choices.

" if(SCHULZE_VOTING,INSTANT_RUNOFF_VOTING) . += "

Vote by order of preference. Revoting will demote to the bottom. 1 is your favorite, and higher numbers are worse.

" - if(SCORE_VOTING,MAJORITY_JUDGEMENT_VOTING) + if(SCORE_VOTING,HIGHEST_MEDIAN_VOTING) . += "

Grade the candidates by how much you like them.

" . += "

No-votes have no power--your opinion is only heard if you vote!

" . += "Time Left: [DisplayTimeText(end_time-world.time)]