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
7 changes: 7 additions & 0 deletions code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#define MUTATE /datum/mutation/human/bad_dna
#define COUGH /datum/mutation/human/cough
#define DWARFISM /datum/mutation/human/dwarfism
#define GIGANTISM /datum/mutation/human/gigantism
#define CLOWNMUT /datum/mutation/human/clumsy
#define TOURETTES /datum/mutation/human/tourettes
#define DEAFMUT /datum/mutation/human/deaf
Expand All @@ -30,6 +31,7 @@
#define ELVIS /datum/mutation/human/elvis
#define RADIOACTIVE /datum/mutation/human/radioactive
#define GLOWY /datum/mutation/human/glow
#define ANTIGLOWY /datum/mutation/human/glow/anti
#define TELEPATHY /datum/mutation/human/telepathy
#define FIREBREATH /datum/mutation/human/firebreath
#define VOID /datum/mutation/human/void
Expand All @@ -42,10 +44,15 @@
#define INSULATED /datum/mutation/human/insulated
#define SHOCKTOUCH /datum/mutation/human/shock
#define OLFACTION /datum/mutation/human/olfaction
#define ACIDFLESH /datum/mutation/human/acidflesh
#define BADBLINK /datum/mutation/human/badblink
#define SPASTIC /datum/mutation/human/spastic
#define EXTRASTUN /datum/mutation/human/extrastun
#define GELADIKINESIS /datum/mutation/human/geladikinesis
#define CRYOKINESIS /datum/mutation/human/cryokinesis



#define UI_CHANGED "ui changed"
#define UE_CHANGED "ue changed"

Expand Down
4 changes: 4 additions & 0 deletions code/datums/mutations/_combined.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@
/datum/generecipe/shock
required = "/datum/mutation/human/insulated; /datum/mutation/human/radioactive"
result = SHOCKTOUCH

/datum/generecipe/antiglow
required = "/datum/mutatin/human/glow; /datum/mutation/human/void"
result = ANTIGLOWY
71 changes: 59 additions & 12 deletions code/datums/mutations/body.dm
Original file line number Diff line number Diff line change
Expand Up @@ -86,21 +86,20 @@
quality = POSITIVE
difficulty = 16
instability = 5
conflicts = list(GIGANTISM)
locked = TRUE // Default intert species for now, so locked from regular pool.

/datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
owner.resize = 0.8
owner.update_transform()
owner.transform = owner.transform.Scale(1, 0.8)
owner.pass_flags |= PASSTABLE
owner.visible_message("<span class='danger'>[owner] suddenly shrinks!</span>", "<span class='notice'>Everything around you seems to grow..</span>")

/datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner)
if(..())
return
owner.resize = 1.25
owner.update_transform()
owner.transform = owner.transform.Scale(1, 1.25)
owner.pass_flags &= ~PASSTABLE
owner.visible_message("<span class='danger'>[owner] suddenly grows!</span>", "<span class='notice'>Everything around you seems to shrink..</span>")

Expand Down Expand Up @@ -189,23 +188,37 @@
text_gain_indication = "<span class='notice'>Your skin begins to glow softly.</span>"
instability = 5
var/obj/effect/dummy/luminescent_glow/glowth //shamelessly copied from luminescents
var/glow = 1.5
var/glow = 2.5
var/range = 2.5
power_coeff = 1
conflicts = list(/datum/mutation/human/glow/anti)

/datum/mutation/human/glow/on_acquiring(mob/living/carbon/human/owner)
if(..())
. = ..()
if(.)
return
glowth = new(owner)
glowth.set_light(glow, glow, dna.features["mcolor"])
modify()

/datum/mutation/human/glow/modify(mob/living/carbon/human/owner)
if(glowth)
glowth.set_light(glow + GET_MUTATION_POWER(src) , glow + GET_MUTATION_POWER(src), dna.features["mcolor"])
/datum/mutation/human/glow/modify()
if(!glowth)
return
var/power = GET_MUTATION_POWER(src)
glowth.set_light(range * power, glow * power, dna.features["mcolor"])

/datum/mutation/human/glow/on_losing(mob/living/carbon/human/owner)
if(..())
. = ..()
if(.)
return
qdel(glowth)
QDEL_NULL(glowth)

/datum/mutation/human/glow/anti
name = "Anti-Glow"
desc = "Your skin seems to attract and absorb nearby light creating 'darkness' around you."
text_gain_indication = "<span class='notice'>Your light around you seems to disappear.</span>"
glow = -3.5 //Slightly stronger, since negating light tends to be harder than making it.
conflicts = list(/datum/mutation/human/glow)
locked = TRUE

/datum/mutation/human/strong
name = "Strength"
Expand Down Expand Up @@ -328,3 +341,37 @@
owner.update_transform()
owner.visible_message("<span class='danger'>[owner] suddenly shrinks!</span>", "<span class='notice'>Everything around you seems to grow..</span>")

/datum/mutation/human/spastic
name = "Spastic"
desc = "Subject suffers from muscle spasms."
quality = NEGATIVE
text_gain_indication = "<span class='warning'>You flinch.</span>"
text_lose_indication = "<span class'notice'>Your flinching subsides.</span>"
difficulty = 16

/datum/mutation/human/spastic/on_acquiring()
if(..())
return
owner.apply_status_effect(STATUS_EFFECT_SPASMS)

/datum/mutation/human/spastic/on_losing()
if(..())
return
owner.remove_status_effect(STATUS_EFFECT_SPASMS)

/datum/mutation/human/extrastun
name = "Two Left Feet"
desc = "A mutation that replaces the right foot with another left foot. It makes standing up after getting knocked down very difficult."
quality = NEGATIVE
text_gain_indication = "<span class='warning'>Your right foot feels... left.</span>"
text_lose_indication = "<span class'notice'>Your right foot feels alright.</span>"
difficulty = 16
var/stun_cooldown = 0

/datum/mutation/human/extrastun/on_life()
if(world.time > stun_cooldown)
if(owner.AmountKnockdown() || owner.AmountStun())
owner.SetKnockdown(owner.AmountKnockdown()*2)
owner.SetStun(owner.AmountStun()*2)
owner.visible_message("<span class='danger'>[owner] tries to stand up, but trips!</span>", "<span class='userdanger'>You trip over your own feet!</span>")
stun_cooldown = world.time + 300
76 changes: 66 additions & 10 deletions code/game/objects/items/dna_injector.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,12 @@
log_combat(user, target, "attempted to inject", src)

if(target != user)
target.visible_message("<span class='danger'>[user] is trying to inject [target] with [src]!</span>", "<span class='userdanger'>[user] is trying to inject [target] with [src]!</span>")
target.visible_message("<span class='danger'>[user] is trying to inject [target] with [src]!</span>", \
"<span class='userdanger'>[user] is trying to inject you with [src]!</span>")
if(!do_mob(user, target) || used)
return
target.visible_message("<span class='danger'>[user] injects [target] with the syringe with [src]!", \
"<span class='userdanger'>[user] injects [target] with the syringe with [src]!</span>")
"<span class='userdanger'>[user] injects you with the syringe with [src]!</span>")

else
to_chat(user, "<span class='notice'>You inject yourself with [src].</span>")
Expand All @@ -88,6 +89,11 @@
name = "\improper DNA injector (Hulk)"
desc = "This will make you big and strong, but give you a bad skin condition."
add_mutations = list(HULK)

/obj/item/dnainjector/firebreath
name = "\improper DNA injector (Fire Breath)"
desc = "Restores the dragon ancestry."
add_mutations = list(FIREBREATH)

/obj/item/dnainjector/xraymut
name = "\improper DNA injector (X-ray)"
Expand All @@ -98,7 +104,7 @@
name = "\improper DNA injector (Anti-X-ray)"
desc = "It will make you see harder."
remove_mutations = list(XRAY)

/////////////////////////////////////
/obj/item/dnainjector/antiglasses
name = "\improper DNA injector (Anti-Glasses)"
Expand Down Expand Up @@ -164,11 +170,6 @@
name = "\improper DNA injector (Stutt.)"
desc = "Makes you s-s-stuttterrr."
add_mutations = list(NERVOUS)

/obj/item/dnainjector/firebreath
name = "\improper DNA injector (Fire Breath)"
desc = "Restores the dragon ancestry."
add_mutations = list(FIREBREATH)

/obj/item/dnainjector/antistutt
name = "\improper DNA injector (Anti-Stutt.)"
Expand Down Expand Up @@ -364,10 +365,50 @@
name = "\improper DNA injector (Anti-Shock Touch)"
remove_mutations = list(SHOCKTOUCH)

/obj/item/dnainjector/spacialinstability
name = "\improper DNA injector (Spacial Instability)"
add_mutations = list(BADBLINK)

/obj/item/dnainjector/antispacialinstability
name = "\improper DNA injector (Anti-Spacial Instability)"
remove_mutations = list(BADBLINK)

/obj/item/dnainjector/acidflesh
name = "\improper DNA injector (Acid Flesh)"
add_mutations = list(ACIDFLESH)

/obj/item/dnainjector/antiacidflesh
name = "\improper DNA injector (Acid Flesh)"
remove_mutations = list(ACIDFLESH)

/obj/item/dnainjector/gigantism
name = "\improper DNA injector (Gigantism)"
add_mutations = list(GIGANTISM)

/obj/item/dnainjector/antigigantism
name = "\improper DNA injector (Anti-Gigantism)"
remove_mutations = list(GIGANTISM)

/obj/item/dnainjector/spastic
name = "\improper DNA injector (Spastic)"
add_mutations = list(SPASTIC)

/obj/item/dnainjector/antispastic
name = "\improper DNA injector (Anti-Spastic)"
remove_mutations = list(SPASTIC)

/obj/item/dnainjector/twoleftfeet
name = "\improper DNA injector (Two Left Feet)"
add_mutations = list(EXTRASTUN)

/obj/item/dnainjector/antitwoleftfeet
name = "\improper DNA injector (Anti-Two Left Feet)"
remove_mutations = list(EXTRASTUN)

/obj/item/dnainjector/geladikinesis
name = "\improper DNA injector (Geladikinesis)"
add_mutations = list(GELADIKINESIS)

/obj/item/dnainjector/antigeladikinesis
name = "\improper DNA injector (Anti-Geladikinesis)"
remove_mutations = list(GELADIKINESIS)
Expand All @@ -388,6 +429,22 @@
name = "\improper DNA injector (Anti-Thermal Vision)"
remove_mutations = list(THERMAL)

/obj/item/dnainjector/glow
name = "\improper DNA injector (Glowy)"
add_mutations = list(GLOWY)

/obj/item/dnainjector/removeglow
name = "\improper DNA injector (Anti-Glowy)"
remove_mutations = list(GLOWY)

/obj/item/dnainjector/antiglow
name = "\improper DNA injector (Antiglowy)"
add_mutations = list(ANTIGLOWY)

/obj/item/dnainjector/removeantiglow
name = "\improper DNA injector (Anti-Antiglowy)"
remove_mutations = list(ANTIGLOWY)

/obj/item/dnainjector/timed
var/duration = 600

Expand Down Expand Up @@ -480,4 +537,3 @@
log_attack("[log_msg] [loc_name(user)]")
return TRUE
return FALSE