Merge branch 'master' into upstream-merge-31371

This commit is contained in:
LetterJay
2017-10-08 15:37:46 -04:00
committed by GitHub
43 changed files with 256 additions and 87 deletions
+11 -11
View File
@@ -2281,7 +2281,7 @@
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "Box emergency shuttle";
name = "Box emergency shuttle"
},
/obj/docking_port/stationary{
dir = 4;
@@ -42528,14 +42528,14 @@
},
/area/maintenance/port/aft)
"bTt" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
/obj/structure/closet/secure_closet/personal,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 4
},
/obj/structure/closet/secure_closet/personal,
/turf/open/floor/wood,
/area/maintenance/port/aft)
"bTu" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 4
},
/turf/closed/wall,
@@ -42549,9 +42549,9 @@
/turf/open/floor/wood,
/area/maintenance/port/aft)
"bTw" = (
/obj/machinery/atmospherics/pipe/manifold/general/visible,
/obj/machinery/light/small,
/obj/structure/table/wood,
/obj/machinery/atmospherics/pipe/manifold/general/hidden,
/turf/open/floor/wood,
/area/maintenance/port/aft)
"bTx" = (
@@ -64125,19 +64125,19 @@
/turf/open/floor/wood,
/area/maintenance/port/aft)
"cUq" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 5
},
/obj/machinery/light/small,
/obj/structure/table/wood,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 5
},
/turf/open/floor/wood,
/area/maintenance/port/aft)
"cUr" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/obj/structure/bed,
/obj/item/bedsheet,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 4
},
/turf/open/floor/wood,
/area/maintenance/port/aft)
"cUs" = (
+12 -5
View File
@@ -97094,8 +97094,7 @@
/turf/open/floor/plating,
/area/crew_quarters/theatre/abandoned)
"dHa" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/twohanded/required/kirbyplants/random,
/obj/machinery/vending/kink,
/turf/open/floor/wood,
/area/crew_quarters/theatre/abandoned)
"dHb" = (
@@ -113139,6 +113138,14 @@
"esH" = (
/turf/closed/wall,
/area/maintenance/department/medical/morgue)
"esI" = (
/obj/machinery/vending/kink,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"esJ" = (
/obj/machinery/vending/kink,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
(1,1,1) = {"
aaa
@@ -137474,7 +137481,7 @@ dmb
dnA
doK
dqw
diJ
esJ
aJm
aHW
aaf
@@ -143545,7 +143552,7 @@ aib
asx
atw
auQ
aic
esI
awX
aye
azn
@@ -178674,4 +178681,4 @@ aaa
aaa
aaa
aaa
"}
"}
+3 -3
View File
@@ -28522,7 +28522,7 @@
},
/area/security/checkpoint/engineering)
"bcO" = (
/obj/structure/easel,
/obj/machinery/vending/kink,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
@@ -64306,10 +64306,10 @@
/turf/open/space,
/area/space)
"ctn" = (
/obj/machinery/vending/cigarette,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/vending/kink,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cto" = (
@@ -155921,4 +155921,4 @@ aaa
aaa
aaa
aaa
"}
"}
@@ -30349,6 +30349,7 @@
dir = 8
},
/obj/effect/turf_decal/bot,
/obj/machinery/computer/rdconsole,
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"bbP" = (
+1 -1
View File
@@ -70,4 +70,4 @@
#define ADMIN_MARKREAD(client) "(<a href='?_src_=holder;markedread=\ref[client]'>MARK READ</a>)"//marks an adminhelp as read and under investigation
#define ADMIN_IC(client) "(<a href='?_src_=holder;icissue=\ref[client]'>IC</a>)"//marks and adminhelp as an IC issue
#define ADMIN_REJECT(client) "(<a href='?_src_=holder;rejectadminhelp=\ref[client]'>REJT</a>)"//Rejects an adminhelp for being unclear or otherwise unhelpful. resets their adminhelp timer
#define ADMIN_REJECT(client) "(<a href='?_src_=holder;rejectadminhelp=\ref[client]'>REJT</a>)"//Rejects an adminhelp for being unclear or otherwise unhelpful. resets their adminhelp timer
-2
View File
@@ -55,8 +55,6 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us
#define POWER_PLASTEEL (CLOCKCULT_POWER_UNIT*0.05) //how much power is in one sheet of plasteel
#define RATVAR_POWER_CHECK "ratvar?" //when passed into can_use_power(), converts it into a check for if ratvar has woken/the fabricator is debug
//Ark defines
#define GATEWAY_SUMMON_RATE 1 //the time amount the Gateway to the Celestial Derelict gets each process tick; defaults to 1 per tick
+1
View File
@@ -2,6 +2,7 @@
#define CONFIG_DEF(X) /datum/config_entry/##X { resident_file = CURRENT_RESIDENT_FILE }; /datum/config_entry/##X
#define CONFIG_GET(X) global.config.Get(/datum/config_entry/##X)
#define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y)
#define CONFIG_TWEAK(X) /datum/config_entry/##X
#define CONFIG_MAPS_FILE "maps.txt"
+3 -1
View File
@@ -24,6 +24,7 @@
#define ROLE_SERVANT_OF_RATVAR "servant of Ratvar"
#define ROLE_BORER "borer"
#define ROLE_BROTHER "blood brother"
#define ROLE_MISCREANT "miscreant"
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
@@ -46,7 +47,8 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_ABDUCTOR = /datum/game_mode/abduction,
ROLE_DEVIL = /datum/game_mode/devil,
ROLE_BORER,
ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult
ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult,
ROLE_MISCREANT
))
//Job defines for what happens when you fail to qualify for any job during job selection
+3 -2
View File
@@ -1,6 +1,6 @@
/datum/controller/subsystem/ticker/proc/generate_crew_objectives()
for(var/datum/mind/crewMind in SSticker.minds)
if(prob(2) && !issilicon(crewMind.current) && !jobban_isbanned(crewMind, "Syndicate") && GLOB.miscreants_allowed)
if(prob(2) && !issilicon(crewMind.current) && !jobban_isbanned(crewMind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in crewMind.current.client.prefs.be_special)
generate_miscreant_objectives(crewMind)
else
if(CONFIG_GET(flag/allow_crew_objectives))
@@ -25,7 +25,8 @@
return
newObjective.owner = crewMind
crewMind.objectives += newObjective
to_chat(crewMind, "<B>Your objective:</B> [newObjective.explanation_text]")
to_chat(crewMind, "<B>As a part of Nanotrasen's anti-tide efforts, you have been assigned an optional objective. It will be checked at the end of the shift. <font color=red>Performing traitorous acts in pursuit of your objective may result in termination of your employment.</font></B>")
to_chat(crewMind, "<B>Your optional objective:</B> [newObjective.explanation_text]")
/datum/controller/subsystem/ticker/proc/get_valid_crew_objs(var/job = "")//taken from old hippie with adjustments
var/list/objpaths = typesof(/datum/objective/crew)
+6 -1
View File
@@ -7,6 +7,8 @@
return
if(!crewMind.assigned_role)
return
if(ROLE_MISCREANT in crewMind.current.client.prefs.be_special)
return
if(jobban_isbanned(crewMind, "Syndicate"))
return
var/list/objectiveTypes = typesof(/datum/objective/miscreant) - /datum/objective/miscreant
@@ -58,4 +60,7 @@
explanation_text = "Act as out of character as you possibly can."
/datum/objective/miscreant/racism
explanation_text = "Attempt to establish superiority of your race."
explanation_text = "Attempt to establish superiority of your species."
/datum/objective/miscreant/cargonia
explanation_text = "Attempt to establish independence of your department."
@@ -185,29 +185,6 @@
else
return FALSE
/datum/objective/crew/departmentclothes
var/obj/item/clothing/under/rank/targetuniform
explanation_text = "Be wearing a (Yo, this objective broke. report this to citadels discord via the development channel) at the end of the shift."
jobs = "assistant"
/datum/objective/crew/departmentclothes/New()
. = ..()
var/list/blacklist = list(/obj/item/clothing/under/rank, /obj/item/clothing/under/rank/miner, /obj/item/clothing/under/rank/medical/blue, /obj/item/clothing/under/rank/medical/green, /obj/item/clothing/under/rank/medical/purple, /obj/item/clothing/under/rank/security/grey, /obj/item/clothing/under/rank/warden/grey, /obj/item/clothing/under/rank/head_of_security/grey, /obj/item/clothing/under/rank/mailman, /obj/item/clothing/under/rank/psyche, /obj/item/clothing/under/rank/clown/sexy, /obj/item/clothing/under/rank/centcom_officer, /obj/item/clothing/under/rank/centcom_commander, /obj/item/clothing/under/rank/security/navyblue/russian, /obj/item/clothing/under/rank/security/blueshirt)
var/list/validclothes = typesof(/obj/item/clothing/under/rank) - blacklist
targetuniform = pick(validclothes)
update_explanation_text()
/datum/objective/crew/departmentclothes/update_explanation_text()
. = ..()
explanation_text = "Be wearing a [initial(targetuniform.name)] at the end of the shift."
/datum/objective/crew/departmentclothes/check_completion()
if(owner && owner.current)
var/mob/living/carbon/human/H = owner.current
if(istype(H.w_uniform, targetuniform))
return TRUE
return FALSE
/datum/objective/crew/pwrgame //ported from Goon with adjustments
var/obj/item/clothing/targettidegarb
explanation_text = "Get your grubby hands on a (Dear god something broke. Report this to Citadel's development dicussion channel)."
@@ -215,7 +192,9 @@
/datum/objective/crew/pwrgame/New()
. = ..()
var/list/muhvalids = list(/obj/item/clothing/mask/gas, /obj/item/clothing/head/welding, /obj/item/clothing/head/ushanka, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas/owl_mask, /obj/item/clothing/suit/space)
var/list/muhvalids = list(/obj/item/clothing/mask/gas, /obj/item/clothing/head/welding, /obj/item/clothing/head/ushanka, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas/owl_mask)
if(prob(10))
muhvalids += list(/obj/item/clothing/suit/space)
targettidegarb = pick(muhvalids)
update_explanation_text()
@@ -74,7 +74,7 @@
return FALSE
/datum/objective/crew/noinfections
explanation_text = "Ensure no living crew members are infected with harmful viruses at the end of the shift"
explanation_text = "Make sure there are no crew members with harmful diseases at the end of the shift."
jobs = "virologist"
/datum/objective/crew/noinfections/check_completion()
@@ -93,6 +93,17 @@
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
/obj/item/toy/plush/tree
name = "christmass tree plushie"
desc = "A festive plush that squeeks when you squeeze it!"
icon = 'icons/obj/plushes.dmi'
icon_state = "pine_c"
item_state = "pine_c"
w_class = WEIGHT_CLASS_SMALL
attack_verb = list("slapped")
resistance_flags = FLAMMABLE
squeak_override = list('sound/items/bikehorn.ogg'= 1)
/*Zigfie*/
@@ -49,7 +49,6 @@ GLOBAL_PROTECT(config_dir)
if(initial(E.abstract_type) == I)
continue
E = new I
_entries_by_type[I] = E
var/esname = E.name
var/datum/config_entry/test = _entries[esname]
if(test)
@@ -57,6 +56,7 @@ GLOBAL_PROTECT(config_dir)
qdel(E)
continue
_entries[esname] = E
_entries_by_type[I] = E
.[E.resident_file] = TRUE
/datum/controller/configuration/proc/RemoveEntry(datum/config_entry/CE)
@@ -268,3 +268,8 @@ CONFIG_DEF(flag/allow_extended_miscreants)
GLOB.MAX_EX_LIGHT_RANGE = value
GLOB.MAX_EX_FLASH_RANGE = value
GLOB.MAX_EX_FLAME_RANGE = value
CONFIG_DEF(number/emergency_shuttle_autocall_threshold)
min_val = 0
max_val = 1
integer = FALSE
+10
View File
@@ -573,3 +573,13 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
for(var/S in subsystems)
var/datum/controller/subsystem/SS = S
SS.StopLoadingMap()
/datum/controller/master/proc/UpdateTickRate()
if (!processing)
return
var/client_count = length(GLOB.clients)
if (client_count < CONFIG_GET(number/mc_tick_rate/disable_high_pop_mc_mode_amount))
processing = CONFIG_GET(number/mc_tick_rate/base_mc_tick_rate)
else if (client_count > CONFIG_GET(number/mc_tick_rate/high_pop_mc_mode_amount))
processing = CONFIG_GET(number/mc_tick_rate/high_pop_mc_tick_rate)
+27 -1
View File
@@ -136,6 +136,7 @@ SUBSYSTEM_DEF(shuttle)
if(changed_transit)
color_space()
#endif
CheckAutoEvac()
while(transit_requesters.len)
var/requester = popleft(transit_requesters)
@@ -148,7 +149,32 @@ SUBSYSTEM_DEF(shuttle)
var/obj/docking_port/mobile/M = requester
M.transit_failure()
if(MC_TICK_CHECK)
return
break
/datum/controller/subsystem/shuttle/proc/CheckAutoEvac()
if(emergencyNoEscape || emergencyNoRecall || !emergency)
return
var/threshold = CONFIG_GET(number/emergency_shuttle_autocall_threshold)
if(!threshold)
return
var/alive = 0
for(var/I in GLOB.player_list)
var/mob/M = I
if(M.stat != DEAD)
++alive
var/total = GLOB.joined_player_list.len
if(alive / total <= threshold)
var/msg = "Automatically dispatching shuttle due to crew death."
message_admins(msg)
log_game("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]")
emergencyNoRecall = TRUE
priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.")
if(emergency.timeLeft(1) > emergencyCallTime * 0.4)
emergency.request(null, set_coefficient = 0.4)
/datum/controller/subsystem/shuttle/proc/getShuttle(id)
for(var/obj/docking_port/mobile/M in mobile)
+6 -6
View File
@@ -258,7 +258,7 @@ SUBSYSTEM_DEF(ticker)
//Deleting Startpoints but we need the ai point to AI-ize people later
if(S.name != "AI")
qdel(S)
//assign crew objectives and generate miscreants
if(CONFIG_GET(flag/allow_extended_miscreants) && GLOB.master_mode == "extended")
GLOB.miscreants_allowed = TRUE
@@ -282,7 +282,7 @@ SUBSYSTEM_DEF(ticker)
qdel(bomb)
if(epi)
explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE)
/datum/controller/subsystem/ticker/proc/create_characters()
for(var/mob/dead/new_player/player in GLOB.player_list)
if(player.ready == PLAYER_READY_TO_PLAY && player.mind)
@@ -472,13 +472,13 @@ SUBSYSTEM_DEF(ticker)
if(!crewMind.current || !crewMind.objectives.len)
continue
for(var/datum/objective/miscreant/MO in crewMind.objectives)
miscreants += "<B>[crewMind.current.real_name]</B> (Played by: <B>[crewMind.key]</B>). <B>Objective</B>: [MO.explanation_text]"
miscreants += "<B>[crewMind.current.real_name]</B> (Played by: <B>[crewMind.key]</B>)<BR><B>Objective</B>: [MO.explanation_text] <font color='grey'>(Optional)</font><BR>"
for(var/datum/objective/crew/CO in crewMind.objectives)
if(CO.check_completion())
to_chat(crewMind.current, "<br><B>Your objective</B>: [CO.explanation_text] <font color='green'><B>Success!</B></font>")
successfulCrew += "<B>[crewMind.current.real_name]</B> (Played by: <B>[crewMind.key]</B>). <B>Objective</B>: [CO.explanation_text]"
to_chat(crewMind.current, "<br><B>Your optional objective</B>: [CO.explanation_text] <font color='green'><B>Success!</B></font>")
successfulCrew += "<B>[crewMind.current.real_name]</B> (Played by: <B>[crewMind.key]</B>)<BR><B>Objective</B>: [CO.explanation_text] <font color='green'><B>Success!</B></font> <font color='grey'>(Optional)</font><BR>"
else
to_chat(crewMind.current, "<br><B>Your objective</B>: [CO.explanation_text] <font color='red'><B>Failed.</B></font>")
to_chat(crewMind.current, "<br><B>Your optional objective</B>: [CO.explanation_text] <font color='red'><B>Failed.</B></font>")
if (successfulCrew.len)
var/completedObjectives = "<B>The following crew members completed their Crew Objectives:</B><BR>"
+1 -1
View File
@@ -123,7 +123,7 @@
/datum/disease/advance/proc/HasSymptom(datum/symptom/S)
for(var/datum/symptom/symp in symptoms)
if(symp.id == S.id)
if(symp.type == S.type)
return 1
return 0
@@ -131,7 +131,7 @@ Bonus
/datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A)
var/heal_amt = 2 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
var/list/parts = M.get_damaged_bodyparts(1,0) //brute only
if(!parts.len)
return
@@ -175,7 +175,7 @@ Bonus
/datum/symptom/heal/brute/plus/Heal(mob/living/carbon/M, datum/disease/advance/A)
var/heal_amt = 4 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
var/list/parts = M.get_damaged_bodyparts(1,0) //brute only
if(M.getCloneLoss() > 0)
M.adjustCloneLoss(-1)
@@ -225,7 +225,7 @@ Bonus
/datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A)
var/heal_amt = 2 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
var/list/parts = M.get_damaged_bodyparts(0,1) //burn only
if(!parts.len)
return
@@ -268,7 +268,7 @@ Bonus
/datum/symptom/heal/burn/plus/Heal(mob/living/carbon/M, datum/disease/advance/A)
var/heal_amt = 4 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
var/list/parts = M.get_damaged_bodyparts(0,1) //burn only
if(M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (10 * heal_amt * TEMPERATURE_DAMAGE_COEFFICIENT))
@@ -43,8 +43,11 @@ BONUS
/datum/symptom/itching/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
var/can_scratch = scratch && !M.incapacitated()
to_chat(M, "<span class='warning'>Your [pick("back", "arm", "leg", "elbow", "head")] itches. [can_scratch ? " You scratch it." : ""]</span>")
if(can_scratch)
M.adjustBruteLoss(0.5)
var/mob/living/carbon/M = A.affected_mob
var/picked_bodypart = pick("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg")
var/obj/item/bodypart/bodypart = M.get_bodypart(picked_bodypart)
if(bodypart && bodypart.status == BODYPART_ORGANIC && !bodypart.is_pseudopart) //robotic limbs will mean less scratching overall
var/can_scratch = scratch && !M.incapacitated() && get_location_accessible(M, picked_bodypart)
M.visible_message("[can_scratch ? "<span class='warning'>[M] scratches [M.p_their()] [bodypart.name].</span>" : ""]", "<span class='warning'>Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]</span>")
if(can_scratch)
bodypart.receive_damage(0.5)
@@ -90,7 +90,7 @@
if(!no_table_check)
return TRUE
return FALSE
if(get_clockwork_power(RATVAR_POWER_CHECK))
if(GLOB.ratvar_awakens)
fabrication_values["power_cost"] = 0
var/turf/Y = get_turf(user)
@@ -167,7 +167,7 @@
return FALSE
if(target.type != expected_type)
return FALSE
if(get_clockwork_power(RATVAR_POWER_CHECK))
if(GLOB.ratvar_awakens)
fabrication_values["power_cost"] = 0
if(!get_clockwork_power(fabrication_values["power_cost"]))
if(get_clockwork_power() - fabrication_values["power_cost"] < 0)
@@ -212,7 +212,7 @@
return FALSE
repair_values["healing_for_cycle"] = min(repair_values["amount_to_heal"], FABRICATOR_REPAIR_PER_TICK) //modify the healing for this cycle
repair_values["power_required"] = round(repair_values["healing_for_cycle"]*MIN_CLOCKCULT_POWER, MIN_CLOCKCULT_POWER) //and get the power cost from that
if(!get_clockwork_power(RATVAR_POWER_CHECK) && !get_clockwork_power(repair_values["power_required"]))
if(!GLOB.ratvar_awakens && !get_clockwork_power(repair_values["power_required"]))
if(!silent)
to_chat(user, "<span class='warning'>You need at least <b>[DisplayPower(repair_values["power_required"])]</b> power to start repairin[target == user ? "g yourself" : "g [target]"], and at least \
<b>[DisplayPower(repair_values["amount_to_heal"]*MIN_CLOCKCULT_POWER, MIN_CLOCKCULT_POWER)]</b> to fully repair [target == user ? "yourself" : "[target.p_them()]"]!</span>")
+6 -2
View File
@@ -100,9 +100,10 @@
if(cooldowntime > world.time)
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
return
var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Bastard Sword")
var/option = "Shielded Robe"
option = input(user, "You study the schematics etched into the forge...", "[src]", option) as null|anything in list("Shielded Robe", "Flagellant's Robe", "Bastard Sword", "Nar-Sien Hardsuit")
var/pickedtype
switch(choice)
switch(option)
if("Shielded Robe")
pickedtype = /obj/item/clothing/suit/hooded/cultrobes/cult_shield
if("Flagellant's Robe")
@@ -115,6 +116,9 @@
to_chat(user, "<span class='cultitalic'>The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].</span>")
cooldowntime = 0
return
if("Nar-Sien Hardsuit")
pickedtype = /obj/item/clothing/suit/space/hardsuit/cult
if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
cooldowntime = world.time + 2400
var/obj/item/N = new pickedtype(get_turf(src))
+1
View File
@@ -30,6 +30,7 @@
var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South.
var/step_energy_drain = 10
var/melee_energy_drain = 15
var/overload_step_energy_drain_min = 100
max_integrity = 300 //max_integrity is base health
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+1 -1
View File
@@ -203,7 +203,7 @@
chassis.leg_overload_mode = 1
chassis.bumpsmash = 1
chassis.step_in = min(1, round(chassis.step_in/2))
chassis.step_energy_drain = chassis.step_energy_drain*chassis.leg_overload_coeff
chassis.step_energy_drain = max(chassis.overload_step_energy_drain_min,chassis.step_energy_drain*chassis.leg_overload_coeff)
chassis.occupant_message("<span class='danger'>You enable leg actuators overload.</span>")
else
chassis.leg_overload_mode = 0
+1 -1
View File
@@ -513,7 +513,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(!lit)
set_lit(TRUE)
if(fancy)
user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", "<span class='notice'>Without even breaking stride, you flip open and lights [src] in one smooth movement.</span>")
user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", "<span class='notice'>Without even breaking stride, you flip open and light [src] in one smooth movement.</span>")
else
var/prot = FALSE
var/mob/living/carbon/human/H = user
+4
View File
@@ -100,6 +100,10 @@
/obj/structure/ladder/attackby(obj/item/W, mob/user, params)
return attack_hand(user)
/obj/structure/ladder/attack_robot(mob/living/silicon/robot/R)
if(R.Adjacent(src))
return attack_hand(R)
/obj/structure/ladder/attack_ghost(mob/dead/observer/user)
use(user,1)
+2
View File
@@ -352,6 +352,7 @@ GLOBAL_LIST(external_rsc_urls)
menuitem.Load_checked(src)
hook_vr("client_new",list(src))
Master.UpdateTickRate()
//////////////
//DISCONNECT//
@@ -399,6 +400,7 @@ GLOBAL_LIST(external_rsc_urls)
if(movingmob != null)
movingmob.client_mobs_in_contents -= mob
UNSETEMPTY(movingmob.client_mobs_in_contents)
Master.UpdateTickRate()
return ..()
/client/Destroy()
+6 -6
View File
@@ -144,15 +144,15 @@
if(pockets)
var/list/how_cool_are_your_threads = list("<span class='notice'>")
if(pockets.priority)
how_cool_are_your_threads += "Your [src]'s storage opens when clicked.\n"
how_cool_are_your_threads += "[src]'s storage opens when clicked.\n"
else
how_cool_are_your_threads += "Your [src]'s storage opens when dragged to yourself.\n"
how_cool_are_your_threads += "Your [src] can store [pockets.storage_slots] item[pockets.storage_slots > 1 ? "s" : ""].\n"
how_cool_are_your_threads += "Your [src] can store items that are [weightclass2text(pockets.max_w_class)] or smaller.\n"
how_cool_are_your_threads += "[src]'s storage opens when dragged to yourself.\n"
how_cool_are_your_threads += "[src] can store [pockets.storage_slots] item[pockets.storage_slots > 1 ? "s" : ""].\n"
how_cool_are_your_threads += "[src] can store items that are [weightclass2text(pockets.max_w_class)] or smaller.\n"
if(pockets.quickdraw)
how_cool_are_your_threads += "You can quickly remove an item from your [src] using Alt-Click.\n"
how_cool_are_your_threads += "You can quickly remove an item from [src] using Alt-Click.\n"
if(pockets.silent)
how_cool_are_your_threads += "Adding or Removing items from your [src] makes no noise.\n"
how_cool_are_your_threads += "Adding or removing items from [src] makes no noise.\n"
how_cool_are_your_threads += "</span>"
to_chat(user, how_cool_are_your_threads.Join())
+43
View File
@@ -0,0 +1,43 @@
/datum/round_event_control/nightmare
name = "Spawn Nightmare"
typepath = /datum/round_event/ghost_role/nightmare
max_occurrences = 1
min_players = 20
/datum/round_event/ghost_role/nightmare
minimum_required = 1
role_name = "nightmare"
/datum/round_event/ghost_role/nightmare/spawn_role()
var/list/candidates = get_candidates("alien", null, ROLE_ALIEN)
if(!candidates.len)
return NOT_ENOUGH_PLAYERS
var/mob/dead/selected = pick(candidates)
var/datum/mind/player_mind = new /datum/mind(selected.key)
player_mind.active = TRUE
var/list/spawn_locs = list()
for(var/obj/effect/landmark/xeno_spawn/L in GLOB.landmarks_list)
if(isturf(L.loc))
var/turf/T = L.loc
var/light_amount = T.get_lumcount()
if(light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD)
spawn_locs += T
if(!spawn_locs.len)
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
var/mob/living/carbon/human/S = new ((pick(spawn_locs)))
player_mind.transfer_to(S)
player_mind.assigned_role = "Nightmare"
player_mind.special_role = "Nightmare"
SSticker.mode.traitors += player_mind
S.set_species(/datum/species/shadow/nightmare)
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1)
message_admins("[key_name_admin(S)] has been made into a Nightmare by an event.")
log_game("[key_name(S)] was spawned as a Nightmare by an event.")
spawned_mobs += S
return SUCCESSFUL_SPAWN
@@ -80,7 +80,7 @@
if(SSticker.current_state == GAME_STATE_PREGAME)
var/time_remaining = SSticker.GetTimeLeft()
if(time_remaining > 0)
stat("Time To Start:", "[round(time_remaining/10)]s")
stat("Time To Start:", "[round(time_remaining/10)]s")
else if(time_remaining == -10)
stat("Time To Start:", "DELAYED")
else
@@ -375,7 +375,7 @@
if(GLOB.highlander)
to_chat(humanc, "<span class='userdanger'><i>THERE CAN BE ONLY ONE!!!</i></span>")
humanc.make_scottish()
if(prob(2) && !issilicon(humanc) && !jobban_isbanned(humanc.mind, "Syndicate") && GLOB.miscreants_allowed)
if(prob(2) && !issilicon(humanc) && !jobban_isbanned(humanc.mind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in humanc.client.prefs.be_special)
SSticker.generate_miscreant_objectives(humanc.mind)
else
if(CONFIG_GET(flag/allow_crew_objectives))
@@ -288,7 +288,7 @@
..()
container_type |= OPENCONTAINER_1
create_reagents(30)
reagents.set_reacting(FALSE)
reagents.set_reacting(TRUE)
/obj/item/ammo_casing/shotgun/dart/attackby()
return
+28 -1
View File
@@ -228,9 +228,13 @@ ALLOW_HOLIDAYS
##This is currently a testing optimized setting. A good value for production would be 98.
TICK_LIMIT_MC_INIT 500
##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother.
##Defines the ticklag for the world. Ticklag is the amount of time between game ticks (aka byond ticks) (in 1/10ths of a second).
## This also controls the client network update rate, as well as the default client fps
TICKLAG 0.5
##Can also be set as per-second value, the following value is identical to the above.
#FPS 20
## Comment this out to disable automuting
#AUTOMUTE_ON
@@ -351,3 +355,26 @@ MINUTE_TOPIC_LIMIT 100
## Allow admin hrefs that don't use the new token system, will eventually be removed
DEBUG_ADMIN_HREFS
<<<<<<< HEAD
=======
###Master Controller High Pop Mode###
##The Master Controller(MC) is the primary system controlling timed tasks and events in SS13 (lobby timer, game checks, lighting updates, atmos, etc)
##Default base MC tick rate (1 = process every "byond tick" (see: tick_lag/fps config settings), 2 = process every 2 byond ticks, etc)
## Setting this to 0 will prevent the Master Controller from ticking
BASE_MC_TICK_RATE 1
##High population MC tick rate
## Byond rounds timer values UP, but the tick rate is modified with heuristics during lag spites so setting this to something like 2
## will make it run every 2 byond ticks, but will also double the effect of anti-lag heuristics. You can instead set it to something like
## 1.1 to make it run every 2 byond ticks, but only increase the effect of anti-lag heuristics by 10%. or 1.5 for 50%.
## (As an aside, you could in theory also reduce the effect of anti-lag heuristics in the base tick rate by setting it to something like 0.5)
HIGH_POP_MC_TICK_RATE 1.1
##Engage high pop mode if player count raises above this (Player in this context means any connected user. Lobby, ghost or in-game all count)
HIGH_POP_MC_MODE_AMOUNT 65
##Disengage high pop mode if player count drops below this
DISABLE_HIGH_POP_MC_MODE_AMOUNT 60
>>>>>>> bc4d4e7... Merge pull request #31374 from MrStonedOne/highpopmode
+3 -1
View File
@@ -496,6 +496,8 @@ ARRIVALS_SHUTTLE_DOCK_WINDOW 55
MICE_ROUNDSTART 10
## If the percentage of players alive (doesn't count conversions) drops below this threshold the emergency shuttle will be forcefully called (provided it can be)
#EMERGENCY_SHUTTLE_AUTOCALL_THRESHOLD 0.2
## CREW OBJECTIVES ##
## Comment to disable objectives for innocent crew members.
@@ -506,4 +508,4 @@ ALLOW_CREW_OBJECTIVES
ALLOW_MISCREANTS
## Uncomment to let miscreants spawn during Extended. I hold no responsibility for fun that may occur while this is enabled.
#ALLOW_EXTENDED_MISCREANTS
#ALLOW_EXTENDED_MISCREANTS
@@ -0,0 +1,7 @@
author: "Kevak/Neri"
delete-after: True
changes:
- rscadd: "Readds Cult Hardsuits. or more specifically, makes cult forges be able to make hardsuits. They never got removed from the code."
- tweak: "Cultforge uses Option instead of Choice. (Aka ye get a menu instead of three buttons)"
- balance: "Cultforge can make hardsuits again."
- bugfix: "Fixed Cultforge procs, Slightly cleaner code."
@@ -0,0 +1,4 @@
author: "Kor"
delete-after: True
changes:
- rscadd: "Nightmares now have a chance to spawn via event."
@@ -0,0 +1,6 @@
author: "CitadelStationBot"
delete-after: True
changes:
- tweak: "The MC will now reduce tick rate during high populations to keep it from fighting with byond for processing time.
config: Added config options to control MC tick rate
admin: Admins can no longer manually control the mc's tick rate by editing the MC's processing value, instead you will have to edit the config datum's values for high/low pop tick rates."
@@ -0,0 +1,4 @@
author: "Y0SH1_M4S73R"
delete-after: True
changes:
- balance: "Gygax overdrive consumes at least 100 power per step"
@@ -0,0 +1,9 @@
author: "deathride58"
delete-after: True
changes:
- tweak: "Crew objectives are now more clearly stated to be assigned by Nanotrasen."
- tweak: "You can now opt out of being a miscreant in your preferences"
- tweak: "Round end objective display is a lot more readable"
- tweak: "Crew objectives and miscreant objectives now have more emphasis on being optional"
- tweak: "Space suits are a much rarer target for the pwrgame objective"
- rscdel: "Got rid of the departmental clothing objective"
@@ -0,0 +1,6 @@
author: "deathride58"
delete-after: True
changes:
- rscadd: "Added kinkmates to Delta in the gambling den (replacing the cigarette vendor), abandoned theatre (replacing a plant), and the abandoned theatre backstage in port bow maintenance."
- rscadd: "Added kinkmates to Meta in the abandoned bar, maintenance storage room (replacing an easel), and in maintenance right below science (also replacing an easel)."
- tweak: "Made the atmos pipes in maint dorms hidden."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

+1
View File
@@ -1346,6 +1346,7 @@
#include "code\modules\events\meateor_wave.dm"
#include "code\modules\events\meteor_wave.dm"
#include "code\modules\events\mice_migration.dm"
#include "code\modules\events\nightmare.dm"
#include "code\modules\events\operative.dm"
#include "code\modules\events\portal_storm.dm"
#include "code\modules\events\prison_break.dm"