diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index 9a10507ba39..148651cb940 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -86,15 +86,3 @@ name = "basilisk den" desc = "A den housing a nest of basilisks, bring a coat." mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk) - -/obj/structure/spawner/headcrab - name = "headcrab nest" - desc = "A living nest for headcrabs. It is moving ominously." - icon_state = "headcrab_nest" - icon = 'icons/mob/headcrab.dmi' - max_integrity = 200 - max_mobs = 15 - spawn_time = 600 - mob_types = list(/mob/living/simple_animal/hostile/headcrab, /mob/living/simple_animal/hostile/headcrab/fast, /mob/living/simple_animal/hostile/headcrab/poison) - spawn_text = "crawls out of" - faction = list("hostile") diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 11c63f0a257..47edf168a29 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -182,7 +182,6 @@ GLOBAL_LIST_EMPTY(event_last_fired) new /datum/event_meta(EVENT_LEVEL_MODERATE, "Swarmer Spawn", /datum/event/spawn_swarmer, 150, is_one_shot = TRUE), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/spawn_morph, 40, list(ASSIGNMENT_SECURITY = 10), is_one_shot = TRUE), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Disease Outbreak", /datum/event/disease_outbreak, 0, list(ASSIGNMENT_MEDICAL = 150), TRUE), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Headcrabs", /datum/event/headcrabs, 0, list(ASSIGNMENT_SECURITY = 20)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Door Runtime", /datum/event/door_runtime, 50, list(ASSIGNMENT_ENGINEER = 25, ASSIGNMENT_AI = 150), TRUE) ) diff --git a/code/modules/events/headcrabs.dm b/code/modules/events/headcrabs.dm deleted file mode 100644 index ce8cf3c5d9d..00000000000 --- a/code/modules/events/headcrabs.dm +++ /dev/null @@ -1,65 +0,0 @@ -#define HEADCRAB_NORMAL 0 -#define HEADCRAB_FASTMIX 1 -#define HEADCRAB_FAST 2 -#define HEADCRAB_POISONMIX 3 -#define HEADCRAB_POISON 4 -#define HEADCRAB_SPAWNER 5 - -/datum/event/headcrabs - announceWhen = 10 - endWhen = 11 - var/locstring - var/headcrab_type - -/datum/event/headcrabs/start() - var/list/availableareas = list() - for(var/area/maintenance/A in world) - availableareas += A - var/area/randomarea = pick(availableareas) - var/list/turf/simulated/floor/turfs = list() - for(var/turf/simulated/floor/F in randomarea) - if(turf_clear(F)) - turfs += F - var/list/spawn_types = list() - var/max_number - headcrab_type = rand(0, 5) - switch(headcrab_type) - if(HEADCRAB_NORMAL) - spawn_types = list(/mob/living/simple_animal/hostile/headcrab) - max_number = 6 - if(HEADCRAB_FASTMIX) - spawn_types = list(/mob/living/simple_animal/hostile/headcrab, /mob/living/simple_animal/hostile/headcrab/fast) - max_number = 8 - if(HEADCRAB_FAST) - spawn_types = list(/mob/living/simple_animal/hostile/headcrab/fast) - max_number = 6 - if(HEADCRAB_POISONMIX) - spawn_types = list(/mob/living/simple_animal/hostile/headcrab, /mob/living/simple_animal/hostile/headcrab/poison) - max_number = 4 - if(HEADCRAB_POISON) - spawn_types = list(/mob/living/simple_animal/hostile/headcrab/poison) - max_number = 3 - if(HEADCRAB_SPAWNER) - spawn_types = list(/obj/structure/spawner/headcrab) - max_number = 2 - - - var/num = rand(2,max_number) - - while(turfs.len > 0 && num > 0) - var/turf/simulated/floor/T = pick(turfs) - turfs.Remove(T) - num-- - var/spawn_type = pick(spawn_types) - new spawn_type(T) - - -/datum/event/headcrabs/announce() - GLOB.event_announcement.Announce("Bioscans indicate that headcrabs have been breeding on the station. Clear them out, before this starts to affect productivity", "Lifesign Alert") - -#undef HEADCRAB_NORMAL -#undef HEADCRAB_FASTMIX -#undef HEADCRAB_FAST -#undef HEADCRAB_POISONMIX -#undef HEADCRAB_POISON -#undef HEADCRAB_SPAWNER diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm deleted file mode 100644 index 8cd010d96e7..00000000000 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ /dev/null @@ -1,193 +0,0 @@ -/mob/living/simple_animal/hostile/headcrab - name = "headcrab" - desc = "A small parasitic creature that would like to connect with your brain stem." - icon = 'icons/mob/headcrab.dmi' - icon_state = "headcrab" - icon_living = "headcrab" - icon_dead = "headcrab_dead" - health = 60 - maxHealth = 60 - dodging = 1 - melee_damage_lower = 5 - melee_damage_upper = 10 - ranged = 1 - ranged_message = "leaps" - ranged_cooldown_time = 40 - var/jumpdistance = 4 - var/jumpspeed = 1 - attacktext = "bites" - attack_sound = 'sound/creatures/headcrab_attack.ogg' - speak_emote = list("hisses") - var/is_zombie = 0 - stat_attack = DEAD // Necessary for them to attack (zombify) dead humans - robust_searching = 1 - var/host_species = "" - var/list/human_overlays = list() - -/mob/living/simple_animal/hostile/headcrab/Life(seconds, times_fired) - if(..() && !stat) - if(!is_zombie && isturf(src.loc)) - for(var/mob/living/carbon/human/H in oview(src, 1)) //Only for corpse right next to/on same tile - if(H.stat == DEAD || (!H.check_death_method() && H.health <= HEALTH_THRESHOLD_DEAD)) - Zombify(H) - break - if(times_fired % 4 == 0) - for(var/mob/living/simple_animal/K in oview(src, 1)) //Only for corpse right next to/on same tile - if(K.stat == DEAD || (!K.check_death_method() && K.health <= HEALTH_THRESHOLD_DEAD)) - visible_message("[src] consumes [K] whole!") - if(health < maxHealth) - health += 10 - qdel(K) - break - -/mob/living/simple_animal/hostile/headcrab/OpenFire(atom/A) - if(check_friendly_fire) - for(var/turf/T in getline(src,A)) // Not 100% reliable but this is faster than simulating actual trajectory - for(var/mob/living/L in T) - if(L == src || L == A) - continue - if(faction_check_mob(L) && !attack_same) - return - visible_message("[src] [ranged_message] at [A]!") - throw_at(A, jumpdistance, jumpspeed, spin = FALSE, diagonals_first = TRUE) - ranged_cooldown = world.time + ranged_cooldown_time - -/mob/living/simple_animal/hostile/headcrab/proc/Zombify(mob/living/carbon/human/H) - if(!H.check_death_method()) - H.death() - var/obj/item/organ/external/head/head_organ = H.get_organ("head") - is_zombie = TRUE - if(H.wear_suit) - var/obj/item/clothing/suit/armor/A = H.wear_suit - if(A.armor && A.armor.getRating("melee")) - maxHealth += A.armor.getRating("melee") //That zombie's got armor, I want armor! - maxHealth += 200 - health = maxHealth - name = "zombie" - desc = "A corpse animated by the alien being on its head." - melee_damage_lower = 10 - melee_damage_upper = 15 - ranged = 0 - stat_attack = CONSCIOUS // Disables their targeting of dead mobs once they're already a zombie - icon = H.icon - speak = list('sound/creatures/zombie_idle1.ogg','sound/creatures/zombie_idle2.ogg','sound/creatures/zombie_idle3.ogg') - speak_chance = 50 - speak_emote = list("groans") - attacktext = "bites" - attack_sound = 'sound/creatures/zombie_attack.ogg' - icon_state = "zombie2_s" - if(head_organ && !(NO_HAIR in H.dna.species.species_traits)) - head_organ.h_style = null - H.update_hair() - host_species = H.dna.species.name - human_overlays = H.overlays - update_icons() - H.forceMove(src) - visible_message("The corpse of [H.name] suddenly rises!") - -/mob/living/simple_animal/hostile/headcrab/death() - ..() - if(is_zombie) - qdel(src) - -/mob/living/simple_animal/hostile/headcrab/handle_automated_speech() // This way they have different screams when attacking, sometimes. Might be seen as sphagetthi code though. - if(speak_chance) - if(rand(0,200) < speak_chance) - if(speak && speak.len) - playsound(get_turf(src), pick(speak), 200, 1) - -/mob/living/simple_animal/hostile/headcrab/Destroy() - if(contents) - for(var/mob/M in contents) - M.loc = get_turf(src) - return ..() - -/mob/living/simple_animal/hostile/headcrab/update_icons() - . = ..() - if(is_zombie) - overlays.Cut() - overlays = human_overlays - var/image/I = image('icons/mob/headcrab.dmi', icon_state = "headcrabpod") - if(host_species == "Vox") - I = image('icons/mob/headcrab.dmi', icon_state = "headcrabpod_vox") - else if(host_species == "Gray") - I = image('icons/mob/headcrab.dmi', icon_state = "headcrabpod_gray") - overlays += I - -/mob/living/simple_animal/hostile/headcrab/CanAttack(atom/the_target) - if(stat_attack == DEAD && isliving(the_target) && !ishuman(the_target)) - var/mob/living/L = the_target - if(L.stat == DEAD) - // Override default behavior of stat_attack, to stop headcrabs targeting dead mobs they cannot infect, such as silicons. - return FALSE - return ..() - -/mob/living/simple_animal/hostile/headcrab/fast - name = "fast headcrab" - desc = "A fast parasitic creature that would like to connect with your brain stem." - icon = 'icons/mob/headcrab.dmi' - icon_state = "fast_headcrab" - icon_living = "fast_headcrab" - icon_dead = "fast_headcrab_dead" - health = 40 - maxHealth = 40 - ranged_cooldown_time = 30 - jumpdistance = 8 - jumpspeed = 2 - speak_emote = list("screech") - -/mob/living/simple_animal/hostile/headcrab/fast/update_icons() - . = ..() - if(is_zombie) - overlays.Cut() - overlays = human_overlays - var/image/I = image('icons/mob/headcrab.dmi', icon_state = "fast_headcrabpod") - if(host_species == "Vox") - I = image('icons/mob/headcrab.dmi', icon_state = "fast_headcrabpod_vox") - else if(host_species == "Gray") - I = image('icons/mob/headcrab.dmi', icon_state = "fast_headcrabpod_gray") - overlays += I - -/mob/living/simple_animal/hostile/headcrab/fast/Zombify(mob/living/carbon/human/H) - . = ..() - speak = list('sound/creatures/fast_zombie_idle1.ogg','sound/creatures/fast_zombie_idle2.ogg','sound/creatures/fast_zombie_idle3.ogg') - -/mob/living/simple_animal/hostile/headcrab/poison - name = "poison headcrab" - desc = "A poison parasitic creature that would like to connect with your brain stem." - icon = 'icons/mob/headcrab.dmi' - icon_state = "poison_headcrab" - icon_living = "poison_headcrab" - icon_dead = "poison_headcrab_dead" - health = 80 - maxHealth = 80 - ranged_cooldown_time = 50 - jumpdistance = 3 - jumpspeed = 1 - melee_damage_lower = 8 - melee_damage_upper = 20 - attack_sound = 'sound/creatures/ph_scream1.ogg' - speak_emote = list("screech") - -/mob/living/simple_animal/hostile/headcrab/poison/update_icons() - . = ..() - if(is_zombie) - overlays.Cut() - overlays = human_overlays - var/image/I = image('icons/mob/headcrab.dmi', icon_state = "poison_headcrabpod") - if(host_species == "Vox") - I = image('icons/mob/headcrab.dmi', icon_state = "poison_headcrabpod_vox") - else if(host_species == "Gray") - I = image('icons/mob/headcrab.dmi', icon_state = "poison_headcrabpod_gray") - overlays += I - - -/mob/living/simple_animal/hostile/headcrab/poison/AttackingTarget() - . = ..() - if(iscarbon(target) && target.reagents) - var/inject_target = pick("chest", "head") - var/mob/living/carbon/C = target - if(C.stunned || C.can_inject(null, FALSE, inject_target, FALSE)) - if(C.eye_blurry < 60) - C.AdjustEyeBlurry(10) - visible_message("[src] buries its fangs deep into the [inject_target] of [target]!") diff --git a/icons/mob/headcrab.dmi b/icons/mob/headcrab.dmi deleted file mode 100644 index a1081b39835..00000000000 Binary files a/icons/mob/headcrab.dmi and /dev/null differ diff --git a/paradise.dme b/paradise.dme index 40fefea5ca3..577ea2e574d 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1477,7 +1477,6 @@ #include "code\modules\events\event_procs.dm" #include "code\modules\events\false_alarm.dm" #include "code\modules\events\floorcluwne.dm" -#include "code\modules\events\headcrabs.dm" #include "code\modules\events\immovable_rod.dm" #include "code\modules\events\infestation.dm" #include "code\modules\events\ion_storm.dm" @@ -2003,7 +2002,6 @@ #include "code\modules\mob\living\simple_animal\hostile\feral_cat.dm" #include "code\modules\mob\living\simple_animal\hostile\floorcluwne.dm" #include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" -#include "code\modules\mob\living\simple_animal\hostile\headcrab.dm" #include "code\modules\mob\living\simple_animal\hostile\headslug.dm" #include "code\modules\mob\living\simple_animal\hostile\hellhound.dm" #include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" diff --git a/sound/creatures/fast_zombie_idle1.ogg b/sound/creatures/fast_zombie_idle1.ogg deleted file mode 100644 index 373df5f68ac..00000000000 Binary files a/sound/creatures/fast_zombie_idle1.ogg and /dev/null differ diff --git a/sound/creatures/fast_zombie_idle2.ogg b/sound/creatures/fast_zombie_idle2.ogg deleted file mode 100644 index 54d7a589066..00000000000 Binary files a/sound/creatures/fast_zombie_idle2.ogg and /dev/null differ diff --git a/sound/creatures/fast_zombie_idle3.ogg b/sound/creatures/fast_zombie_idle3.ogg deleted file mode 100644 index f9f97049c9a..00000000000 Binary files a/sound/creatures/fast_zombie_idle3.ogg and /dev/null differ diff --git a/sound/creatures/headcrab_attack.ogg b/sound/creatures/headcrab_attack.ogg deleted file mode 100644 index 4f6d114aa75..00000000000 Binary files a/sound/creatures/headcrab_attack.ogg and /dev/null differ diff --git a/sound/creatures/ph_scream1.ogg b/sound/creatures/ph_scream1.ogg deleted file mode 100644 index 857cf11b0a2..00000000000 Binary files a/sound/creatures/ph_scream1.ogg and /dev/null differ diff --git a/sound/creatures/zombie_attack.ogg b/sound/creatures/zombie_attack.ogg deleted file mode 100644 index 1e9b2a63024..00000000000 Binary files a/sound/creatures/zombie_attack.ogg and /dev/null differ diff --git a/sound/creatures/zombie_idle1.ogg b/sound/creatures/zombie_idle1.ogg deleted file mode 100644 index 851c88deff4..00000000000 Binary files a/sound/creatures/zombie_idle1.ogg and /dev/null differ diff --git a/sound/creatures/zombie_idle2.ogg b/sound/creatures/zombie_idle2.ogg deleted file mode 100644 index 04e75da9b22..00000000000 Binary files a/sound/creatures/zombie_idle2.ogg and /dev/null differ diff --git a/sound/creatures/zombie_idle3.ogg b/sound/creatures/zombie_idle3.ogg deleted file mode 100644 index b4cd2600757..00000000000 Binary files a/sound/creatures/zombie_idle3.ogg and /dev/null differ