diff --git a/_maps/RandomRuins/SpaceRuins/derelict6.dmm b/_maps/RandomRuins/SpaceRuins/derelict6.dmm index f668ba03751..21992059183 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict6.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict6.dmm @@ -86,7 +86,7 @@ /turf/open/floor/iron/airless, /area/ruin/space/has_grav) "ax" = ( -/mob/living/simple_animal/hostile/retaliate/ghost, +/mob/living/basic/ghost, /turf/open/floor/iron/airless, /area/ruin/space/has_grav) "az" = ( @@ -251,7 +251,7 @@ /turf/template_noop, /area/template_noop) "ba" = ( -/mob/living/simple_animal/hostile/retaliate/ghost, +/mob/living/basic/ghost, /turf/open/floor/iron/cafeteria/airless, /area/ruin/space/has_grav) "bb" = ( @@ -678,8 +678,8 @@ ag ai aK aR -aR ba +aR bj bg ah diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 08baa9d8c8d..78fb6dcc769 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -4048,14 +4048,6 @@ /obj/structure/flora/rock/style_random, /turf/open/misc/asteroid, /area/space/nearstation) -"bjX" = ( -/mob/living/basic/carp{ - environment_smash = 0; - name = "Tuna"; - real_name = "Tuna" - }, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "bkn" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -5430,6 +5422,10 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"bFQ" = ( +/obj/docking_port/stationary/escape_pod, +/turf/open/space/basic, +/area/space) "bGx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/effect/decal/cleanable/dirt, @@ -6455,12 +6451,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/port) -"bZB" = ( -/obj/docking_port/stationary/escape_pod{ - dir = 8 - }, -/turf/open/space/basic, -/area/space) "bZE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6612,6 +6602,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"ccg" = ( +/obj/docking_port/stationary/escape_pod{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) "ccr" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/stripes/line{ @@ -8262,6 +8258,14 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall, /area/station/maintenance/port/fore) +"cvZ" = ( +/mob/living/basic/carp{ + environment_smash = 0; + name = "Tuna"; + real_name = "Tuna" + }, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "cwj" = ( /obj/machinery/modular_computer/console/preset/id, /obj/effect/turf_decal/bot, @@ -9160,6 +9164,12 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/lowpressure, /area/space/nearstation) +"cOd" = ( +/obj/docking_port/stationary/escape_pod{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) "cOf" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -16178,6 +16188,10 @@ "ePm" = ( /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"ePI" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/space/basic, +/area/space/nearstation) "ePU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19414,12 +19428,6 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron/dark, /area/station/commons/storage/art) -"fFY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/space/basic, -/area/space/nearstation) "fGu" = ( /turf/closed/wall, /area/station/security/checkpoint/engineering) @@ -22829,6 +22837,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"gCs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/space/basic, +/area/space/nearstation) "gCu" = ( /obj/structure/chair{ dir = 8 @@ -23033,15 +23047,6 @@ /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/plating, /area/station/cargo/warehouse) -"gFu" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/structure/bed/dogbed/cayenne{ - name = "Lia's bed" - }, -/mob/living/basic/carp/pet/lia, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) "gFA" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -23494,6 +23499,12 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"gKV" = ( +/obj/docking_port/stationary/escape_pod{ + dir = 2 + }, +/turf/open/space/basic, +/area/space) "gLm" = ( /obj/machinery/status_display/ai/directional/south, /obj/effect/decal/cleanable/dirt, @@ -27006,11 +27017,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/genetics) -"hIs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/mob/living/simple_animal/hostile/retaliate/ghost, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "hIS" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/rnd_all, @@ -28217,12 +28223,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) -"hYT" = ( -/obj/docking_port/stationary/escape_pod{ - dir = 4 - }, -/turf/open/space/basic, -/area/space) "hYY" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/decal/cleanable/dirt, @@ -31681,6 +31681,10 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"iSY" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "iTj" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters{ @@ -34720,10 +34724,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"jMQ" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space) "jMU" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -40586,10 +40586,6 @@ }, /turf/open/floor/wood, /area/station/service/lawoffice) -"lwY" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/space/basic, -/area/space/nearstation) "lxf" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -47025,12 +47021,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/service/chapel) -"nta" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/space/basic, -/area/space/nearstation) "ntb" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -54278,6 +54268,12 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"pzk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) "pzm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54866,10 +54862,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"pHK" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "pIa" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -55594,10 +55586,6 @@ /obj/effect/landmark/start/geneticist, /turf/open/floor/iron/showroomfloor, /area/station/science/genetics) -"pSf" = ( -/obj/docking_port/stationary/escape_pod, -/turf/open/space/basic, -/area/space) "pSh" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -61188,6 +61176,11 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"rwY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/mob/living/basic/ghost, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "rxi" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64610,6 +64603,10 @@ /obj/structure/cable, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/aft) +"svA" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space) "svC" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -68364,6 +68361,15 @@ }, /turf/open/space/basic, /area/space/nearstation) +"tvS" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/basic/ghost, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) "twc" = ( /obj/effect/turf_decal/plaque{ icon_state = "L13" @@ -69031,14 +69037,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"tEU" = ( -/obj/docking_port/stationary/random{ - dir = 4; - name = "lavaland"; - shuttle_id = "pod_4_lavaland" - }, -/turf/open/space, -/area/space/nearstation) "tEX" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69378,12 +69376,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"tKZ" = ( -/obj/docking_port/stationary/escape_pod{ - dir = 2 - }, -/turf/open/space/basic, -/area/space) "tLh" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -79334,6 +79326,14 @@ luminosity = 2 }, /area/station/engineering/supermatter) +"wxy" = ( +/obj/docking_port/stationary/random{ + dir = 4; + name = "lavaland"; + shuttle_id = "pod_4_lavaland" + }, +/turf/open/space, +/area/space/nearstation) "wxF" = ( /obj/structure/table/wood, /obj/effect/spawner/random/maintenance, @@ -80296,6 +80296,15 @@ "wJo" = ( /turf/open/floor/plating, /area/station/maintenance/department/security) +"wJs" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/obj/structure/reagent_dispensers/wall/peppertank/directional/east, +/obj/structure/bed/dogbed/cayenne{ + name = "Lia's bed" + }, +/mob/living/basic/carp/pet/lia, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) "wJw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -85189,15 +85198,6 @@ /obj/machinery/recharger, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/captain) -"yeH" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/retaliate/ghost, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/fore) "yeK" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral{ @@ -96670,9 +96670,9 @@ wDI aeu aeu aDT -nta +gCs lHD -nta +gCs sRm aeu ycx @@ -97699,7 +97699,7 @@ ycx vjh vjh aaa -bZB +cOd aaa ycx vjh @@ -99982,7 +99982,7 @@ aeu aeU aeU coy -bjX +cvZ aDS tpp bFI @@ -102631,7 +102631,7 @@ aaa aaa aaa cry -lwY +ePI acK aaa aaa @@ -102884,7 +102884,7 @@ gDy hOU aHz kZK -tKZ +gKV aaa aaa cry @@ -103145,7 +103145,7 @@ aaa aaa aaa cry -lwY +ePI acK aaa aaa @@ -105967,7 +105967,7 @@ lZr jPG sYu mIR -gFu +wJs afL aeu aeU @@ -118230,7 +118230,7 @@ cIX cIX fvU plG -yeH +tvS yaY iBv wxI @@ -118489,7 +118489,7 @@ fvU nUi iVF elc -hIs +rwY jre rsZ qaI @@ -126178,7 +126178,7 @@ aaa aaa aaa acK -fFY +pzk cry aaa aaa @@ -126439,7 +126439,7 @@ iak cry aaa aaa -pSf +bFQ fRt oBf nxa @@ -126692,7 +126692,7 @@ aaB aaa aaa acK -fFY +pzk cry aaa aaa @@ -130066,7 +130066,7 @@ rZV vOX vOX aaa -hYT +ccg aaa rZV mtc @@ -131094,7 +131094,7 @@ aeU aof qJs cry -tEU +wxy cry qJs aeu @@ -131350,9 +131350,9 @@ cmU aeU aeU aaQ -jMQ -pHK -jMQ +svA +iSY +svA acm aeu aeu diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index 205e193c56e..2928bce9eaf 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_INIT(phobia_mobs, list( /mob/living/simple_animal/hostile/heretic_summon, /mob/living/simple_animal/hostile/imp, /mob/living/simple_animal/hostile/retaliate/bat, - /mob/living/simple_animal/hostile/retaliate/ghost, + /mob/living/basic/ghost, /mob/living/simple_animal/hostile/skeleton, /mob/living/simple_animal/hostile/wizard, /mob/living/simple_animal/hostile/zombie, diff --git a/code/modules/mob/living/basic/retaliate/ghost.dm b/code/modules/mob/living/basic/retaliate/ghost.dm new file mode 100644 index 00000000000..f687fc373e0 --- /dev/null +++ b/code/modules/mob/living/basic/retaliate/ghost.dm @@ -0,0 +1,109 @@ +/mob/living/basic/ghost + name = "ghost" + desc = "A soul of the dead, spooky." + icon = 'icons/mob/simple/mob.dmi' + icon_state = "ghost" + icon_living = "ghost" + mob_biotypes = MOB_SPIRIT + speak_emote = list("wails", "weeps") + response_help_continuous = "passes through" + response_help_simple = "pass through" + combat_mode = TRUE + basic_mob_flags = DEL_ON_DEATH + maxHealth = 40 + health = 40 + melee_damage_lower = 15 + melee_damage_upper = 15 + attack_verb_continuous = "grips" + attack_verb_simple = "grip" + unsuitable_atmos_damage = 0 + attack_sound = 'sound/hallucinations/growl1.ogg' + death_message = "wails, disintegrating into a pile of ectoplasm!" + gold_core_spawnable = NO_SPAWN //too spooky for science + light_system = MOVABLE_LIGHT + light_range = 1 // same glowing as visible player ghosts + light_power = 2 + ai_controller = /datum/ai_controller/basic_controller/ghost + + ///What hairstyle will this ghost have + var/ghost_hairstyle + ///What color will this ghost's hair be + var/ghost_hair_color + ///The resulting hair to be displayed on the ghost + var/mutable_appearance/ghost_hair + ///What facial hairstyle will this ghost have + var/ghost_facial_hairstyle + ///What color will this ghost's facial hair be + var/ghost_facial_hair_color + ///The resulting facial hair to be displayed on the ghost + var/mutable_appearance/ghost_facial_hair + ///Will this ghost spawn with a randomly generated name and hair? + var/random_identity = TRUE + +/mob/living/basic/ghost/Initialize(mapload) + . = ..() + var/static/list/death_loot = list(/obj/item/ectoplasm) + AddElement(/datum/element/death_drops, death_loot) + AddElement(/datum/element/simple_flying) + AddElement(/datum/element/ai_retaliate) + + give_identity() + +/** + * Generates hair, facial hair, and a random name for ghosts if one is needed. + * + * Handles generating the mutable_appearance objects for a ghost's hair/facial hair, + * as well as assigning a random name if needed. If random_identity is false, it will only create and display + * the hair as defined by ghost_hairstyle/ghost_facial_hairstyle variables, without changing the name. + * If random_identity is true, hair/facial/name will all be randomly generated and displayed. + * When creating a ghost with a custom identity (for away missions, ruins, etc.) be sure random_identity is false. + */ + +/mob/living/basic/ghost/proc/give_identity() + if(random_identity) + ghost_hairstyle = random_hairstyle() //This only gives us the hairstyle name, not the icon_state (which we need). + ghost_hair_color = "#[random_color()]" + + if(prob(50)) //Only a chance at also getting facial hair + ghost_facial_hairstyle = random_facial_hairstyle() + ghost_facial_hair_color = ghost_hair_color + + if(!isnull(ghost_hairstyle)) + var/datum/sprite_accessory/hair_style = GLOB.hairstyles_list[ghost_hairstyle] //We use the hairstyle name to get the sprite accessory, which we copy the icon_state from. + ghost_hair = mutable_appearance('icons/mob/species/human/human_face.dmi', "[hair_style.icon_state]", -HAIR_LAYER) + ghost_hair.alpha = 200 + ghost_hair.color = ghost_hair_color + add_overlay(ghost_hair) + + if(!isnull(ghost_facial_hairstyle)) + var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hairstyles_list[ghost_facial_hairstyle] + ghost_facial_hair = mutable_appearance('icons/mob/species/human/human_face.dmi', "[facial_hair_style.icon_state]", -HAIR_LAYER) + ghost_facial_hair.alpha = 200 + ghost_facial_hair.color = ghost_facial_hair_color + add_overlay(ghost_facial_hair) + + if(random_identity) + switch(rand(0,1)) + if(0) + name = "ghost of [pick(GLOB.first_names_male)] [pick(GLOB.last_names)]" + if(1) + name = "ghost of [pick(GLOB.first_names_female)] [pick(GLOB.last_names)]" + +/datum/ai_controller/basic_controller/ghost + blackboard = list( + BB_TARGETTING_DATUM = new /datum/targetting_datum/basic/ignore_faction(), + ) + + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + + planning_subtrees = list( + /datum/ai_planning_subtree/target_retaliate, + /datum/ai_planning_subtree/basic_melee_attack_subtree/ghost, + ) + +/datum/ai_planning_subtree/basic_melee_attack_subtree/ghost + melee_attack_behavior = /datum/ai_behavior/basic_melee_attack/ghost + +/datum/ai_behavior/basic_melee_attack/ghost + action_cooldown = 2 SECONDS diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm deleted file mode 100644 index 153f3dc354d..00000000000 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm +++ /dev/null @@ -1,66 +0,0 @@ -/mob/living/simple_animal/hostile/retaliate/ghost - name = "ghost" - desc = "A soul of the dead, spooky." - icon = 'icons/mob/simple/mob.dmi' - icon_state = "ghost" - icon_living = "ghost" - mob_biotypes = MOB_SPIRIT - speak_chance = 0 - turns_per_move = 5 - response_help_continuous = "passes through" - response_help_simple = "pass through" - combat_mode = TRUE - healable = 0 - speed = 0 - maxHealth = 40 - health = 40 - harm_intent_damage = 10 - melee_damage_lower = 15 - melee_damage_upper = 15 - del_on_death = 1 - emote_see = list("weeps silently", "groans", "mumbles") - attack_verb_continuous = "grips" - attack_verb_simple = "grip" - attack_sound = 'sound/hallucinations/growl1.ogg' - speak_emote = list("weeps") - death_message = "wails, disintegrating into a pile of ectoplasm!" - loot = list(/obj/item/ectoplasm) - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = 1500 - pressure_resistance = 300 - gold_core_spawnable = NO_SPAWN //too spooky for science - light_system = MOVABLE_LIGHT - light_range = 1 // same glowing as visible player ghosts - light_power = 2 - var/ghost_hairstyle - var/ghost_hair_color - var/mutable_appearance/ghost_hair - var/ghost_facial_hairstyle - var/ghost_facial_hair_color - var/mutable_appearance/ghost_facial_hair - var/random = TRUE //if you want random names for ghosts or not - -/mob/living/simple_animal/hostile/retaliate/ghost/Initialize(mapload) - . = ..() - AddElement(/datum/element/simple_flying) - give_hair() - if(random) - switch(rand(0,1)) - if(0) - name = "ghost of [pick(GLOB.first_names_male)] [pick(GLOB.last_names)]" - if(1) - name = "ghost of [pick(GLOB.first_names_female)] [pick(GLOB.last_names)]" - - -/mob/living/simple_animal/hostile/retaliate/ghost/proc/give_hair() - if(ghost_hairstyle != null) - ghost_hair = mutable_appearance('icons/mob/species/human/human_face.dmi', "hair_[ghost_hairstyle]", -HAIR_LAYER) - ghost_hair.alpha = 200 - ghost_hair.color = ghost_hair_color - add_overlay(ghost_hair) - if(ghost_facial_hairstyle != null) - ghost_facial_hair = mutable_appearance('icons/mob/species/human/human_face.dmi', "facial_[ghost_facial_hairstyle]", -HAIR_LAYER) - ghost_facial_hair.alpha = 200 - ghost_facial_hair.color = ghost_facial_hair_color - add_overlay(ghost_facial_hair) diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 37e917b58da..03a8371cbcf 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -275,7 +275,6 @@ /mob/living/simple_animal/hostile/retaliate/clown/mutant, /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton, /mob/living/simple_animal/hostile/retaliate/clown/mutant/slow, - /mob/living/simple_animal/hostile/retaliate/ghost, /mob/living/simple_animal/hostile/retaliate/goat, /mob/living/simple_animal/hostile/retaliate/goose, /mob/living/simple_animal/hostile/retaliate/goose/vomit, diff --git a/tgstation.dme b/tgstation.dme index 7717a8f0d67..69367d3c783 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3733,6 +3733,7 @@ #include "code\modules\mob\living\basic\lavaland\bileworm\bileworm_vileworm.dm" #include "code\modules\mob\living\basic\pets\dog.dm" #include "code\modules\mob\living\basic\pets\pet.dm" +#include "code\modules\mob\living\basic\retaliate\ghost.dm" #include "code\modules\mob\living\basic\ruin_defender\stickman.dm" #include "code\modules\mob\living\basic\space_fauna\carp\carp.dm" #include "code\modules\mob\living\basic\space_fauna\carp\carp_abilities.dm" @@ -4021,7 +4022,6 @@ #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\pandora.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\ghost.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\spaceman.dm" #include "code\modules\mob\living\simple_animal\slime\death.dm" diff --git a/tools/UpdatePaths/Scripts/72196_ghost_simple_to_basic.txt b/tools/UpdatePaths/Scripts/72196_ghost_simple_to_basic.txt new file mode 100644 index 00000000000..94aa7de075a --- /dev/null +++ b/tools/UpdatePaths/Scripts/72196_ghost_simple_to_basic.txt @@ -0,0 +1,3 @@ +# modifies simple_animal ghosts into the new basic mob ghost type + +/mob/living/simple_animal/hostile/retaliate/ghost : /mob/living/basic/ghost{@OLD}