Merge pull request #8386 from Cerebulon/BuggyCode

Intentionally Introduces Massive Bugs
This commit is contained in:
Atermonera
2022-02-07 18:00:25 -08:00
committed by GitHub
28 changed files with 137 additions and 88 deletions

View File

@@ -19,8 +19,8 @@
* Resin
*/
/obj/effect/alien/resin
name = "resin"
desc = "Looks like some kind of slimy growth."
name = "magmellite coating"
desc = "Looks like some kind of crystaline growth."
icon_state = "resin"
density = 1
@@ -31,13 +31,13 @@
//var/mob/living/affecting = null
/obj/effect/alien/resin/wall
name = "resin wall"
desc = "Purple slime solidified into a wall."
name = "magmellite wall"
desc = "Matter reformed into a crystaline wall."
icon_state = "resinwall" //same as resin, but consistency ho!
/obj/effect/alien/resin/membrane
name = "resin membrane"
desc = "Purple slime just thin enough to let light pass through."
name = "magmellite pane"
desc = "Purple crystal just thin enough to let light pass through."
icon_state = "resinmembrane"
opacity = 0
health = 120
@@ -55,6 +55,7 @@
/obj/effect/alien/resin/proc/healthcheck()
if(health <=0)
density = 0
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1)
qdel(src)
return
@@ -66,7 +67,7 @@
/obj/effect/alien/resin/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)
playsound(src, 'sound/effects/glasshit.ogg', 100, 1)
user.do_attack_animation(src)
health -= damage
healthcheck()
@@ -100,7 +101,7 @@
tforce = 10
else
tforce = AM:throwforce
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
playsound(src, 'sound/effects/glasshit.ogg', 100, 1)
health = max(0, health - tforce)
healthcheck()
..()
@@ -120,7 +121,7 @@
var/mob/living/carbon/M = usr
if(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)
for(var/mob/O in oviewers(src))
O.show_message("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
O.show_message("<span class='warning'>[usr] strokes the [name] and it shifts away!</span>", 1)
health = 0
healthcheck()
return
@@ -137,7 +138,7 @@
user.setClickCooldown(user.get_attack_speed(W))
var/aforce = W.force
health = max(0, health - aforce)
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
playsound(src, 'sound/effects/glasshit.ogg', 100, 1)
healthcheck()
..()
return

View File

@@ -4,6 +4,12 @@
icon = 'icons/effects/blood.dmi'
basecolor = "#05EE05"
/obj/effect/decal/cleanable/blood/skathari
name = "skathari blood"
desc = "The unmistakable green ichor of a Skathari invader."
icon = 'icons/effects/blood.dmi'
basecolor = "#96C24A"
/obj/effect/decal/cleanable/blood/gibs/xeno
name = "xeno gibs"
desc = "Gnarly..."

View File

@@ -24,6 +24,10 @@
icon_state = "smoke"
duration = 50
/obj/effect/temp_visual/bluespace_tear
icon_state = "bs_rift"
duration = 4
/obj/effect/temp_visual/impact_effect
icon_state = "impact_bullet"
plane = PLANE_LIGHTING_ABOVE // So they're visible even in a shootout in maint.
@@ -69,4 +73,4 @@
/obj/effect/temp_visual/impact_effect/ion
icon_state = "shieldsparkles"
duration = 6
duration = 6

View File

@@ -2,7 +2,7 @@
/obj/structure/bed/nest
name = "alien nest"
desc = "It's a gruesome pile of thick, sticky resin shaped like a nest."
desc = "It's a swirling mass of crystaline material shaped like a nest."
icon = 'icons/mob/alien.dmi'
icon_state = "nest"
var/health = 100
@@ -15,9 +15,9 @@
if(buckled_mob.buckled == src)
if(buckled_mob != user)
buckled_mob.visible_message(\
"<span class='notice'>[user.name] pulls [buckled_mob.name] free from the sticky nest!</span>",\
"<span class='notice'>[user.name] pulls you free from the gelatinous resin.</span>",\
"<span class='notice'>You hear squelching...</span>")
"<span class='notice'>[user.name] pulls [buckled_mob.name] free from the ensnaring nest!</span>",\
"<span class='notice'>[user.name] pulls you free from the hooked crystals.</span>",\
"<span class='notice'>You hear cracking...</span>")
buckled_mob.pixel_y = 0
buckled_mob.old_y = 0
unbuckle_mob(buckled_mob)
@@ -26,9 +26,9 @@
return
buckled_mob.last_special = world.time
buckled_mob.visible_message(\
"<span class='warning'>[buckled_mob.name] struggles to break free of the gelatinous resin...</span>",\
"<span class='warning'>You struggle to break free from the gelatinous resin...</span>",\
"<span class='notice'>You hear squelching...</span>")
"<span class='warning'>[buckled_mob.name] struggles to break free of the ensnaring nest...</span>",\
"<span class='warning'>You struggle to break free from the hooked crystals...</span>",\
"<span class='notice'>You hear cracking...</span>")
spawn(NEST_RESIST_TIME)
if(user && buckled_mob && user.buckled == src)
buckled_mob.last_special = world.time
@@ -57,9 +57,9 @@
return
else
M.visible_message(\
"<span class='notice'>[user.name] secretes a thick vile goo, securing [M.name] into [src]!</span>",\
"<span class='warning'>[user.name] drenches you in a foul-smelling resin, trapping you in the [src]!</span>",\
"<span class='notice'>You hear squelching...</span>")
"<span class='notice'>[user.name] secretes a rapidly solidifying liquid, securing [M.name] into [src]!</span>",\
"<span class='warning'>[user.name] coats you in a crystaline substance, trapping you in the [src]!</span>",\
"<span class='notice'>You hear cracking...</span>")
M.buckled = src
M.loc = src.loc
M.set_dir(src.dir)
@@ -73,7 +73,7 @@
/obj/structure/bed/nest/attackby(obj/item/weapon/W as obj, mob/user as mob)
var/aforce = W.force
health = max(0, health - aforce)
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
playsound(src, 'sound/effects/glasshit.ogg', 100, 1)
for(var/mob/M in viewers(src, 7))
M.show_message("<span class='warning'>[user] hits [src] with [W]!</span>", 1)
healthcheck()

View File

@@ -217,6 +217,10 @@
'sound/items/pickup/generic1.ogg',
'sound/items/pickup/generic2.ogg',
'sound/items/pickup/generic3.ogg')
if ("skathari_chitter")
soundin = pick(
'sound/effects/skath_chitter1.ogg',
'sound/effects/skath_chitter2.ogg')
return soundin
//Are these even used?

View File

@@ -154,10 +154,10 @@ var/global/floorIsLava = 0
<b>Rudimentary transformation:</b><font size=2><br>These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.</font><br>
<A href='?src=\ref[src];simplemake=observer;mob=\ref[M]'>Observer</A> |
\[ Xenos: <A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Drone;mob=\ref[M]'>Drone</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Hunter;mob=\ref[M]'>Hunter</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Sentinel;mob=\ref[M]'>Sentinel</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Queen;mob=\ref[M]'>Queen</A> \] |
<A href='?src=\ref[src];simplemake=human;species=Skathari Worker;mob=\ref[M]'>Worker</A>
<A href='?src=\ref[src];simplemake=human;species=Skathari Soldier;mob=\ref[M]'>Soldier</A>
<A href='?src=\ref[src];simplemake=human;species=Skathari Guardian;mob=\ref[M]'>Gurdian</A>
<A href='?src=\ref[src];simplemake=human;species=Skathari Queen;mob=\ref[M]'>Queen</A> \] |
\[ Crew: <A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A>
<A href='?src=\ref[src];simplemake=human;species=Unathi;mob=\ref[M]'>Unathi</A>
<A href='?src=\ref[src];simplemake=human;species=Tajaran;mob=\ref[M]'>Tajaran</A>
@@ -1626,8 +1626,8 @@ var/global/floorIsLava = 0
for(var/client/C in admins)
if((R_ADMIN | R_MOD | R_EVENT) & C.holder.rights)
to_chat(C, "<span class='log_message'><span class='prefix'>FAX LOG:</span>[key_name_admin(src.owner)] has sent a fax message to [destination.department] (<a href='?_src_=holder;AdminFaxView=\ref[rcvdcopy]'>VIEW</a>)</span>")
var/plaintext_title = P.sender ? "replied to [key_name(P.sender)]'s fax" : "sent a fax message to [destination.department]"
var/plaintext_title = P.sender ? "replied to [key_name(P.sender)]'s fax" : "sent a fax message to [destination.department]"
var/fax_text = paper_html_to_plaintext(P.info)
log_game(plaintext_title)
log_game(fax_text)

View File

@@ -1,5 +1,5 @@
/datum/admin_secret_item/random_event/trigger_xenomorph_infestation
name = "Trigger a Xenomorph Infestation"
name = "Trigger a Skathari Incursion"
/datum/admin_secret_item/random_event/trigger_xenomorph_infestation/execute(var/mob/user)
. = ..()

View File

@@ -3,8 +3,8 @@ var/datum/antagonist/xenos/xenomorphs
/datum/antagonist/xenos
id = MODE_XENOMORPH
role_type = BE_ALIEN
role_text = "Xenomorph"
role_text_plural = "Xenomorphs"
role_text = "Skathari"
role_text_plural = "Skathari"
mob_path = /mob/living/carbon/alien/larva
bantype = "Xenomorph"
flags = ANTAG_OVERRIDE_MOB | ANTAG_RANDSPAWN | ANTAG_OVERRIDE_JOB | ANTAG_VOTABLE

View File

@@ -86,22 +86,22 @@
flags = RESTRICTED | HIVEMIND
/datum/language/xenocommon
name = "Xenomorph"
name = "Skathari"
colour = "alien"
desc = "The common tongue of the xenomorphs."
speech_verb = "hisses"
ask_verb = "hisses"
exclaim_verb = "hisses"
desc = "The inscrutable clicking of the Skathari."
speech_verb = "clicks"
ask_verb = "clicks"
exclaim_verb = "clicks"
key = "u"
flags = RESTRICTED
syllables = list("sss","sSs","SSS")
syllables = list("ksk","Kks","Krk")
/datum/language/xenos
name = "Hivemind"
desc = "Xenomorphs have the strange ability to commune over a psychic hivemind."
speech_verb = "hisses"
ask_verb = "hisses"
exclaim_verb = "hisses"
desc = "Skathari have the strange ability to communicate by subtle signals transmitted via bluespace."
speech_verb = "clicks"
ask_verb = "clicks"
exclaim_verb = "clicks"
colour = "alien"
key = "a"
flags = RESTRICTED | HIVEMIND

View File

@@ -55,7 +55,7 @@
/mob/living/carbon/alien/get_default_language()
if(default_language)
return default_language
return GLOB.all_languages["Xenomorph"]
return GLOB.all_languages["Skathari"]
/mob/living/carbon/alien/say_quote(var/message, var/datum/language/speaking = null)
var/verb = "hisses"

View File

@@ -1,6 +1,6 @@
/mob/living/carbon/alien/larva
name = "alien larva"
real_name = "alien larva"
name = "skathari larva"
real_name = "skathari larva"
adult_form = /mob/living/carbon/human
speak_emote = list("hisses")
icon_state = "larva"
@@ -11,5 +11,5 @@
/mob/living/carbon/alien/larva/Initialize()
. = ..()
add_language("Xenomorph") //Bonus language.
add_language("Skathari") //Bonus language.
internal_organs |= new /obj/item/organ/internal/xenos/hivenode(src)

View File

@@ -1,12 +1,12 @@
/mob/living/carbon/alien/larva/confirm_evolution()
to_chat(src, "<span class='notice'><b>You are growing into a beautiful alien! It is time to choose a caste.</b></span>")
to_chat(src, "<span class='notice'><b>You are growing into a full-fledged Skathari! It is time to choose a caste.</b></span>")
to_chat(src, "<span class='notice'>There are three to choose from:</span>")
to_chat(src, "<B>Hunters</B> <span class='notice'> are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Hunters generate plasma slowly and have low reserves.</span>")
to_chat(src, "<B>Sentinels</B> <span class='notice'> are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the hunters.</span>")
to_chat(src, "<B>Drones</B> <span class='notice'> are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded alien queen.</span>")
var/alien_caste = alert(src, "Please choose which alien caste you shall belong to.",,"Hunter","Sentinel","Drone")
return alien_caste ? "Xenomorph [alien_caste]" : null
to_chat(src, "<B>Soldiers</B> <span class='notice'> are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Soldiers generate plasma slowly and have low reserves.</span>")
to_chat(src, "<B>Guardians</B> <span class='notice'> are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the soldiers.</span>")
to_chat(src, "<B>Workers</B> <span class='notice'> are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded queen.</span>")
var/alien_caste = alert(src, "Please choose which alien caste you shall belong to.",,"Soldier","Guardian","Worker")
return alien_caste ? "Skathari [alien_caste]" : null
/mob/living/carbon/alien/larva/show_evolution_blurb()
return

View File

@@ -55,7 +55,7 @@
// Free abilities.
/mob/living/carbon/human/proc/transfer_plasma(mob/living/carbon/human/M as mob in oview())
set name = "Transfer Plasma"
set desc = "Transfer Plasma to another alien"
set desc = "Transfer Plasma to another skathari"
set category = "Abilities"
if (get_dist(src,M) <= 1)
@@ -110,7 +110,7 @@
if(check_alien_ability(500))
visible_message("<span class='alium'><B>[src] begins to twist and contort!</B></span>", "<span class='alium'>You begin to evolve!</span>")
src.set_species("Xenomorph Queen")
src.set_species("Skathari Queen")
return

View File

@@ -1,9 +1,9 @@
//Stand-in until this is made more lore-friendly.
/datum/species/xenos
name = SPECIES_XENO
name_plural = "Xenomorphs"
name_plural = "Skathari"
default_language = "Xenomorph"
default_language = "Skathari"
language = "Hivemind"
assisted_langs = list()
unarmed_types = list(/datum/unarmed_attack/claws/strong/xeno, /datum/unarmed_attack/bite/strong/xeno)
@@ -166,7 +166,7 @@
/datum/species/xenos/drone
name = SPECIES_XENO_DRONE
caste_name = "drone"
caste_name = "worker"
weeds_plasma_rate = 15
slowdown = 1
tail = "xenos_drone_tail"
@@ -207,7 +207,7 @@
/datum/species/xenos/hunter
name = SPECIES_XENO_HUNTER
weeds_plasma_rate = 5
caste_name = "hunter"
caste_name = "soldier"
slowdown = -2
total_health = 150
tail = "xenos_hunter_tail"
@@ -237,7 +237,7 @@
/datum/species/xenos/sentinel
name = SPECIES_XENO_SENTINEL
weeds_plasma_rate = 10
caste_name = "sentinel"
caste_name = "guardian"
slowdown = 0
total_health = 200
tail = "xenos_sentinel_tail"

View File

@@ -4,7 +4,7 @@
if(!target || !alien_caste) return
var/mob/living/carbon/human/new_alien = new(target)
new_alien.set_species("Xenomorph [alien_caste]")
new_alien.set_species("Skathari [alien_caste]")
return new_alien
/mob/living/carbon/human/xdrone/Initialize(var/ml)

View File

@@ -1,10 +1,12 @@
/mob/living/simple_mob/animal/space/alien
name = "alien hunter"
desc = "Hiss!"
name = "skathari soldier"
desc = "Terrible insects from beyond this galaxy!"
description_fluff = "Also know as the 'Bluespace Bugs', these insectoid invaders began to manifest suddenly around 2565 and their ravenous hunger for the very particles upon which modern FTL technology relies brought much of galactic society to a standstill. Their ravenous hunger for physical matter on the other hand, got people moving again fast - in the other direction!"
tt_desc = "X Extraneus Tarlevi"
icon = 'icons/mob/alien.dmi'
icon_state = "alienh_running"
icon_living = "alienh_running"
icon_dead = "alien_l"
icon_dead = "alien_dead"
icon_gib = "syndicate_gib"
icon_rest = "alienh_sleep"
@@ -15,33 +17,39 @@
response_help = "pokes"
response_disarm = "shoves"
response_harm = "hits"
organ_names = /decl/mob_organ_names/skathari
maxHealth = 100
health = 100
maxHealth = 120
health = 120
see_in_dark = 7
turn_sound = "skathari_chitter"
harm_intent_damage = 5
melee_damage_lower = 25
melee_damage_upper = 25
attack_armor_pen = 15 //It's a freaking alien.
attack_armor_pen = 15
attack_sharp = TRUE
attack_edge = TRUE
attacktext = list("slashed")
attack_sound = 'sound/weapons/bladeslice.ogg'
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
// meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat //Make this something special in full implementation
/mob/living/simple_mob/animal/space/alien/drone
name = "alien drone"
name = "skathari worker"
icon_state = "aliend_running"
icon_living = "aliend_running"
icon_dead = "aliend_l"
icon_rest = "aliend_sleep"
health = 60
health = 80
melee_damage_lower = 15
melee_damage_upper = 15
projectiletype = /obj/item/projectile/energy/skathari
/*
To be replaced with equivalents later
/mob/living/simple_mob/animal/space/alien/sentinel
name = "alien sentinel"
icon_state = "aliens_running"
@@ -51,8 +59,7 @@
health = 120
melee_damage_lower = 15
melee_damage_upper = 15
projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
projectilesound = 'sound/weapons/pierce.ogg'
/mob/living/simple_mob/animal/space/alien/sentinel/praetorian
name = "alien praetorian"
@@ -102,18 +109,24 @@
icon_expected_width = 64
icon_expected_height = 64
*/
/mob/living/simple_mob/animal/space/alien/queen/empress/mother
name = "alien mother"
name = "skathari tyrant"
desc = "Sweet mother of bugs!"
icon = 'icons/mob/96x96.dmi'
icon_state = "empress_s"
icon_living = "empress_s"
icon_dead = "empress_dead"
icon_rest = "empress_rest"
icon_state = "tyrant_s"
icon_living = "tyrant_s"
icon_dead = "tyrant_dead"
icon_rest = "tyrant_rest"
maxHealth = 600
health = 600
meat_amount = 10
melee_damage_lower = 15
melee_damage_upper = 25
movement_cooldown = 8
projectiletype = /obj/item/projectile/energy/skathari
pixel_x = -32
old_x = -32
@@ -122,5 +135,11 @@
/mob/living/simple_mob/animal/space/alien/death()
..()
visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...")
visible_message("[src] lets out a waning guttural screech, green ichor bubbling from its maw...")
playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
new /obj/effect/decal/cleanable/blood/skathari(src.loc)
new /obj/effect/temp_visual/bluespace_tear(src.loc)
/decl/mob_organ_names/skathari
hit_zones = list("carapace", "abdomen", "left forelegs", "right forelegs", "left hind legs", "right hind legs", "head")

View File

@@ -206,13 +206,13 @@
for(var/t in organs)
qdel(t)
var/alien_caste = pick("Hunter","Sentinel","Drone")
var/alien_caste = pick("Soldier","Guardian","Worker")
var/mob/living/carbon/human/new_xeno = create_new_xenomorph(alien_caste,loc)
new_xeno.a_intent = I_HURT
new_xeno.key = key
to_chat(new_xeno, "<B>You are now an alien.</B>")
to_chat(new_xeno, "<B>You are now a Skathari.</B>")
qdel(src)
return

View File

@@ -167,6 +167,21 @@
check_armour = "bio"
armor_penetration = 25 // It's acid-based
/obj/item/projectile/energy/skathari //Skathari equivalent of above, but less biological more... Blue.
name = "bluespace spit"
icon_state = "bluespace_small"
fire_sound = 'sound/weapons/skath_spit.ogg'
hitsound_wall = 'sound/weapons/skath_spit.ogg'
hitsound = 'sound/weapons/pierce.ogg'
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
damage = 20
damage_type = BIOACID //Still biological weirdness
agony = 20
armor_penetration = 50 // More normal armour type check (energy) but said armour less effective because bluespace shenanigans.
light_range = 2
light_power = 0.5
light_color = "#16D3F5"
/obj/item/projectile/energy/phoron
name = "phoron bolt"
icon_state = "energy"