diff --git a/.travis.yml b/.travis.yml index ab3b1003c3..3082e1a18e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,6 +26,7 @@ matrix: - find . -name "*.json" -not -path "./tgui/node_modules/*" -print0 | xargs -0 python3 ./tools/json_verifier.py - tools/travis/build_tgui.sh - tools/travis/check_grep.sh + - python3 tools/travis/check_line_endings.py - ~/dreamchecker - name: "Compile All Maps" diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 0caa86f68c..4ce0ccf361 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -341,7 +341,7 @@ if(probabilities[M.config_tag]<=0) qdel(M) continue - if(M.config_tag in SSvote.stored_modetier_results && SSvote.stored_modetier_results[M.config_tag] < Get(/datum/config_entry/number/dropped_modes)) + if(CONFIG_GET(flag/modetier_voting) && !(M.config_tag in SSvote.stored_modetier_results)) qdel(M) continue if(min_pop[M.config_tag]) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 940ba52946..af1b7da8da 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -396,7 +396,6 @@ config_entry_value = TRUE /datum/config_entry/flag/modetier_voting - config_entry_value = TRUE /datum/config_entry/number/dropped_modes config_entry_value = 3 diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 0948e428ff..c9562bcfd1 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -188,6 +188,12 @@ SUBSYSTEM_DEF(ticker) tipped = TRUE if(timeLeft <= 0) + if(SSvote.mode && (SSvote.mode == "roundtype" || SSvote.mode == "dynamic" || SSvote.mode == "mode tiers")) + SSvote.result() + SSpersistence.SaveSavedVotes() + for(var/client/C in SSvote.voting) + C << browse(null, "window=vote;can_close=0") + SSvote.reset() current_state = GAME_STATE_SETTING_UP Master.SetRunLevel(RUNLEVEL_SETUP) if(start_immediately) @@ -221,12 +227,6 @@ SUBSYSTEM_DEF(ticker) var/init_start = world.timeofday //Create and announce mode var/list/datum/game_mode/runnable_modes - if(SSvote.mode && (SSvote.mode == "roundtype" || SSvote.mode == "dynamic" || SSvote.mode == "mode tiers")) - SSvote.result() - SSpersistence.SaveSavedVotes() - for(var/client/C in SSvote.voting) - C << browse(null, "window=vote;can_close=0") - SSvote.reset() if(GLOB.master_mode == "random" || GLOB.master_mode == "secret") runnable_modes = config.get_runnable_modes() diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 66aaf317fb..c67a1620f1 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -102,17 +102,18 @@ SUBSYSTEM_DEF(vote) var/list/d[][] = new/list(choices.len,choices.len) // the basic vote matrix, how many times a beats b for(var/ckey in voted) var/list/this_vote = voted[ckey] - for(var/a in 1 to choices.len) - for(var/b in a+1 to choices.len) - var/a_rank = this_vote.Find(a) - var/b_rank = this_vote.Find(b) - a_rank = a_rank ? a_rank : choices.len+1 - b_rank = b_rank ? b_rank : choices.len+1 - if(a_rank 0) @@ -219,13 +226,20 @@ SUBSYSTEM_DEF(vote) stored_gamemode_votes = list() if(!obfuscated && vote_system == RANKED_CHOICE_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!" - for(var/i=1,i<=choices.len,i++) - var/votes = choices[choices[i]] - if(!votes) - votes = 0 - if(was_roundtype_vote) - stored_gamemode_votes[choices[i]] = votes - text += "\n[choices[i]]: [obfuscated ? "???" : votes]" //CIT CHANGE - adds obfuscated votes + if(mode == "mode tiers") + for(var/score_name in scores) + var/score = scores[score_name] + if(!score) + score = 0 + text = "\n[score_name]: [obfuscated ? "???" : score]" + else + for(var/i=1,i<=choices.len,i++) + var/votes = choices[choices[i]] + if(!votes) + votes = 0 + if(was_roundtype_vote) + stored_gamemode_votes[choices[i]] = votes + text += "\n[choices[i]]: [obfuscated ? "???" : votes]" //CIT CHANGE - adds obfuscated votes if(mode != "custom") if(winners.len > 1 && !obfuscated) //CIT CHANGE - adds obfuscated votes text = "\nVote Tied Between:" @@ -247,8 +261,9 @@ SUBSYSTEM_DEF(vote) if(RANKED_CHOICE_VOTING) for(var/i=1,i<=voted.len,i++) var/list/myvote = voted[voted[i]] - for(var/j=1,j<=myvote.len,j++) - SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]])) + if(islist(myvote)) + for(var/j=1,j<=myvote.len,j++) + SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]])) if(obfuscated) //CIT CHANGE - adds obfuscated votes. this messages admins with the vote's true results var/admintext = "Obfuscated results" if(vote_system == RANKED_CHOICE_VOTING) @@ -276,7 +291,7 @@ SUBSYSTEM_DEF(vote) if(CONFIG_GET(flag/modetier_voting)) reset() started_time = 0 - initiate_vote("mode tiers","server",hideresults=FALSE,votesystem=RANKED_CHOICE_VOTING,forced=TRUE, vote_time = 30 MINUTES) + initiate_vote("mode tiers","server",hideresults=FALSE,votesystem=SCORE_VOTING,forced=TRUE, vote_time = 30 MINUTES) to_chat(world,"The vote will end right as the round starts.") return . if("restart") @@ -290,7 +305,14 @@ SUBSYSTEM_DEF(vote) else GLOB.master_mode = . if("mode tiers") - stored_modetier_results = choices.Copy() + var/list/raw_score_numbers = list() + for(var/score_name in scores) + sorted_insert(raw_score_numbers,scores[score_name],/proc/cmp_numeric_asc) + stored_modetier_results = scores.Copy() + for(var/score_name in stored_modetier_results) + if(stored_modetier_results[score_name] <= raw_score_numbers[CONFIG_GET(number/dropped_modes)]) + stored_modetier_results -= score_name + stored_modetier_results += "traitor" if("dynamic") if(SSticker.current_state > GAME_STATE_PREGAME)//Don't change the mode if the round already started. return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.") @@ -417,6 +439,7 @@ SUBSYSTEM_DEF(vote) for(var/tag in modes_to_add) if(probabilities[tag] <= 0) modes_to_add -= tag + modes_to_add -= "traitor" // makes it so that traitor is always available choices.Add(modes_to_add) if("dynamic") for(var/T in config.storyteller_cache) @@ -516,7 +539,7 @@ SUBSYSTEM_DEF(vote) if(RANKED_CHOICE_VOTING) var/list/myvote = voted[C.ckey] for(var/i=1,i<=choices.len,i++) - var/vote = (myvote ? (myvote.Find(i)) : 0) + var/vote = (islist(myvote) ? (myvote.Find(i)) : 0) if(vote) . += "
  • [choices[i]] ([vote])
  • " else @@ -615,8 +638,12 @@ SUBSYSTEM_DEF(vote) if(usr.ckey in voted) if(!(usr.ckey in SSpersistence.saved_votes)) SSpersistence.saved_votes[usr.ckey] = list() - SSpersistence.saved_votes[usr.ckey][mode] = voted[usr.ckey] - saved += usr.ckey + if(islist(voted[usr.ckey])) + SSpersistence.saved_votes[usr.ckey][mode] = voted[usr.ckey] + saved += usr.ckey + else + voted[usr.ckey] = list() + to_chat(usr,"Your vote was malformed! Start over!") if("load") if(!(usr.ckey in SSpersistence.saved_votes)) SSpersistence.LoadSavedVote(usr.ckey) @@ -627,7 +654,21 @@ SUBSYSTEM_DEF(vote) else SSpersistence.saved_votes[usr.ckey][mode] = list() voted[usr.ckey] = SSpersistence.saved_votes[usr.ckey][mode] - saved += usr.ckey + if(islist(voted[usr.ckey])) + var/malformed = FALSE + if(vote_system == SCORE_VOTING) + for(var/thing in voted[usr.ckey]) + if(!(thing in choices)) + malformed = TRUE + if(!malformed) + saved += usr.ckey + else + to_chat(usr,"Your saved vote was malformed! Start over!") + SSpersistence.saved_votes[usr.ckey] -= mode + voted -= usr.ckey + else + to_chat(usr,"Your saved vote was malformed! Start over!") + voted -= usr.ckey else if(vote_system == SCORE_VOTING) submit_vote(round(text2num(href_list["vote"])),round(text2num(href_list["score"]))) diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index e6d80bedb5..e355a507f3 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -380,9 +380,14 @@ /datum/map_template/shuttle/emergency/gorilla suffix = "gorilla" name = "Gorilla Cargo Freighter" - description = "A rustic, barely excuseable shuttle transporting important cargo. Not for crew who are about to go ape." + description = "(Emag only) A rustic, barely excuseable shuttle transporting important cargo. Not for crew who are about to go ape." credit_cost = 2000 +/datum/map_template/shuttle/emergency/gorilla/prerequisites_met() + if("emagged" in SSshuttle.shuttle_purchase_requirements_met) + return TRUE + return FALSE + /datum/map_template/shuttle/ferry/base suffix = "base" name = "transport ferry" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 036d8193fb..751f5faa94 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -99,10 +99,12 @@ id = "Mesmerize" alert_type = /obj/screen/alert/status_effect/mesmerized -/datum/status_effect/no_combat_mode/mesmerize/on_apply() +/datum/status_effect/no_combat_mode/mesmerize/on_creation(mob/living/new_owner, set_duration) + . = ..() ADD_TRAIT(owner, TRAIT_MUTE, "mesmerize") /datum/status_effect/no_combat_mode/mesmerize/on_remove() + . = ..() REMOVE_TRAIT(owner, TRAIT_MUTE, "mesmerize") /obj/screen/alert/status_effect/mesmerized diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 9e2efd1d4e..49fdd64a72 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -139,9 +139,9 @@ /datum/world_topic/status/Run(list/input, addr) if(!key_valid) //If we have a key, then it's safe to trust that this isn't a malicious packet. Also prevents the extra info from leaking - if(GLOB.topic_status_lastcache <= world.time + 5) + if(GLOB.topic_status_lastcache >= world.time) return GLOB.topic_status_cache - GLOB.topic_status_lastcache = world.time + GLOB.topic_status_lastcache = world.time + 5 . = list() .["version"] = GLOB.game_version .["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index 48ba92962f..dd7c5b15d9 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -101,13 +101,23 @@ item_state = "synth" instrumentId = "piano" instrumentExt = "ogg" - var/static/list/insTypes = list("accordion" = "mid", "bikehorn" = "ogg", "glockenspiel" = "mid", "guitar" = "ogg", "harmonica" = "mid", "piano" = "ogg", "recorder" = "mid", "saxophone" = "mid", "trombone" = "mid", "violin" = "mid", "xylophone" = "mid") //No eguitar you ear-rapey fuckers. + var/static/list/insTypes = list("accordion" = "mid", "bikehorn" = "ogg", "glockenspiel" = "mid", "banjo" = "ogg", "guitar" = "ogg", "harmonica" = "mid", "piano" = "ogg", "recorder" = "mid", "saxophone" = "mid", "trombone" = "mid", "violin" = "mid", "xylophone" = "mid") //No eguitar you ear-rapey fuckers. actions_types = list(/datum/action/item_action/synthswitch) /obj/item/instrument/piano_synth/proc/changeInstrument(name = "piano") song.instrumentDir = name song.instrumentExt = insTypes[name] +/obj/item/instrument/banjo + name = "banjo" + desc = "A 'Mura' brand banjo. It's pretty much just a drum with a neck and strings." + icon_state = "banjo" + item_state = "banjo" + instrumentExt = "ogg" + attack_verb = list("scruggs-styled", "hum-diggitied", "shin-digged", "clawhammered") + hitsound = 'sound/weapons/banjoslap.ogg' + instrumentId = "banjo" + /obj/item/instrument/guitar name = "guitar" desc = "It's made of wood and has bronze strings." @@ -263,8 +273,6 @@ throw_range = 15 hitsound = 'sound/items/bikehorn.ogg' -/// - /obj/item/musicaltuner name = "musical tuner" desc = "A device for tuning musical instruments both manual and electronic alike." diff --git a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm index 7962c7d403..2fe7115d98 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm @@ -91,7 +91,7 @@ target.Stun(40) //Utterly useless without this, its okay since there are so many checks to go through target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 45) //So you cant rotate with combat mode, plus fancy status alert - if(do_mob(user, target, 40, 0, TRUE, extra_checks=CALLBACK(src, .proc/ContinueActive, user, target))) + if(do_mob(user, target, 40, 0, TRUE, extra_checks = CALLBACK(src, .proc/ContinueActive, user, target))) PowerActivatedSuccessfully() // PAY COST! BEGIN COOLDOWN! var/power_time = 90 + level_current * 12 target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time + 80) diff --git a/code/modules/client/message.dm b/code/modules/client/message.dm index 2b4f8453d7..6904fa8973 100644 --- a/code/modules/client/message.dm +++ b/code/modules/client/message.dm @@ -2,8 +2,9 @@ GLOBAL_LIST_EMPTY(clientmessages) /proc/addclientmessage(var/ckey, var/message) ckey = ckey(ckey) - if (!ckey || !message) + if(!ckey || !message) return - if (!(ckey in GLOB.clientmessages)) - GLOB.clientmessages[ckey] = list() - GLOB.clientmessages[ckey] += message \ No newline at end of file + var/list/L = GLOB.clientmessages[ckey] + if(!L) + GLOB.clientmessages[ckey] = L = list() + L += message \ No newline at end of file diff --git a/code/modules/keybindings/bindings_client.dm b/code/modules/keybindings/bindings_client.dm index 2b8bfa6860..dec5c25eb9 100644 --- a/code/modules/keybindings/bindings_client.dm +++ b/code/modules/keybindings/bindings_client.dm @@ -25,7 +25,7 @@ else log_admin("Client [ckey] was just autokicked for flooding keysends; likely abuse but potentially lagspike.") message_admins("Client [ckey] was just autokicked for flooding keysends; likely abuse but potentially lagspike.") - QDEL_IN(src, 1) + qdel(src) return ///Check if the key is short enough to even be a real key diff --git a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm index be2ab152a8..55bdc31aef 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm @@ -244,6 +244,10 @@ name = "Shark" icon_state = "shark" +/datum/sprite_accessory/mam_snouts/hshark + name = "hShark" + icon_state = "hshark" + /datum/sprite_accessory/mam_snouts/toucan name = "Toucan" icon_state = "toucan" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index c40299d7a8..01b9b1dc41 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -833,8 +833,8 @@ Nothing else in the console has ID requirements. for(var/i in 1 to length(ui)) if(!findtextEx(ui[i], RDSCREEN_NOBREAK)) ui[i] += "
    " - ui[i] = replacetextEx(ui[i], RDSCREEN_NOBREAK, "") - return ui.Join("") + . = ui.Join("") + return replacetextEx(., RDSCREEN_NOBREAK, "") /obj/machinery/computer/rdconsole/Topic(raw, ls) if(..()) diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 8cd7fc8539..0911258692 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -131,6 +131,12 @@ /obj/item/clothing/suit/drfreeze_coat = 1, /obj/item/clothing/suit/gothcoat = 2, /obj/item/clothing/under/draculass = 1, + /obj/item/clothing/under/christmas/christmasmaler = 3, + /obj/item/clothing/under/christmas/christmasmaleg = 3, + /obj/item/clothing/under/christmas/christmasfemaler = 3, + /obj/item/clothing/under/christmas/christmasfemaleg = 3, + /obj/item/clothing/head/christmashat = 3, + /obj/item/clothing/head/christmashatg = 3, /obj/item/clothing/under/drfreeze = 1) //End of Cit Changes refill_canister = /obj/item/vending_refill/autodrobe diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 6116936880..4bd21ea7f2 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -123,15 +123,19 @@ /obj/item/clothing/ears/headphones = 10, /obj/item/clothing/suit/apron/purple_bartender = 4, /obj/item/clothing/under/rank/bartender/purple = 4, + /* Commenting out until next Christmas or made automatic /obj/item/clothing/under/christmas/christmasmaler = 3, /obj/item/clothing/under/christmas/christmasmaleg = 3, /obj/item/clothing/under/christmas/christmasfemaler = 3, /obj/item/clothing/under/christmas/christmasfemaleg = 3, + */ /obj/item/clothing/suit/hooded/wintercoat/christmascoatr = 3, /obj/item/clothing/suit/hooded/wintercoat/christmascoatg = 3, /obj/item/clothing/suit/hooded/wintercoat/christmascoatrg = 3, + /*Commenting out until next Christmas or made automatic /obj/item/clothing/head/christmashat = 3, /obj/item/clothing/head/christmashatg = 3, + */ /obj/item/clothing/shoes/winterboots/christmasbootsr = 3, /obj/item/clothing/shoes/winterboots/christmasbootsg = 3, /obj/item/clothing/shoes/winterboots/santaboots = 3, diff --git a/html/changelogs/AutoChangeLog-pr-10404.yml b/html/changelogs/AutoChangeLog-pr-10404.yml new file mode 100644 index 0000000000..5f88a991ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10404.yml @@ -0,0 +1,4 @@ +author: "Xantholne" +delete-after: True +changes: + - tweak: "Christmas clothes moved from clothesmate and loadout to premium autodrobe, hoodies and boots remain." diff --git a/html/changelogs/AutoChangeLog-pr-10478.yml b/html/changelogs/AutoChangeLog-pr-10478.yml new file mode 100644 index 0000000000..b174a5e8ee --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10478.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - tweak: "makes gorilla shuttle emag only" diff --git a/html/changelogs/AutoChangeLog-pr-10493.yml b/html/changelogs/AutoChangeLog-pr-10493.yml new file mode 100644 index 0000000000..201eaad5b5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10493.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - tweak: "Score instead of ranked choice for mode tiers" diff --git a/html/changelogs/AutoChangeLog-pr-10507.yml b/html/changelogs/AutoChangeLog-pr-10507.yml new file mode 100644 index 0000000000..70d82d9cf6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10507.yml @@ -0,0 +1,4 @@ +author: "LetterN" +delete-after: True +changes: + - rscadd: "Adds banjo" diff --git a/html/changelogs/AutoChangeLog-pr-10539.yml b/html/changelogs/AutoChangeLog-pr-10539.yml new file mode 100644 index 0000000000..66a03ee573 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10539.yml @@ -0,0 +1,5 @@ +author: "Savotta" +delete-after: True +changes: + - rscadd: "snout" + - imageadd: "snout" diff --git a/html/changelogs/AutoChangeLog-pr-10556.yml b/html/changelogs/AutoChangeLog-pr-10556.yml new file mode 100644 index 0000000000..af42a9eee6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10556.yml @@ -0,0 +1,4 @@ +author: "AffectedArc07" +delete-after: True +changes: + - tweak: "Added CI step to check for CRLF files" diff --git a/icons/mob/inhands/equipment/instruments_lefthand.dmi b/icons/mob/inhands/equipment/instruments_lefthand.dmi index 55f690e445..9de54aed63 100644 Binary files a/icons/mob/inhands/equipment/instruments_lefthand.dmi and b/icons/mob/inhands/equipment/instruments_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/instruments_righthand.dmi b/icons/mob/inhands/equipment/instruments_righthand.dmi index 1878fdefe3..1a3bb055a7 100644 Binary files a/icons/mob/inhands/equipment/instruments_righthand.dmi and b/icons/mob/inhands/equipment/instruments_righthand.dmi differ diff --git a/icons/obj/musician.dmi b/icons/obj/musician.dmi index 8375b38ee9..b0603f6cae 100644 Binary files a/icons/obj/musician.dmi and b/icons/obj/musician.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index 427a4ac61d..8634460d4e 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -93,6 +93,7 @@ restricted_desc = "Engineering, Security, and Cargo" restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") +/*Commenting out Until next Christmas or made automatic /datum/gear/santahatr name = "Red Santa Hat" category = SLOT_HEAD @@ -102,6 +103,7 @@ name = "Green Santa Hat" category = SLOT_HEAD path = /obj/item/clothing/head/christmashatg +*/ /datum/gear/cowboyhat name = "Cowboy Hat, Brown" @@ -129,6 +131,3 @@ path = /obj/item/clothing/head/cowboyhat/sec restricted_desc = "Security" restricted_roles = list("Warden","Detective","Security Officer","Head of Security") - - - diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm index 64ed0d363d..46692ea7a9 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -390,6 +390,7 @@ path = /obj/item/clothing/under/gear_harness //Christmas +/*Commenting out Until next Christmas or made automatic /datum/gear/christmasmaler name = "Red Masculine Christmas Suit" category = SLOT_W_UNIFORM @@ -415,6 +416,7 @@ category = SLOT_W_UNIFORM path = /obj/item/clothing/under/stripper_pink cost = 3 +*/ /datum/gear/greenstripper name = "Green stripper outfit" diff --git a/modular_citadel/icons/mob/mam_snouts.dmi b/modular_citadel/icons/mob/mam_snouts.dmi index d0f5d56314..80371ce83f 100644 Binary files a/modular_citadel/icons/mob/mam_snouts.dmi and b/modular_citadel/icons/mob/mam_snouts.dmi differ diff --git a/sound/instruments/banjo/Ab3.ogg b/sound/instruments/banjo/Ab3.ogg new file mode 100644 index 0000000000..66e263bd61 Binary files /dev/null and b/sound/instruments/banjo/Ab3.ogg differ diff --git a/sound/instruments/banjo/Ab4.ogg b/sound/instruments/banjo/Ab4.ogg new file mode 100644 index 0000000000..f003e03233 Binary files /dev/null and b/sound/instruments/banjo/Ab4.ogg differ diff --git a/sound/instruments/banjo/Ab5.ogg b/sound/instruments/banjo/Ab5.ogg new file mode 100644 index 0000000000..c405725208 Binary files /dev/null and b/sound/instruments/banjo/Ab5.ogg differ diff --git a/sound/instruments/banjo/An3.ogg b/sound/instruments/banjo/An3.ogg new file mode 100644 index 0000000000..1700704c9c Binary files /dev/null and b/sound/instruments/banjo/An3.ogg differ diff --git a/sound/instruments/banjo/An4.ogg b/sound/instruments/banjo/An4.ogg new file mode 100644 index 0000000000..eb7279f869 Binary files /dev/null and b/sound/instruments/banjo/An4.ogg differ diff --git a/sound/instruments/banjo/An5.ogg b/sound/instruments/banjo/An5.ogg new file mode 100644 index 0000000000..d9cf57c0fe Binary files /dev/null and b/sound/instruments/banjo/An5.ogg differ diff --git a/sound/instruments/banjo/Bb3.ogg b/sound/instruments/banjo/Bb3.ogg new file mode 100644 index 0000000000..d3f757c0ac Binary files /dev/null and b/sound/instruments/banjo/Bb3.ogg differ diff --git a/sound/instruments/banjo/Bb4.ogg b/sound/instruments/banjo/Bb4.ogg new file mode 100644 index 0000000000..a9d869091b Binary files /dev/null and b/sound/instruments/banjo/Bb4.ogg differ diff --git a/sound/instruments/banjo/Bb5.ogg b/sound/instruments/banjo/Bb5.ogg new file mode 100644 index 0000000000..a56e6c2500 Binary files /dev/null and b/sound/instruments/banjo/Bb5.ogg differ diff --git a/sound/instruments/banjo/Bn2.ogg b/sound/instruments/banjo/Bn2.ogg new file mode 100644 index 0000000000..3154f97419 Binary files /dev/null and b/sound/instruments/banjo/Bn2.ogg differ diff --git a/sound/instruments/banjo/Bn3.ogg b/sound/instruments/banjo/Bn3.ogg new file mode 100644 index 0000000000..6c72ec2fd5 Binary files /dev/null and b/sound/instruments/banjo/Bn3.ogg differ diff --git a/sound/instruments/banjo/Bn4.ogg b/sound/instruments/banjo/Bn4.ogg new file mode 100644 index 0000000000..b0e9a2b3b2 Binary files /dev/null and b/sound/instruments/banjo/Bn4.ogg differ diff --git a/sound/instruments/banjo/Bn5.ogg b/sound/instruments/banjo/Bn5.ogg new file mode 100644 index 0000000000..1b002140b8 Binary files /dev/null and b/sound/instruments/banjo/Bn5.ogg differ diff --git a/sound/instruments/banjo/Cn3.ogg b/sound/instruments/banjo/Cn3.ogg new file mode 100644 index 0000000000..6ef414d9d0 Binary files /dev/null and b/sound/instruments/banjo/Cn3.ogg differ diff --git a/sound/instruments/banjo/Cn4.ogg b/sound/instruments/banjo/Cn4.ogg new file mode 100644 index 0000000000..4a26a6741d Binary files /dev/null and b/sound/instruments/banjo/Cn4.ogg differ diff --git a/sound/instruments/banjo/Cn5.ogg b/sound/instruments/banjo/Cn5.ogg new file mode 100644 index 0000000000..901ed3bc08 Binary files /dev/null and b/sound/instruments/banjo/Cn5.ogg differ diff --git a/sound/instruments/banjo/Cn6.ogg b/sound/instruments/banjo/Cn6.ogg new file mode 100644 index 0000000000..5cdbbb17ce Binary files /dev/null and b/sound/instruments/banjo/Cn6.ogg differ diff --git a/sound/instruments/banjo/Db3.ogg b/sound/instruments/banjo/Db3.ogg new file mode 100644 index 0000000000..1ebffdf502 Binary files /dev/null and b/sound/instruments/banjo/Db3.ogg differ diff --git a/sound/instruments/banjo/Db4.ogg b/sound/instruments/banjo/Db4.ogg new file mode 100644 index 0000000000..5b93936508 Binary files /dev/null and b/sound/instruments/banjo/Db4.ogg differ diff --git a/sound/instruments/banjo/Db5.ogg b/sound/instruments/banjo/Db5.ogg new file mode 100644 index 0000000000..6ee4dde947 Binary files /dev/null and b/sound/instruments/banjo/Db5.ogg differ diff --git a/sound/instruments/banjo/Db6.ogg b/sound/instruments/banjo/Db6.ogg new file mode 100644 index 0000000000..fd73894fda Binary files /dev/null and b/sound/instruments/banjo/Db6.ogg differ diff --git a/sound/instruments/banjo/Dn3.ogg b/sound/instruments/banjo/Dn3.ogg new file mode 100644 index 0000000000..77491b01b8 Binary files /dev/null and b/sound/instruments/banjo/Dn3.ogg differ diff --git a/sound/instruments/banjo/Dn4.ogg b/sound/instruments/banjo/Dn4.ogg new file mode 100644 index 0000000000..11f68b5a15 Binary files /dev/null and b/sound/instruments/banjo/Dn4.ogg differ diff --git a/sound/instruments/banjo/Dn5.ogg b/sound/instruments/banjo/Dn5.ogg new file mode 100644 index 0000000000..2e9ebe4989 Binary files /dev/null and b/sound/instruments/banjo/Dn5.ogg differ diff --git a/sound/instruments/banjo/Dn6.ogg b/sound/instruments/banjo/Dn6.ogg new file mode 100644 index 0000000000..89ae62361d Binary files /dev/null and b/sound/instruments/banjo/Dn6.ogg differ diff --git a/sound/instruments/banjo/Eb3.ogg b/sound/instruments/banjo/Eb3.ogg new file mode 100644 index 0000000000..1d1e43049d Binary files /dev/null and b/sound/instruments/banjo/Eb3.ogg differ diff --git a/sound/instruments/banjo/Eb4.ogg b/sound/instruments/banjo/Eb4.ogg new file mode 100644 index 0000000000..2722655f5a Binary files /dev/null and b/sound/instruments/banjo/Eb4.ogg differ diff --git a/sound/instruments/banjo/Eb5.ogg b/sound/instruments/banjo/Eb5.ogg new file mode 100644 index 0000000000..7a109dfdf7 Binary files /dev/null and b/sound/instruments/banjo/Eb5.ogg differ diff --git a/sound/instruments/banjo/En3.ogg b/sound/instruments/banjo/En3.ogg new file mode 100644 index 0000000000..4610efdd4f Binary files /dev/null and b/sound/instruments/banjo/En3.ogg differ diff --git a/sound/instruments/banjo/En4.ogg b/sound/instruments/banjo/En4.ogg new file mode 100644 index 0000000000..64c14daf91 Binary files /dev/null and b/sound/instruments/banjo/En4.ogg differ diff --git a/sound/instruments/banjo/En5.ogg b/sound/instruments/banjo/En5.ogg new file mode 100644 index 0000000000..8e0b6c1637 Binary files /dev/null and b/sound/instruments/banjo/En5.ogg differ diff --git a/sound/instruments/banjo/Fn3.ogg b/sound/instruments/banjo/Fn3.ogg new file mode 100644 index 0000000000..5cdc4f13fb Binary files /dev/null and b/sound/instruments/banjo/Fn3.ogg differ diff --git a/sound/instruments/banjo/Fn4.ogg b/sound/instruments/banjo/Fn4.ogg new file mode 100644 index 0000000000..78d5454f18 Binary files /dev/null and b/sound/instruments/banjo/Fn4.ogg differ diff --git a/sound/instruments/banjo/Fn5.ogg b/sound/instruments/banjo/Fn5.ogg new file mode 100644 index 0000000000..b21559b465 Binary files /dev/null and b/sound/instruments/banjo/Fn5.ogg differ diff --git a/sound/instruments/banjo/Gb3.ogg b/sound/instruments/banjo/Gb3.ogg new file mode 100644 index 0000000000..fd055b7471 Binary files /dev/null and b/sound/instruments/banjo/Gb3.ogg differ diff --git a/sound/instruments/banjo/Gb4.ogg b/sound/instruments/banjo/Gb4.ogg new file mode 100644 index 0000000000..f2c62510ed Binary files /dev/null and b/sound/instruments/banjo/Gb4.ogg differ diff --git a/sound/instruments/banjo/Gb5.ogg b/sound/instruments/banjo/Gb5.ogg new file mode 100644 index 0000000000..ab17347912 Binary files /dev/null and b/sound/instruments/banjo/Gb5.ogg differ diff --git a/sound/instruments/banjo/Gn3.ogg b/sound/instruments/banjo/Gn3.ogg new file mode 100644 index 0000000000..ad52ef85c0 Binary files /dev/null and b/sound/instruments/banjo/Gn3.ogg differ diff --git a/sound/instruments/banjo/Gn4.ogg b/sound/instruments/banjo/Gn4.ogg new file mode 100644 index 0000000000..2ddb13b86b Binary files /dev/null and b/sound/instruments/banjo/Gn4.ogg differ diff --git a/sound/instruments/banjo/Gn5.ogg b/sound/instruments/banjo/Gn5.ogg new file mode 100644 index 0000000000..d5a7886c4c Binary files /dev/null and b/sound/instruments/banjo/Gn5.ogg differ diff --git a/sound/instruments/bikehorn/Ab2.ogg b/sound/instruments/bikehorn/Ab2.ogg index cc33da35f4..516dc5f1a5 100644 Binary files a/sound/instruments/bikehorn/Ab2.ogg and b/sound/instruments/bikehorn/Ab2.ogg differ diff --git a/sound/instruments/bikehorn/Ab3.ogg b/sound/instruments/bikehorn/Ab3.ogg index b046ed2e74..6110ccc005 100644 Binary files a/sound/instruments/bikehorn/Ab3.ogg and b/sound/instruments/bikehorn/Ab3.ogg differ diff --git a/sound/instruments/bikehorn/Ab4.ogg b/sound/instruments/bikehorn/Ab4.ogg index ba50324d62..b69bc30a42 100644 Binary files a/sound/instruments/bikehorn/Ab4.ogg and b/sound/instruments/bikehorn/Ab4.ogg differ diff --git a/sound/instruments/bikehorn/An2.ogg b/sound/instruments/bikehorn/An2.ogg index ddfbe21910..29c97fc38e 100644 Binary files a/sound/instruments/bikehorn/An2.ogg and b/sound/instruments/bikehorn/An2.ogg differ diff --git a/sound/instruments/bikehorn/An3.ogg b/sound/instruments/bikehorn/An3.ogg index c69e59a8da..f9f67aaa53 100644 Binary files a/sound/instruments/bikehorn/An3.ogg and b/sound/instruments/bikehorn/An3.ogg differ diff --git a/sound/instruments/bikehorn/An4.ogg b/sound/instruments/bikehorn/An4.ogg index 5b42fe4ae8..74b9fa6adc 100644 Binary files a/sound/instruments/bikehorn/An4.ogg and b/sound/instruments/bikehorn/An4.ogg differ diff --git a/sound/instruments/bikehorn/Bb2.ogg b/sound/instruments/bikehorn/Bb2.ogg index 4a909bdfc5..5cee07e192 100644 Binary files a/sound/instruments/bikehorn/Bb2.ogg and b/sound/instruments/bikehorn/Bb2.ogg differ diff --git a/sound/instruments/bikehorn/Bb3.ogg b/sound/instruments/bikehorn/Bb3.ogg index 2055984a86..f655ba973c 100644 Binary files a/sound/instruments/bikehorn/Bb3.ogg and b/sound/instruments/bikehorn/Bb3.ogg differ diff --git a/sound/instruments/bikehorn/Bb4.ogg b/sound/instruments/bikehorn/Bb4.ogg index 73003e040c..54dc87781e 100644 Binary files a/sound/instruments/bikehorn/Bb4.ogg and b/sound/instruments/bikehorn/Bb4.ogg differ diff --git a/sound/instruments/bikehorn/Bn2.ogg b/sound/instruments/bikehorn/Bn2.ogg index 17532a6a7c..ff86ec9719 100644 Binary files a/sound/instruments/bikehorn/Bn2.ogg and b/sound/instruments/bikehorn/Bn2.ogg differ diff --git a/sound/instruments/bikehorn/Bn3.ogg b/sound/instruments/bikehorn/Bn3.ogg index ff36b91709..c639f34e8e 100644 Binary files a/sound/instruments/bikehorn/Bn3.ogg and b/sound/instruments/bikehorn/Bn3.ogg differ diff --git a/sound/instruments/bikehorn/Bn4.ogg b/sound/instruments/bikehorn/Bn4.ogg index 6750a93155..ea0bc643c5 100644 Binary files a/sound/instruments/bikehorn/Bn4.ogg and b/sound/instruments/bikehorn/Bn4.ogg differ diff --git a/sound/instruments/bikehorn/Cn3.ogg b/sound/instruments/bikehorn/Cn3.ogg index f75ddaa83f..129a67d6bd 100644 Binary files a/sound/instruments/bikehorn/Cn3.ogg and b/sound/instruments/bikehorn/Cn3.ogg differ diff --git a/sound/instruments/bikehorn/Cn4.ogg b/sound/instruments/bikehorn/Cn4.ogg index e5889f04bc..e02a4fa8d2 100644 Binary files a/sound/instruments/bikehorn/Cn4.ogg and b/sound/instruments/bikehorn/Cn4.ogg differ diff --git a/sound/instruments/bikehorn/Cn5.ogg b/sound/instruments/bikehorn/Cn5.ogg index 328a6edf10..eb0b76dadc 100644 Binary files a/sound/instruments/bikehorn/Cn5.ogg and b/sound/instruments/bikehorn/Cn5.ogg differ diff --git a/sound/instruments/bikehorn/Db3.ogg b/sound/instruments/bikehorn/Db3.ogg index 3c3e8d1030..000c38fb67 100644 Binary files a/sound/instruments/bikehorn/Db3.ogg and b/sound/instruments/bikehorn/Db3.ogg differ diff --git a/sound/instruments/bikehorn/Db4.ogg b/sound/instruments/bikehorn/Db4.ogg index 35dd47df47..2f9423914a 100644 Binary files a/sound/instruments/bikehorn/Db4.ogg and b/sound/instruments/bikehorn/Db4.ogg differ diff --git a/sound/instruments/bikehorn/Db5.ogg b/sound/instruments/bikehorn/Db5.ogg index 54c10b54c5..e65b43a288 100644 Binary files a/sound/instruments/bikehorn/Db5.ogg and b/sound/instruments/bikehorn/Db5.ogg differ diff --git a/sound/instruments/bikehorn/Dn3.ogg b/sound/instruments/bikehorn/Dn3.ogg index 33a863c842..f132cd6ba5 100644 Binary files a/sound/instruments/bikehorn/Dn3.ogg and b/sound/instruments/bikehorn/Dn3.ogg differ diff --git a/sound/instruments/bikehorn/Dn4.ogg b/sound/instruments/bikehorn/Dn4.ogg index bd4c353e62..196100f483 100644 Binary files a/sound/instruments/bikehorn/Dn4.ogg and b/sound/instruments/bikehorn/Dn4.ogg differ diff --git a/sound/instruments/bikehorn/Dn5.ogg b/sound/instruments/bikehorn/Dn5.ogg index 11b355b11c..cca45f9473 100644 Binary files a/sound/instruments/bikehorn/Dn5.ogg and b/sound/instruments/bikehorn/Dn5.ogg differ diff --git a/sound/instruments/bikehorn/Eb3.ogg b/sound/instruments/bikehorn/Eb3.ogg index 367cc5456d..8fd4306ae3 100644 Binary files a/sound/instruments/bikehorn/Eb3.ogg and b/sound/instruments/bikehorn/Eb3.ogg differ diff --git a/sound/instruments/bikehorn/Eb4.ogg b/sound/instruments/bikehorn/Eb4.ogg index d7344da37c..72700fd0e3 100644 Binary files a/sound/instruments/bikehorn/Eb4.ogg and b/sound/instruments/bikehorn/Eb4.ogg differ diff --git a/sound/instruments/bikehorn/Eb5.ogg b/sound/instruments/bikehorn/Eb5.ogg index c94b994d19..d2c050ec09 100644 Binary files a/sound/instruments/bikehorn/Eb5.ogg and b/sound/instruments/bikehorn/Eb5.ogg differ diff --git a/sound/instruments/bikehorn/En2.ogg b/sound/instruments/bikehorn/En2.ogg index 6c2e4de57d..ab9bb7dd45 100644 Binary files a/sound/instruments/bikehorn/En2.ogg and b/sound/instruments/bikehorn/En2.ogg differ diff --git a/sound/instruments/bikehorn/En3.ogg b/sound/instruments/bikehorn/En3.ogg index 37b96d4851..cac18c0249 100644 Binary files a/sound/instruments/bikehorn/En3.ogg and b/sound/instruments/bikehorn/En3.ogg differ diff --git a/sound/instruments/bikehorn/En4.ogg b/sound/instruments/bikehorn/En4.ogg index 2a23deabf5..17c9fc4ea2 100644 Binary files a/sound/instruments/bikehorn/En4.ogg and b/sound/instruments/bikehorn/En4.ogg differ diff --git a/sound/instruments/bikehorn/Fn2.ogg b/sound/instruments/bikehorn/Fn2.ogg index 3ddbcb9033..9db5395083 100644 Binary files a/sound/instruments/bikehorn/Fn2.ogg and b/sound/instruments/bikehorn/Fn2.ogg differ diff --git a/sound/instruments/bikehorn/Fn3.ogg b/sound/instruments/bikehorn/Fn3.ogg index 47f8625ea9..1228fafc94 100644 Binary files a/sound/instruments/bikehorn/Fn3.ogg and b/sound/instruments/bikehorn/Fn3.ogg differ diff --git a/sound/instruments/bikehorn/Fn4.ogg b/sound/instruments/bikehorn/Fn4.ogg index ee33053566..3744a1a3bf 100644 Binary files a/sound/instruments/bikehorn/Fn4.ogg and b/sound/instruments/bikehorn/Fn4.ogg differ diff --git a/sound/instruments/bikehorn/Gb2.ogg b/sound/instruments/bikehorn/Gb2.ogg index e78f943010..6625b93d16 100644 Binary files a/sound/instruments/bikehorn/Gb2.ogg and b/sound/instruments/bikehorn/Gb2.ogg differ diff --git a/sound/instruments/bikehorn/Gb3.ogg b/sound/instruments/bikehorn/Gb3.ogg index be59509ee9..03154ab427 100644 Binary files a/sound/instruments/bikehorn/Gb3.ogg and b/sound/instruments/bikehorn/Gb3.ogg differ diff --git a/sound/instruments/bikehorn/Gb4.ogg b/sound/instruments/bikehorn/Gb4.ogg index fac913aaff..59958dbae4 100644 Binary files a/sound/instruments/bikehorn/Gb4.ogg and b/sound/instruments/bikehorn/Gb4.ogg differ diff --git a/sound/instruments/bikehorn/Gn2.ogg b/sound/instruments/bikehorn/Gn2.ogg index 8099773544..95faf3389d 100644 Binary files a/sound/instruments/bikehorn/Gn2.ogg and b/sound/instruments/bikehorn/Gn2.ogg differ diff --git a/sound/instruments/bikehorn/Gn3.ogg b/sound/instruments/bikehorn/Gn3.ogg index 1966dfd0e8..f903ae6615 100644 Binary files a/sound/instruments/bikehorn/Gn3.ogg and b/sound/instruments/bikehorn/Gn3.ogg differ diff --git a/sound/instruments/bikehorn/Gn4.ogg b/sound/instruments/bikehorn/Gn4.ogg index 86f81bc1cb..6631da09e6 100644 Binary files a/sound/instruments/bikehorn/Gn4.ogg and b/sound/instruments/bikehorn/Gn4.ogg differ diff --git a/sound/weapons/banjoslap.ogg b/sound/weapons/banjoslap.ogg new file mode 100644 index 0000000000..06a86a535d Binary files /dev/null and b/sound/weapons/banjoslap.ogg differ diff --git a/tools/travis/check_line_endings.py b/tools/travis/check_line_endings.py new file mode 100644 index 0000000000..3ee7baf7aa --- /dev/null +++ b/tools/travis/check_line_endings.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +import os +import sys +import glob + +WINDOWS_NEWLINE = b'\r\n' + +FILES_TO_READ = [] +FILES_TO_READ.extend(glob.glob(r"**\*.dm", recursive=True)) +FILES_TO_READ.extend(glob.glob(r"**\*.dmm", recursive=True)) +FILES_TO_READ.extend(glob.glob(r"*.dme")) +#for i in FILES_TO_READ: +# if os.path.isdir(i): +# FILES_TO_READ.remove(i) + +def _reader(filepath): + data = open(filepath, "rb") + return data + +def main(): + filelist = [] + foundfiles = False + + for file in FILES_TO_READ: + data = _reader(file) + lines = data.readlines() + for line in lines: + if line.endswith(WINDOWS_NEWLINE): + filelist.append(file) + foundfiles = True + break + data.close() + + if not foundfiles: + print("No CRLF files found.") + sys.exit(0) + else: + print("Found files with suspected CRLF type.") + for i in filelist: + print(i) + sys.exit(1) + + + +if __name__ == "__main__": + main()