diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm
index 48f423a12512..70dbac246e4e 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 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
@@ -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,37 @@
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/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,
+ /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient = 2
+ )
if(isalienqueen(target) || isalienroyal(target))
- cost = (BASE_HUMAN_REWARD*38)
+ cost = (MAX_DISSECTION_REWARD*38)
else if(isalienadult(target))
- cost = (BASE_HUMAN_REWARD*30)
- else if(ismonkey(target))
- cost = (BASE_HUMAN_REWARD*0.5)
+ cost = (MAX_DISSECTION_REWARD*30)
+ else if(isalien(target))
+ cost = (MAX_DISSECTION_REWARD*14)
+ else if(ismegafauna(target))
+ 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_HUMAN_REWARD*24)
+ cost = (MAX_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 = (MAX_DISSECTION_REWARD*20)
+ else for(var/type in mob_mult_list) // THIS. ELSE IF(). ENDS. HERE.
+ if(istype(target, type))
+ cost = (MAX_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))
@@ -96,7 +102,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)
@@ -114,24 +120,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 MAX_DISSECTION_REWARD
#undef EXPDIS_FAIL_MSG
#undef PUBLIC_TECHWEB_GAIN
#undef PRIVATE_TECHWEB_GAIN