Files
VOREStation/code/game/objects/structures/alien/alien.dm
SatinIsle 21bf516fc0 Replicant Species
This PR makes the replicant outsider species a whitelist species after an application was made to play one as a crew member.

Added the Gamma Replicant station species, accessible via whitelist only. This species has additional weaknesses (radiation and shock). They have a few unique organs: The crew version of the rage heart can only activate once every 60 minutes (rather than every minute) but lasts for 40 seconds. The mending lungs repair a few organs very very slowly, instead of extremely quickly. The plasma sac generates plasma a little faster without added phoron.

Changed ventcrawl to specifically allow replicants to take underclothes and pocket sized items with them. I've balanced this for replicants only, but could remove the species check if wanted.

Changed alien and resin structures so that they can also be destroyed by replicants (though more slowly than aliens).

Added the user to the whitelist as approved here: https://forum.vore-station.net/viewtopic.php?f=45&t=2448&p=14179#p14179
2024-09-22 10:30:14 +01:00

101 lines
2.7 KiB
Plaintext

/obj/structure/alien //Gurg Addition, framework for alien structures.
name = "alien thing"
desc = "There's something alien about this."
icon = 'icons/mob/alien.dmi'
layer = ABOVE_JUNK_LAYER
var/health = 50
unacidable = TRUE
anchored = TRUE
/obj/structure/alien/proc/healthcheck()
if(health <=0)
set_density(0)
qdel(src)
return
/obj/structure/alien/bullet_act(var/obj/item/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
return
/obj/structure/alien/ex_act(severity)
switch(severity)
if(1.0)
health-=50
if(2.0)
health-=50
if(3.0)
if (prob(50))
health-=50
else
health-=25
healthcheck()
return
/obj/structure/alien/hitby(AM as mob|obj)
..()
visible_message("<span class='danger'>\The [src] was hit by \the [AM].</span>")
var/tforce = 0
if(ismob(AM))
tforce = 10
else
tforce = AM:throwforce
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
health = max(0, health - tforce)
healthcheck()
..()
return
/obj/structure/alien/attack_generic(var/mob/user, var/damage, var/attack_verb)
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
user.do_attack_animation(src)
health -= damage
healthcheck()
return
/obj/structure/alien/attackby(obj/item/weapon/W as obj, mob/user as mob)
user.setClickCooldown(user.get_attack_speed(W))
var/aforce = W.force
health = max(0, health - aforce)
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
visible_message("<span class='danger'>[user] attacks the [src]!</span>")
healthcheck()
..()
return
/obj/structure/alien/attack_hand()
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
if (HULK in usr.mutations)
visible_message("<span class='warning'>[usr] destroys the [name]!</span>")
health = 0
else
// Aliens can get straight through these.
if(istype(usr,/mob/living/carbon))
var/mob/living/carbon/M = usr
if(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)
visible_message ("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
health = 0
healthcheck()
return
if(locate(/obj/item/organ/internal/xenos/resinspinner/replicant) in M.internal_organs)
if(!do_after(M, 3 SECONDS))
return
visible_message ("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
health = 0
healthcheck()
return
visible_message("<span class='warning'>[usr] claws at the [name]!</span>")
health -= rand(5,10)
healthcheck()
return
/obj/structure/alien/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group) return 0
if(istype(mover) && mover.checkpass(PASSGLASS))
return !opacity
return !density