From 9424e05a6f897c2e76d5ae3f199dfba5241ac9e7 Mon Sep 17 00:00:00 2001 From: Terilia Date: Tue, 11 Jun 2019 21:23:28 +0100 Subject: [PATCH 1/8] First release --- .../powers/{headcrab.dm => headslug.dm} | 8 +- code/modules/events/headcrabs.dm | 63 ++++++++ .../living/simple_animal/hostile/headcrab.dm | 153 ++++++++---------- .../living/simple_animal/hostile/headslug.dm | 100 ++++++++++++ icons/mob/headcrab.dmi | Bin 0 -> 519 bytes icons/mob/mob.dmi | Bin 285554 -> 285554 bytes paradise.dme | 4 +- 7 files changed, 233 insertions(+), 95 deletions(-) rename code/game/gamemodes/changeling/powers/{headcrab.dm => headslug.dm} (88%) create mode 100644 code/modules/events/headcrabs.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/headslug.dm create mode 100644 icons/mob/headcrab.dmi diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/game/gamemodes/changeling/powers/headslug.dm similarity index 88% rename from code/game/gamemodes/changeling/powers/headcrab.dm rename to code/game/gamemodes/changeling/powers/headslug.dm index b39a2bba0d5..f29ec02db54 100644 --- a/code/game/gamemodes/changeling/powers/headcrab.dm +++ b/code/game/gamemodes/changeling/powers/headslug.dm @@ -1,4 +1,4 @@ -/datum/action/changeling/headcrab +/datum/action/changeling/headslug name = "Last Resort" desc = "We sacrifice our current body in a moment of need, placing us in control of a vessel that can plant our likeness in a new host. Costs 20 chemicals." helptext = "We will be placed in control of a small, fragile creature. We may attack a corpse like this to plant an egg which will slowly mature into a new form for us." @@ -7,12 +7,12 @@ dna_cost = 1 req_human = 1 -/datum/action/changeling/headcrab/try_to_sting(mob/user, mob/target) +/datum/action/changeling/headslug/try_to_sting(mob/user, mob/target) if(alert("Are you sure you wish to do this? This action cannot be undone.",,"Yes","No")=="No") return ..() -/datum/action/changeling/headcrab/sting_action(mob/user) +/datum/action/changeling/headslug/sting_action(mob/user) var/datum/mind/M = user.mind var/list/organs = user.get_organs_zone("head", 1) @@ -33,7 +33,7 @@ S.Weaken(3) var/new_location = user.drop_location() spawn(5) // So it's not killed in explosion - var/mob/living/simple_animal/hostile/headcrab/crab = new(new_location) + var/mob/living/simple_animal/hostile/headslug/crab = new(new_location) for(var/obj/item/organ/internal/I in organs) I.loc = crab crab.origin = M diff --git a/code/modules/events/headcrabs.dm b/code/modules/events/headcrabs.dm new file mode 100644 index 00000000000..58c3e918b0a --- /dev/null +++ b/code/modules/events/headcrabs.dm @@ -0,0 +1,63 @@ +#define LOC_FPMAINT 0 +#define LOC_FPMAINT1 1 + +#define HEADCRAB_NORMAL 0 +#define HEADCRAB_SPECIAL 1 +#define HEADCRAB_CLOWN 2 + +/datum/event/headcrabs + announceWhen = 10 + endWhen = 11 + var/location + var/locstring + var/headcrab + +/datum/event/headcrabs/start() + + location = rand(0,1) + var/list/turf/simulated/floor/turfs = list() + var/spawn_area_type + switch(location) + if(LOC_FPMAINT) + spawn_area_type = /area/maintenance/fpmaint2 + locstring = "Arrivals North Maintenance" + if(LOC_FPMAINT1) + spawn_area_type = /area/maintenance/fpmaint2 + locstring = "Arrivals North Maintenance" + + for(var/areapath in typesof(spawn_area_type)) + var/area/A = locate(areapath) + for(var/turf/simulated/floor/F in A.contents) + if(turf_clear(F)) + turfs += F + + var/list/spawn_types = list() + var/max_number + headcrab = rand(0,1) + switch(headcrab) + if(HEADCRAB_NORMAL) + spawn_types = list(/mob/living/simple_animal/hostile/headcrab) + max_number = 12 + if(HEADCRAB_SPECIAL) + spawn_types = list(/mob/living/simple_animal/hostile/headcrab) + max_number = 12 + + spawn(0) + 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() + event_announcement.Announce("Bioscans indicate that creatues have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Lifesign Alert") + +#undef LOC_FPMAINT +#undef LOC_FPMAINT1 + +#undef HEADCRAB_NORMAL +#undef HEADCRAB_SPECIAL +#undef HEADCRAB_CLOWN \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index c82a0ee7806..d80e6df1ef9 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -1,100 +1,73 @@ -#define EGG_INCUBATION_TIME 120 - /mob/living/simple_animal/hostile/headcrab - name = "headslug" - desc = "Absolutely not de-beaked or harmless. Keep away from corpses." + name = "headcrab" + desc = "A headcrab. Run!" + icon = 'icons/mob/headcrab.dmi' icon_state = "headcrab" icon_living = "headcrab" - icon_dead = "headcrab_dead" - icon = 'icons/mob/mob.dmi' - health = 50 - maxHealth = 50 - melee_damage_lower = 5 - melee_damage_upper = 5 - attacktext = "chomps" - attack_sound = 'sound/weapons/bite.ogg' - faction = list("creature") - robust_searching = 1 - stat_attack = 2 - obj_damage = 0 - environment_smash = 0 - speak_emote = list("squeaks") - ventcrawler = 2 - var/datum/mind/origin - var/egg_lain = 0 + health = 40 + maxHealth = 40 + melee_damage_lower = 8 + melee_damage_upper = 16 + attacktext = "bites" + attack_sound = 'sound/effects/bite.ogg' + speak_emote = list("hisses") + var/is_zombie = 0 + stat_attack = 1 //so they continue to attack when they are on the ground. + var/list/human_overlays = list() -/mob/living/simple_animal/hostile/headcrab/examine(mob/user) + +/mob/living/simple_animal/hostile/headcrab/Life(seconds, times_fired) + 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(stat == DEAD) - to_chat(desc = "It appears to be dead.") -/mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) - var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim) - egg.insert(victim) - if(origin) - egg.origin = origin - else if(mind) // Let's make this a feature - egg.origin = mind - for(var/obj/item/organ/internal/I in src) - I.loc = egg - visible_message("[src] plants something in [victim]'s flesh!", \ - "We inject our egg into [victim]'s body!") - egg_lain = 1 +/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["melee"]) + maxHealth += A.armor["melee"] //That zombie's got armor, I want armor! + maxHealth += 40 + health = maxHealth + name = "zombie" + desc = "A corpse animated by the alien being on its head." + melee_damage_lower = 10 + melee_damage_upper = 15 + icon = H.icon + speak_emote = list("groans") + attack_sound = 'sound/weapons/genhit1.ogg' + icon_state = "zombie2_s" + if(head_organ) + head_organ.h_style = null + H.update_hair() + human_overlays = H.overlays + update_icons() + H.forceMove(src) + visible_message("The corpse of [H.name] suddenly rises!") -/mob/living/simple_animal/hostile/headcrab/AttackingTarget() - if(egg_lain) - target.attack_animal(src) - return - if(iscarbon(target) && !issmall(target)) - // Changeling egg can survive in aliens! - var/mob/living/carbon/C = target - if(C.stat == DEAD) - if(C.status_flags & XENO_HOST) - to_chat(src, "A foreign presence repels us from this body. Perhaps we should try to infest another?") - return - Infect(target) - to_chat(src, "With our egg laid, our death approaches rapidly...") - spawn(100) - death() - return - target.attack_animal(src) +/mob/living/simple_animal/hostile/headcrab/death(gibbed) + // Only execute the below if we successfuly died + . = ..() + // Setup up the smoke spreader and start it. + qdel(src) -/obj/item/organ/internal/body_egg/changeling_egg - name = "changeling egg" - desc = "Twitching and disgusting." - origin_tech = "biotech=7" // You need to be really lucky to obtain it. - var/datum/mind/origin - var/time +/mob/living/simple_animal/hostile/headcrab/Destroy() + if(contents) + for(var/mob/M in contents) + M.loc = get_turf(src) + return ..() -/obj/item/organ/internal/body_egg/changeling_egg/egg_process() - // Changeling eggs grow in dead people - time++ - if(time >= EGG_INCUBATION_TIME) - Pop() - remove(owner) - qdel(src) -/obj/item/organ/internal/body_egg/changeling_egg/proc/Pop() - var/mob/living/carbon/human/monkey/M = new(owner) - owner.stomach_contents += M - - for(var/obj/item/organ/internal/I in src) - I.insert(M, 1) - - if(origin && origin.current && (origin.current.stat == DEAD)) - origin.transfer_to(M) - if(!origin.changeling) - M.make_changeling() - if(origin.changeling.can_absorb_dna(M, owner)) - origin.changeling.absorb_dna(owner, M) - - var/datum/action/changeling/humanform/HF = new - HF.Grant(M) - for(var/power in origin.changeling.purchasedpowers) - var/datum/action/changeling/S = power - if(istype(S) && S.needs_button) - S.Grant(M) - M.key = origin.key - owner.gib() - -#undef EGG_INCUBATION_TIME +/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") + overlays += I diff --git a/code/modules/mob/living/simple_animal/hostile/headslug.dm b/code/modules/mob/living/simple_animal/hostile/headslug.dm new file mode 100644 index 00000000000..e2fc98c483f --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/headslug.dm @@ -0,0 +1,100 @@ +#define EGG_INCUBATION_TIME 120 + +/mob/living/simple_animal/hostile/headslug + name = "headslug" + desc = "Absolutely not de-beaked or harmless. Keep away from corpses." + icon_state = "headslug" + icon_living = "headslug" + icon_dead = "headslug_dead" + icon = 'icons/mob/mob.dmi' + health = 50 + maxHealth = 50 + melee_damage_lower = 5 + melee_damage_upper = 5 + attacktext = "chomps" + attack_sound = 'sound/weapons/bite.ogg' + faction = list("creature") + robust_searching = 1 + stat_attack = 2 + obj_damage = 0 + environment_smash = 0 + speak_emote = list("squeaks") + ventcrawler = 2 + var/datum/mind/origin + var/egg_lain = 0 + +/mob/living/simple_animal/hostile/headslug/examine(mob/user) + ..() + if(stat == DEAD) + to_chat(desc = "It appears to be dead.") + +/mob/living/simple_animal/hostile/headslug/proc/Infect(mob/living/carbon/victim) + var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim) + egg.insert(victim) + if(origin) + egg.origin = origin + else if(mind) // Let's make this a feature + egg.origin = mind + for(var/obj/item/organ/internal/I in src) + I.loc = egg + visible_message("[src] plants something in [victim]'s flesh!", \ + "We inject our egg into [victim]'s body!") + egg_lain = 1 + +/mob/living/simple_animal/hostile/headslug/AttackingTarget() + if(egg_lain) + target.attack_animal(src) + return + if(iscarbon(target) && !issmall(target)) + // Changeling egg can survive in aliens! + var/mob/living/carbon/C = target + if(C.stat == DEAD) + if(C.status_flags & XENO_HOST) + to_chat(src, "A foreign presence repels us from this body. Perhaps we should try to infest another?") + return + Infect(target) + to_chat(src, "With our egg laid, our death approaches rapidly...") + spawn(100) + death() + return + target.attack_animal(src) + +/obj/item/organ/internal/body_egg/changeling_egg + name = "changeling egg" + desc = "Twitching and disgusting." + origin_tech = "biotech=7" // You need to be really lucky to obtain it. + var/datum/mind/origin + var/time + +/obj/item/organ/internal/body_egg/changeling_egg/egg_process() + // Changeling eggs grow in dead people + time++ + if(time >= EGG_INCUBATION_TIME) + Pop() + remove(owner) + qdel(src) + +/obj/item/organ/internal/body_egg/changeling_egg/proc/Pop() + var/mob/living/carbon/human/monkey/M = new(owner) + owner.stomach_contents += M + + for(var/obj/item/organ/internal/I in src) + I.insert(M, 1) + + if(origin && origin.current && (origin.current.stat == DEAD)) + origin.transfer_to(M) + if(!origin.changeling) + M.make_changeling() + if(origin.changeling.can_absorb_dna(M, owner)) + origin.changeling.absorb_dna(owner, M) + + var/datum/action/changeling/humanform/HF = new + HF.Grant(M) + for(var/power in origin.changeling.purchasedpowers) + var/datum/action/changeling/S = power + if(istype(S) && S.needs_button) + S.Grant(M) + M.key = origin.key + owner.gib() + +#undef EGG_INCUBATION_TIME diff --git a/icons/mob/headcrab.dmi b/icons/mob/headcrab.dmi new file mode 100644 index 0000000000000000000000000000000000000000..27d05247da4a067012f72ed60454441546b1e9e5 GIT binary patch literal 519 zcmV+i0{H!jP)`)Hvj*CbaZsg008IH_;Asms{jB10d!JMQvg8b*k%9#0CRd&Sad{Xb7OL8aCB*J zZU6vyoKseCa&`CgQ*iP1eD2$6mlmD%4!tm{6yPYUNBuB>c zB_R4qgR^snbm#$u=MBC-CPxK=ObI8J=_9DuNW#@Ma4Yer^^faE3qsJXgoMj>H##=x zRzkuxH0V}B!qqp}`u{VEmMlu~l70{^ZYGLWLc(>rXe}1!-lG5j literal 0 HcmV?d00001 diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 014242b9d90f7aab25aea42cf60229bb5e595383..ed1939270046be26c10cd358f0b9912ad8aa189c 100644 GIT binary patch delta 867 zcmV-p1DyQwwh{8S5s*-SZf5tkN2)<>OM|TTN-{3**YAPJ*noQ^5(*Ab_4L$w{nTpd zqxkLH?@!NS^ZjXlMCUbGu@;Y?9_F)7%b>(sEQ|R}p{`Uo{qX?;inaLgVLp@Ed9fCY z`K)wM8}EBmrx(QA5erha8xAmaG6HDbA_X{ite&Y7wEjpmBGJ2Z3J}lB;#WZZR^i{UXR?`lu6#1aRrcI^6GP7MG4`%{# zNWI&kWSv<=lXpeMIrF;iB++s1yvQLWNd zRpcDSVVcu^fV@C!!!&BtVHDZo)9N}kFVNc1Hqi#9$X*FfBm;rL>Ro9ju!IOOadeU?~`!?8-J4t81WYOC)P}Bc3aQcDDX%vv+$d_{v#`D430EY23O}> zv&f39m~I}<*+gZi`(;XP4{7z#Av6sFW4QDSki%otvks4G=Z3>0TCid3@Q7eAUSi)y zNC(=oUDLS>Cx&ZjFnux~TBhY=Cn84zt17P?bt%o=*?@R|>2s^?3x7nH@QN$rKm{_c zh*uzSoAi3%709u{e|{I9m`sX_zPItnf^xvU1dL#lFI>mA$W)nri#?8B3cfN= zLe!-^2b9`j=Rk8;f(BTVUuuUhlaK=DGk!n!e(jcq7l8npw`W%>y4dWh(gn|Q9Jw3HvKebwV zFaG-S_rs&ue0!K5(Roc)ti}C@yZNlsGAOYY%VIuLs4Epte|&&|VlCdio6n?nUaZAp zJ}Vv6c>4VU0NI)#961`G_c5qI2-D2Pd?wLAFV^B?wzwM&b~UwsE=PDHJ}Ra}PPFs=J%hK3<(4P$`|(D$#K zB;3|dhqWBSDtMWHBw$T8YAD(IkOLFXk`-Vi#W|I_9aYUxEh1DGH0~x5Vcmp2nzqsq z1Z}Hn*~bpQ%YJ=_(Ul?}w@{_XheaB!n1+p(zRFhFYT7}SA|Eu^w5c>$X0}V@;Y=V7 zsdqb+tTT&f@?KGK&U{^WlIS>hUT3RkGR~t{Ez?k!r=O&Mm7y+AK6ffZUH*seHq_+` z+!1|9iH{_MxqDNT5re}%Xc<4ne*w2DrBhHvP4<9HF(~3Gn@r=xfug|5eOs1`s8;E! zDsqnEFwJQ{K%StrVH!2+Fp6yPVf8vSPte-XHqi#9$esyKBm;rL>P=}Tu!IOOadeUZSS%=58bHm{gE!ePictkK5FR?Ep zqyuf)uIb!`6T`JMm_C^gEz|O`6Oki3gp<}zrPDlOeRG|-`jX(K{?=F0!Fab-s~QHgu2oE+X*uwF;1^QB6rV7 zZVVOqkXvwGGcK5Tix@%(V41x;+91npIqJF)mA$W)nri#?8B3O+MW zLe!-^2b9`j=Rk8;f(BTVUuuU>laK=ofjde0ki6&9{g7PuPYu!|9p`%7fwqhvEYPhvEYQhvEYRx8ef?kXH@Mr11a% diff --git a/paradise.dme b/paradise.dme index c49361b8e20..24320509982 100644 --- a/paradise.dme +++ b/paradise.dme @@ -477,7 +477,7 @@ #include "code\game\gamemodes\changeling\powers\epinephrine.dm" #include "code\game\gamemodes\changeling\powers\fakedeath.dm" #include "code\game\gamemodes\changeling\powers\fleshmend.dm" -#include "code\game\gamemodes\changeling\powers\headcrab.dm" +#include "code\game\gamemodes\changeling\powers\headslug.dm" #include "code\game\gamemodes\changeling\powers\hivemind.dm" #include "code\game\gamemodes\changeling\powers\humanform.dm" #include "code\game\gamemodes\changeling\powers\lesserform.dm" @@ -1436,6 +1436,7 @@ #include "code\modules\events\false_alarm.dm" #include "code\modules\events\floorcluwne.dm" #include "code\modules\events\grid_check.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" @@ -1903,6 +1904,7 @@ #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" #include "code\modules\mob\living\simple_animal\hostile\hostile.dm" From 9eb9d5a789e6f6dc4b716e55ca8ad866a4d0f27b Mon Sep 17 00:00:00 2001 From: Terilia Date: Mon, 17 Jun 2019 02:04:55 +0100 Subject: [PATCH 2/8] implemented custom sounds, and have the zombies "ocassional talk" when someone is close. --- code/modules/events/headcrabs.dm | 118 +++++++++++++++--- .../living/simple_animal/hostile/headcrab.dm | 30 +++-- icons/mob/headcrab.dmi | Bin 519 -> 1277 bytes sound/creatures/headcrab_attack.ogg | Bin 0 -> 9046 bytes sound/creatures/zombie_attack.ogg | Bin 0 -> 13614 bytes sound/creatures/zombie_idle1.ogg | Bin 0 -> 9477 bytes sound/creatures/zombie_idle2.ogg | Bin 0 -> 13044 bytes sound/creatures/zombie_idle3.ogg | Bin 0 -> 12569 bytes 8 files changed, 124 insertions(+), 24 deletions(-) create mode 100644 sound/creatures/headcrab_attack.ogg create mode 100644 sound/creatures/zombie_attack.ogg create mode 100644 sound/creatures/zombie_idle1.ogg create mode 100644 sound/creatures/zombie_idle2.ogg create mode 100644 sound/creatures/zombie_idle3.ogg diff --git a/code/modules/events/headcrabs.dm b/code/modules/events/headcrabs.dm index 58c3e918b0a..5ba28ea0c44 100644 --- a/code/modules/events/headcrabs.dm +++ b/code/modules/events/headcrabs.dm @@ -1,9 +1,27 @@ -#define LOC_FPMAINT 0 -#define LOC_FPMAINT1 1 +#define LOC_ATMOS_CONTROL 0 +#define LOC_FPMAINT 1 +#define LOC_FPMAINT2 2 +#define LOC_FSMAINT 3 +#define LOC_FSMAINT2 4 +#define LOC_ASMAINT 5 +#define LOC_ASMAINT2 6 +#define LOC_APMAINT 7 +#define LOC_MAINTCENTRAL 8 +#define LOC_FORE 9 +#define LOC_STARBOARD 10 +#define LOC_PORT 11 +#define LOC_AFT 12 +#define LOC_STORAGE 13 +#define LOC_DISPOSAL 14 +#define LOC_GENETICS 15 +#define LOC_ELECTRICAL 16 +#define LOC_ABANDONEDBAR 17 +#define LOC_ELECTRICAL_SHOP 18 +#define LOC_GAMBLING_DEN 19 #define HEADCRAB_NORMAL 0 -#define HEADCRAB_SPECIAL 1 -#define HEADCRAB_CLOWN 2 +/*#define HEADCRAB_SPECIAL 1 +#define HEADCRAB_CLOWN 2 */ //Planned for the future /datum/event/headcrabs announceWhen = 10 @@ -14,17 +32,70 @@ /datum/event/headcrabs/start() - location = rand(0,1) + location = rand(0,19) var/list/turf/simulated/floor/turfs = list() var/spawn_area_type switch(location) + if(LOC_ATMOS_CONTROL) + spawn_area_type = /area/maintenance/atmos_control + locstring = "Atmospherics Maintenance" if(LOC_FPMAINT) + spawn_area_type = /area/maintenance/fpmaint + locstring = "EVA Maintenance" + if(LOC_FPMAINT2) spawn_area_type = /area/maintenance/fpmaint2 locstring = "Arrivals North Maintenance" - if(LOC_FPMAINT1) - spawn_area_type = /area/maintenance/fpmaint2 - locstring = "Arrivals North Maintenance" - + if(LOC_FSMAINT) + spawn_area_type = /area/maintenance/fsmaint + locstring = "Dormitory Maintenance" + if(LOC_FSMAINT2) + spawn_area_type = /area/maintenance/fsmaint2 + locstring = "Bar Maintenance" + if(LOC_ASMAINT) + spawn_area_type = /area/maintenance/asmaint + locstring = "Medbay Maintenance" + if(LOC_ASMAINT2) + spawn_area_type = /area/maintenance/asmaint2 + locstring = "Science Maintenance" + if(LOC_APMAINT) + spawn_area_type = /area/maintenance/apmaint + locstring = "Cargo Maintenance" + if(LOC_MAINTCENTRAL) + spawn_area_type = /area/maintenance/maintcentral + locstring = "Bridge Maintenance" + if(LOC_FORE) + spawn_area_type = /area/maintenance/fore + locstring = "Fore Maintenance" + if(LOC_STARBOARD) + spawn_area_type = /area/maintenance/starboard + locstring = "Starboard Maintenance" + if(LOC_PORT) + spawn_area_type = /area/maintenance/port + locstring = "Locker Room Maintenance" + if(LOC_AFT) + spawn_area_type = /area/maintenance/aft + locstring = "Engineering Maintenance" + if(LOC_STORAGE) + spawn_area_type = /area/maintenance/storage + locstring = "Atmospherics Maintenance" + if(LOC_DISPOSAL) + spawn_area_type = /area/maintenance/disposal + locstring = "Waste Disposal" + if(LOC_GENETICS) + spawn_area_type = /area/maintenance/genetics + locstring = "Genetics Maintenance" + if(LOC_ELECTRICAL) + spawn_area_type = /area/maintenance/electrical + locstring = "Electrical Maintenance" + if(LOC_ABANDONEDBAR) + spawn_area_type = /area/maintenance/abandonedbar + locstring = "Maintenance Bar" + if(LOC_ELECTRICAL_SHOP) + spawn_area_type = /area/maintenance/electrical_shop + locstring ="Electronics Den" + if(LOC_GAMBLING_DEN) + spawn_area_type = /area/maintenance/gambling_den + locstring = "Gambling Den" for(var/areapath in typesof(spawn_area_type)) var/area/A = locate(areapath) for(var/turf/simulated/floor/F in A.contents) @@ -33,14 +104,11 @@ var/list/spawn_types = list() var/max_number - headcrab = rand(0,1) - switch(headcrab) + headcrab = 0 //rand(0,x) for the future + switch(headcrab) //Switch is for the future if(HEADCRAB_NORMAL) spawn_types = list(/mob/living/simple_animal/hostile/headcrab) max_number = 12 - if(HEADCRAB_SPECIAL) - spawn_types = list(/mob/living/simple_animal/hostile/headcrab) - max_number = 12 spawn(0) var/num = rand(2,max_number) @@ -55,9 +123,25 @@ /datum/event/headcrabs/announce() event_announcement.Announce("Bioscans indicate that creatues have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Lifesign Alert") +#undef LOC_ATMOS_CONTROL #undef LOC_FPMAINT -#undef LOC_FPMAINT1 +#undef LOC_FPMAINT2 +#undef LOC_FSMAINT +#undef LOC_FSMAINT2 +#undef LOC_ASMAINT +#undef LOC_ASMAINT2 +#undef LOC_APMAINT +#undef LOC_MAINTCENTRAL +#undef LOC_FORE +#undef LOC_STARBOARD +#undef LOC_PORT +#undef LOC_AFT +#undef LOC_STORAGE +#undef LOC_DISPOSAL +#undef LOC_GENETICS +#undef LOC_ELECTRICAL +#undef LOC_ABANDONEDBAR +#undef LOC_ELECTRICAL_SHOP +#undef LOC_GAMBLING_DEN #undef HEADCRAB_NORMAL -#undef HEADCRAB_SPECIAL -#undef HEADCRAB_CLOWN \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index d80e6df1ef9..e427ec03ca2 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -9,10 +9,11 @@ melee_damage_lower = 8 melee_damage_upper = 16 attacktext = "bites" - attack_sound = 'sound/effects/bite.ogg' + attack_sound = 'sound/creatures/headcrab_attack.ogg' speak_emote = list("hisses") var/is_zombie = 0 stat_attack = 1 //so they continue to attack when they are on the ground. + var/host_species = "" var/list/human_overlays = list() @@ -33,29 +34,40 @@ var/obj/item/clothing/suit/armor/A = H.wear_suit if(A.armor && A.armor["melee"]) maxHealth += A.armor["melee"] //That zombie's got armor, I want armor! - maxHealth += 40 + maxHealth += 50 health = maxHealth name = "zombie" desc = "A corpse animated by the alien being on its head." melee_damage_lower = 10 melee_damage_upper = 15 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") - attack_sound = 'sound/weapons/genhit1.ogg' + attack_sound = 'sound/creatures/zombie_attack.ogg' icon_state = "zombie2_s" if(head_organ) 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(gibbed) - // Only execute the below if we successfuly died + +/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) + var/pick = rand(0,speak.len - 1) + playsound(get_turf(),speak[pick], 200, 1) + +/mob/living/simple_animal/hostile/headcrab/death() . = ..() - // Setup up the smoke spreader and start it. - qdel(src) + icon_state = "headcrab_dead" + if(is_zombie) + qdel(src) //The headcrab would be in no "nice" shape to be ressurected or toyed with, so it gibs. /mob/living/simple_animal/hostile/headcrab/Destroy() if(contents) @@ -70,4 +82,8 @@ 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 diff --git a/icons/mob/headcrab.dmi b/icons/mob/headcrab.dmi index 27d05247da4a067012f72ed60454441546b1e9e5..4db08f13e76087ece3dc88304e79e4c723d61788 100644 GIT binary patch delta 1201 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 literal 0 HcmV?d00001 diff --git a/sound/creatures/zombie_idle2.ogg b/sound/creatures/zombie_idle2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..04e75da9b226f20b776d1e262a2b3ccd82f6b626 GIT binary patch literal 13044 zcmaia1z1&0xA3MxQW_-=k_YJqX$7Q2xBwfC@CS*A_D(D z_#Wz4OeOXU?oWYt718GkdFAS!n>Mz&}OR>Tl;>_*fGPEsBQ|+|0%mIfU}0 z{GUfWQEod;D5}Vr|1QXxNJxrGml9Fz&Hq*U(f%TO2*P!3oUJ)k;Z_iP8#C=&^biFI zFEs&LD9g+iNT+Slck&I3ph+%+Ee*4#Dj;E7atteRM1qG z6?b=ZeBl7IKw^IEG(5PtU&^2)_jx z0H6Z_tT<8mn+mogB36_vQSclQn`gpB5Ug;uRS}%er_AP#h4qDYjw4VeYxjr!#y<_tEgukYEi#x?7DO`GNc3-^g(+|l)nB$CKmf=lARkMr zP(wOcLp}V3QT2#jjYQxJpR9(aiWXShjdVO`hAqGvpdQBk)vmr+3AulLH z|Ea%xSI&|3mURdUki#I7vE?=S0(zenjz0ta? z(P6NbeXthq_7Tuh(2=VFa%|EH|DS59mjwIYtCV#g8z2SBve$*W*M(75ov|0rj&&>H zJ^<9IlsbDioL}CRzt>d^tnzM8`V*9gPm~G&r39qf0YHj}y4!`iAC!hV#{^tJ$5njB zRb>Vg1yUmaa|yh)7myM9Ov@zO0BpXP7q?;w0MSzBVn4?FO9_17ZSFcGZ7l70ScD*L zBd3HkeWD{wGo7WmBqjY;gZ3j-YoIQn1F79PsbgubBMNwFh`&8=;&iNvl5ud1YAb`F zhw26RoXvO|R>_<$I9G2hZL_$U6zqj1q_Z?MYyQRek6Dx$XN+`+du4gr8*qFXEeS95F1f33J6E}U(EwQh)akR92ScaDheR(BFT#^V94m|Xz0;>d>0 zEZ0hrr*?>jY5j+Y1a(Cy;;%=6N`+X&NMlmnI!R~>d;nSmdc}V#?kD5uU79cdQAZD{ z)rgtE`h}N6gHK#bQ%lFgK`+^T;eCkFtozE0@5)T12}S6CH>`hq4gfk$@U2fKm__jP zW&}Nx!TGD;e|e4zX>Tlbe=MU?Eu+df`|uIJ>M{Qp5?M8V6%8_@FJ$f$a1i>l!GFfgrXq$p9>8YHiWUku!jz)0YCsxA5Rx0d_LlV?S zpqnx313Vkl>WU&o85$!Z*fhZdJeZk5L{J2^#t5{RI(SHWBO_=`niT*b?I_?+hLzt! z79e5)R-G9~RG*aEqqPLlfypNby%cN&Dc&m{SpOgk8*{DVq`^cIz% z)=Z;-nwyrI7EDi5OV0zQcdn%~?W+VrHB{!vw6q$v=1v{7l6=3qX&LFj=FYYB$o&jv zLcX5)ex*cWo|$q7p)aOkFW$Sau-c^A*ya_Nrm>cmmXtO+lvY+4=JvfA>?Quf`(;?kCif!gZy%CgKsY7^kQVu1Zm{CPZD|o@Y8k-Ch7(6^JTM(VnA6-$1#+ok$<|c2yM(+IF@T zJs@!=1f`NT(BFfAreQDOK?IsrkN#uDif&!IN_xb!S-HRrXv7Vh zX?BVrz;3u102VQ@fNHe+vVts>IBfhDw@d^;Kru$}gp!(t^K4~2#)fvMfH_VfB{KB@ zH(6x<5di|gzday8WQ!WvWVlBCS7P#CJ)Hj!6D44tbypkQt$Qf%WB<*{<%n*%)iHoM7RE$7HCjgf1gWuE^}*I*ty^slm;|1*4rKv*u(joz}*^SFfo|Q zC4iX!jwKL-G;Y(o1a+iEf}%kJZcX*JheMAP*X_gff9E1|LC{3ekWrXnn=yajfj$4% z&uGuB`xJoyJOFT+wcUkI_d&Wdf|HbjW8g$)oOjj3MdWK>PpP^orxJJ&q#EjW+ZkpN zYO0y$iaed=3EGORv9HJB^-3`Z_W1 z9lSfe!LH*rXaG@gA71QRT|8ov(!e}3Q9#$wv=1u)FEX&QfH-`}g9m9MQ3TP1F+{O<fK`+L zLLh(<+1`|nW&{kH%2*xe3pQpkclb|cB$!H+y; zWu%ADdV9iM-CSJZPIhn?cNZsT2WNLDXE!HDM>j_&XLq=R3kd#0{YBM0{vdcQ12@x` zZxYqMp}Ef6mVxK0W&c?2;3hl!p%Ji7^XX>vp^D$NKO$X^!oA)8g(TD{OEDpT5BN+{{!C}!azMgo1XcLcmPHJ z{Rm>TqH=yCjH7GE9cVdQj0n8RWW@ESxT)%sNl3Ppgugmk;N1;s(kzZ~XI_)0ErC zzcn`3HGbDsGxzAvP@ce=pWG08oD+h-*RxQQxf7LwO8K>m>MY~2hU$F`@%($VB$PV8 zo{K3PHmX-cfj-o%z9rqW>{y*px4!pruyrN-*(xg=3iQ@HU$zw}FhPo@4jfC=7EXk8 z0xVaabvhe@%nlz6+Ual%)=|6<3W7~juEawcRV+=yjuDA}I8!f+e~7FSAhhlsvPN8G zO-U&Rnak`C<~uP21N9OuWIz0HNPyOqrKVN?erE(_^mUI+pAz=9b{^l1TV{R5bdYbnMwp!8rAHB<+WLo6i?h#e6^${V{sV1B`0;95&>rxFus6VpYSZjNVo?^L{sqE!e)|O772~=4*9aO z<!y76e4>y^AGb?+A?Zk~1Ul@wqE*MH*1JK6WWnKk!3NXK=r~EmNJ*!lbQP(#sZ+HGG_O zziw^a@;N60u@uoY<`h%;q#MH_z-^uVygZE$=&CphkDIv;tdq8!`a<+k@YuMO=I)>EZXmu zeAZ;};18{Me+r5ZSu(c7J}_}}ABoNu2u}Kn&Q6&mlollO-GULT3Fj*RZK{@g{Yz?0 zJb<=jsrZy|jv#Ogar46G5IgQzT2%gRD3z)9U)7mp(elRk_k3Q#>)iCB9_U+1GSDen zaaf)UuP{(|O(l?ItUZY6$+>;dX9^Pd%{I)` zRNzIwOlOIkwk(mR!)O0>Q+n=XO2Q)Mx9{Gne#fUb+$=@MmI`~?wO6$cmPI*~{Mh7A zQtj)Pzj1w;tTO6?J72MN^3ebEPNf|`2uZR5fa~oguU)!9Vam;;5(}QMObHeZym(3E z;x(w6e+BF0(b+9nKcMwPhB0!WI|=vTo8x7Bn@t|NIq`2OQT>BVPZza*MWL;2^{xC= zIkFg^qEi^}<8S`ecchJqC3{%g>S_-J#!-qUsdfVo=oA2nizV*&-g_bWMmtJh>}lB> zd$7)EtH_cySMG?wQUp`jw)A5ep#ySnoe2x%7;@D0FanlY8sNX z=tH%-!dhb?6#V}B2in#9KnNolJRsu&b^ePa)z&k z0X(xUdo49BN;2NR^Xk-uevKtLGO&}YE69fHb}NKrpGvR!Fx+$pkv~f3px8`vJw7TA z^Sm4tyijfv_W#0C)H-iCSd)H^gFf3JpdvRc@5TUm>cte}F;vGEA~}IeOV0G*q=~+l z=3%fxX8DVJdgmx#+$v1k<|W;qPWI$acTF(JpVQ)Ik$MDE3i3E$StE7Wj=+d?;u?}s z8gxk(5wo9fnzG-FI-m5Z5!3gHq$0G^3^l>=yKXE(=&a&{2b=>Pe=SCNqRWS9 zSo6U1^V!L_SL*}uCcD`Zb7HCGQO&jse2Vuw`3tui@x-W9F0;B4CalCV9{BcD9xiLI z?lY{I!h|NTyiJX^UB=ZvJNVQ#yjLd!b$A=tqR(A46As@Yu(;emyV7OuXk&~sITs@N zyYr1g|7Bk?M*I)@rMFRfezKkmdTTUFvwZ6%O{G?4hO+a&x86eTHuv+hsd(Fu&#jK` zi#{2o;ZE``Tw!$hDacuX;%sOvD+!d-DI7ChT_^!Nqv?z;8AB3PN{GL$ zU4erTGcDTik!JyrioK#e$NRL-bXFk$*<|&RVIlT2%UyXtN)*7jWQqIOuVD4yzVH%j$QnLSEcKQRLkT>SoS&7F z2omy8mQej#XCw1{_}hnqsraoob!nUn=6nK4JlOBb5q=d`vffG#FJ}%!e3(bO5*AuEov%#;}^-YP_w->X;`6)f|D9gR96*0^nHS zb9qD}k$>*V?*jWz_xF0f6M8-%2M(24v{Q`LK58p8-oNa_CFsqxOn*Ues3|u!N_C)@ zxQ9=uRqKa$at9xjXF=fbvw7ytjXx#2%wptw9Eco|lt%Cx7%ZKJD(LSmU5?!|U~mJ9 z1A<ebDrd)M?=i*3+z}fLGdfs7WS!q)cw^vk;Yuk^!@7Wzmj!^ zzx+Xay7Pdv=zo$(&0m9qb*UaUr_DsN4M{nwZc|B)v*yMd_b5oLiM1 zT{$M#Q*#G_3J7)wW`~{rd%YpF68HSwu3I$mJe=1=0(&IUz3T{n^VmFALEvJU3=1xp zws;kUaQ$$P*Pi0n}>W?07mI2zgi465+ z*{Be)w5rH^!?)amv>*J3v!nYL3o9C(a>D{^_ri+x)P>F&3|>|5oAM4-UB;MI2)oG_ zTQH8y4i+yMa;REG9n<5y#`{vxLXN$h-9$0bjEN-rN$D5O17oOB zH4s05WD>B>tD)}~p`IDBwBoI5pzG1}&#k}UjD9uADPLKh!FU2I#0zdfwYKe=sCD5R z3fH6FmZ~32T-wffBCl8-sKJh*~W>yMPtm19#i)E4#2OrVB z7WT@;#x>gV{UU&xEM>L9Hxf^29}RljowI)}wkcIby-Mo$ zy4)T((W@v76khdY${-mkn=C$CA~5b4-F}A29huFRoVFc^p@IhZfqCK3W`8B|mae3( z&rc>C7ee{`D)fMoj9Uwp8u-1~)l|8qdfMo?CnP#$pQSd%X&GAPwHcrwHaF>($j#EW zxPC9d;b)4BweA<3Xq)F!(}&n9y8+pm$s3ni*T&_is?Dg(<;Ge?2Y-ZMpD;i#Ob8r~ z@A)jTn;j>s`4#bWTjzwiol)#ono?#%B+-|Xm#%AH8%#!(NUmwv4}NqZUoSm(js zm)%(hc4BjG=-i=d$0ieen0D*i#etb!2iA;QZ0m!$gT{ww;zd>Z!Y&jP-$oZqMHRlC zEw=q3k(x@xL<3rj!Gv^J$0K%D{^kw1RnYLiTn}K9`UL>I$WQ|W6nSK=BW%rot*u?W z-k`K0Frc$e=2HC~$^NR}P`#aq&|0U}0nby7kD`qa|0AnIzsGO83OzC*XuD@W6!MJq zijGte6%&o?YvsaWAioTC4_haAPl5bcp#A=>-fnL#klej`YwFJ6?hbeMaCL{fx%s;} zyL!5NdAfMHySll%d%AhTeS&>ng@=QoqifId;Eb*Nhv9ERat1CAXB9_2Z7~agEeH#_ zWVw8Lo+6JfV}Wv?j1$E7!mg8Pim>bh_3EA0LM52McBr6J89KCCTEKWPy}|6|so@*c zKc8NRK8iKj51O@k{Dpj$Pwr&2>yR+@`!w~<@`2vA1?7F$3%WOs zr0@$RZa_2C42q;_EkJj7<<-@){3zd=fwb?3jn%-19G;QiQ%qi73l!?HRhBC>Wcl|g z*I4v=3tD|V`gB6DM=J8Tbc;{p@(LeUE8Hq_T-0p3yAwn3r3#9WFa3l5rzjG|O9_9n z*B5#uF8$d)4JhdvE@Y8qKc_&d<3&jY2h*S`;8pT-CKo(tL9KSfSzgwSeq&K&u zKdNbl*a~CWDA<%V@Of{TtrKvcobVx3-+DL7R)IdpTXgP(w6K;^$OK-~UOA0>8P`lf z{vog%_LDnk3kB5Wuf^=FM*KDZy_lo8>e-qG?-@;JK&lSa0=!HIFA3h=yCYz?vIuVt zTOgv}yGXqXtXhX}a47MY()%(51T&MZl;We96^bi_7*y%Uk9W$7MI*QS6 zeBT&6FCvu++~cccl+Pn+d-zPZDx~YW3A~y(=o1VPx$YbhFb)S)72a!;OJn8?n<8lf z+~c_E4Y_I>hqkA$udhD(@!vFOr!Z{}RZzp3VEvd}eAeeiH(wkL3VoUPik3c#+hhvP z0H12m)291RRBFPCefh0A9&k)k&D2RN*tgkW`>~*b_Va7Vk|sU3`r=YPWcx5q%8Siy ztc}P5m^URv()42H!d!d2`*5>1!R+r_W!7-7kmN(7YVLlxDRiTjf zrN8O5!*R!;JoV}r9cz`0$mPAcWcud5oD(T-`2I>pc(StSkH~rwS`@#&rLI6ps`nw8 zcCiETaJ?DHoe4A>VahqAMH5*bX5wVD*6K33SY z{Yxpo-$zq~d2G@p(yZ0E9nbLg{)+p|NPT-*kmI}=q4G>AOXY%)B6&DfDBWIgRAV%2 z!C0AQnetO+)YsWWHs;vRByArq^5R0!ctld_t?Ba;aXEyj7+ zUlVf!4tFnp?JV?b`V6EE#8|eBrir!vl2R7)F+Ix#k4h4pWw_}=zrBb0?ltsJO*h?i z|FmRYPA3D@yUqD(4t|Z4{fxR#$?&X}u(N_wLgAf$^qpC(@tV~Fb1W5@6^u#6F6Ifw z^6Zjs^_)Hh5Xf`&T#cQp;~So9Asyz+#6a-H2N-nOeBccY=pp;eH?`t!Q1jCtTcziT zch%3oNvB`T|Lm}W3ci;xc+^fDSa+Sjq$)^?4~b-zn5H|a$FVN08)z7};w23Y6N2V3Jri8C9E2w0Z%xJpzS`B=21_1n# z&kXJn+NF_?oIE?$@jG$c8|`8FqA#u2K5v*LuDL=X?^}EEVFVKz(;FDu=M$9$Z{$5~ zQ;2?n|F(^FgNY`mU{k09mF-J7yN-s)2e`B+3qs{C7#o_Lk6W8*t*x%q4%J#G6)>%| zD@MjBfWpL%o?Gcs``<+j@e~bN*0MFSUCS^o9URCt!-+}m6NX0+t_5B~<=-5e$YW7< zHL5B2Mg*9I!{?P2`Kp$(MYIVBZndfP~Rq0ff_sqSKyt32F)_yqnFsQDqHbXo{BzurT z)5u6ha7A5x%+3qGA8ATIq*8@eyW#tz^Uu*~?$W(g1LiM!4<`fDc+S;+q*oEf*+p;B zqjIBU6)&NKNva9g*wu|Z!osJd#^#~h{6jI6d&;k`{ z;jHM9a@zIo6Ly-=-ri5|GOR}u8;#$9(MnYV%-$Tr5B zCGste)RR|bhBhBdBO>Y77mF@x?RtA zD-;#BcUV~r&#`$&h zK>J6=^6IIQ4_S9o3aP+z30RnOOD(5uD)$X5S?UhLh973vg?)gBYurySI+5#sY2*H| zP=-lOc>ON&dJh4DKbz8u7xooY)!ntNFsB+mW-RR!d+HPp@W|w9roZBT zvPi9W_Bw_K6(rg8vx*m$@w3qtv^MG|Q(!_OJp)7u5Deg_WJb~y4w5c@okdv})-P=S zBdIsg^i|ok>4uc8hKi!P?DH}j z(x~>ORx$KY>~dNZwym?YSYk_jUy8Xbv%@7~^}Hr2g{xgyvp-VP4gQ2;J;5Ioa?9s- z?0pIz;|N;TZN~G#&%=p{7T2XuKQ!+{*tyoG@UjX==Z^-ej&T8WqbFiF73_}eks%h8 zGi4Q3^%v7b3xh}RT0Ura!*D$onU3;(vq#JWaKJNG@K2}41-Xf~~#K_s(J!Wd|eslpQTCyFOY70ycbIy>kuN7B0ppNC?L;z80!f?wsCfRx!&l4RqJ zcf*3eSKsZu3D=gG(F)bE3->CjaUie!c30a8>c_mk@3Vq`flrZ6*u0cIagAo-rpy2i4m3Q?+L|BuS)%nu?3+ZS{FA9(MzU;>;et2 z=r2My6$OU8Zc|XH&{?{K1ve3#!Cx}AUZ|61AvH>u{W8bJ30_H(haCHxSQ-_mZno>+ z=uIdD%6b~&mm~btH|dyJiEh%ah#8>!E)C~(veq%QII`_^=kX{&A^W^iwM^( zdCf=MI?45qIry!;a{IeY;c~vwa}urBV*7PIyPX$6OEJw+_fTJRltH{viC6i&jkQw# z!QB<+y0Z5Ny1$>99ej@d*4!8&DHR-mZj5|6_+Fd9g5K3k`4<`x@jMWnnkZlrhLkqI z*bYk}kE{?Szj6^>u}!0A%C2vST&<^Jnu#oDI}Xqis>NK0h_PrEpl$kd&?~R8qXG6_>aw~H?%aE(yH&WU= z^~A6yheCeh)5Y_s^~;yc78u)%3$}QG8eQI?>55t3iyKLPM>%0DMVy0E3Fn`57yJsQWj%pfub(;%5UHui!hux+SCxnj=&Ay%luqR(KT(ktL zBCua2<(^z%qU)6%dN;m2pYXq!hMt?WzQtHCVTtsCH(sxaUB08`XRgHz*l4f+A%^#x zr}J^b%7Q&(<8e(S85Ust7EI3C9vcc4ZrrqCtH#Dk`qOdIpKbXIpf8q-1fIdqY|ry`3C3z-$mN zcsSwT(;cW|PZYpAl2;&7;9C>tu6D=r53i5@=^SRtBau4Gk-T%3VRv$ O=YZWr5&Yoyw)`KfLsmlo literal 0 HcmV?d00001 diff --git a/sound/creatures/zombie_idle3.ogg b/sound/creatures/zombie_idle3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b4cd26007570f1c45d133296bd15682c124ec8e9 GIT binary patch literal 12569 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 Date: Mon, 17 Jun 2019 02:08:45 +0100 Subject: [PATCH 3/8] Reduced maximal number of possible headcrabs to 0. Flavour text. --- code/modules/events/headcrabs.dm | 2 +- code/modules/mob/living/simple_animal/hostile/headcrab.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/events/headcrabs.dm b/code/modules/events/headcrabs.dm index 5ba28ea0c44..5f7d78acf9e 100644 --- a/code/modules/events/headcrabs.dm +++ b/code/modules/events/headcrabs.dm @@ -108,7 +108,7 @@ switch(headcrab) //Switch is for the future if(HEADCRAB_NORMAL) spawn_types = list(/mob/living/simple_animal/hostile/headcrab) - max_number = 12 + max_number = 6 spawn(0) var/num = rand(2,max_number) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index e427ec03ca2..ff73c0d3a8c 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -1,6 +1,6 @@ /mob/living/simple_animal/hostile/headcrab name = "headcrab" - desc = "A headcrab. Run!" + 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" From b79a3f45469b060f20edb758df3e90fc7006e8fc Mon Sep 17 00:00:00 2001 From: Terilia Date: Mon, 17 Jun 2019 02:39:04 +0100 Subject: [PATCH 4/8] Fixed a small bug, and chose pick instead of rand. Also dead headcrabs won't take over people now. --- .../living/simple_animal/hostile/headcrab.dm | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index ff73c0d3a8c..6d7e228000e 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -4,6 +4,7 @@ icon = 'icons/mob/headcrab.dmi' icon_state = "headcrab" icon_living = "headcrab" + icon_dead = "headcrab_dead" health = 40 maxHealth = 40 melee_damage_lower = 8 @@ -16,9 +17,8 @@ var/host_species = "" var/list/human_overlays = list() - /mob/living/simple_animal/hostile/headcrab/Life(seconds, times_fired) - if(!is_zombie && isturf(src.loc)) + if(!is_zombie && isturf(src.loc) && stat != DEAD) 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) @@ -55,19 +55,17 @@ 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) - var/pick = rand(0,speak.len - 1) - playsound(get_turf(),speak[pick], 200, 1) - -/mob/living/simple_animal/hostile/headcrab/death() - . = ..() - icon_state = "headcrab_dead" - if(is_zombie) - qdel(src) //The headcrab would be in no "nice" shape to be ressurected or toyed with, so it gibs. + playsound(get_turf(src), pick(speak), 200, 1) /mob/living/simple_animal/hostile/headcrab/Destroy() if(contents) From 8abf6f8985498a37abe68dc2772c8824497f0877 Mon Sep 17 00:00:00 2001 From: xerdies Date: Mon, 17 Jun 2019 23:54:19 +0100 Subject: [PATCH 5/8] Typo fix --- code/modules/events/headcrabs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/headcrabs.dm b/code/modules/events/headcrabs.dm index 5f7d78acf9e..6feef7c96bc 100644 --- a/code/modules/events/headcrabs.dm +++ b/code/modules/events/headcrabs.dm @@ -121,7 +121,7 @@ /datum/event/headcrabs/announce() - event_announcement.Announce("Bioscans indicate that creatues have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Lifesign Alert") + event_announcement.Announce("Bioscans indicate that creatures have been breeding in [locstring]. Clear them out, before this starts to affect productivity", "Lifesign Alert") #undef LOC_ATMOS_CONTROL #undef LOC_FPMAINT From 16ed53dd82db7d03354645508d4f94926d2090fa Mon Sep 17 00:00:00 2001 From: Terilia Date: Tue, 18 Jun 2019 21:19:46 +0100 Subject: [PATCH 6/8] Small ballancing update --- code/modules/mob/living/simple_animal/hostile/headcrab.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 6d7e228000e..ffa4a66a660 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -7,8 +7,8 @@ icon_dead = "headcrab_dead" health = 40 maxHealth = 40 - melee_damage_lower = 8 - melee_damage_upper = 16 + melee_damage_lower = 5 + melee_damage_upper = 10 attacktext = "bites" attack_sound = 'sound/creatures/headcrab_attack.ogg' speak_emote = list("hisses") @@ -44,6 +44,7 @@ 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) From b11e7808b297f6c70dec3f006abcc70fe2944c2c Mon Sep 17 00:00:00 2001 From: Terilia Date: Tue, 13 Aug 2019 14:38:48 +0100 Subject: [PATCH 7/8] Headcrabs can now leap at people. --- .../living/simple_animal/hostile/headcrab.dm | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index ffa4a66a660..1cc33b657d7 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -9,6 +9,11 @@ maxHealth = 40 melee_damage_lower = 5 melee_damage_upper = 10 + ranged = 1 + ranged_message = "leaps" + ranged_cooldown_time = 30 + var/jumpdistance = 5 + var/jumpspeed = 1 attacktext = "bites" attack_sound = 'sound/creatures/headcrab_attack.ogg' speak_emote = list("hisses") @@ -25,6 +30,20 @@ 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(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 + AttackingTarget() //To bite them on contact - if succesfull. + /mob/living/simple_animal/hostile/headcrab/proc/Zombify(mob/living/carbon/human/H) if(!H.check_death_method()) H.death() @@ -40,6 +59,7 @@ desc = "A corpse animated by the alien being on its head." melee_damage_lower = 10 melee_damage_upper = 15 + ranged = 0 icon = H.icon speak = list('sound/creatures/zombie_idle1.ogg','sound/creatures/zombie_idle2.ogg','sound/creatures/zombie_idle3.ogg') speak_chance = 50 From a13422878794c137e4b88ce8e45698dd01bc5178 Mon Sep 17 00:00:00 2001 From: Terilia Date: Thu, 15 Aug 2019 12:24:28 +0100 Subject: [PATCH 8/8] removes unneeded spawn and nerfs headcrabs a little. --- code/modules/events/headcrabs.dm | 15 +++++++-------- .../mob/living/simple_animal/hostile/headcrab.dm | 6 ++---- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/code/modules/events/headcrabs.dm b/code/modules/events/headcrabs.dm index 6feef7c96bc..3c02212a40f 100644 --- a/code/modules/events/headcrabs.dm +++ b/code/modules/events/headcrabs.dm @@ -110,14 +110,13 @@ spawn_types = list(/mob/living/simple_animal/hostile/headcrab) max_number = 6 - spawn(0) - 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) + 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() diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 1cc33b657d7..1ef6f06259f 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -11,8 +11,8 @@ melee_damage_upper = 10 ranged = 1 ranged_message = "leaps" - ranged_cooldown_time = 30 - var/jumpdistance = 5 + ranged_cooldown_time = 40 + var/jumpdistance = 4 var/jumpspeed = 1 attacktext = "bites" attack_sound = 'sound/creatures/headcrab_attack.ogg' @@ -39,10 +39,8 @@ if(faction_check(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 - AttackingTarget() //To bite them on contact - if succesfull. /mob/living/simple_animal/hostile/headcrab/proc/Zombify(mob/living/carbon/human/H) if(!H.check_death_method())