From e51c15aa58771cafc5c986a7804b8d1e88ba75a5 Mon Sep 17 00:00:00 2001 From: Theos Date: Sun, 11 Feb 2024 17:04:08 -0500 Subject: [PATCH 1/7] Dissect it for knowledge Signed-off-by: Theos --- .../surgery/experimental_dissection.dm | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 48f423a12512..22915eb3ed26 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -1,4 +1,4 @@ -#define BASE_HUMAN_REWARD 500 +#define BASE_DISSECTION_REWARD 2000 #define EXPDIS_FAIL_MSG "You dissect [target], but do not find anything particularly interesting." #define PUBLIC_TECHWEB_GAIN 0.6 //how many research points go directly into the main pool #define PRIVATE_TECHWEB_GAIN (1 - PUBLIC_TECHWEB_GAIN) //how many research points go directly into the main pool @@ -16,7 +16,7 @@ target_mobtypes = list(/mob/living) //Feel free to dissect devils but they're magic. replaced_by = /datum/surgery/advanced/experimental_dissection/adv requires_tech = FALSE - var/value_multiplier = 1 + var/value_multiplier = 0.25 /datum/surgery/advanced/experimental_dissection/can_start(mob/user, mob/living/target) . = ..() @@ -45,31 +45,34 @@ user.visible_message("[user] starts dissecting [target].", "You start dissecting [target].") /datum/surgery_step/dissection/proc/check_value(mob/living/target, datum/surgery/advanced/experimental_dissection/ED) - var/cost = BASE_HUMAN_REWARD + var/cost = 0 var/multi_surgery_adjust = 0 //determine bonus applied + var/list/mob_mult_list = list(/mob/living/simple_animal/hostile/asteroid/elite = 6, + /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal = 5, + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/forgotten = 3, + /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient = 1 + ) if(isalienqueen(target) || isalienroyal(target)) - cost = (BASE_HUMAN_REWARD*38) + cost = (BASE_DISSECTION_REWARD*38) else if(isalienadult(target)) - cost = (BASE_HUMAN_REWARD*30) - else if(ismonkey(target)) - cost = (BASE_HUMAN_REWARD*0.5) + cost = (BASE_DISSECTION_REWARD*30) + else if(isalien(target)) + cost = (BASE_DISSECTION_REWARD*14) + else if(ismegafauna(target)) + cost = (BASE_DISSECTION_REWARD*30) else if(ishuman(target)) var/mob/living/carbon/human/H = target if(H?.dna?.species) if(isabductor(H)) - cost = (BASE_HUMAN_REWARD*24) + cost = (BASE_DISSECTION_REWARD*24) else if(iszombie(H) || isshadow(H) || isandroid(H)) - cost = (BASE_HUMAN_REWARD*20) - else if(isjellyperson(H) || ispodperson(H) || isalien(H)) - cost = (BASE_HUMAN_REWARD*14) - else if(isskeleton(H)) - cost = (BASE_HUMAN_REWARD * 0.5) - else - cost = (BASE_HUMAN_REWARD * 0.5) - - + cost = (BASE_DISSECTION_REWARD*20) + else for(var/type in mob_mult_list) // THIS. ELSE IF(). ENDS. HERE. + if(istype(target, type)) + cost = (BASE_DISSECTION_REWARD*mob_mult_list[type]) + break //now we do math for surgeries already done (no double dipping!). for(var/i in typesof(/datum/surgery/advanced/experimental_dissection)) @@ -114,24 +117,24 @@ /datum/surgery/advanced/experimental_dissection/adv name = "Thorough Dissection" - value_multiplier = 2 + value_multiplier = 0.5 replaced_by = /datum/surgery/advanced/experimental_dissection/exp requires_tech = TRUE /datum/surgery/advanced/experimental_dissection/exp name = "Experimental Dissection" - value_multiplier = 4 + value_multiplier = 1 replaced_by = /datum/surgery/advanced/experimental_dissection/alien requires_tech = TRUE /datum/surgery/advanced/experimental_dissection/alien name = "Extraterrestrial Dissection" - value_multiplier = 8 + value_multiplier = 2 requires_tech = TRUE replaced_by = null -#undef BASE_HUMAN_REWARD +#undef BASE_DISSECTION_REWARD #undef EXPDIS_FAIL_MSG #undef PUBLIC_TECHWEB_GAIN #undef PRIVATE_TECHWEB_GAIN From d24bdb40725a6847cec87456a409eede8faaeb46 Mon Sep 17 00:00:00 2001 From: Theos Date: Sun, 11 Feb 2024 17:33:28 -0500 Subject: [PATCH 2/7] Update experimental_dissection.dm Signed-off-by: Theos --- .../modules/surgery/experimental_dissection.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 22915eb3ed26..012329394b31 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -1,4 +1,4 @@ -#define BASE_DISSECTION_REWARD 2000 +#define MAX_DISSECTION_REWARD 2000 #define EXPDIS_FAIL_MSG "You dissect [target], but do not find anything particularly interesting." #define PUBLIC_TECHWEB_GAIN 0.6 //how many research points go directly into the main pool #define PRIVATE_TECHWEB_GAIN (1 - PUBLIC_TECHWEB_GAIN) //how many research points go directly into the main pool @@ -55,23 +55,23 @@ /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient = 1 ) if(isalienqueen(target) || isalienroyal(target)) - cost = (BASE_DISSECTION_REWARD*38) + cost = (MAX_DISSECTION_REWARD*38) else if(isalienadult(target)) - cost = (BASE_DISSECTION_REWARD*30) + cost = (MAX_DISSECTION_REWARD*30) else if(isalien(target)) - cost = (BASE_DISSECTION_REWARD*14) + cost = (MAX_DISSECTION_REWARD*14) else if(ismegafauna(target)) - cost = (BASE_DISSECTION_REWARD*30) + cost = (MAX_DISSECTION_REWARD*30) else if(ishuman(target)) var/mob/living/carbon/human/H = target if(H?.dna?.species) if(isabductor(H)) - cost = (BASE_DISSECTION_REWARD*24) + cost = (MAX_DISSECTION_REWARD*24) else if(iszombie(H) || isshadow(H) || isandroid(H)) - cost = (BASE_DISSECTION_REWARD*20) + cost = (MAX_DISSECTION_REWARD*20) else for(var/type in mob_mult_list) // THIS. ELSE IF(). ENDS. HERE. if(istype(target, type)) - cost = (BASE_DISSECTION_REWARD*mob_mult_list[type]) + cost = (MAX_DISSECTION_REWARD*mob_mult_list[type]) break //now we do math for surgeries already done (no double dipping!). @@ -134,7 +134,7 @@ replaced_by = null -#undef BASE_DISSECTION_REWARD +#undef MAX_DISSECTION_REWARD #undef EXPDIS_FAIL_MSG #undef PUBLIC_TECHWEB_GAIN #undef PRIVATE_TECHWEB_GAIN From c444338eaeb40892d4f20b9e74c2728ffe0823e1 Mon Sep 17 00:00:00 2001 From: Theos Date: Sun, 11 Feb 2024 17:40:21 -0500 Subject: [PATCH 3/7] swear I just did a mass find&replace for that Signed-off-by: Theos --- code/modules/surgery/experimental_dissection.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 012329394b31..2c19b097b3f0 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -99,7 +99,7 @@ target.apply_damage(80, BRUTE, L) ADD_TRAIT(target, TRAIT_DISSECTED, "[surgery.name]") repeatable = FALSE - experience_given = max(points_earned/(BASE_HUMAN_REWARD/MEDICAL_SKILL_MEDIUM),1) + experience_given = max(points_earned/(MAX_DISSECTION_REWARD/MEDICAL_SKILL_MEDIUM),1) return ..() /datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) From a47631ab29435cfd48bcec40c653b446725ec08b Mon Sep 17 00:00:00 2001 From: Theos Date: Sun, 11 Feb 2024 20:02:27 -0500 Subject: [PATCH 4/7] Ancient goliath boost 1 > 2 Signed-off-by: Theos --- code/modules/surgery/experimental_dissection.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 2c19b097b3f0..f54e53417a26 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -52,7 +52,7 @@ var/list/mob_mult_list = list(/mob/living/simple_animal/hostile/asteroid/elite = 6, /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal = 5, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/forgotten = 3, - /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient = 1 + /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient = 2 ) if(isalienqueen(target) || isalienroyal(target)) cost = (MAX_DISSECTION_REWARD*38) From eeead3e74090ae8eb8c497128e8ee10c59559a29 Mon Sep 17 00:00:00 2001 From: Theos Date: Thu, 15 Feb 2024 14:15:39 -0500 Subject: [PATCH 5/7] Update code/modules/surgery/experimental_dissection.dm Co-authored-by: Mark Suckerberg Signed-off-by: Theos --- code/modules/surgery/experimental_dissection.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index f54e53417a26..76ab57e55904 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -49,7 +49,7 @@ var/multi_surgery_adjust = 0 //determine bonus applied - var/list/mob_mult_list = list(/mob/living/simple_animal/hostile/asteroid/elite = 6, + var/static/list/mob_mult_list = list(/mob/living/simple_animal/hostile/asteroid/elite = 6, /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal = 5, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/forgotten = 3, /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient = 2 From 9a7f7a3ae2968dc01b444c1050499ec319675061 Mon Sep 17 00:00:00 2001 From: Theos Date: Thu, 15 Feb 2024 14:20:21 -0500 Subject: [PATCH 6/7] Adds watcher variants to the dissection list Signed-off-by: Theos --- code/modules/surgery/experimental_dissection.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 76ab57e55904..3c28dc1b5d2d 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -52,6 +52,8 @@ var/static/list/mob_mult_list = list(/mob/living/simple_animal/hostile/asteroid/elite = 6, /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal = 5, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/forgotten = 3, + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing = 2, + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing = 2, /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient = 2 ) if(isalienqueen(target) || isalienroyal(target)) From ccfe9c4caabee26b243d3c2a0e4e1403068addb7 Mon Sep 17 00:00:00 2001 From: Theos Date: Wed, 21 Feb 2024 21:06:53 -0500 Subject: [PATCH 7/7] Adds mega arachnid at 4 point scaling Signed-off-by: Theos --- code/modules/surgery/experimental_dissection.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 3c28dc1b5d2d..70dbac246e4e 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -51,6 +51,7 @@ //determine bonus applied var/static/list/mob_mult_list = list(/mob/living/simple_animal/hostile/asteroid/elite = 6, /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal = 5, + /mob/living/simple_animal/hostile/jungle/mega_arachnid = 4, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/forgotten = 3, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing = 2, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing = 2,