Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-2405a

This commit is contained in:
Waterpig
2024-05-04 14:24:25 +02:00
154 changed files with 1499 additions and 952 deletions
+42 -12
View File
@@ -1,3 +1,9 @@
#define GRADE_D "D"
#define GRADE_C "C"
#define GRADE_B "B"
#define GRADE_A "A"
#define GRADE_S "S"
/// Handles calculating rewards based on number of players, parts, threats, etc
/obj/machinery/quantum_server/proc/calculate_rewards()
var/rewards_base = 0.8
@@ -28,8 +34,11 @@
var/bonus = calculate_rewards()
var/time_difference = world.time - generated_domain.start_time
var/grade = grade_completion(time_difference)
var/obj/item/paper/certificate = new()
certificate.add_raw_text(get_completion_certificate())
certificate.add_raw_text(get_completion_certificate(time_difference, grade))
certificate.name = "certificate of domain completion"
certificate.update_appearance()
@@ -37,6 +46,10 @@
reward_cache.manifest = certificate
reward_cache.update_appearance()
if(can_generate_tech_disk(grade))
new /obj/item/disk/design_disk/bepis/remove_tech(reward_cache)
generated_domain.disk_reward_spawned = TRUE
chosen_forge.start_to_spawn(reward_cache)
return TRUE
@@ -50,7 +63,7 @@
return TRUE
/// Returns the markdown text containing domain completion information
/obj/machinery/quantum_server/proc/get_completion_certificate()
/obj/machinery/quantum_server/proc/get_completion_certificate(time_difference, grade)
var/base_points = generated_domain.reward_points
if(domain_randomized)
base_points -= 1
@@ -59,11 +72,9 @@
var/domain_threats = length(spawned_threat_refs)
var/time_difference = world.time - generated_domain.start_time
var/completion_time = "### Completion Time: [DisplayTimeText(time_difference)]\n"
var/grade = "\n---\n\n# Rating: [grade_completion(time_difference)]"
var/completion_grade = "\n---\n\n# Rating: [grade]"
var/text = "# Certificate of Domain Completion\n\n---\n\n"
@@ -75,7 +86,7 @@
if(bonuses <= 1)
text += completion_time
text += grade
text += completion_grade
return text
text += "### Bonuses\n"
@@ -94,10 +105,24 @@
text += "- **Components:** + [servo_rating]\n"
text += completion_time
text += grade
text += completion_grade
return text
/// Checks if the players should get a bepis reward
/obj/machinery/quantum_server/proc/can_generate_tech_disk(grade)
if(generated_domain.disk_reward_spawned)
return FALSE
if(!LAZYLEN(SSresearch.techweb_nodes_experimental))
return FALSE
var/static/list/passing_grades = list()
if(!passing_grades.len)
passing_grades = list(GRADE_A,GRADE_S)
return generated_domain.difficulty >= BITRUNNER_DIFFICULTY_MEDIUM && (grade in passing_grades)
/// Grades the player's run based on several factors
/obj/machinery/quantum_server/proc/grade_completion(completion_time)
var/score = length(spawned_threat_refs) * 5
@@ -124,13 +149,18 @@
switch(score)
if(1 to 4)
return "D"
return GRADE_D
if(5 to 7)
return "C"
return GRADE_C
if(8 to 10)
return "B"
return GRADE_B
if(11 to 13)
return "A"
return GRADE_A
else
return "S"
return GRADE_S
#undef GRADE_D
#undef GRADE_C
#undef GRADE_B
#undef GRADE_A
#undef GRADE_S