tweaks to artifact spawning, tweaks and fixes to multiple anomalous artifact effects

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
Cael_Aislinn
2013-02-13 12:23:20 +10:00
parent b9bd5ca3e2
commit bbfbfb0ca2
12 changed files with 269 additions and 243 deletions

View File

@@ -128,7 +128,6 @@
//dont create artifact machinery in animal or plant digsites, or if we already have one
if(!artifact_find && digsite != 1 && digsite != 2 && prob(ARTIFACT_SPAWN_CHANCE))
artifact_find = new()
world << artifact_find.artifact_find_type
if(!src.geological_data)
src.geological_data = new/datum/geosample(src)

View File

@@ -22,7 +22,7 @@
100;/obj/machinery/giga_drill,\
100;/obj/mecha/working/hoverpod,\
100;/obj/machinery/replicator,\
200;/obj/structure/crystal,\
150;/obj/structure/crystal,\
500;/obj/machinery/artifact)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -8,7 +8,7 @@
if(istype(user, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
for (var/obj/item/weapon/cell/D in R.contents)
D.charge += 250
D.charge += rand() * 100 + 50
R << "\blue SYSTEM ALERT: Large energy boost detected!"
return 1
@@ -16,11 +16,12 @@
if(holder)
for (var/obj/machinery/power/apc/C in range(200, holder))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge += 100
for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) S.charge += 250
B.charge += 25
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge += 25
for (var/mob/living/silicon/robot/M in world)
for (var/obj/item/weapon/cell/D in M.contents)
D.charge += 100
D.charge += 25
M << "\blue SYSTEM ALERT: Energy boost detected!"
return 1
@@ -28,10 +29,11 @@
if(holder)
for (var/obj/machinery/power/apc/C in range(200, holder))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge += 100
for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) S.charge += 250
B.charge += rand() * 100
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge += 250
for (var/mob/living/silicon/robot/M in world)
for (var/obj/item/weapon/cell/D in M.contents)
D.charge += 100
D.charge += rand() * 100
M << "\blue SYSTEM ALERT: Energy boost detected!"
return 1

View File

@@ -8,7 +8,7 @@
if(istype(user, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
for (var/obj/item/weapon/cell/D in R.contents)
D.charge = max(D.charge-250, 0)
D.charge = max(D.charge - rand() * 100, 0)
R << "\blue SYSTEM ALERT: Energy drain detected!"
return 1
@@ -18,12 +18,12 @@
if(holder)
for (var/obj/machinery/power/apc/C in range(200, holder))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge = max(B.charge-250,0)
B.charge = max(B.charge - 50,0)
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge = max(S.charge-250,0)
S.charge = max(S.charge - 100,0)
for (var/mob/living/silicon/robot/M in world)
for (var/obj/item/weapon/cell/D in M.contents)
D.charge = max(D.charge-250,0)
D.charge = max(D.charge - 50,0)
M << "\red SYSTEM ALERT: Energy drain detected!"
return 1
@@ -31,11 +31,11 @@
if(holder)
for (var/obj/machinery/power/apc/C in range(200, holder))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge = max(B.charge-250,0)
B.charge = max(B.charge - rand() * 150,0)
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge = max(S.charge-250,0)
S.charge = max(S.charge - 250,0)
for (var/mob/living/silicon/robot/M in world)
for (var/obj/item/weapon/cell/D in M.contents)
D.charge = max(D.charge-250,0)
D.charge = max(D.charge - rand() * 150,0)
M << "\red SYSTEM ALERT: Energy drain detected!"
return 1

View File

@@ -11,8 +11,9 @@
else
severity = rand(5,95)
/datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/holder)
if(ishuman(holder) && !istype(holder:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && !istype(holder:head,/obj/item/clothing/head/bio_hood/anomaly))
/datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/toucher)
var/weakness = GetAnomalySusceptibility(toucher)
if(ishuman(toucher) && prob(weakness * 100))
holder << pick("\green You feel a little different.",\
"\green You feel very strange.",\
"\green Your stomach churns.",\
@@ -21,46 +22,44 @@
"\green You feel a tingling sensation in your chest.",\
"\green Your entire body vibrates.")
if(prob(75))
scramble(1, holder, severity)
scramble(1, holder, weakness * severity)
else
scramble(0, holder, severity)
scramble(0, holder, weakness * severity)
return 1
/datum/artifact_effect/dnaswitch/DoEffectAura()
for(var/mob/living/carbon/human/H in range(src.effectrange,holder))
if(istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
if(prob(30))
H << pick("\green You feel a little different.",\
"\green You feel very strange.",\
"\green Your stomach churns.",\
"\green Your skin feels loose.",\
"\green You feel a stabbing pain in your head.",\
"\green You feel a tingling sensation in your chest.",\
"\green Your entire body vibrates.")
if(prob(25))
scramble(1, H, severity)
else
scramble(0, H, severity)
return 1
if(holder)
for(var/mob/living/carbon/human/H in range(src.effectrange,holder))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if(prob(30))
H << pick("\green You feel a little different.",\
"\green You feel very strange.",\
"\green Your stomach churns.",\
"\green Your skin feels loose.",\
"\green You feel a stabbing pain in your head.",\
"\green You feel a tingling sensation in your chest.",\
"\green Your entire body vibrates.")
if(prob(25))
scramble(1, H, weakness * severity)
else
scramble(0, H, weakness * severity)
/datum/artifact_effect/dnaswitch/DoEffectPulse()
for(var/mob/living/carbon/human/H in range(200, holder))
if(istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
if(prob(75))
H << pick("\green You feel a little different.",\
"\green You feel very strange.",\
"\green Your stomach churns.",\
"\green Your skin feels loose.",\
"\green You feel a stabbing pain in your head.",\
"\green You feel a tingling sensation in your chest.",\
"\green Your entire body vibrates.")
if(prob(25))
if(prob(50))
scramble(1, H, severity)
else
scramble(0, H, severity)
return 1
if(holder)
for(var/mob/living/carbon/human/H in range(200, holder))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if(prob(75))
H << pick("\green You feel a little different.",\
"\green You feel very strange.",\
"\green Your stomach churns.",\
"\green Your skin feels loose.",\
"\green You feel a stabbing pain in your head.",\
"\green You feel a tingling sensation in your chest.",\
"\green Your entire body vibrates.")
if(prob(25))
if(prob(50))
scramble(1, H, weakness * severity)
else
scramble(0, H, weakness * severity)

View File

@@ -2,66 +2,61 @@
/datum/artifact_effect/heal
effecttype = "heal"
/datum/artifact_effect/heal/DoEffectTouch(var/mob/user)
//caeltodo
if(user)
if (istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = holder
H << "\blue You feel a soothing energy invigorate you."
/datum/artifact_effect/heal/DoEffectTouch(var/mob/toucher)
//todo: check over this properly
if(toucher && iscarbon(toucher))
var/weakness = GetAnomalySusceptibility(toucher)
if(prob(weakness * 100))
var/mob/living/carbon/C = toucher
C << "\blue You feel a soothing energy invigorate you."
for(var/datum/organ/external/affecting in H.organs)
if(affecting && istype(affecting))
affecting.heal_damage(25, 25)
//H:heal_organ_damage(25, 25)
if(ishuman(toucher))
var/mob/living/carbon/human/H = holder
for(var/datum/organ/external/affecting in H.organs)
if(affecting && istype(affecting))
affecting.heal_damage(25 * weakness, 25 * weakness)
//H:heal_organ_damage(25, 25)
H.vessel.add_reagent("blood",5)
H.nutrition += 50 * weakness
H.adjustBrainLoss(-25 * weakness)
H.radiation -= min(H.radiation, 25 * weakness)
H.bodytemperature = initial(H.bodytemperature)
spawn(1)
H.fixblood()
//
H.adjustOxyLoss(-25)
H.adjustToxLoss(-25)
H.adjustBruteLoss(-25)
H.adjustFireLoss(-25)
H.adjustBrainLoss(-25)
H.radiation -= min(H.radiation, 25)
H.nutrition += 50
H.bodytemperature = initial(H.bodytemperature)
C.adjustOxyLoss(-25 * weakness)
C.adjustToxLoss(-25 * weakness)
C.adjustBruteLoss(-25 * weakness)
C.adjustFireLoss(-25 * weakness)
//
H.vessel.add_reagent("blood",50)
spawn(1)
H.fixblood()
H.regenerate_icons()
return 1
else if (istype(user, /mob/living/carbon/monkey/))
var/mob/living/carbon/monkey/M = holder
M << "\blue You feel a soothing energy invigorate you."
M.adjustOxyLoss(-25)
M.adjustToxLoss(-25)
M.adjustBruteLoss(-25)
M.adjustFireLoss(-25)
M.adjustBrainLoss(-25)
C.regenerate_icons()
return 1
/datum/artifact_effect/heal/DoEffectAura()
//caeltodo
for (var/mob/living/carbon/M in range(src.effectrange,holder))
if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
if(prob(10)) M << "\blue You feel a soothing energy radiating from something nearby."
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
M.adjustToxLoss(-1)
M.adjustOxyLoss(-1)
M.adjustBrainLoss(-1)
M.updatehealth()
return 1
//todo: check over this properly
if(holder)
for (var/mob/living/carbon/C in range(src.effectrange,holder))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if(prob(10))
C << "\blue You feel a soothing energy radiating from something nearby."
C.adjustBruteLoss(-1 * weakness)
C.adjustFireLoss(-1 * weakness)
C.adjustToxLoss(-1 * weakness)
C.adjustOxyLoss(-1 * weakness)
C.adjustBrainLoss(-1 * weakness)
C.updatehealth()
/datum/artifact_effect/heal/DoEffectPulse()
for (var/mob/living/carbon/M in range(src.effectrange,holder))
if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
M << "\blue A wave of energy invigorates you."
M.adjustBruteLoss(-5)
M.adjustFireLoss(-5)
M.adjustToxLoss(-5)
M.adjustOxyLoss(-5)
M.adjustBrainLoss(-5)
M.updatehealth()
return 1
//todo: check over this properly
if(holder)
for (var/mob/living/carbon/C in range(src.effectrange,holder))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
C << "\blue A wave of energy invigorates you."
C.adjustBruteLoss(-5 * weakness)
C.adjustFireLoss(-5 * weakness)
C.adjustToxLoss(-5 * weakness)
C.adjustOxyLoss(-5 * weakness)
C.adjustBrainLoss(-5 * weakness)
C.updatehealth()

View File

@@ -2,45 +2,46 @@
/datum/artifact_effect/hurt
effecttype = "hurt"
/datum/artifact_effect/hurt/DoEffectTouch(var/mob/holder)
/datum/artifact_effect/hurt/DoEffectTouch(var/mob/toucher)
//caeltodo
if(holder)
if (istype(holder, /mob/living/carbon/))
var/mob/living/carbon/C = holder
var/weakness = GetAnomalySusceptibility(toucher)
if(iscarbon(toucher) && prob(weakness * 100))
var/mob/living/carbon/C = toucher
C << "\red A painful discharge of energy strikes you!"
C.adjustOxyLoss(rand(5,25))
C.adjustToxLoss(rand(5,25))
C.adjustBruteLoss(rand(5,25))
C.adjustFireLoss(rand(5,25))
C.adjustBrainLoss(rand(5,25))
C.radiation += 25
C.nutrition -= min(50, C.nutrition)
C.make_dizzy(6)
C.weakened += 6
return 1
C.adjustOxyLoss(rand(5,25) * weakness)
C.adjustToxLoss(rand(5,25) * weakness)
C.adjustBruteLoss(rand(5,25) * weakness)
C.adjustFireLoss(rand(5,25) * weakness)
C.adjustBrainLoss(rand(5,25) * weakness)
C.radiation += 25 * weakness
C.nutrition -= min(50 * weakness, C.nutrition)
C.make_dizzy(6 * weakness)
C.weakened += 6 * weakness
/datum/artifact_effect/hurt/DoEffectAura()
if(holder)
for (var/mob/living/carbon/M in range(src.effectrange,holder))
if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
if(prob(10)) M << "\red You feel a painful force radiating from something nearby."
M.adjustBruteLoss(1)
M.adjustFireLoss(1)
M.adjustToxLoss(1)
M.adjustOxyLoss(1)
M.adjustBrainLoss(1)
M.updatehealth()
return 1
for (var/mob/living/carbon/C in range(src.effectrange,holder))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if(prob(10))
C << "\red You feel a painful force radiating from something nearby."
C.adjustBruteLoss(1 * weakness)
C.adjustFireLoss(1 * weakness)
C.adjustToxLoss(1 * weakness)
C.adjustOxyLoss(1 * weakness)
C.adjustBrainLoss(1 * weakness)
C.updatehealth()
/datum/artifact_effect/hurt/DoEffectPulse()
if(holder)
for (var/mob/living/carbon/human/M in range(effectrange, holder))
M << "\red A wave of painful energy strikes you!"
M.adjustBruteLoss(3)
M.adjustFireLoss(3)
M.adjustToxLoss(3)
M.adjustOxyLoss(3)
M.adjustBrainLoss(3)
M.updatehealth()
return 1
for (var/mob/living/carbon/C in range(effectrange, holder))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
C << "\red A wave of painful energy strikes you!"
C.adjustBruteLoss(3 * weakness)
C.adjustFireLoss(3 * weakness)
C.adjustToxLoss(3 * weakness)
C.adjustOxyLoss(3 * weakness)
C.adjustBrainLoss(3 * weakness)
C.updatehealth()

View File

@@ -3,34 +3,40 @@
/datum/artifact_effect/sleepy
effecttype = "sleepy"
/datum/artifact_effect/sleepy/DoEffectTouch(var/mob/user)
if(user)
if(istype(user,/mob/living/carbon))
var/mob/living/carbon/C = user
C << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")
C.drowsyness = min(user.drowsyness + rand(5,25), 50)
C.eye_blurry = min(user.eye_blurry + rand(1,3), 50)
/datum/artifact_effect/sleepy/DoEffectTouch(var/mob/toucher)
if(toucher)
var/weakness = GetAnomalySusceptibility(toucher)
if(ishuman(toucher) && prob(weakness * 100))
var/mob/living/carbon/human/H = toucher
H << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")
H.drowsyness = min(H.drowsyness + rand(5,25) * weakness, 50 * weakness)
H.eye_blurry = min(H.eye_blurry + rand(1,3) * weakness, 50 * weakness)
return 1
else if(istype(user,/mob/living/silicon/robot))
user << "\red SYSTEM ALERT: CPU cycles slowing down."
else if(isrobot(toucher))
toucher << "\red SYSTEM ALERT: CPU cycles slowing down."
return 1
/datum/artifact_effect/sleepy/DoEffectAura()
if(holder)
for (var/mob/living/carbon/M in range(src.effectrange,holder))
if(prob(10))
M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")
M.drowsyness = min(M.drowsyness + 1, 25)
M.eye_blurry = min(M.eye_blurry + 1, 25)
for (var/mob/living/silicon/robot/M in range(src.effectrange,holder))
M << "\red SYSTEM ALERT: CPU cycles slowing down."
for (var/mob/living/carbon/human/H in range(src.effectrange,holder))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if(prob(10))
H << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")
H.drowsyness = min(H.drowsyness + 1 * weakness, 25 * weakness)
H.eye_blurry = min(H.eye_blurry + 1 * weakness, 25 * weakness)
for (var/mob/living/silicon/robot/R in range(src.effectrange,holder))
R << "\red SYSTEM ALERT: CPU cycles slowing down."
return 1
/datum/artifact_effect/sleepy/DoEffectPulse()
if(holder)
for(var/mob/living/H in range(src.effectrange, holder))
H.drowsyness = min(H.drowsyness + rand(5,15), 50)
H.eye_blurry = min(H.eye_blurry + rand(5,15), 50)
for (var/mob/living/silicon/robot/M in range(src.effectrange,holder))
M << "\red SYSTEM ALERT: CPU cycles slowing down."
for(var/mob/living/carbon/human/H in range(src.effectrange, holder))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
H << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")
H.drowsyness = min(H.drowsyness + rand(5,15) * weakness, 50 * weakness)
H.eye_blurry = min(H.eye_blurry + rand(5,15) * weakness, 50 * weakness)
for (var/mob/living/silicon/robot/R in range(src.effectrange,holder))
R << "\red SYSTEM ALERT: CPU cycles slowing down."
return 1

View File

@@ -2,37 +2,36 @@
/datum/artifact_effect/stun
effecttype = "stun"
/datum/artifact_effect/stun/DoEffectTouch(var/mob/user)
if(user)
if (istype(user, /mob/living/carbon/))
user << "\red A powerful force overwhelms your consciousness."
user.weakened += 45
user.stuttering += 45
user.stunned += rand(1,10)
return 1
/datum/artifact_effect/stun/DoEffectTouch(var/mob/toucher)
if(toucher && iscarbon(toucher))
var/mob/living/carbon/C = toucher
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
C << "\red A powerful force overwhelms your consciousness."
C.weakened += 45 * weakness
C.stuttering += 45 * weakness
C.stunned += rand(1,10) * weakness
/datum/artifact_effect/stun/DoEffectAura()
if(holder)
for (var/mob/living/carbon/M in range(src.effectrange,holder))
if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
if(prob(10)) M << "\red You feel numb."
if(prob(20))
M << "\red Your body goes numb for a moment."
M.weakened += 2
M.stuttering += 2
for (var/mob/living/carbon/C in range(src.effectrange,holder))
var/weakness = GetAnomalySusceptibility(C)
if(prob(10 * weakness))
C << "\red Your body goes numb for a moment."
C.weakened += 2
C.stuttering += 2
if(prob(10))
M.stunned += 1
return 1
C.stunned += 1
else if(prob(10))
C << "\red You feel numb."
/datum/artifact_effect/stun/DoEffectPulse()
if(holder)
for (var/mob/living/carbon/M in range(src.effectrange,holder))
if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
M << "\red A wave of energy overwhelms your senses!"
M.weakened += 4
M.stuttering += 4
if(prob(10))
M.stunned += 1
return 1
for (var/mob/living/carbon/C in range(src.effectrange,holder))
var/weakness = GetAnomalySusceptibility(C)
if(prob(100 * weakness))
C << "\red A wave of energy overwhelms your senses!"
C.weakened += 4 * weakness
C.stuttering += 4 * weakness
if(prob(10))
C.stunned += 1 * weakness

View File

@@ -3,64 +3,62 @@
effecttype = "teleport"
/datum/artifact_effect/teleport/DoEffectTouch(var/mob/user)
var/list/randomturfs = new/list()
for(var/turf/simulated/floor/T in orange(user, 50))
randomturfs.Add(T)
if(randomturfs.len > 0)
user << "\red You are suddenly zapped away elsewhere!"
if (user.buckled)
user.buckled.unbuckle()
var/weakness = GetAnomalySusceptibility(user)
if(prob(100 * weakness))
var/list/randomturfs = new/list()
for(var/turf/simulated/floor/T in orange(user, 50))
randomturfs.Add(T)
if(randomturfs.len > 0)
user << "\red You are suddenly zapped away elsewhere!"
if (user.buckled)
user.buckled.unbuckle()
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(user))
sparks.start()
user.loc = pick(randomturfs)
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(user))
sparks.start()
return 1
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(user))
sparks.start()
user.loc = pick(randomturfs)
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(user))
sparks.start()
/datum/artifact_effect/teleport/DoEffectAura()
if(holder)
for (var/mob/living/M in range(src.effectrange,holder))
if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
var/list/randomturfs = new/list()
for(var/turf/simulated/floor/T in orange(M, 30))
randomturfs.Add(T)
if(randomturfs.len > 0)
M << "\red You are displaced by a strange force!"
if(M.buckled)
M.buckled.unbuckle()
var/weakness = GetAnomalySusceptibility(M)
if(prob(100 * weakness))
var/list/randomturfs = new/list()
for(var/turf/simulated/floor/T in orange(M, 30))
randomturfs.Add(T)
if(randomturfs.len > 0)
M << "\red You are displaced by a strange force!"
if(M.buckled)
M.buckled.unbuckle()
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
M.loc = pick(randomturfs)
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
return 1
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
M.loc = pick(randomturfs)
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
/datum/artifact_effect/teleport/DoEffectPulse()
if(holder)
for (var/mob/living/M in range(src.effectrange, holder))
if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly))
continue
var/list/randomturfs = new/list()
for(var/turf/simulated/floor/T in orange(M, 15))
randomturfs.Add(T)
if(randomturfs.len > 0)
M << "\red You are displaced by a strange force!"
var/weakness = GetAnomalySusceptibility(M)
if(prob(100 * weakness))
var/list/randomturfs = new/list()
for(var/turf/simulated/floor/T in orange(M, 15))
randomturfs.Add(T)
if(randomturfs.len > 0)
M << "\red You are displaced by a strange force!"
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
if(M.buckled)
M.buckled.unbuckle()
M.loc = pick(randomturfs)
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
return 1
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
if(M.buckled)
M.buckled.unbuckle()
M.loc = pick(randomturfs)
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()

View File

@@ -222,7 +222,7 @@ var/list/valid_secondary_effect_types = list(\
if (get_dist(user, src) > 1)
user << "\red You can't reach [src] from here."
return
if(ishuman(user) && istype(user:gloves,/obj/item/clothing/gloves))
if(ishuman(user) && user:gloves)
return ..()
src.add_fingerprint(user)
@@ -231,7 +231,7 @@ var/list/valid_secondary_effect_types = list(\
user << "<b>You touch [src].<b>"
my_effect.ToggleActivate()
else
user << "<b>You touch [src],</b> [pick("and nothing of note happens","but nothing happens","and nothing interesting happens","you notice nothing different","nothing seems to have happened")]."
user << "<b>You touch [src],</b> [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")]."
if(prob(25) && secondary_effect && secondary_effect.trigger == my_effect.trigger)
secondary_effect.ToggleActivate(0)

View File

@@ -66,3 +66,30 @@
else if(effect == EFFECT_PULSE && chargelevel >= chargelevelmax)
chargelevel = 0
DoEffectPulse()
//returns 0..1, with 1 being no protection and 0 being fully protected
proc/GetAnomalySusceptibility(var/mob/living/carbon/human/H)
if(!H || !istype(H))
return 1
var/protected = 0
//anomaly suits give best protection, but excavation suits are almost as good
if(istype(H.wear_suit,/obj/item/clothing/suit/bio_suit/anomaly))
protected += 0.6
else if(istype(H.wear_suit,/obj/item/clothing/suit/space/anomaly))
protected += 0.5
if(istype(H.head,/obj/item/clothing/head/bio_hood/anomaly))
protected += 0.3
else if(istype(H.head,/obj/item/clothing/head/helmet/space/anomaly))
protected += 0.2
//latex gloves and science goggles also give a bit of bonus protection
if(istype(H.gloves,/obj/item/clothing/gloves/latex))
protected += 0.1
if(istype(H.glasses,/obj/item/clothing/glasses/science))
protected += 0.1
return 1 - protected