mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
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:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user