artifact_effect misc style pass 2

readable flow control
This commit is contained in:
spookerton
2022-09-01 12:10:02 +01:00
parent 9aaf02722f
commit 877569a5f6
31 changed files with 263 additions and 263 deletions
@@ -20,7 +20,7 @@
var/atom/holder = get_master_holder()
var/obj/O = holder
var/turf/T = get_step_away(O, user)
if(target && istype(T) && istype(O.loc, /turf))
if (target && istype(T) && istype(O.loc, /turf))
O.Move(T)
O.visible_message("<span class='alien'>\The [holder] lurches away from [user]</span>")
@@ -28,11 +28,11 @@
/datum/artifact_effect/common/animate_anomaly/DoEffectAura()
var/obj/O = get_master_holder()
find_target()
if(!target || !istype(O))
if (!target || !istype(O))
return
O.dir = get_dir(O, target)
if(istype(O.loc, /turf))
if(get_dist(O.loc, target.loc) > 1)
if (istype(O.loc, /turf))
if (get_dist(O.loc, target.loc) > 1)
O.Move(get_step_to(O, target))
O.visible_message("<span class='alien'>\The [O] lurches toward [target]</span>")
@@ -43,15 +43,15 @@
/datum/artifact_effect/common/animate_anomaly/proc/find_target()
var/atom/masterholder = get_master_holder()
if(!target || target.z != masterholder.z || get_dist(target, masterholder) > effectrange)
if (!target || target.z != masterholder.z || get_dist(target, masterholder) > effectrange)
var/mob/living/ClosestMob = null
for(var/mob/living/L in range(effectrange, get_turf(masterholder)))
if(!L.mind)
for (var/mob/living/L in range(effectrange, get_turf(masterholder)))
if (!L.mind)
continue
if(!ClosestMob)
if (!ClosestMob)
ClosestMob = L
continue
if(!L.stat)
if(get_dist(masterholder, L) < get_dist(masterholder, ClosestMob))
if (!L.stat)
if (get_dist(masterholder, L) < get_dist(masterholder, ClosestMob))
ClosestMob = L
target = ClosestMob
@@ -32,43 +32,43 @@
/datum/artifact_effect/common/badfeeling/DoEffectTouch(mob/living/user)
if(user)
if (user)
if (istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(prob(50))
if(prob(75))
if (prob(50))
if (prob(75))
to_chat(H, "<b><font color='red' size='[num2text(rand(1,5))]'>[pick(drastic_messages)]</b></font>")
else
to_chat(H, "<font color='red'>[pick(messages)]</font>")
if(prob(50))
if (prob(50))
H.dizziness += rand(3,5)
/datum/artifact_effect/common/badfeeling/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(5))
if(prob(75))
if (prob(5))
if (prob(75))
to_chat(H, "<font color='red'>[pick(messages)]</font>")
else
to_chat(H, "<font color='red' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
if(prob(10))
if (prob(10))
H.dizziness += rand(3,5)
/datum/artifact_effect/common/badfeeling/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(50))
if(prob(95))
if (prob(50))
if (prob(95))
to_chat(H, "<font color='red' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
else
to_chat(H, "<font color='red'>[pick(messages)]</font>")
if(prob(50))
if (prob(50))
H.dizziness += rand(3,5)
else if(prob(25))
else if (prob(25))
H.dizziness += rand(5,15)
+10 -10
View File
@@ -6,39 +6,39 @@
/datum/artifact_effect/uncommon/berserk/DoEffectTouch(mob/living/user)
if(user && isliving(user))
if (user && isliving(user))
apply_berserk(user)
/datum/artifact_effect/uncommon/berserk/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for(var/mob/living/L in range(src.effectrange,T))
if(prob(10))
for (var/mob/living/L in range(src.effectrange,T))
if (prob(10))
apply_berserk(L)
/datum/artifact_effect/uncommon/berserk/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for(var/mob/living/L in range(src.effectrange,T))
for (var/mob/living/L in range(src.effectrange,T))
apply_berserk(L)
/datum/artifact_effect/uncommon/berserk/proc/apply_berserk(mob/living/L)
if(!istype(L))
if (!istype(L))
return FALSE
if(!L.is_sentient())
if (!L.is_sentient())
return FALSE // Drons are presumably deaf to any psionic things.
if(L.add_modifier(/datum/modifier/berserk, 30 SECONDS))
if (L.add_modifier(/datum/modifier/berserk, 30 SECONDS))
to_chat(L, "<span class='danger'>An otherworldly feeling seems to enter your mind, and it ignites your mind in fury!</span>")
L.adjustBrainLoss(3) // Playing with berserking alien psychic artifacts isn't good for the mind.
to_chat(L, "<span class='danger'>The inside of your head hurts...</span>")
return TRUE
else
if(L.has_modifier_of_type(/datum/modifier/berserk)) // Already angry.
if (L.has_modifier_of_type(/datum/modifier/berserk)) // Already angry.
to_chat(L, "<span class='warning'>An otherworldly feeling seems to enter your mind again, and it fans your inner flame, extending your rage.</span>")
else // Exhausted or something.
to_chat(L, "<span class='warning'>An otherworldly feeling seems to enter your mind, and you briefly feel an intense anger, but \
@@ -32,49 +32,49 @@
/datum/artifact_effect/uncommon/cannibalfeeling/DoEffectTouch(mob/living/user)
if(user)
if (user)
if (istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(H.is_sentient())
if(prob(50))
if(prob(75))
if (H.is_sentient())
if (prob(50))
if (prob(75))
to_chat(H, "<b><font color='red' size='[num2text(rand(1,5))]'>[pick(drastic_messages)]</b></font>")
else
to_chat(H, "<font color='red'>[pick(messages)]</font>")
if(prob(50))
if (prob(50))
H.dizziness += rand(3,5)
H.nutrition = H.nutrition / 1.5
/datum/artifact_effect/uncommon/cannibalfeeling/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(H.is_sentient())
if(prob(5))
if(prob(75))
if (H.is_sentient())
if (prob(5))
if (prob(75))
to_chat(H, "<font color='red'>[pick(messages)]</font>")
else
to_chat(H, "<font color='red' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
if(prob(10))
if (prob(10))
H.dizziness += rand(3,5)
H.nutrition = H.nutrition / 2
/datum/artifact_effect/uncommon/cannibalfeeling/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(H.is_sentient())
if(prob(50))
if(prob(95))
if (H.is_sentient())
if (prob(50))
if (prob(95))
to_chat(H, "<font color='red' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
else
to_chat(H, "<font color='red'>[pick(messages)]</font>")
if(prob(50))
if (prob(50))
H.dizziness += rand(3,5)
else if(prob(25))
else if (prob(25))
H.dizziness += rand(5,15)
H.nutrition = H.nutrition / 4
@@ -6,8 +6,8 @@
/datum/artifact_effect/uncommon/cellcharge/DoEffectTouch(mob/living/user)
if(user)
if(istype(user, /mob/living/silicon/robot))
if (user)
if (istype(user, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
for (var/obj/item/cell/D in R.contents)
D.charge += rand() * 100 + 50
@@ -44,7 +44,7 @@
/datum/artifact_effect/uncommon/cellcharge/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/obj/machinery/power/apc/C in range(200, T))
for (var/obj/item/cell/B in C.contents)
@@ -54,6 +54,6 @@
for (var/mob/living/silicon/robot/M in range(100, T))
for (var/obj/item/cell/D in M.contents)
D.charge += rand() * 100
if(world.time - last_message > 200)
if (world.time - last_message > 200)
to_chat(M, "<font color='blue'>SYSTEM ALERT: Energy boost detected!</font>")
last_message = world.time
@@ -7,8 +7,8 @@
/datum/artifact_effect/uncommon/celldrain/DoEffectTouch(mob/living/user)
if(user)
if(istype(user, /mob/living/silicon/robot))
if (user)
if (istype(user, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
for (var/obj/item/cell/D in R.contents)
D.charge = max(D.charge - rand() * 100, 0)
@@ -17,7 +17,7 @@
/datum/artifact_effect/uncommon/celldrain/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/obj/machinery/power/apc/C in range(200, T))
for (var/obj/item/cell/B in C.contents)
@@ -27,14 +27,14 @@
for (var/mob/living/silicon/robot/M in range(50, T))
for (var/obj/item/cell/D in M.contents)
D.charge = max(D.charge - 50,0)
if(world.time - last_message > 200)
if (world.time - last_message > 200)
to_chat(M, "<font color='red'>SYSTEM ALERT: Energy drain detected!</font>")
last_message = world.time
/datum/artifact_effect/uncommon/celldrain/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/obj/machinery/power/apc/C in range(200, T))
for (var/obj/item/cell/B in C.contents)
@@ -44,6 +44,6 @@
for (var/mob/living/silicon/robot/M in range(100, T))
for (var/obj/item/cell/D in M.contents)
D.charge = max(D.charge - rand() * 150,0)
if(world.time - last_message > 200)
if (world.time - last_message > 200)
to_chat(M, "<font color='red'>SYSTEM ALERT: Energy drain detected!</font>")
last_message = world.time
+4 -4
View File
@@ -13,16 +13,16 @@
/datum/artifact_effect/common/cold/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
if(holder)
if (holder)
to_chat(user, "<font color='blue'>A chill passes up your spine!</font>")
var/datum/gas_mixture/env = holder.loc.return_air()
if(env)
if (env)
env.temperature = max(env.temperature - rand(5,50), 0)
/datum/artifact_effect/common/cold/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/datum/gas_mixture/env = holder.loc.return_air()
if(env && env.temperature > target_temp)
if (env && env.temperature > target_temp)
env.temperature -= pick(0, 0, 1)
@@ -7,18 +7,18 @@
/datum/artifact_effect/uncommon/electric_field/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
var/list/nearby_mobs = list()
for(var/mob/living/L in oview(effectrange, get_turf(holder)))
if(L == user) // You're "grounded" when you contact the artifact.
for (var/mob/living/L in oview(effectrange, get_turf(holder)))
if (L == user) // You're "grounded" when you contact the artifact.
continue
if(!L.stat)
if (!L.stat)
nearby_mobs |= L
for(var/obj/machinery/light/light in range(effectrange, get_turf(holder)))
for (var/obj/machinery/light/light in range(effectrange, get_turf(holder)))
light.flicker()
for(var/mob/living/L in nearby_mobs)
if(L.isSynthetic())
for (var/mob/living/L in nearby_mobs)
if (L.isSynthetic())
to_chat(L, "<span class='danger'>ERROR: Electrical fault detected!</span>")
L.stuttering += 3
if(ishuman(L))
if (ishuman(L))
var/mob/living/carbon/human/H = L
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
H.electrocute_act(rand(25, 40), holder, H.get_siemens_coefficient_organ(affected), affected)
@@ -29,16 +29,16 @@
/datum/artifact_effect/uncommon/electric_field/DoEffectAura()
var/atom/holder = get_master_holder()
var/list/nearby_mobs = list()
for(var/mob/living/L in oview(effectrange, get_turf(holder)))
if(!L.stat)
for (var/mob/living/L in oview(effectrange, get_turf(holder)))
if (!L.stat)
nearby_mobs |= L
for(var/obj/machinery/light/light in range(effectrange, get_turf(holder)))
for (var/obj/machinery/light/light in range(effectrange, get_turf(holder)))
light.flicker()
for(var/mob/living/L in nearby_mobs)
if(L.isSynthetic())
for (var/mob/living/L in nearby_mobs)
if (L.isSynthetic())
to_chat(L, "<span class='danger'>ERROR: Electrical fault detected!</span>")
L.stuttering += 3
if(ishuman(L))
if (ishuman(L))
var/mob/living/carbon/human/H = L
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
H.electrocute_act(rand(1, 10), holder, H.get_siemens_coefficient_organ(affected), affected)
@@ -49,16 +49,16 @@
/datum/artifact_effect/uncommon/electric_field/DoEffectPulse()
var/atom/holder = get_master_holder()
var/list/nearby_mobs = list()
for(var/mob/living/L in oview(effectrange, get_turf(holder)))
if(!L.stat)
for (var/mob/living/L in oview(effectrange, get_turf(holder)))
if (!L.stat)
nearby_mobs |= L
for(var/obj/machinery/light/light in range(effectrange, get_turf(holder)))
for (var/obj/machinery/light/light in range(effectrange, get_turf(holder)))
light.flicker()
for(var/mob/living/L in nearby_mobs)
if(L.isSynthetic())
for (var/mob/living/L in nearby_mobs)
if (L.isSynthetic())
to_chat(L, "<span class='danger'>ERROR: Electrical fault detected!</span>")
L.stuttering += 3
if(ishuman(L))
if (ishuman(L))
var/mob/living/carbon/human/H = L
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
H.electrocute_act(rand(10, 30), holder, H.get_siemens_coefficient_organ(affected), affected)
+1 -1
View File
@@ -11,6 +11,6 @@
/datum/artifact_effect/rare/emp/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
empulse(T, effectrange/4, effectrange/3, effectrange/2, effectrange)
@@ -6,39 +6,39 @@
/datum/artifact_effect/rare/feysight/DoEffectTouch(mob/living/user)
if(user && isliving(user))
if (user && isliving(user))
apply_modifier(user)
/datum/artifact_effect/rare/feysight/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for(var/mob/living/L in range(src.effectrange,T))
if(prob(10))
for (var/mob/living/L in range(src.effectrange,T))
if (prob(10))
apply_modifier(L)
/datum/artifact_effect/rare/feysight/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for(var/mob/living/L in range(src.effectrange,T))
for (var/mob/living/L in range(src.effectrange,T))
apply_modifier(L)
/datum/artifact_effect/rare/feysight/proc/apply_modifier(mob/living/L)
if(!istype(L))
if (!istype(L))
return
if(!L.is_sentient())
if (!L.is_sentient())
return
if(L.add_modifier(/datum/modifier/feysight, 30 SECONDS))
if (L.add_modifier(/datum/modifier/feysight, 30 SECONDS))
to_chat(L, "<span class='alien'>An otherworldly feeling seems to enter your mind, and you feel at peace.</span>")
L.adjustHalLoss(10)
to_chat(L, "<span class='danger'>The inside of your head hurts...</span>")
return
else
if(L.has_modifier_of_type(/datum/modifier/feysight))
if (L.has_modifier_of_type(/datum/modifier/feysight))
to_chat(L, "<span class='warning'>An otherworldly feeling seems to enter your mind again, and it holds the visions in place.</span>")
else
to_chat(L, "<span class='warning'>An otherworldly feeling seems to enter your mind, and you briefly feel peace, but \
@@ -14,13 +14,13 @@
/datum/artifact_effect/uncommon/forcefield/ToggleActivate()
var/atom/holder = get_master_holder()
..()
if(created_field.len)
for(var/obj/effect/energy_field/F in created_field)
if (created_field.len)
for (var/obj/effect/energy_field/F in created_field)
created_field.Remove(F)
qdel(F)
else if(holder)
else if (holder)
var/turf/T = get_turf(holder)
while(created_field.len < 16)
while (created_field.len < 16)
var/obj/effect/energy_field/E = new (locate(T.x,T.y,T.z))
created_field.Add(E)
E.strength = 1
@@ -34,18 +34,18 @@
/datum/artifact_effect/uncommon/forcefield/process()
..()
for(var/obj/effect/energy_field/E in created_field)
if(E.strength < 1)
for (var/obj/effect/energy_field/E in created_field)
if (E.strength < 1)
E.adjust_strength(0.15, 0)
else if(E.strength < 5)
else if (E.strength < 5)
E.adjust_strength(0.25, 0)
/datum/artifact_effect/uncommon/forcefield/UpdateMove()
var/atom/holder = get_master_holder()
if(created_field.len && holder)
if (created_field.len && holder)
var/turf/T = get_turf(holder)
while(created_field.len < 16)
while (created_field.len < 16)
var/obj/effect/energy_field/E = new (locate(T.x,T.y,T))
created_field.Add(E)
E.anchored = 1
+17 -17
View File
@@ -8,37 +8,37 @@
/datum/artifact_effect/uncommon/gaia/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
to_chat(user, "<span class='alien'>You feel the presence of something long forgotten.</span>")
for(var/obj/machinery/portable_atmospherics/hydroponics/Tray in view(world.view,get_turf(holder)))
for (var/obj/machinery/portable_atmospherics/hydroponics/Tray in view(world.view,get_turf(holder)))
age_plantlife(Tray)
if(prob(30))
if (prob(30))
var/mob/living/simple_mob/animal/sif/glitterfly/G = new(get_turf(Tray))
my_glitterflies |= G
G.ai_holder.returns_home = TRUE
for(var/obj/effect/plant/P in view(world.view,get_turf(holder)))
for (var/obj/effect/plant/P in view(world.view,get_turf(holder)))
age_plantlife(P)
/datum/artifact_effect/uncommon/gaia/DoEffectAura()
var/atom/holder = get_master_holder()
for(var/obj/machinery/portable_atmospherics/hydroponics/Tray in view(effectrange,holder))
for (var/obj/machinery/portable_atmospherics/hydroponics/Tray in view(effectrange,holder))
age_plantlife(Tray)
if(prob(2))
if (prob(2))
var/mob/living/simple_mob/animal/sif/glitterfly/G = new(get_turf(Tray))
my_glitterflies |= G
G.ai_holder.returns_home = TRUE
for(var/obj/effect/plant/P in view(effectrange,get_turf(holder)))
for (var/obj/effect/plant/P in view(effectrange,get_turf(holder)))
age_plantlife(P)
/datum/artifact_effect/uncommon/gaia/DoEffectPulse()
var/atom/holder = get_master_holder()
for(var/obj/machinery/portable_atmospherics/hydroponics/Tray in view(effectrange,holder))
for (var/obj/machinery/portable_atmospherics/hydroponics/Tray in view(effectrange,holder))
age_plantlife(Tray)
if(prob(10))
if (prob(10))
var/mob/living/simple_mob/animal/sif/glitterfly/G = new(get_turf(Tray))
my_glitterflies |= G
G.ai_holder.returns_home = TRUE
for(var/obj/effect/plant/P in view(effectrange,get_turf(holder)))
for (var/obj/effect/plant/P in view(effectrange,get_turf(holder)))
age_plantlife(P)
@@ -46,28 +46,28 @@
var/atom/holder = get_master_holder()
..()
listclearnulls(my_glitterflies)
for(var/mob/living/L in my_glitterflies)
if(L.stat == DEAD)
for (var/mob/living/L in my_glitterflies)
if (L.stat == DEAD)
my_glitterflies -= L
L.ai_holder.home_turf = get_turf(holder)
/datum/artifact_effect/uncommon/gaia/proc/age_plantlife(obj/machinery/portable_atmospherics/hydroponics/Tray)
if(istype(Tray) && Tray.seed)
if (istype(Tray) && Tray.seed)
Tray.health += rand(1,3) * HYDRO_SPEED_MULTIPLIER
Tray.age += 1
if(Tray.health > 0 && Tray.dead)
if (Tray.health > 0 && Tray.dead)
Tray.dead = FALSE
Tray.check_health()
if(!Tray.dead)
if((Tray.age > Tray.seed.get_trait(TRAIT_MATURATION)) && \
if (!Tray.dead)
if ((Tray.age > Tray.seed.get_trait(TRAIT_MATURATION)) && \
((Tray.age - Tray.lastproduce) > Tray.seed.get_trait(TRAIT_PRODUCTION)) && \
(!Tray.harvest && !Tray.dead))
Tray.harvest = 1
Tray.lastproduce = Tray.age
else if(istype(Tray, /obj/effect/plant))
else if (istype(Tray, /obj/effect/plant))
var/obj/effect/plant/P = Tray
Tray = P.plant
if(Tray)
if (Tray)
age_plantlife(Tray)
P.update_icon()
@@ -11,15 +11,15 @@
/datum/artifact_effect/common/gasco2/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("carbon_dioxide", rand(2, 15))
/datum/artifact_effect/common/gasco2/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("carbon_dioxide", pick(0, 0, 0.1, rand()))
@@ -11,15 +11,15 @@
/datum/artifact_effect/common/gasnitro/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("nitrogen", rand(2, 15))
/datum/artifact_effect/common/gasnitro/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("nitrogen", pick(0, 0, 0.1, rand()))
@@ -10,15 +10,15 @@
/datum/artifact_effect/common/gasoxy/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("oxygen", rand(2, 15))
/datum/artifact_effect/common/gasoxy/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("oxygen", pick(0, 0, 0.1, rand()))
@@ -11,15 +11,15 @@
/datum/artifact_effect/uncommon/gasphoron/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("phoron", rand(2, 15))
/datum/artifact_effect/uncommon/gasphoron/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("phoron", pick(0, 0, 0.1, rand()))
@@ -10,15 +10,15 @@
/datum/artifact_effect/rare/gassleeping/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("nitrous_oxide", rand(2, 15))
/datum/artifact_effect/rare/gassleeping/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/holder_loc = holder.loc
if(istype(holder_loc))
if (istype(holder_loc))
holder_loc.assume_gas("nitrous_oxide", pick(0, 0, 0.1, rand()))
@@ -30,43 +30,43 @@
/datum/artifact_effect/common/goodfeeling/DoEffectTouch(mob/living/user)
if(user)
if (user)
if (istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(prob(50))
if(prob(75))
if (prob(50))
if (prob(75))
to_chat(H, "<b><font color='blue' size='[num2text(rand(1,5))]'>[pick(drastic_messages)]</b></font>")
else
to_chat(H, "<font color='blue'>[pick(messages)]</font>")
if(prob(50))
if (prob(50))
H.dizziness += rand(3,5)
/datum/artifact_effect/common/goodfeeling/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(5))
if(prob(75))
if (prob(5))
if (prob(75))
to_chat(H, "<font color='blue'>[pick(messages)]</font>")
else
to_chat(H, "<font color='blue' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
if(prob(5))
if (prob(5))
H.dizziness += rand(3,5)
/datum/artifact_effect/common/goodfeeling/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/human/H in range(src.effectrange,T))
if(prob(50))
if(prob(95))
if (prob(50))
if (prob(95))
to_chat(H, "<font color='blue' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
else
to_chat(H, "<font color='blue'>[pick(messages)]</font>")
if(prob(50))
if (prob(50))
H.dizziness += rand(3,5)
else if(prob(25))
else if (prob(25))
H.dizziness += rand(5,15)
@@ -10,12 +10,12 @@
/datum/artifact_effect/extreme/gravity_wave/New()
..()
effect_type = pick(EFFECT_ENERGY, EFFECT_BLUESPACE, EFFECT_PSIONIC)
switch(pick(100;1, 50;2, 25;3))
if(1) //short range
switch (pick(100;1, 50;2, 25;3))
if (1) //short range
effectrange = rand(2, 4)
if(2) //medium range
if (2) //medium range
effectrange = rand(5, 9)
if(3) //large range
if (3) //large range
effectrange = rand(9, 14)
pull_power = rand(STAGE_ONE, STAGE_FOUR)
@@ -27,7 +27,7 @@
/datum/artifact_effect/extreme/gravity_wave/DoEffectAura()
var/atom/holder = get_master_holder()
var/seconds_since_last_pull = max(0, round((last_wave_pull - world.time) / 10))
if(prob(10 + seconds_since_last_pull))
if (prob(10 + seconds_since_last_pull))
holder.visible_message("<span class='alien'>\The [holder] distorts as local gravity intensifies, and shifts toward it.</span>")
last_wave_pull = world.time
gravwave(get_turf(holder), effectrange, pull_power)
@@ -40,5 +40,5 @@
/datum/artifact_effect/extreme/gravity_wave/proc/gravwave(atom/target, pull_range = 7, pull_power = STAGE_TWO)
for(var/atom/A as anything in oview(pull_range, target))
for (var/atom/A as anything in oview(pull_range, target))
A.singularity_pull(target, pull_power)
+10 -10
View File
@@ -5,15 +5,15 @@
/datum/artifact_effect/uncommon/heal/DoEffectTouch(mob/living/user)
if(user && iscarbon(user))
if (user && iscarbon(user))
var/weakness = GetAnomalySusceptibility(user)
if(prob(weakness * 100))
if (prob(weakness * 100))
var/mob/living/carbon/C = user
to_chat(C, "<font color='blue'>You feel a soothing energy invigorate you.</font>")
if(ishuman(user))
if (ishuman(user))
var/mob/living/carbon/human/H = user
for(var/obj/item/organ/external/affecting in H.organs)
if(affecting && istype(affecting))
for (var/obj/item/organ/external/affecting in H.organs)
if (affecting && istype(affecting))
affecting.heal_damage(25 * weakness, 25 * weakness)
H.vessel.add_reagent("blood",5)
H.adjust_nutrition(50 * weakness)
@@ -31,12 +31,12 @@
/datum/artifact_effect/uncommon/heal/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/C in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if(prob(10))
if (prob(weakness * 100))
if (prob(10))
to_chat(C, "<font color='blue'>You feel a soothing energy radiating from something nearby.</font>")
C.adjustBruteLoss(-1 * weakness)
C.adjustFireLoss(-1 * weakness)
@@ -48,11 +48,11 @@
/datum/artifact_effect/uncommon/heal/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/C in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if (prob(weakness * 100))
to_chat(C, "<font color='blue'>A wave of energy invigorates you.</font>")
C.adjustBruteLoss(-5 * weakness)
C.adjustFireLoss(-5 * weakness)
+4 -4
View File
@@ -12,16 +12,16 @@
/datum/artifact_effect/common/heat/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
if(holder)
if (holder)
to_chat(user, "<font color='red'> You feel a wave of heat travel up your spine!</font>")
var/datum/gas_mixture/env = holder.loc.return_air()
if(env)
if (env)
env.temperature += rand(5,50)
/datum/artifact_effect/common/heat/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/datum/gas_mixture/env = holder.loc.return_air()
if(env && env.temperature < target_temp)
if (env && env.temperature < target_temp)
env.temperature += pick(0, 0, 1)
+7 -7
View File
@@ -5,9 +5,9 @@
/datum/artifact_effect/uncommon/hurt/DoEffectTouch(mob/living/user)
if(user)
if (user)
var/weakness = GetAnomalySusceptibility(user)
if(iscarbon(user) && prob(weakness * 100))
if (iscarbon(user) && prob(weakness * 100))
var/mob/living/carbon/C = user
to_chat(C, "<span class='danger'>A painful discharge of energy strikes you!</span>")
C.adjustOxyLoss(rand(5,25) * weakness)
@@ -24,12 +24,12 @@
/datum/artifact_effect/uncommon/hurt/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/C in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if(prob(10))
if (prob(weakness * 100))
if (prob(10))
to_chat(C, "<span class='danger'>You feel a painful force radiating from something nearby.</span>")
C.adjustBruteLoss(1 * weakness)
C.adjustFireLoss(1 * weakness)
@@ -41,11 +41,11 @@
/datum/artifact_effect/uncommon/hurt/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/C in range(effectrange, T))
var/weakness = GetAnomalySusceptibility(C)
if(prob(weakness * 100))
if (prob(weakness * 100))
to_chat(C, "<span class='danger'>A wave of painful energy strikes you!</span>")
C.adjustBruteLoss(3 * weakness)
C.adjustFireLoss(3 * weakness)
@@ -12,35 +12,35 @@
/datum/artifact_effect/rare/poltergeist/DoEffectAura()
var/atom/holder = get_master_holder()
var/mob/living/target = null
for(var/mob/living/L in oview(get_turf(holder), effectrange))
if(L.stat || !L.mind)
for (var/mob/living/L in oview(get_turf(holder), effectrange))
if (L.stat || !L.mind)
continue
if(target && get_dist(get_turf(holder), L) > get_dist(get_turf(holder), target))
if (target && get_dist(get_turf(holder), L) > get_dist(get_turf(holder), target))
continue
target = L
if(target)
if (target)
throw_at_mob(target, rand(15, 30))
/datum/artifact_effect/rare/poltergeist/DoEffectPulse()
var/atom/holder = get_master_holder()
var/mob/living/target = null
for(var/mob/living/L in oview(get_turf(holder), effectrange))
if(L.stat || !L.mind)
for (var/mob/living/L in oview(get_turf(holder), effectrange))
if (L.stat || !L.mind)
continue
if(target && get_dist(get_turf(holder), L) > get_dist(get_turf(holder), target))
if (target && get_dist(get_turf(holder), L) > get_dist(get_turf(holder), target))
continue
target = L
if(target)
if (target)
throw_at_mob(target, chargelevelmax)
/datum/artifact_effect/rare/poltergeist/proc/throw_at_mob(mob/living/target, damage = 20)
var/list/valid_targets = list()
for(var/obj/O in oview(world.view, target))
if(!O.anchored && isturf(O.loc))
for (var/obj/O in oview(world.view, target))
if (!O.anchored && isturf(O.loc))
valid_targets |= O
if(valid_targets.len)
if (valid_targets.len)
var/obj/obj_to_throw = pick(valid_targets)
obj_to_throw.visible_message("<span class='alien'>\The [obj_to_throw] levitates, before hurtling toward [target]!</span>")
obj_to_throw.throw_at(target, world.view, min(40, damage * GetAnomalySusceptibility(target)))
@@ -11,18 +11,18 @@
/datum/artifact_effect/rare/radiate/DoEffectTouch(mob/living/user)
if(user)
if (user)
user.apply_effect(radiation_amount * 5,IRRADIATE,0)
user.updatehealth()
/datum/artifact_effect/rare/radiate/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
SSradiation.flat_radiate(holder, radiation_amount, src.effectrange)
/datum/artifact_effect/rare/radiate/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
SSradiation.radiate(holder, ((radiation_amount * 25) * (sqrt(src.effectrange)))) //Need to get feedback on this
@@ -8,42 +8,42 @@
/datum/artifact_effect/extreme/resurrect/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
for(var/mob/living/L in oview(effectrange, get_turf(holder)))
for (var/mob/living/L in oview(effectrange, get_turf(holder)))
stored_life += 4 * steal_life(L)
var/turf/T = get_turf(holder)
for(var/mob/living/L in T)
if(L.stat == DEAD)
for (var/mob/living/L in T)
if (L.stat == DEAD)
give_life(L)
break
/datum/artifact_effect/extreme/resurrect/DoEffectAura()
var/atom/holder = get_master_holder()
for(var/mob/living/L in oview(effectrange, get_turf(holder)))
for (var/mob/living/L in oview(effectrange, get_turf(holder)))
stored_life += steal_life(L)
var/turf/T = get_turf(holder)
for(var/mob/living/L in T)
if(L.stat == DEAD)
for (var/mob/living/L in T)
if (L.stat == DEAD)
give_life(L)
break
/datum/artifact_effect/extreme/resurrect/DoEffectPulse()
var/atom/holder = get_master_holder()
for(var/mob/living/L in oview(effectrange, get_turf(holder)))
for (var/mob/living/L in oview(effectrange, get_turf(holder)))
stored_life += 2 * steal_life(L)
var/turf/T = get_turf(holder)
for(var/mob/living/L in T)
if(L.stat == DEAD)
for (var/mob/living/L in T)
if (L.stat == DEAD)
give_life(L)
break
/datum/artifact_effect/extreme/resurrect/proc/steal_life(mob/living/target)
var/atom/holder = get_master_holder()
if(!istype(target))
if (!istype(target))
return 0
if(target.stat != DEAD && stored_life < 200)
if (target.stat != DEAD && stored_life < 200)
holder.Beam(target, icon_state = "drain_life", time = 1 SECOND)
target.apply_damage(5, SEARING, BP_TORSO)
return 5
@@ -52,9 +52,9 @@
/datum/artifact_effect/extreme/resurrect/proc/give_life(mob/living/target)
var/atom/holder = get_master_holder()
if(!istype(target))
if (!istype(target))
return
if(target.stat == DEAD && stored_life)
if (target.stat == DEAD && stored_life)
holder.Beam(target, icon_state = "lichbeam", time = 1 SECOND)
target.adjustBruteLoss(-5)
target.adjustFireLoss(-5)
@@ -63,7 +63,7 @@
target.adjustHalLoss(-5)
target.adjustToxLoss(-5)
stored_life = max(0, stored_life - 5)
if(target.health > (target.maxHealth / 4))
if (target.health > (target.maxHealth / 4))
attempt_revive(target)
stored_life = 0
@@ -71,7 +71,7 @@
/datum/artifact_effect/extreme/resurrect/proc/attempt_revive(mob/living/L)
var/atom/holder = get_master_holder()
spawn()
if(istype(L, /mob/living/simple_mob))
if (istype(L, /mob/living/simple_mob))
var/mob/living/simple_mob/SM = L
SM.adjustBruteLoss(-40)
SM.adjustFireLoss(-40)
@@ -82,11 +82,11 @@
SM.update_icon()
SM.revive()
holder.visible_message("<span class='alien'>\The [SM]'s eyes open in a flash of light!</span>")
else if(ishuman(L))
else if (ishuman(L))
var/mob/living/carbon/human/H = L
if(!H.client && H.mind)
for(var/mob/observer/dead/ghost in player_list)
if(ghost.mind == H.mind)
if (!H.client && H.mind)
for (var/mob/observer/dead/ghost in player_list)
if (ghost.mind == H.mind)
to_chat(ghost, "<b><font color = #330033><font size = 3>An artifact is trying to \
revive you. Return to your body if you want to be resurrected!</b> \
(Verbs -> Ghost -> Re-enter corpse)</font></font>")
@@ -94,7 +94,7 @@
H.adjustBruteLoss(-40)
H.adjustFireLoss(-40)
sleep(10 SECONDS)
if(H.client)
if (H.client)
L.stat = CONSCIOUS
dead_mob_list -= H
living_mob_list += H
@@ -10,7 +10,7 @@
/datum/artifact_effect/uncommon/roboheal/DoEffectTouch(mob/living/user)
if(user)
if (user)
if (istype(user, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
to_chat(R, "<font color='blue'>Your systems report damaged components mending by themselves!</font>")
@@ -20,10 +20,10 @@
/datum/artifact_effect/uncommon/roboheal/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(world.time - last_message > 200)
if (world.time - last_message > 200)
to_chat(M, "<font color='blue'>SYSTEM ALERT: Beneficial energy field detected!</font>")
last_message = world.time
M.adjustBruteLoss(-1)
@@ -33,10 +33,10 @@
/datum/artifact_effect/uncommon/roboheal/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(world.time - last_message > 200)
if (world.time - last_message > 200)
to_chat(M, "<font color='blue'>SYSTEM ALERT: Structural damage has been repaired by energy pulse!</font>")
last_message = world.time
M.adjustBruteLoss(-10)
@@ -10,7 +10,7 @@
/datum/artifact_effect/robohurt/DoEffectTouch(mob/living/user)
if(user)
if (user)
if (istype(user, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
to_chat(R, "<font color='red'>Your systems report severe damage has been inflicted!</font>")
@@ -20,10 +20,10 @@
/datum/artifact_effect/uncommon/robohurt/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(world.time - last_message > 200)
if (world.time - last_message > 200)
to_chat(M, "<font color='red'>SYSTEM ALERT: Harmful energy field detected!</font>")
last_message = world.time
M.adjustBruteLoss(1)
@@ -33,10 +33,10 @@
/datum/artifact_effect/uncommon/robohurt/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(world.time - last_message > 200)
if (world.time - last_message > 200)
to_chat(M, "<font color='red'>SYSTEM ALERT: Structural damage inflicted by energy pulse!</font>")
last_message = world.time
M.adjustBruteLoss(10)
@@ -10,25 +10,25 @@
/datum/artifact_effect/uncommon/sleepy/DoEffectTouch(mob/living/user)
if(user)
if (user)
var/weakness = GetAnomalySusceptibility(user)
if(ishuman(user) && prob(weakness * 100))
if (ishuman(user) && prob(weakness * 100))
var/mob/living/carbon/human/H = user
to_chat(H, pick("<font color='blue'>You feel like taking a nap.</font>","<font color='blue'> You feel a yawn coming on.</font>","<font color='blue'> You feel a little tired.</font>"))
H.drowsyness = min(H.drowsyness + rand(5,25) * weakness, 50 * weakness)
H.eye_blurry = min(H.eye_blurry + rand(1,3) * weakness, 50 * weakness)
else if(isrobot(user))
else if (isrobot(user))
to_chat(user, "<font color='red'>SYSTEM ALERT: CPU cycles slowing down.</font>")
/datum/artifact_effect/uncommon/sleepy/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/human/H in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if(prob(10))
if (prob(weakness * 100))
if (prob(10))
to_chat(H, pick("<font color='blue'>You feel like taking a nap.</font>","<font color='blue'> You feel a yawn coming on.</font>","<font color='blue'> You feel a little tired.</font>"))
H.drowsyness = min(H.drowsyness + 1 * weakness, 25 * weakness)
H.eye_blurry = min(H.eye_blurry + 1 * weakness, 25 * weakness)
@@ -38,11 +38,11 @@
/datum/artifact_effect/uncommon/sleepy/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for(var/mob/living/carbon/human/H in range(src.effectrange, T))
for (var/mob/living/carbon/human/H in range(src.effectrange, T))
var/weakness = GetAnomalySusceptibility(H)
if(prob(weakness * 100))
if (prob(weakness * 100))
to_chat(H, pick("<font color='blue'>You feel like taking a nap.</font>","<font color='blue'> You feel a yawn coming on.</font>","<font color='blue'> You feel a little tired.</font>"))
H.drowsyness = min(H.drowsyness + rand(5,15) * weakness, 50 * weakness)
H.eye_blurry = min(H.eye_blurry + rand(5,15) * weakness, 50 * weakness)
+9 -9
View File
@@ -9,10 +9,10 @@
/datum/artifact_effect/uncommon/stun/DoEffectTouch(mob/living/user)
if(user && iscarbon(user))
if (user && iscarbon(user))
var/mob/living/carbon/C = user
var/susceptibility = GetAnomalySusceptibility(C)
if(prob(susceptibility * 100))
if (prob(susceptibility * 100))
to_chat(C, "<font color='red'>A powerful force overwhelms your consciousness.</font>")
C.Weaken(rand(1,10) * susceptibility)
C.stuttering += 30 * susceptibility
@@ -21,29 +21,29 @@
/datum/artifact_effect/uncommon/stun/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/C in range(src.effectrange,T))
var/susceptibility = GetAnomalySusceptibility(C)
if(prob(10 * susceptibility))
if (prob(10 * susceptibility))
to_chat(C, "<font color='red'>Your body goes numb for a moment.</font>")
C.Weaken(2)
C.stuttering += 2
if(prob(10))
if (prob(10))
C.Stun(1)
else if(prob(10))
else if (prob(10))
to_chat(C, "<font color='red'>You feel numb.</font>")
/datum/artifact_effect/uncommon/stun/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/carbon/C in range(src.effectrange,T))
var/susceptibility = GetAnomalySusceptibility(C)
if(prob(100 * susceptibility))
if (prob(100 * susceptibility))
to_chat(C, "<font color='red'>A wave of energy overwhelms your senses!</font>")
C.SetWeakened(4 * susceptibility)
C.stuttering = 4 * susceptibility
if(prob(10))
if (prob(10))
C.SetStunned(1 * susceptibility)
@@ -8,7 +8,7 @@
/datum/artifact_effect/rare/teleport/DoEffectTouch(mob/living/user)
var/atom/holder = get_master_holder()
var/weakness = GetAnomalySusceptibility(user)
if(prob(100 * weakness))
if (prob(100 * weakness))
to_chat(user, "<font color='red'>You are suddenly zapped away elsewhere!</font>")
if (user.buckled)
user.buckled.unbuckle_mob()
@@ -23,13 +23,13 @@
/datum/artifact_effect/rare/teleport/DoEffectAura()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/M in range(src.effectrange,T))
var/weakness = GetAnomalySusceptibility(M)
if(prob(100 * weakness))
if (prob(100 * weakness))
to_chat(M, "<font color='red'>You are displaced by a strange force!</font>")
if(M.buckled)
if (M.buckled)
M.buckled.unbuckle_mob()
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
@@ -42,13 +42,13 @@
/datum/artifact_effect/rare/teleport/DoEffectPulse()
var/atom/holder = get_master_holder()
if(holder)
if (holder)
var/turf/T = get_turf(holder)
for (var/mob/living/M in range(src.effectrange, T))
var/weakness = GetAnomalySusceptibility(M)
if(prob(100 * weakness))
if (prob(100 * weakness))
to_chat(M, "<font color='red'>You are displaced by a strange force!</font>")
if(M.buckled)
if (M.buckled)
M.buckled.unbuckle_mob()
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
+15 -15
View File
@@ -18,44 +18,44 @@
/datum/artifact_effect/rare/vampire/DoEffectAura()
var/atom/holder = get_master_holder()
if(nearby_mobs.len)
if (nearby_mobs.len)
nearby_mobs.Cut()
var/turf/T = get_turf(holder)
for(var/mob/living/L in oview(effectrange, T))
if(!L.stat && L.mind)
for (var/mob/living/L in oview(effectrange, T))
if (!L.stat && L.mind)
nearby_mobs |= L
if(world.time - bloodcall_interval >= last_bloodcall && LAZYLEN(nearby_mobs))
if (world.time - bloodcall_interval >= last_bloodcall && LAZYLEN(nearby_mobs))
var/mob/living/carbon/human/M = pick(nearby_mobs)
if(get_dist(M, T) <= effectrange && M.health > 20)
if (get_dist(M, T) <= effectrange && M.health > 20)
bloodcall(M)
holder.Beam(M, icon_state = "drainbeam", time = 1 SECOND)
if(world.time - last_eat >= eat_interval)
if (world.time - last_eat >= eat_interval)
var/obj/effect/decal/cleanable/blood/B = locate() in range(2,holder)
if(B)
if (B)
last_eat = world.time
B.loc = null
if(istype(B, /obj/effect/decal/cleanable/blood/drip))
if (istype(B, /obj/effect/decal/cleanable/blood/drip))
charges += 0.25
else
charges += 1
playsound(holder, 'sound/effects/splat.ogg', 50, 1, -3)
qdel(B)
if(charges >= 10)
if (charges >= 10)
charges -= 10
var/manifestation = pick(/obj/item/soulstone, /mob/living/simple_mob/faithless/cult/strong, /mob/living/simple_mob/creature/cult/strong, /mob/living/simple_mob/animal/space/bats/cult/strong)
new manifestation(pick(RANGE_TURFS(1,T)))
if(charges >= 3)
if(prob(5))
if (charges >= 3)
if (prob(5))
charges -= 1
var/spawn_type = pick(/mob/living/simple_mob/animal/space/bats, /mob/living/simple_mob/creature, /mob/living/simple_mob/faithless)
new spawn_type(pick(RANGE_TURFS(1,T)))
playsound(holder, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 50, 1, -3)
if(charges >= 1 && nearby_mobs.len && prob(15 * nearby_mobs.len))
if (charges >= 1 && nearby_mobs.len && prob(15 * nearby_mobs.len))
var/mob/living/L = pick(nearby_mobs)
holder.Beam(L, icon_state = "drainbeam", time = 1 SECOND)
L.add_modifier(/datum/modifier/agonize, 5 SECONDS)
if(charges >= 0.1)
if(prob(5))
if (charges >= 0.1)
if (prob(5))
holder.visible_message("<span class='alien'>\icon[holder] \The [holder] gleams a bloody red!</span>")
charges -= 0.1
@@ -67,7 +67,7 @@
/datum/artifact_effect/rare/vampire/proc/bloodcall(mob/living/carbon/human/M)
var/atom/holder = get_master_holder()
last_bloodcall = world.time
if(istype(M))
if (istype(M))
playsound(holder, pick('sound/hallucinations/wail.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/far_noise.ogg'), 50, 1, -3)
var/target = pick(M.organs_by_name)