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
v%Ni7|ZZ({4@_*987M0?0izEm(<)Rp9>xhcF-c
literal 23432
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 V><
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
z
S&6R6x9Lj&*_K6_Mrv*Y=KfZra#vv^P!OL0
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
diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi
index d8085580fbbb154619d2c13826d3eba4cd5d0575..adf2b987b94ad735e279a4ca98bb4699e6601268 100644
GIT binary patch
delta 3576
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
F`X9u*BEtXx
diff --git a/yogstation.dme b/yogstation.dme
index 57413dd2dbd9..3ed3f0aeb7e2 100644
--- a/yogstation.dme
+++ b/yogstation.dme
@@ -3166,6 +3166,7 @@
#include "yogstation\code\modules\stock_market\logs.dm"
#include "yogstation\code\modules\stock_market\stockmarket.dm"
#include "yogstation\code\modules\stock_market\stocks.dm"
+#include "yogstation\code\modules\surgery\bodypart.dm"
#include "yogstation\code\modules\surgery\tools.dm"
#include "yogstation\code\modules\surgery\organs\shadowling_organs.dm"
#include "yogstation\code\modules\uplink\uplink_item.dm"
diff --git a/yogstation/code/datums/diseases/_MobProcs.dm b/yogstation/code/datums/diseases/_MobProcs.dm
index 66adac0f1144..074271f0afc0 100644
--- a/yogstation/code/datums/diseases/_MobProcs.dm
+++ b/yogstation/code/datums/diseases/_MobProcs.dm
@@ -1,4 +1,5 @@
/mob/living/carbon/human/CanContractDisease(datum/disease/D)
var/infectchance = dna.species ? dna.species.yogs_virus_infect_chance : 100 //will this compile? who knows
if(prob(infectchance))
- return ..()
\ No newline at end of file
+ return ..()
+ return FALSE
\ No newline at end of file
diff --git a/yogstation/code/datums/diseases/advance/advance.dm b/yogstation/code/datums/diseases/advance/advance.dm
index b3e8b84cfea8..44c416ee694c 100644
--- a/yogstation/code/datums/diseases/advance/advance.dm
+++ b/yogstation/code/datums/diseases/advance/advance.dm
@@ -1,7 +1,7 @@
/datum/disease/advance/Refresh(new_name)
- . = ..()
- if(affected_mob.dna)
- var/datum/species/S
+ ..()
+ if(affected_mob?.dna)
+ var/datum/species/S = affected_mob.dna.species
properties["resistance"] += S.virus_resistance_boost
properties["stealth"] += S.virus_stealth_boost
properties["stage_rate"] += S.virus_stage_rate_boost
diff --git a/yogstation/code/modules/mob/living/carbon/human/species.dm b/yogstation/code/modules/mob/living/carbon/human/species.dm
index 04f7a6470b8b..0d0a00caa433 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species.dm
@@ -17,5 +17,16 @@
var/virus_stage_rate_boost = 0
var/virus_transmittable_boost = 0
+/datum/species/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
+ . = ..()
+ if(yogs_draw_robot_hair)
+ for(var/obj/item/bodypart/BP in C.bodyparts)
+ BP.yogs_draw_robot_hair = TRUE
+
+/datum/species/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
+ . = ..()
+ for(var/obj/item/bodypart/BP in C.bodyparts)
+ BP.yogs_draw_robot_hair = initial(BP.yogs_draw_robot_hair)
+
/datum/species/proc/spec_AltClickOn(atom/A,mob/living/carbon/human/H)
return 0
\ No newline at end of file
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index 13d729423e4f..0b537698db21 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -1,32 +1,34 @@
/mob/living/carbon/AltClickOn(atom/A)
- if(ispreternis(src))
- dna.species.spec_AltClickOn(A,src)
- return
- ..()
+ dna?.species.spec_AltClickOn(A,src)
+ return
/datum/species/preternis/spec_AltClickOn(atom/A,H)
- return species_drain_act(H, A)
+ return drain_power_from(H, A)
-/datum/species/preternis/proc/species_drain_act(mob/living/carbon/human/H, atom/A)
+/datum/species/preternis/proc/drain_power_from(mob/living/carbon/human/H, atom/A)
if(!istype(H) || !A)
- return 0
+ return FALSE
+
+ if(draining)
+ to_chat(H,"CONSUME protocols can only be used on one object at any single time.((If you are not currently consuming power from something,wait 1 minute and try again))")
+ return FALSE
if(!A.can_consume_power_from())
- return 0 //if it returns text, we want it to continue so we can get the error message later.
+ return FALSE //if it returns text, we want it to continue so we can get the error message later.
var/siemens_coefficient = 1
if(H.reagents.has_reagent("teslium"))
siemens_coefficient *= 1.5
- if (charge == PRETERNIS_LEVEL_FULL - 25)
+ if (charge >= PRETERNIS_LEVEL_FULL - 25) //just to prevent spam a bit
to_chat(H,"CONSUME protocol reports no need for additional power at this time.")
- return 1
+ return TRUE
if(H.gloves)
if(H.gloves.siemens_coefficient == 0)
to_chat(H,"NOTICE: [H.gloves] prevent electrical contact - CONSUME protocol aborted.")
- return 1
+ return TRUE
else
if(H.gloves.siemens_coefficient < 1)
to_chat(H,"NOTICE: [H.gloves] are interfering with electrical contact - advise removal before activating CONSUME protocol.")
@@ -36,7 +38,7 @@
H.visible_message("[H] starts placing their hands on [A]...", "You start placing your hands on [A]...")
if(!do_after(H, 20, target = A))
to_chat(H,"CONSUME protocol aborted.")
- return 1
+ return TRUE
to_chat(H,"Extracutaneous implants detect viable power source. Initiating CONSUME protocol.")
@@ -47,12 +49,16 @@
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.attach(A)
spark_system.set_up(5, 0, A)
+
+ draining = TRUE
+ var/failsafetimer = addtimer(VARSET_CALLBACK(src, draining, TRUE),1 MINUTES) //in case the proc fails and it doesnt set draining back to false,locking them out of recharging
+
while(!done)
cycle++
var/nutritionIncrease = drain * ELECTRICITY_TO_NUTRIMENT_FACTOR
if(charge + nutritionIncrease > PRETERNIS_LEVEL_FULL)
- nutritionIncrease = max(PRETERNIS_LEVEL_FULL - charge, 0) //if their nutrition goes up from some other source, this could be negative, which would cause bad things to happen.
+ nutritionIncrease = CLAMP(PRETERNIS_LEVEL_FULL - charge, PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL) //if their nutrition goes up from some other source, this could be negative, which would cause bad things to happen.
drain = nutritionIncrease/ELECTRICITY_TO_NUTRIMENT_FACTOR
if (do_after(H,15, target = A))
@@ -69,10 +75,10 @@
if(drained < drain)
to_chat(H,"[A]'s power has been depleted, CONSUME protocol halted.")
done = 1
- charge += drained * ELECTRICITY_TO_NUTRIMENT_FACTOR
+ charge = CLAMP(charge + (drained * ELECTRICITY_TO_NUTRIMENT_FACTOR),PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if(!done)
- if(charge > (PRETERNIS_LEVEL_FULL -1))
+ if(charge > (PRETERNIS_LEVEL_FULL - 25))
to_chat(H,"CONSUME protocol complete. Physical nourishment refreshed.")
done = 1
else if(cycle % 4 == 0)
@@ -81,21 +87,23 @@
else
done = 1
qdel(spark_system)
- return 1
+ draining = FALSE
+ deltimer(failsafetimer)
+ return TRUE
/atom/proc/can_consume_power_from()
- return 0 //if a string is returned, it will evaluate as false and be output to the person draining.
+ return FALSE //if a string is returned, it will evaluate as false and be output to the person draining.
/atom/proc/consume_power_from(amount)
- return 0 //return the amount that was drained.
+ return FALSE //return the amount that was drained.
#define MIN_DRAINABLE_POWER 10
//CELL//
/obj/item/stock_parts/cell/can_consume_power_from()
if(charge < MIN_DRAINABLE_POWER)
- return "Power cell depleted, CONSUME protocol halted."
- return 1
+ return "Power cell depleted, cannot consume power."
+ return TRUE
/obj/item/stock_parts/cell/consume_power_from(amount)
if((charge - amount) < MIN_DRAINABLE_POWER)
@@ -106,14 +114,14 @@
//APC//
/obj/machinery/power/apc/can_consume_power_from()
if(!cell)
- return "APC cell absent, CONSUME protocol halted."
+ return "APC cell absent, cannot consume power."
if(stat & BROKEN)
- return "APC is damaged, CONSUME protocol halted."
+ return "APC is damaged, cannot consume power."
if(!operating || shorted)
- return "APC main breaker is off, CONSUME protocol halted."
+ return "APC main breaker is off, cannot consume power."
if(cell.charge < MIN_DRAINABLE_POWER)
- return "APC cell depleted, CONSUME protocol halted."
- return 1
+ return "APC cell depleted, cannot consume power."
+ return TRUE
/obj/machinery/power/apc/consume_power_from(amount)
if((cell.charge - amount) < MIN_DRAINABLE_POWER)
@@ -127,11 +135,11 @@
//SMES//
/obj/machinery/power/smes/can_consume_power_from()
if(stat & BROKEN)
- return "SMES is damaged, CONSUME protocol halted."
+ return "SMES is damaged, cannot consume power."
if(!output_attempt)
- return "SMES is not outputting power, CONSUME protocol halted."
+ return "SMES is not outputting power, cannot consume power."
if(charge < MIN_DRAINABLE_POWER)
- return "SMES cells depleted, CONSUME protocol halted."
+ return "SMES cells depleted, cannot consume power."
return 1
/obj/machinery/power/smes/consume_power_from(amount)
@@ -143,9 +151,9 @@
//MECH//
/obj/mecha/can_consume_power_from()
if(!cell)
- return "Mech power cell absent, CONSUME protocol halted."
+ return "Mech power cell absent, cannot consume power."
if(cell.charge < MIN_DRAINABLE_POWER)
- return "Mech power cell depleted, CONSUME protocol halted."
+ return "Mech power cell depleted, cannot consume power."
return 1
/obj/mecha/consume_power_from(amount)
@@ -158,9 +166,9 @@
//BORG//
/mob/living/silicon/robot/can_consume_power_from()
if(!cell)
- return "Cyborg power cell absent, CONSUME protocol halted."
+ return "Cyborg power cell absent, cannot consume power."
if(cell.charge < MIN_DRAINABLE_POWER)
- return "Cyborg power cell depleted, CONSUME protocol halted."
+ return "Cyborg power cell depleted, cannot consume power."
return 1
/mob/living/silicon/robot/consume_power_from(amount)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index a789963e027c..e3d651da9b02 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -1,29 +1,8 @@
/*
-upsides:
-NV //done tested
-fixable by tools //done tested
-no need to eat //done tested
-purges chems after 30 cycles //done tested
-more resistant to plasma/lack of o2 //done tested
-resistance to rads //done
-more resistance to viruses //done
-special preternis language //done
-Oil heals 2 burn per cycle //done tested
-Welding fuel heals 1 per cycle but deals 1 toxic damage per cycle //done tested
-
-
-downsides:
-emp does alot of damage and drains their cell alot //done tested
-emag is an instant stun and will fuck up their vision and brain //done tested
-not healable by chems //done tested
-damagable by chems //done tested
-needs to eat battery //done tested
-needs welding helmet to fix themself //done tested
-150% burn damage //done tested
-125% brute damage //done tested
-less resistant to heat changes //done tested
-all viruses are resistance 10 //done
-max 35 damage for limb failure //done tested
+procs:
+
+handle_charge - called in spec_life(),handles the alert indicators,the power loss death and decreasing the charge level
+adjust_charge - take a positive or negative value to adjust the charge level
*/
/datum/species/preternis
@@ -48,8 +27,9 @@ max 35 damage for limb failure //done tested
var/charge = PRETERNIS_LEVEL_FULL
var/eating_msg_cooldown = FALSE
var/emag_lvl = 0
- var/power_drain = 1.3 //probably going to have to tweak this shit
+ var/power_drain = 0.7 //probably going to have to tweak this shit
var/tesliumtrip = FALSE
+ var/draining = FALSE
/datum/species/preternis/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
@@ -57,10 +37,10 @@ max 35 damage for limb failure //done tested
for (var/V in C.bodyparts)
var/obj/item/bodypart/BP = V
BP.change_bodypart_status(ORGAN_ROBOTIC,FALSE,TRUE)
- if(istype(BP,/obj/item/bodypart/chest) || istype(BP,/obj/item/bodypart/head))
- continue
BP.burn_reduction = 0
BP.brute_reduction = 0
+ if(istype(BP,/obj/item/bodypart/chest) || istype(BP,/obj/item/bodypart/head))
+ continue
BP.max_damage = 35
C.grant_language(/datum/language/machine) //learn it once,learn it forever i guess,this isnt removed on species loss to prevent curators from forgetting machine language
@@ -69,8 +49,9 @@ max 35 damage for limb failure //done tested
for (var/V in C.bodyparts)
var/obj/item/bodypart/BP = V
BP.change_bodypart_status(ORGAN_ORGANIC,FALSE,TRUE)
- BP.burn_reduction = initial(BP.)
- C.clear_alert("preternis_emag")
+ BP.burn_reduction = initial(BP.burn_reduction)
+ BP.brute_reduction = initial(BP.brute_reduction)
+ C.clear_alert("preternis_emag") //this means a changeling can transform from and back to a preternis to clear the emag status but w/e i cant find a solution to not do that
C.clear_fullscreen("preternis_emag")
C.remove_movespeed_modifier("preternis_teslium")
@@ -127,7 +108,7 @@ max 35 damage for limb failure //done tested
H.AdjustStun(-3)
H.AdjustKnockdown(-3)
H.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- charge -= 10 * REAGENTS_METABOLISM
+ charge = CLAMP(charge - 10 * REAGENTS_METABOLISM,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
burnmod = 200
tesliumtrip = TRUE
else if(tesliumtrip)
@@ -139,7 +120,7 @@ max 35 damage for limb failure //done tested
var/datum/reagent/consumable/food = chem
if (food.nutriment_factor)
var/nutrition = food.nutriment_factor * 0.2
- adjust_charge(nutrition)
+ charge = CLAMP(charge + nutrition,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if (!eating_msg_cooldown)
eating_msg_cooldown = TRUE
addtimer(VARSET_CALLBACK(src, eating_msg_cooldown, FALSE), 2 MINUTES)
@@ -153,7 +134,7 @@ max 35 damage for limb failure //done tested
/datum/species/preternis/spec_fully_heal(mob/living/carbon/human/H)
. = ..()
- set_charge(PRETERNIS_LEVEL_FULL)
+ charge = PRETERNIS_LEVEL_FULL
emag_lvl = 0
H.clear_alert("preternis_emag")
H.clear_fullscreen("preternis_emag")
@@ -163,18 +144,10 @@ max 35 damage for limb failure //done tested
/datum/species/preternis/spec_life(mob/living/carbon/human/H)
. = ..()
- for(var/datum/disease/advance/D in H.diseases)
- D.properties["resistance"] = 10 //there isnt really a way to set the resistance
handle_charge(H)
-/datum/species/preternis/proc/adjust_charge(var/newchange)
- charge = CLAMP(charge + newchange, PRETERNIS_LEVEL_NONE, PRETERNIS_LEVEL_FULL)
-
-/datum/species/preternis/proc/set_charge(var/newchange)
- charge = CLAMP(newchange, PRETERNIS_LEVEL_NONE, PRETERNIS_LEVEL_FULL)
-
/datum/species/preternis/proc/handle_charge(mob/living/carbon/human/H)
- adjust_charge(-power_drain)
+ charge = CLAMP(charge - power_drain,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if(charge == PRETERNIS_LEVEL_NONE)
to_chat(H,"Warning! System power criti-$#@$")
H.death()
diff --git a/yogstation/code/modules/surgery/bodypart.dm b/yogstation/code/modules/surgery/bodypart.dm
new file mode 100644
index 000000000000..14ac6280c2fc
--- /dev/null
+++ b/yogstation/code/modules/surgery/bodypart.dm
@@ -0,0 +1,2 @@
+/obj/item/bodypart
+ var/yogs_draw_robot_hair = FALSE
\ No newline at end of file
From c231ce18aa29432973f410507b68db2a3cbdabbf Mon Sep 17 00:00:00 2001
From: alexkar598 <>
Date: Sun, 3 Mar 2019 09:57:37 -0500
Subject: [PATCH 08/19] clears config changes
---
config/game_options.txt | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/config/game_options.txt b/config/game_options.txt
index 583b0cfc3336..b2c681e772e1 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -36,8 +36,8 @@ EMOJIS
## To speed things up make the number negative, to slow things down, make the number positive.
## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied.
-RUN_DELAY 2
-WALK_DELAY 8
+RUN_DELAY 1
+WALK_DELAY 4
## The variables below affect the movement of specific mob types. THIS AFFECTS ALL SUBTYPES OF THE TYPE YOU CHOOSE!
## Entries completely override all subtypes. Later entries have precedence over earlier entries.
@@ -445,7 +445,6 @@ ROUNDSTART_RACES lizard
#ROUNDSTART_RACES moth
ROUNDSTART_RACES plasmaman
#ROUNDSTART_RACES shadow
-ROUNDSTART_RACES preternis
## Races that are better than humans in some ways, but worse in others
ROUNDSTART_RACES ethereal
From a8e9d976d45cd68ee689d8bd4f0820a0b9796b1a Mon Sep 17 00:00:00 2001
From: alexkar598 <>
Date: Sun, 3 Mar 2019 10:43:00 -0500
Subject: [PATCH 09/19] shit,forgot to test one feature and this is the result
---
.../human/species_types/preternis/power_suck.dm | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index 0b537698db21..ca6e007162ac 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -10,12 +10,13 @@
return FALSE
if(draining)
- to_chat(H,"CONSUME protocols can only be used on one object at any single time.((If you are not currently consuming power from something,wait 1 minute and try again))")
+ to_chat(H,"CONSUME protocols can only be used on one object at any single time.")
return FALSE
-
if(!A.can_consume_power_from())
return FALSE //if it returns text, we want it to continue so we can get the error message later.
+ draining = TRUE
+
var/siemens_coefficient = 1
if(H.reagents.has_reagent("teslium"))
@@ -23,11 +24,13 @@
if (charge >= PRETERNIS_LEVEL_FULL - 25) //just to prevent spam a bit
to_chat(H,"CONSUME protocol reports no need for additional power at this time.")
+ draining = FALSE
return TRUE
if(H.gloves)
if(H.gloves.siemens_coefficient == 0)
to_chat(H,"NOTICE: [H.gloves] prevent electrical contact - CONSUME protocol aborted.")
+ draining = FALSE
return TRUE
else
if(H.gloves.siemens_coefficient < 1)
@@ -38,6 +41,7 @@
H.visible_message("[H] starts placing their hands on [A]...", "You start placing your hands on [A]...")
if(!do_after(H, 20, target = A))
to_chat(H,"CONSUME protocol aborted.")
+ draining = FALSE
return TRUE
to_chat(H,"Extracutaneous implants detect viable power source. Initiating CONSUME protocol.")
@@ -50,8 +54,7 @@
spark_system.attach(A)
spark_system.set_up(5, 0, A)
- draining = TRUE
- var/failsafetimer = addtimer(VARSET_CALLBACK(src, draining, TRUE),1 MINUTES) //in case the proc fails and it doesnt set draining back to false,locking them out of recharging
+
while(!done)
cycle++
@@ -88,7 +91,6 @@
done = 1
qdel(spark_system)
draining = FALSE
- deltimer(failsafetimer)
return TRUE
/atom/proc/can_consume_power_from()
From d9574779b0b944528853aae4a6e3ceff1f57044e Mon Sep 17 00:00:00 2001
From: alexkar598 <25136265+alexkar598@users.noreply.github.com>
Date: Mon, 11 Mar 2019 17:08:26 -0400
Subject: [PATCH 10/19] commends
---
code/__DEFINES/~yogs_defines/mobs.dm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/__DEFINES/~yogs_defines/mobs.dm b/code/__DEFINES/~yogs_defines/mobs.dm
index fcc74a2568fe..fd59ed3ed5d7 100644
--- a/code/__DEFINES/~yogs_defines/mobs.dm
+++ b/code/__DEFINES/~yogs_defines/mobs.dm
@@ -5,9 +5,9 @@
#define PRETERNIS_LEVEL_STARVING 150
#define PRETERNIS_LEVEL_NONE 0
-#define ELECTRICITY_TO_NUTRIMENT_FACTOR 0.12
+#define ELECTRICITY_TO_NUTRIMENT_FACTOR 0.12 //1 power unit to 12 preternis charge
-#define PRETERNIS_NV_OFF 2
+#define PRETERNIS_NV_OFF 2 //numbers of tile they can see
#define PRETERNIS_NV_ON 8
-#define BODYPART_ANY -1
\ No newline at end of file
+#define BODYPART_ANY -1 //use this when healing with something that needs a specefied bodypart type for all
From a5dc373bfa75a0d60248827d41a91bace5c9d3cc Mon Sep 17 00:00:00 2001
From: alexkar598 <25136265+alexkar598@users.noreply.github.com>
Date: Mon, 11 Mar 2019 17:09:46 -0400
Subject: [PATCH 11/19] webeditor <3
---
code/modules/surgery/bodyparts/bodyparts.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index 6b1360134651..0133856dcb71 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -148,7 +148,7 @@
if(owner && (owner.status_flags & GODMODE))
return FALSE //godmode
- if(!(required_status == -1) && (required_status && (status != required_status)))
+ if(!(required_status == -1) && (required_status && (status != required_status))) //yogs -- adds in BODYPART_ANY
return FALSE
var/dmg_mlt = CONFIG_GET(number/damage_multiplier)
From 519e13fe007d19b86df45974621a8d9db7e39170 Mon Sep 17 00:00:00 2001
From: Nichlas Pihl
Date: Mon, 11 Mar 2019 17:11:19 -0400
Subject: [PATCH 12/19] does the thing
Co-Authored-By: alexkar598 <25136265+alexkar598@users.noreply.github.com>
---
.../mob/living/carbon/human/species_types/preternis/organs.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/organs.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/organs.dm
index c773706599a1..2206003e834d 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/organs.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/organs.dm
@@ -1,7 +1,7 @@
/obj/item/organ/eyes/preternis
name = "preternis eyes"
desc = "An experimental upgraded version of eyes that can see in the dark.They are designed to fit preternis"
- see_in_dark = 8
+ see_in_dark = PRETERNIS_NV_ON
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
actions_types = list(/datum/action/item_action/organ_action/use)
var/night_vision = TRUE
From 0906438b560c27f6232220459ac56716cf3c719c Mon Sep 17 00:00:00 2001
From: alexkar598 <25136265+alexkar598@users.noreply.github.com>
Date: Mon, 11 Mar 2019 17:15:19 -0400
Subject: [PATCH 13/19] Update species.dm
---
yogstation/code/modules/mob/living/carbon/human/species.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species.dm b/yogstation/code/modules/mob/living/carbon/human/species.dm
index 0d0a00caa433..612355a461d1 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species.dm
@@ -29,4 +29,4 @@
BP.yogs_draw_robot_hair = initial(BP.yogs_draw_robot_hair)
/datum/species/proc/spec_AltClickOn(atom/A,mob/living/carbon/human/H)
- return 0
\ No newline at end of file
+ return FALSE
From 8ab88e36a4efc40a8221015fccc994a8e93b1210 Mon Sep 17 00:00:00 2001
From: alexkar598 <25136265+alexkar598@users.noreply.github.com>
Date: Mon, 11 Mar 2019 17:16:14 -0400
Subject: [PATCH 14/19] Update power_suck.dm
---
.../living/carbon/human/species_types/preternis/power_suck.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index ca6e007162ac..9d4358896eef 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -1,6 +1,6 @@
/mob/living/carbon/AltClickOn(atom/A)
dna?.species.spec_AltClickOn(A,src)
- return
+ return ..()
/datum/species/preternis/spec_AltClickOn(atom/A,H)
return drain_power_from(H, A)
From c54eb03439587037765b06f64f8b51071485b0ae Mon Sep 17 00:00:00 2001
From: Nichlas Pihl
Date: Mon, 11 Mar 2019 17:16:29 -0400
Subject: [PATCH 15/19] Update
yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
Co-Authored-By: alexkar598 <25136265+alexkar598@users.noreply.github.com>
---
.../living/carbon/human/species_types/preternis/power_suck.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index 9d4358896eef..da0ac3a0599c 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -10,7 +10,7 @@
return FALSE
if(draining)
- to_chat(H,"CONSUME protocols can only be used on one object at any single time.")
+ to_chat(H,"CONSUME protocols can only be used on one object at any single time.")
return FALSE
if(!A.can_consume_power_from())
return FALSE //if it returns text, we want it to continue so we can get the error message later.
From 5e2252b6c5fbc86425d73af43e16d1291eec5737 Mon Sep 17 00:00:00 2001
From: alexkar598 <25136265+alexkar598@users.noreply.github.com>
Date: Mon, 11 Mar 2019 17:18:47 -0400
Subject: [PATCH 16/19] TRUE or FALSE?
---
.../species_types/preternis/power_suck.dm | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index da0ac3a0599c..b2f0e490e377 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -28,7 +28,7 @@
return TRUE
if(H.gloves)
- if(H.gloves.siemens_coefficient == 0)
+ if(!H.gloves.siemens_coefficient)
to_chat(H,"NOTICE: [H.gloves] prevent electrical contact - CONSUME protocol aborted.")
draining = FALSE
return TRUE
@@ -46,7 +46,7 @@
to_chat(H,"Extracutaneous implants detect viable power source. Initiating CONSUME protocol.")
- var/done = 0
+ var/done = FALSE
var/drain = 150 * siemens_coefficient
var/cycle = 0
@@ -69,7 +69,7 @@
if(!can_drain || istext(can_drain))
if(istext(can_drain))
to_chat(H,can_drain)
- done = 1
+ done = TRUE
else
playsound(A.loc, "sparks", 50, 1)
if(prob(75))
@@ -77,18 +77,18 @@
var/drained = A.consume_power_from(drain)
if(drained < drain)
to_chat(H,"[A]'s power has been depleted, CONSUME protocol halted.")
- done = 1
+ done = TRUE
charge = CLAMP(charge + (drained * ELECTRICITY_TO_NUTRIMENT_FACTOR),PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if(!done)
if(charge > (PRETERNIS_LEVEL_FULL - 25))
to_chat(H,"CONSUME protocol complete. Physical nourishment refreshed.")
- done = 1
- else if(cycle % 4 == 0)
+ done = TRUE
+ else if(!(cycle % 4))
var/nutperc = round((charge / PRETERNIS_LEVEL_FULL) * 100)
to_chat(H,"CONSUME protocol continues. Current satiety level: [nutperc]%.")
else
- done = 1
+ done = TRUE
qdel(spark_system)
draining = FALSE
return TRUE
@@ -142,7 +142,7 @@
return "SMES is not outputting power, cannot consume power."
if(charge < MIN_DRAINABLE_POWER)
return "SMES cells depleted, cannot consume power."
- return 1
+ return TRUE
/obj/machinery/power/smes/consume_power_from(amount)
if((charge - amount) < MIN_DRAINABLE_POWER)
@@ -156,7 +156,7 @@
return "Mech power cell absent, cannot consume power."
if(cell.charge < MIN_DRAINABLE_POWER)
return "Mech power cell depleted, cannot consume power."
- return 1
+ return TRUE
/obj/mecha/consume_power_from(amount)
occupant_message("Warning: Unauthorized access through sub-route 4, block H, detected.")
@@ -171,7 +171,7 @@
return "Cyborg power cell absent, cannot consume power."
if(cell.charge < MIN_DRAINABLE_POWER)
return "Cyborg power cell depleted, cannot consume power."
- return 1
+ return TRUE
/mob/living/silicon/robot/consume_power_from(amount)
src << "Warning: Unauthorized access through sub-route 12, block C, detected."
From ba28f6611e8f5a2a9929db787646780a918584b1 Mon Sep 17 00:00:00 2001
From: alexkar598 <25136265+alexkar598@users.noreply.github.com>
Date: Tue, 12 Mar 2019 15:44:07 -0400
Subject: [PATCH 17/19] bit too high
---
.../living/carbon/human/species_types/preternis/preternis.dm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index e3d651da9b02..804cf556940f 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -27,7 +27,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
var/charge = PRETERNIS_LEVEL_FULL
var/eating_msg_cooldown = FALSE
var/emag_lvl = 0
- var/power_drain = 0.7 //probably going to have to tweak this shit
+ var/power_drain = 0.5 //probably going to have to tweak this shit
var/tesliumtrip = FALSE
var/draining = FALSE
@@ -158,4 +158,4 @@ adjust_charge - take a positive or negative value to adjust the charge level
else if(charge < PRETERNIS_LEVEL_FED)
H.throw_alert("preternis_charge", /obj/screen/alert/preternis_charge, 1)
else
- H.clear_alert("preternis_charge")
\ No newline at end of file
+ H.clear_alert("preternis_charge")
From 26f2de3039585d2ea37c3c52a58b532edec453a1 Mon Sep 17 00:00:00 2001
From: alexkar598 <25136265+alexkar598@users.noreply.github.com>
Date: Tue, 12 Mar 2019 15:50:26 -0400
Subject: [PATCH 18/19] as you wish master nich
---
config/game_options.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/config/game_options.txt b/config/game_options.txt
index b2c681e772e1..f0fad9ef9cda 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -445,6 +445,7 @@ ROUNDSTART_RACES lizard
#ROUNDSTART_RACES moth
ROUNDSTART_RACES plasmaman
#ROUNDSTART_RACES shadow
+ROUNDSTART_RACES preternis
## Races that are better than humans in some ways, but worse in others
ROUNDSTART_RACES ethereal
From 77a8f7c047199d49c96b18af79ecd480427edd6b Mon Sep 17 00:00:00 2001
From: alexkar598 <>
Date: Thu, 14 Mar 2019 17:21:32 -0400
Subject: [PATCH 19/19] finalization,buffs power charging
---
code/__DEFINES/~yogs_defines/mobs.dm | 2 +-
.../living/carbon/human/species_types/preternis/power_suck.dm | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/__DEFINES/~yogs_defines/mobs.dm b/code/__DEFINES/~yogs_defines/mobs.dm
index fd59ed3ed5d7..0ef3d1f09169 100644
--- a/code/__DEFINES/~yogs_defines/mobs.dm
+++ b/code/__DEFINES/~yogs_defines/mobs.dm
@@ -5,7 +5,7 @@
#define PRETERNIS_LEVEL_STARVING 150
#define PRETERNIS_LEVEL_NONE 0
-#define ELECTRICITY_TO_NUTRIMENT_FACTOR 0.12 //1 power unit to 12 preternis charge
+#define ELECTRICITY_TO_NUTRIMENT_FACTOR 0.44 //1 power unit to 44 preternis charge they can uncharge an apc to 50% at most
#define PRETERNIS_NV_OFF 2 //numbers of tile they can see
#define PRETERNIS_NV_ON 8
diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index b2f0e490e377..7eeb693c948f 100644
--- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -64,7 +64,7 @@
nutritionIncrease = CLAMP(PRETERNIS_LEVEL_FULL - charge, PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL) //if their nutrition goes up from some other source, this could be negative, which would cause bad things to happen.
drain = nutritionIncrease/ELECTRICITY_TO_NUTRIMENT_FACTOR
- if (do_after(H,15, target = A))
+ if (do_after(H,5, target = A))
var/can_drain = A.can_consume_power_from()
if(!can_drain || istext(can_drain))
if(istext(can_drain))