Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 0dad638

Browse files
committed
TGS Test merge #12459
2 parents db388fc + 738f059 commit 0dad638

6 files changed

Lines changed: 133 additions & 26 deletions

File tree

code/__DEFINES/status_effects.dm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@
8484

8585
#define STATUS_EFFECT_BLOODLETTING /datum/status_effect/saw_bleed/bloodletting //same but smaller
8686

87+
#define STATUS_EFFECT_EXPOSED /datum/status_effect/exposed //increases incoming damage
88+
8789
#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
8890
#define STATUS_EFFECT_HIVEMIND_CURSE /datum/status_effect/necropolis_curse/hivemind
8991
#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured

code/datums/status_effects/debuffs.dm

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,3 +1024,44 @@
10241024
/datum/status_effect/cloudstruck/Destroy()
10251025
. = ..()
10261026
QDEL_NULL(mob_overlay)
1027+
1028+
/datum/status_effect/exposed
1029+
id = "exposed"
1030+
duration = 10 SECONDS
1031+
///damage multiplier
1032+
var/power = 1.15
1033+
1034+
/datum/status_effect/exposed/on_apply()
1035+
. = ..()
1036+
if(.)
1037+
owner.add_filter("exposed", 2, list("type" = "outline", "color" = COLOR_YELLOW, "size" = 1))
1038+
if(ismegafauna(owner))
1039+
power = 1.30
1040+
duration *= 4
1041+
if(ishuman(owner))
1042+
var/mob/living/carbon/human/H = owner
1043+
H.physiology.brute_mod *= power
1044+
H.physiology.burn_mod *= power
1045+
H.physiology.tox_mod *= power
1046+
H.physiology.oxy_mod *= power
1047+
H.physiology.clone_mod *= power
1048+
H.physiology.stamina_mod *= power
1049+
else if(isanimal(owner))
1050+
var/mob/living/simple_animal/S = owner
1051+
for(var/i in S.damage_coeff)
1052+
S.damage_coeff[i] *= power
1053+
1054+
/datum/status_effect/exposed/on_remove()
1055+
owner.remove_filter("exposed")
1056+
if(ishuman(owner))
1057+
var/mob/living/carbon/human/H = owner
1058+
H.physiology.brute_mod /= power
1059+
H.physiology.burn_mod /= power
1060+
H.physiology.tox_mod /= power
1061+
H.physiology.oxy_mod /= power
1062+
H.physiology.clone_mod /= power
1063+
H.physiology.stamina_mod /= power
1064+
else if(isanimal(owner))
1065+
var/mob/living/simple_animal/S = owner
1066+
for(var/i in S.damage_coeff)
1067+
S.damage_coeff[i] /= power

code/modules/clothing/glasses/_glasses.dm

Lines changed: 70 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -419,15 +419,29 @@
419419
desc = "A strange eye, said to have been torn from an omniscient creature that used to roam the wastes."
420420
icon_state = "godeye"
421421
item_state = "godeye"
422-
vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS
422+
vision_flags = SEE_TURFS
423423
darkness_view = 8
424424
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
425425
resistance_flags = LAVA_PROOF | FIRE_PROOF
426426
clothing_flags = SCAN_REAGENTS
427+
var/obj/effect/proc_holder/expose/expose_ability
427428

428429
/obj/item/clothing/glasses/godeye/Initialize()
429430
. = ..()
430-
ADD_TRAIT(src, TRAIT_NODROP, EYE_OF_GOD_TRAIT)
431+
expose_ability = new(expose_ability)
432+
433+
/obj/item/clothing/glasses/godeye/equipped(mob/living/user, slot)
434+
. = ..()
435+
if(ishuman(user) && slot == ITEM_SLOT_EYES)
436+
ADD_TRAIT(src, TRAIT_NODROP, EYE_OF_GOD_TRAIT)
437+
user.AddAbility(expose_ability)
438+
439+
/obj/item/clothing/glasses/godeye/dropped(mob/living/user)
440+
. = ..()
441+
// Behead someone, their "glasses" drop on the floor
442+
// and thus, the god eye should no longer be sticky
443+
REMOVE_TRAIT(src, TRAIT_NODROP, EYE_OF_GOD_TRAIT)
444+
user.RemoveAbility(expose_ability)
431445

432446
/obj/item/clothing/glasses/godeye/attackby(obj/item/W as obj, mob/user as mob, params)
433447
if(istype(W, src) && W != src && W.loc == user)
@@ -438,11 +452,62 @@
438452
if(iscarbon(user))
439453
var/mob/living/carbon/C = user
440454
C.update_inv_wear_mask()
441-
else
442-
to_chat(user, span_notice("The eye winks at you and vanishes into the abyss, you feel really unlucky."))
443-
qdel(src)
455+
qdel(src)
444456
..()
445457

458+
/obj/effect/proc_holder/expose
459+
name = "Expose"
460+
desc = "Expose an enemy, increasing all damage dealt to them by 15% for 10 seconds, effect is magnified on megafauna."
461+
action_background_icon_state = "bg_demon"
462+
action_icon = 'icons/mob/actions/actions_items.dmi'
463+
action_icon_state = "expose"
464+
ranged_mousepointer = 'icons/effects/mouse_pointers/expose_target.dmi'
465+
var/cooldown_time = 1 MINUTES
466+
COOLDOWN_DECLARE(scan_cooldown)
467+
468+
/obj/effect/proc_holder/expose/on_lose(mob/living/user)
469+
remove_ranged_ability()
470+
471+
/obj/effect/proc_holder/expose/Click(location, control, params)
472+
. = ..()
473+
if(!isliving(usr))
474+
return TRUE
475+
var/mob/living/user = usr
476+
fire(user)
477+
478+
/obj/effect/proc_holder/expose/fire(mob/living/carbon/user)
479+
if(active)
480+
remove_ranged_ability(span_notice("You relax your god eye."))
481+
else
482+
add_ranged_ability(user, span_notice("You squint your god eye. <B>Left-click a creature to expose it!</B>"), TRUE)
483+
484+
/obj/effect/proc_holder/expose/InterceptClickOn(mob/living/caller, params, atom/target)
485+
. = ..()
486+
if(.)
487+
return
488+
if(ranged_ability_user.stat)
489+
remove_ranged_ability()
490+
return
491+
if(!COOLDOWN_FINISHED(src, scan_cooldown))
492+
to_chat(ranged_ability_user, span_warning("You try to focus your god eye, but it's too tired. Give it some time to recharge!"))
493+
return
494+
if(!isliving(target) || target == ranged_ability_user)
495+
return
496+
var/mob/living/living_target = target
497+
living_target.apply_status_effect(STATUS_EFFECT_EXPOSED)
498+
living_target.Jitter(5)
499+
to_chat(living_target, span_warning("You feel the gaze of a malevolent presence focus on you!"))
500+
ranged_ability_user.playsound_local(get_turf(ranged_ability_user), 'sound/magic/smoke.ogg', 50, TRUE)
501+
living_target.playsound_local(get_turf(living_target), 'sound/hallucinations/i_see_you1.ogg', 50, TRUE)
502+
to_chat(ranged_ability_user, "You glare at [living_target], exposing them!")
503+
COOLDOWN_START(src, scan_cooldown, cooldown_time)
504+
addtimer(CALLBACK(src, .proc/cooldown_over, ranged_ability_user), cooldown_time)
505+
remove_ranged_ability()
506+
return TRUE
507+
508+
/obj/effect/proc_holder/expose/proc/cooldown_over()
509+
to_chat(usr, (span_notice("Your god eye is focused enough to expose again!")))
510+
446511
/obj/item/clothing/glasses/AltClick(mob/user)
447512
if(glass_colour_type && ishuman(user))
448513
var/mob/living/carbon/human/H = user

code/modules/mining/lavaland/necropolis_chests.dm

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,54 +24,52 @@
2424
if(4)
2525
new /obj/item/katana/cursed(src)
2626
if(5)
27-
new /obj/item/clothing/glasses/godeye(src)
28-
if(6)
2927
new /obj/item/reagent_containers/glass/bottle/potion/flight(src)
30-
if(7)
28+
if(6)
3129
new /obj/item/stack/sheet/mineral/mythril(src)
32-
if(8)
30+
if(7)
3331
if(prob(50))
3432
new /obj/item/disk/design_disk/modkit_disc/resonator_blast(src)
3533
else
3634
new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src)
37-
if(9)
35+
if(8)
3836
new /obj/item/rod_of_asclepius(src)
39-
if(10)
37+
if(9)
4038
new /obj/item/organ/heart/cursed/wizard(src)
41-
if(11)
39+
if(10)
4240
new /obj/item/ship_in_a_bottle(src)
43-
if(12)
41+
if(11)
4442
new /obj/item/reagent_containers/glass/bottle/necropolis_seed(src)
45-
if(13)
43+
if(12)
4644
new /obj/item/jacobs_ladder(src)
47-
if(14)
45+
if(13)
4846
new /obj/item/nullrod/scythe/talking(src)
49-
if(15)
47+
if(14)
5048
new /obj/item/nullrod/armblade(src)
51-
if(16)
49+
if(15)
5250
if(prob(50))
5351
new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src)
5452
else
5553
new /obj/item/disk/design_disk/modkit_disc/bounty(src)
56-
if(17)
54+
if(16)
5755
new /obj/item/warp_cube/red(src)
58-
if(18)
56+
if(17)
5957
new /obj/item/organ/heart/gland/heals(src)
60-
if(19)
58+
if(18)
6159
new /obj/item/immortality_talisman(src)
62-
if(20)
60+
if(19)
6361
new /obj/item/voodoo(src)
64-
if(21)
62+
if(20)
6563
new /obj/item/reagent_containers/food/drinks/bottle/holywater/hell(src)
6664
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor(src)
67-
if(22)
65+
if(21)
6866
new /obj/item/book_of_babel(src)
69-
if(23)
67+
if(22)
7068
new /obj/item/borg/upgrade/modkit/lifesteal(src)
7169
new /obj/item/bedsheet/cult(src)
72-
if(24)
70+
if(23)
7371
new /obj/item/clothing/neck/necklace/memento_mori(src)
74-
if(25)
72+
if(24)
7573
new /obj/item/rune_scimmy(src)
7674
//KA modkit design discs
7775
/obj/item/disk/design_disk/modkit_disc
@@ -1126,6 +1124,7 @@
11261124
var/random_crystal = pick(choices)
11271125
new random_crystal(src)
11281126
new /obj/item/organ/vocal_cords/colossus(src)
1127+
new /obj/item/clothing/glasses/godeye(src)
11291128

11301129
/obj/structure/closet/crate/necropolis/colossus/crusher
11311130
name = "angelic colossus chest"
761 Bytes
Binary file not shown.
1.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)