Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/status_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@

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

#define STATUS_EFFECT_EXPOSED /datum/status_effect/exposed //increases incoming damage

#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
#define STATUS_EFFECT_HIVEMIND_CURSE /datum/status_effect/necropolis_curse/hivemind
#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured
Expand Down
41 changes: 41 additions & 0 deletions code/datums/status_effects/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1024,3 +1024,44 @@
/datum/status_effect/cloudstruck/Destroy()
. = ..()
QDEL_NULL(mob_overlay)

/datum/status_effect/exposed
id = "exposed"
duration = 10 SECONDS
///damage multiplier
var/power = 1.15

/datum/status_effect/exposed/on_apply()
. = ..()
if(.)
owner.add_filter("exposed", 2, list("type" = "outline", "color" = COLOR_YELLOW, "size" = 1))
if(ismegafauna(owner))
power = 1.30
duration *= 4
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
H.physiology.brute_mod *= power
H.physiology.burn_mod *= power
H.physiology.tox_mod *= power
H.physiology.oxy_mod *= power
H.physiology.clone_mod *= power
H.physiology.stamina_mod *= power
else if(isanimal(owner))
var/mob/living/simple_animal/S = owner
for(var/i in S.damage_coeff)
S.damage_coeff[i] *= power

/datum/status_effect/exposed/on_remove()
owner.remove_filter("exposed")
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
H.physiology.brute_mod /= power
H.physiology.burn_mod /= power
H.physiology.tox_mod /= power
H.physiology.oxy_mod /= power
H.physiology.clone_mod /= power
H.physiology.stamina_mod /= power
else if(isanimal(owner))
var/mob/living/simple_animal/S = owner
for(var/i in S.damage_coeff)
S.damage_coeff[i] /= power
75 changes: 70 additions & 5 deletions code/modules/clothing/glasses/_glasses.dm
Original file line number Diff line number Diff line change
Expand Up @@ -419,15 +419,29 @@
desc = "A strange eye, said to have been torn from an omniscient creature that used to roam the wastes."
icon_state = "godeye"
item_state = "godeye"
vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS
vision_flags = SEE_TURFS
darkness_view = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
resistance_flags = LAVA_PROOF | FIRE_PROOF
clothing_flags = SCAN_REAGENTS
var/obj/effect/proc_holder/expose/expose_ability

/obj/item/clothing/glasses/godeye/Initialize()
. = ..()
ADD_TRAIT(src, TRAIT_NODROP, EYE_OF_GOD_TRAIT)
expose_ability = new(expose_ability)

/obj/item/clothing/glasses/godeye/equipped(mob/living/user, slot)
. = ..()
if(ishuman(user) && slot == ITEM_SLOT_EYES)
ADD_TRAIT(src, TRAIT_NODROP, EYE_OF_GOD_TRAIT)
user.AddAbility(expose_ability)

/obj/item/clothing/glasses/godeye/dropped(mob/living/user)
. = ..()
// Behead someone, their "glasses" drop on the floor
// and thus, the god eye should no longer be sticky
REMOVE_TRAIT(src, TRAIT_NODROP, EYE_OF_GOD_TRAIT)
user.RemoveAbility(expose_ability)

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

/obj/effect/proc_holder/expose
name = "Expose"
desc = "Expose an enemy, increasing all damage dealt to them by 15% for 10 seconds, effect is magnified on megafauna."
action_background_icon_state = "bg_demon"
action_icon = 'icons/mob/actions/actions_items.dmi'
action_icon_state = "expose"
ranged_mousepointer = 'icons/effects/mouse_pointers/expose_target.dmi'
var/cooldown_time = 1 MINUTES
COOLDOWN_DECLARE(scan_cooldown)

/obj/effect/proc_holder/expose/on_lose(mob/living/user)
remove_ranged_ability()

/obj/effect/proc_holder/expose/Click(location, control, params)
. = ..()
if(!isliving(usr))
return TRUE
var/mob/living/user = usr
fire(user)

/obj/effect/proc_holder/expose/fire(mob/living/carbon/user)
if(active)
remove_ranged_ability(span_notice("You relax your god eye."))
else
add_ranged_ability(user, span_notice("You squint your god eye. <B>Left-click a creature to expose it!</B>"), TRUE)

/obj/effect/proc_holder/expose/InterceptClickOn(mob/living/caller, params, atom/target)
. = ..()
if(.)
return
if(ranged_ability_user.stat)
remove_ranged_ability()
return
if(!COOLDOWN_FINISHED(src, scan_cooldown))
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!"))
return
if(!isliving(target) || target == ranged_ability_user)
return
var/mob/living/living_target = target
living_target.apply_status_effect(STATUS_EFFECT_EXPOSED)
living_target.Jitter(5)
to_chat(living_target, span_warning("You feel the gaze of a malevolent presence focus on you!"))
ranged_ability_user.playsound_local(get_turf(ranged_ability_user), 'sound/magic/smoke.ogg', 50, TRUE)
living_target.playsound_local(get_turf(living_target), 'sound/hallucinations/i_see_you1.ogg', 50, TRUE)
to_chat(ranged_ability_user, "You glare at [living_target], exposing them!")
COOLDOWN_START(src, scan_cooldown, cooldown_time)
addtimer(CALLBACK(src, .proc/cooldown_over, ranged_ability_user), cooldown_time)
remove_ranged_ability()
return TRUE

/obj/effect/proc_holder/expose/proc/cooldown_over()
to_chat(usr, (span_notice("Your god eye is focused enough to expose again!")))

/obj/item/clothing/glasses/AltClick(mob/user)
if(glass_colour_type && ishuman(user))
var/mob/living/carbon/human/H = user
Expand Down
41 changes: 20 additions & 21 deletions code/modules/mining/lavaland/necropolis_chests.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,54 +24,52 @@
if(4)
new /obj/item/katana/cursed(src)
if(5)
new /obj/item/clothing/glasses/godeye(src)
if(6)
new /obj/item/reagent_containers/glass/bottle/potion/flight(src)
if(7)
if(6)
new /obj/item/stack/sheet/mineral/mythril(src)
if(8)
if(7)
if(prob(50))
new /obj/item/disk/design_disk/modkit_disc/resonator_blast(src)
else
new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src)
if(9)
if(8)
new /obj/item/rod_of_asclepius(src)
if(10)
if(9)
new /obj/item/organ/heart/cursed/wizard(src)
if(11)
if(10)
new /obj/item/ship_in_a_bottle(src)
if(12)
if(11)
new /obj/item/reagent_containers/glass/bottle/necropolis_seed(src)
if(13)
if(12)
new /obj/item/jacobs_ladder(src)
if(14)
if(13)
new /obj/item/nullrod/scythe/talking(src)
if(15)
if(14)
new /obj/item/nullrod/armblade(src)
if(16)
if(15)
if(prob(50))
new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src)
else
new /obj/item/disk/design_disk/modkit_disc/bounty(src)
if(17)
if(16)
new /obj/item/warp_cube/red(src)
if(18)
if(17)
new /obj/item/organ/heart/gland/heals(src)
if(19)
if(18)
new /obj/item/immortality_talisman(src)
if(20)
if(19)
new /obj/item/voodoo(src)
if(21)
if(20)
new /obj/item/reagent_containers/food/drinks/bottle/holywater/hell(src)
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor(src)
if(22)
if(21)
new /obj/item/book_of_babel(src)
if(23)
if(22)
new /obj/item/borg/upgrade/modkit/lifesteal(src)
new /obj/item/bedsheet/cult(src)
if(24)
if(23)
new /obj/item/clothing/neck/necklace/memento_mori(src)
if(25)
if(24)
new /obj/item/rune_scimmy(src)
//KA modkit design discs
/obj/item/disk/design_disk/modkit_disc
Expand Down Expand Up @@ -1126,6 +1124,7 @@
var/random_crystal = pick(choices)
new random_crystal(src)
new /obj/item/organ/vocal_cords/colossus(src)
new /obj/item/clothing/glasses/godeye(src)

/obj/structure/closet/crate/necropolis/colossus/crusher
name = "angelic colossus chest"
Expand Down
Binary file added icons/effects/mouse_pointers/expose_target.dmi
Binary file not shown.
Binary file modified icons/mob/actions/actions_items.dmi
Binary file not shown.