diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm
index f25dddcaf6..b4fd6719b2 100644
--- a/code/__DEFINES/shuttles.dm
+++ b/code/__DEFINES/shuttles.dm
@@ -53,12 +53,12 @@
#define ENGINE_COEFF_MAX 2
#define ENGINE_DEFAULT_MAXSPEED_ENGINES 5
-//Docking error flags_1
+//Docking error flags
#define DOCKING_SUCCESS 0
-#define DOCKING_COMPLETE 1
-#define DOCKING_BLOCKED 2
-#define DOCKING_IMMOBILIZED 4
-#define DOCKING_AREA_EMPTY 8
+#define DOCKING_BLOCKED 1
+#define DOCKING_IMMOBILIZED 2
+#define DOCKING_AREA_EMPTY 4
+
//Docking turf movements
#define MOVE_TURF 1
diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index e477299308..7acb5bf729 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -105,53 +105,17 @@ GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals",
GLOBAL_LIST_INIT(guitar_notes, flist("sound/guitar/"))
-GLOBAL_LIST_INIT(station_prefixes, list("", "Imperium", "Heretical", "Cuban",
- "Psychic", "Elegant", "Common", "Uncommon", "Rare", "Unique",
- "Houseruled", "Religious", "Atheist", "Traditional", "Houseruled",
- "Mad", "Super", "Ultra", "Secret", "Top Secret", "Deep", "Death",
- "Zybourne", "Central", "Main", "Government", "Uoi", "Fat",
- "Automated", "Experimental", "Augmented"))
+GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt") + "")
-GLOBAL_LIST_INIT(station_names, list("", "Stanford", "Dorf", "Alium",
- "Prefix", "Clowning", "Aegis", "Ishimura", "Scaredy", "Death-World",
- "Mime", "Honk", "Rogue", "MacRagge", "Ultrameens", "Safety", "Paranoia",
- "Explosive", "Neckbear", "Donk", "Muppet", "North", "West", "East",
- "South", "Slant-ways", "Widdershins", "Rimward", "Expensive",
- "Procreatory", "Imperial", "Unidentified", "Immoral", "Carp", "Ork",
- "Pete", "Control", "Nettle", "Aspie", "Class", "Crab", "Fist",
- "Corrogated","Skeleton","Race", "Fatguy", "Gentleman", "Capitalist",
- "Communist", "Bear", "Beard", "Derp", "Space", "Spess", "Star", "Moon",
- "System", "Mining", "Neckbeard", "Research", "Supply", "Military",
- "Orbital", "Battle", "Science", "Asteroid", "Home", "Production",
- "Transport", "Delivery", "Extraplanetary", "Orbital", "Correctional",
- "Robot", "Hats", "Pizza"))
+GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt" + ""))
-GLOBAL_LIST_INIT(station_suffixes, list("Station", "Frontier",
- "Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk",
- "Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb",
- "Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive",
- "Complex", "Base", "Facility", "Depot", "Outpost", "Installation",
- "Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform",
- "Construct", "Hangar", "Prison", "Center", "Port", "Waystation",
- "Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object",
- "Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp",
- "Airstrip"))
+GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt"))
-GLOBAL_LIST_INIT(greek_letters, list("Alpha", "Beta", "Gamma", "Delta",
- "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu",
- "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi",
- "Chi", "Psi", "Omega"))
+GLOBAL_LIST_INIT(greek_letters, world.file2list("strings/greek_letters.txt"))
-GLOBAL_LIST_INIT(phonetic_alphabet, list("Alpha", "Bravo", "Charlie",
- "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet",
- "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec",
- "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray",
- "Yankee", "Zulu"))
+GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.txt"))
-GLOBAL_LIST_INIT(numbers_as_words, list("One", "Two", "Three", "Four",
- "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve",
- "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen",
- "Eighteen", "Nineteen"))
+GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt"))
/proc/generate_number_strings()
var/list/L[198]
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 1d8f7add38..01a6b2a46d 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -175,6 +175,7 @@
var/rename_cyborg = 0
var/ooc_during_round = 0
var/emojis = 0
+ var/no_credits_round_end = FALSE
//Used for modifying movement speed for mobs.
//Unversal modifiers
@@ -576,6 +577,8 @@
ooc_during_round = 1
if("emojis")
emojis = 1
+ if("no_credits_round_end")
+ no_credits_round_end = TRUE
if("run_delay")
run_speed = text2num(value)
if("walk_delay")
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index ea91e8a688..f9774f8cb5 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -341,7 +341,7 @@ SUBSYSTEM_DEF(shuttle)
if(M.request(getDock(destination)))
return 2
else
- if(M.dock(getDock(destination)))
+ if(M.dock(getDock(destination)) != DOCKING_SUCCESS)
return 2
return 0 //dock successful
@@ -356,7 +356,7 @@ SUBSYSTEM_DEF(shuttle)
if(M.request(D))
return 2
else
- if(M.dock(D))
+ if(M.dock(D) != DOCKING_SUCCESS)
return 2
return 0 //dock successful
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index d196c9cb10..b0c432f8ac 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -470,6 +470,12 @@ SUBSYSTEM_DEF(ticker)
to_chat(world, "
The round has ended.")
+/* var/nocredits = config.no_credits_round_end
+ for(var/client/C in GLOB.clients)
+ if(!C.credits && !nocredits)
+ C.RollCredits()
+ C.playtitlemusic(40)*/
+
//Player status report
for(var/mob/Player in GLOB.mob_list)
if(Player.mind && !isnewplayer(Player))
diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm
index 4292f5b08a..e86f78722b 100644
--- a/code/game/machinery/quantum_pad.dm
+++ b/code/game/machinery/quantum_pad.dm
@@ -16,6 +16,20 @@
var/power_efficiency = 1
var/obj/machinery/quantumpad/linked_pad
+ //mapping
+ var/static/list/mapped_quantum_pads = list()
+ var/map_pad_id = "" as text //what's my name
+ var/map_pad_link_id = "" as text //who's my friend
+
+/obj/machinery/quantumpad/Initialize()
+ . = ..()
+ if(map_pad_id)
+ mapped_quantum_pads[map_pad_id] = src
+
+/obj/machinery/quantumpad/Destroy()
+ mapped_quantum_pads -= map_pad_id
+ return ..()
+
/obj/machinery/quantumpad/RefreshParts()
var/E = 0
for(var/obj/item/stock_parts/capacitor/C in component_parts)
@@ -60,8 +74,9 @@
return
if(!linked_pad || QDELETED(linked_pad))
- to_chat(user, "There is no linked pad!")
- return
+ if(!map_pad_link_id || !initMappedLink())
+ to_chat(user, "There is no linked pad!")
+ return
if(world.time < last_teleport + teleport_cooldown)
to_chat(user, "[src] is recharging power. Please wait [round((last_teleport + teleport_cooldown - world.time) / 10)] seconds.")
@@ -80,7 +95,6 @@
return
src.add_fingerprint(user)
doteleport(user)
- return
/obj/machinery/quantumpad/proc/sparks()
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
@@ -88,6 +102,8 @@
s.start()
/obj/machinery/quantumpad/attack_ghost(mob/dead/observer/ghost)
+ if(!linked_pad && map_pad_link_id)
+ initMappedLink()
if(linked_pad)
ghost.forceMove(get_turf(linked_pad))
@@ -136,6 +152,12 @@
continue
do_teleport(ROI, get_turf(linked_pad))
+/obj/machinery/quantumpad/proc/initMappedLink()
+ . = FALSE
+ var/obj/machinery/quantumpad/link = mapped_quantum_pads[map_pad_link_id]
+ if(link)
+ linked_pad = link
+ . = TRUE
/obj/item/paper/guides/quantumpad
name = "Quantum Pad For Dummies"
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index c13def9897..cfc834037d 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -117,10 +117,10 @@
/turf/open/floor/proc/make_plating()
return ChangeTurf(/turf/open/floor/plating)
-/turf/open/floor/ChangeTurf(new_path)
+/turf/open/floor/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
if(!isfloorturf(src))
return ..() //fucking turfs switch the fucking src of the fucking running procs
- if(!ispath(new_path, /turf/open/floor))
+ if(!ispath(path, /turf/open/floor))
return ..()
var/old_icon = icon_regular_floor
var/old_dir = dir
diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm
index 971701aa2b..542a0ed81d 100644
--- a/code/game/turfs/simulated/floor/light_floor.dm
+++ b/code/game/turfs/simulated/floor/light_floor.dm
@@ -43,7 +43,7 @@
icon_state = "light_off"
-/turf/open/floor/light/ChangeTurf(turf/T)
+/turf/open/floor/light/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
set_light(0)
return ..()
diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm
index 6ffdcb3af5..f8d6c1da71 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -273,7 +273,7 @@
if(prob(50))
ChangeTurf(src.baseturf)
-/turf/open/floor/vines/ChangeTurf(turf/open/floor/T)
+/turf/open/floor/vines/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
. = ..()
//Do this *after* the turf has changed as qdel in spacevines will call changeturf again if it hasn't
for(var/obj/structure/spacevine/SV in src)
diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm
index be8d949eba..df353653d7 100644
--- a/code/game/turfs/simulated/floor/reinf_floor.dm
+++ b/code/game/turfs/simulated/floor/reinf_floor.dm
@@ -116,7 +116,7 @@
be_removed()
return ..()
-/turf/open/floor/engine/cult/ChangeTurf(path, defer_change = FALSE)
+/turf/open/floor/engine/cult/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
if(path != type)
be_removed()
return ..()
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 8dd013facc..34635084dd 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -1,11 +1,11 @@
/obj/item/stock_parts/cell
name = "power cell"
- desc = "A rechargeable electrochemical power cell."
+ desc = "A rechargeable electrochemical power cell."
icon = 'icons/obj/power.dmi'
icon_state = "cell"
item_state = "cell"
- lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
origin_tech = "powerstorage=1"
force = 5
throwforce = 5
@@ -156,7 +156,7 @@
/obj/item/stock_parts/cell/blob_act(obj/structure/blob/B)
- ex_act(EXPLODE_DEVASTATE)
+ ex_act(EXPLODE_DEVASTATE)
/obj/item/stock_parts/cell/proc/get_electrocute_damage()
if(charge >= 1000)
@@ -166,7 +166,7 @@
/* Cell variants*/
/obj/item/stock_parts/cell/crap
- name = "\improper Nanotrasen brand rechargeable AA battery"
+ name = "\improper Nanotrasen brand rechargeable AA battery"
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
maxcharge = 500
materials = list(MAT_GLASS=40)
@@ -176,8 +176,21 @@
..()
charge = 0
+/obj/item/stock_parts/cell/upgraded
+ name = "high-capacity power cell"
+ desc = "A power cell with a slightly higher capacity than normal!"
+ maxcharge = 2500
+ materials = list(MAT_GLASS=50)
+ rating = 2
+ chargerate = 1000
+
+/obj/item/stock_parts/cell/upgraded/plus
+ name = "upgraded power cell+"
+ desc = "A power cell with an even higher capacity than the base model!"
+ maxcharge = 5000
+
/obj/item/stock_parts/cell/secborg
- name = "security borg rechargeable D battery"
+ name = "security borg rechargeable D battery"
origin_tech = null
maxcharge = 600 //600 max charge / 100 charge per shot = six shots
materials = list(MAT_GLASS=40)
@@ -249,7 +262,7 @@
/obj/item/stock_parts/cell/bluespace
name = "bluespace power cell"
- desc = "A rechargeable transdimensional power cell."
+ desc = "A rechargeable transdimensional power cell."
origin_tech = "powerstorage=5;bluespace=4;materials=4;engineering=4"
icon_state = "bscell"
maxcharge = 40000
@@ -289,7 +302,7 @@
/obj/item/stock_parts/cell/potato
name = "potato battery"
- desc = "A rechargeable starch based power cell."
+ desc = "A rechargeable starch based power cell."
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "potato"
origin_tech = "powerstorage=1;biotech=1"
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 85f32b745d..d574a38d73 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -290,7 +290,7 @@
if(SHUTTLE_CALL)
if(time_left <= 0)
//move emergency shuttle to station
- if(dock(SSshuttle.getDock("emergency_home")))
+ if(dock(SSshuttle.getDock("emergency_home")) != DOCKING_SUCCESS)
setTimer(20)
return
mode = SHUTTLE_DOCKED
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index 6ae0d98dfe..f035777df5 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -418,7 +418,7 @@
var/obj/docking_port/stationary/S0 = get_docked()
var/obj/docking_port/stationary/S1 = assigned_transit
if(S1)
- if(dock(S1))
+ if(dock(S1) != DOCKING_SUCCESS)
WARNING("shuttle \"[id]\" could not enter transit space. Docked at [S0 ? S0.id : "null"]. Transit dock [S1 ? S1.id : "null"].")
else
previous = S0
@@ -498,7 +498,7 @@
if(new_dock.get_docked() == src)
remove_ripples()
- return DOCKING_COMPLETE
+ return DOCKING_SUCCESS
if(!force)
if(!check_dock(new_dock))
@@ -650,11 +650,11 @@
// then try again
switch(mode)
if(SHUTTLE_CALL)
- if(dock(destination, preferred_direction))
+ if(dock(destination, preferred_direction) != DOCKING_SUCCESS)
setTimer(20)
return
if(SHUTTLE_RECALL)
- if(dock(previous))
+ if(dock(previous) != DOCKING_SUCCESS)
setTimer(20)
return
if(SHUTTLE_IGNITING)
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 0f5f1de91d..8f32aa89eb 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -569,6 +569,7 @@
message_admins("[key_name_admin(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
log_game("[key_name(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
+ SSblackbox.add_details("voice_of_god", log_message)
return cooldown
diff --git a/strings/greek_letters.txt b/strings/greek_letters.txt
new file mode 100644
index 0000000000..b1014aa178
--- /dev/null
+++ b/strings/greek_letters.txt
@@ -0,0 +1,24 @@
+Alpha
+Beta
+Gamma
+Delta
+Epsilon
+Zeta
+Eta
+Theta
+Iota
+Kappa
+Lambda
+Mu
+Nu
+Xi
+Omicron
+Pi
+Rho
+Sigma
+Tau
+Upsilon
+Phi
+Chi
+Psi
+Omega
\ No newline at end of file
diff --git a/strings/numbers_as_words.txt b/strings/numbers_as_words.txt
new file mode 100644
index 0000000000..f7c620cd9b
--- /dev/null
+++ b/strings/numbers_as_words.txt
@@ -0,0 +1,20 @@
+One
+Two
+Three
+Four
+Five
+Six
+Seven
+Eight
+Nine
+Ten
+Eleven
+Twelve
+Thirteen
+Fourteen
+Fifteen
+Sixteen
+Seventeen
+Eighteen
+Nineteen
+Twenty
\ No newline at end of file
diff --git a/strings/phonetic_alphabet.txt b/strings/phonetic_alphabet.txt
new file mode 100644
index 0000000000..d77c1164ca
--- /dev/null
+++ b/strings/phonetic_alphabet.txt
@@ -0,0 +1,26 @@
+Alpha
+Bravo
+Charlie
+Delta
+Echo
+Foxtrot
+Golf
+Hotel
+India
+Juliet
+Kilo
+Lima
+Mike
+November
+Oscar
+Papa
+Quebec
+Romeo
+Sierra
+Tango
+Uniform
+Victor
+Whiskey
+X-ray
+Yankee
+Zulu
\ No newline at end of file
diff --git a/strings/station_names.txt b/strings/station_names.txt
new file mode 100644
index 0000000000..0937a10da6
--- /dev/null
+++ b/strings/station_names.txt
@@ -0,0 +1,82 @@
+Stanford
+Dorf
+Alium
+Prefix
+Clowning
+Aegis
+Ishimura
+Scaredy
+Death-World
+Mime
+Honk
+Rogue
+MacRagge
+Ultrameens
+Safety
+Paranoia
+Explosive
+Neckbear
+Donk
+Muppet
+North
+West
+East
+South
+Slant-ways
+Widdershins
+Rimward
+Expensive
+Procreatory
+Imperial
+Unidentified
+Immoral
+Carp
+Ork
+Pete
+Control
+Nettle
+Aspie
+Class
+Crab
+Fist
+Corrogated
+Skeleton
+Race
+Fatguy
+Gentleman
+Capitalist
+Communist
+Bear
+Beard
+Space
+Spess
+Star
+Moon
+System
+Mining
+Neckbeard
+Research
+Supply
+Military
+Orbital
+Battle
+Science
+Asteroid
+Home
+Production
+Transport
+Delivery
+Extraplanetary
+Orbital
+Correctional
+Robot
+Hats
+Pizza
+Taco
+Burger
+Box
+Meta
+Pub
+Ship
+Book
+Refactor
\ No newline at end of file
diff --git a/strings/station_prefixes.txt b/strings/station_prefixes.txt
new file mode 100644
index 0000000000..576e68dc1e
--- /dev/null
+++ b/strings/station_prefixes.txt
@@ -0,0 +1,41 @@
+Imperium
+Heretical
+Cuban
+Psychic
+Elegant
+Common
+Uncommon
+Rare
+Unique
+Houseruled
+Religious
+Atheist
+Traditional
+Houseruled
+Mad
+Super
+Ultra
+Secret
+Top Secret
+Deep
+Death
+Zybourne
+Central
+Main
+Government
+Uoi
+Fat
+Automated
+Experimental
+Augmented
+American
+Funky
+Thin
+Legendary
+Szechuan
+White
+Black
+Grey
+Grim
+Electric
+Burning
\ No newline at end of file
diff --git a/strings/station_suffixes.txt b/strings/station_suffixes.txt
new file mode 100644
index 0000000000..c30e18c245
--- /dev/null
+++ b/strings/station_suffixes.txt
@@ -0,0 +1,64 @@
+Station
+Frontier
+Suffix
+Death-trap
+Space-hulk
+Lab
+Hazard
+Spess Junk
+Fishery
+No-Moon
+Tomb
+Crypt
+Hut
+Monkey
+Bomb
+Trade Post
+Fortress
+Village
+Town
+City
+Edition
+Hive
+Complex
+Base
+Facility
+Depot
+Outpost
+Installation
+Drydock
+Observatory
+Array
+Relay
+Monitor
+Platform
+Construct
+Hangar
+Prison
+Center
+Port
+Waystation
+Factory
+Waypoint
+Stopover
+Hub
+HQ
+Office
+Object
+Fortification
+Colony
+Planet-Cracker
+Roost
+Fat Camp
+Airstrip
+Harbor
+Garden
+Continent
+Environment
+Course
+Country
+Province
+Workspace
+Metro
+Warehouse
+Space Junk
\ No newline at end of file