mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-15 12:11:45 +00:00
Simple animal xenos are now basic animal xenos (#82187)
## About The Pull Request We currently have 2 types of xenos in the codebase, simple animal and carbon. I'd like to unite them both under basic, and I thought I should go for simple animal first since it's more of a conversion than a remake. This helps set a base for a future basic-only xeno, which would require the following: - Basic mobs (or just anything than Carbon) to have Organs, which we can then use for things like referring to their plasma sac for egg-laying, etc. - All xeno types having a basic mob variant, preferably with an AI so they would work without a player. - Something be done about larva, either we'd split basic xenos into "larva" and "adult" (like carbon) or have it be a separate path that can also have organs so they can still have hivemind. Everything else seems to have been done overtime as simple animals have been converted to basic (HUDs and holding things now seem possible, etc.) Even if this doesn't work out, at least this cuts off a good chunk of the remaining simple animals to convert to basic. Sprites used (for mapping helpers): Fire medkit Toxin medkit Oingo Boingo punch face (i tried to shrink it down) ## Why It's Good For The Game This helps advance us move away from simple animals, and helps move carbon xenos to basic mob later too if that's what we want to go for. ## Changelog 🆑 refactor: Xenomorphs (Lavaland & Oldstation ones) are now basic mobs. /🆑
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"j" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"l" = (
|
||||
@@ -55,7 +55,7 @@
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"t" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/mob/living/basic/alien/sentinel,
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"u" = (
|
||||
@@ -103,18 +103,18 @@
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"E" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"F" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/queen/large{
|
||||
/mob/living/basic/alien/queen/large{
|
||||
desc = "A gigantic alien who is in charge of the hive and all of its loyal servants.";
|
||||
name = "alien queen";
|
||||
pixel_x = -16;
|
||||
plants_off = 1
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
@@ -137,13 +137,13 @@
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"K" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"L" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
@@ -160,8 +160,8 @@
|
||||
"Q" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"ab" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
@@ -368,7 +368,7 @@
|
||||
/turf/template_noop,
|
||||
/area/ruin/space/has_grav/infested_frigate)
|
||||
"eE" = (
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/obj/structure/cable,
|
||||
@@ -430,7 +430,6 @@
|
||||
/obj/effect/turf_decal/tile/bar,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/closet/mini_fridge/grimy{
|
||||
anchored = 1;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/effect/spawner/random/food_or_drink/refreshing_beverage,
|
||||
@@ -844,7 +843,7 @@
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/space/has_grav/infested_frigate)
|
||||
"nG" = (
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
@@ -1232,7 +1231,7 @@
|
||||
icon_state = "warningline_red";
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
@@ -1327,8 +1326,7 @@
|
||||
},
|
||||
/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
|
||||
/obj/structure/bed/nest,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
del_on_death = 1;
|
||||
/mob/living/basic/alien/drone{
|
||||
loot = list(/obj/effect/gibspawner/xeno);
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
@@ -1387,7 +1385,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
@@ -1475,7 +1473,7 @@
|
||||
icon_state = "gib1-old"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
@@ -1535,7 +1533,7 @@
|
||||
/obj/item/ammo_casing/spent,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
|
||||
/obj/structure/cable,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
@@ -1643,7 +1641,7 @@
|
||||
/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
|
||||
/obj/item/ammo_casing/spent,
|
||||
/obj/item/ammo_casing/spent,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/tiled/white,
|
||||
@@ -1941,8 +1939,7 @@
|
||||
/area/ruin/space/has_grav/infested_frigate)
|
||||
"ER" = (
|
||||
/obj/structure/cable,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel{
|
||||
del_on_death = 1;
|
||||
/mob/living/basic/alien/sentinel{
|
||||
loot = list(/obj/effect/gibspawner/xeno);
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
@@ -1958,7 +1955,7 @@
|
||||
/obj/effect/decal/cleanable/glass,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
@@ -2050,7 +2047,7 @@
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
@@ -2077,7 +2074,7 @@
|
||||
icon_state = "gib1-old"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
@@ -2098,7 +2095,7 @@
|
||||
icon_state = "xgibhead";
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
@@ -2201,7 +2198,7 @@
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/space/has_grav/infested_frigate)
|
||||
"Jx" = (
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
@@ -2809,8 +2806,7 @@
|
||||
/obj/item/shard{
|
||||
icon_state = "plastitaniumtiny"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien/queen/large{
|
||||
del_on_death = 1;
|
||||
/mob/living/basic/alien/queen/large{
|
||||
loot = list(/obj/effect/gibspawner/xeno,/obj/item/ammo_box/magazine/plastikov9mm,/obj/effect/mob_spawn/corpse/human/syndicatecommando/soft_suit);
|
||||
desc = "What you saw in your dreams last night.";
|
||||
faction = list("syndicate","xenomorph")
|
||||
@@ -3086,7 +3082,7 @@
|
||||
"Yd" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/alien/egg/burst,
|
||||
/mob/living/simple_animal/hostile/alien{
|
||||
/mob/living/basic/alien{
|
||||
faction = list("syndicate","xenomorph")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/area/ruin/space/ancientstation/delta/biolab)
|
||||
"af" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/ancientstation/delta/ai)
|
||||
"ag" = (
|
||||
@@ -47,7 +47,7 @@
|
||||
/area/ruin/space/ancientstation/charlie/bridge)
|
||||
"ao" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/basic/alien/drone,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/ancientstation/delta/ai)
|
||||
"ap" = (
|
||||
@@ -727,7 +727,7 @@
|
||||
/area/ruin/space/ancientstation/delta/ai)
|
||||
"de" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/queen,
|
||||
/mob/living/basic/alien/queen,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/ancientstation/delta/ai)
|
||||
"df" = (
|
||||
@@ -1496,7 +1496,7 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/firealarm/directional/east,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/basic/alien/drone,
|
||||
/turf/open/floor/iron,
|
||||
/area/ruin/space/ancientstation/delta/hall)
|
||||
"gE" = (
|
||||
@@ -1708,7 +1708,7 @@
|
||||
/turf/open/floor/iron,
|
||||
/area/ruin/space/ancientstation/charlie/sec)
|
||||
"hE" = (
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/basic/alien/drone,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
|
||||
dir = 8
|
||||
},
|
||||
@@ -2638,7 +2638,7 @@
|
||||
"lq" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/effect/decal/cleanable/blood/gibs/old,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/ancientstation/delta/ai)
|
||||
"lr" = (
|
||||
@@ -3234,7 +3234,7 @@
|
||||
/area/ruin/space/ancientstation/delta/hall)
|
||||
"nN" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/basic/alien/drone,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/ruin/space/ancientstation/delta/rnd)
|
||||
"nO" = (
|
||||
@@ -3931,7 +3931,7 @@
|
||||
/obj/effect/decal/cleanable/blood/tracks{
|
||||
dir = 1
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/light/broken/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
@@ -4483,7 +4483,7 @@
|
||||
"wr" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/basic/alien/drone,
|
||||
/obj/machinery/duct,
|
||||
/obj/machinery/light/broken/directional/south,
|
||||
/turf/open/floor/iron,
|
||||
@@ -5012,7 +5012,7 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/cable,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/basic/alien/drone,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
|
||||
dir = 10
|
||||
},
|
||||
@@ -6320,7 +6320,7 @@
|
||||
/turf/open/floor/iron,
|
||||
/area/ruin/space/ancientstation/charlie/hall)
|
||||
"JZ" = (
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/machinery/light/small/broken/directional/west,
|
||||
/turf/open/floor/iron/dark,
|
||||
|
||||
@@ -2089,7 +2089,7 @@
|
||||
/area/awaymission/moonoutpost19/syndicate)
|
||||
"nz" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/mob/living/basic/alien/sentinel,
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
},
|
||||
@@ -3079,8 +3079,8 @@
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"tN" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
@@ -3214,11 +3214,11 @@
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"uH" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/queen/large{
|
||||
/mob/living/basic/alien/queen/large{
|
||||
desc = "A gigantic alien who is in charge of the hive and all of its loyal servants.";
|
||||
name = "alien queen";
|
||||
pixel_x = -16;
|
||||
plants_off = 1
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
@@ -4692,7 +4692,7 @@
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"EZ" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
},
|
||||
@@ -5006,7 +5006,7 @@
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"Ha" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
},
|
||||
@@ -5292,8 +5292,8 @@
|
||||
"Ja" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
@@ -5370,8 +5370,8 @@
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"Jw" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
@@ -5504,8 +5504,8 @@
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"KA" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
@@ -5950,8 +5950,8 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"NU" = (
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
@@ -7011,8 +7011,8 @@
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"UI" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/moon{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
/turf/open/floor/iron,
|
||||
/area/shuttle/escape)
|
||||
"aU" = (
|
||||
/mob/living/simple_animal/hostile/alien/maid/barmaid,
|
||||
/mob/living/basic/alien/maid/barmaid,
|
||||
/obj/effect/turf_decal/tile/bar/opposingcorners,
|
||||
/turf/open/floor/iron,
|
||||
/area/shuttle/escape)
|
||||
|
||||
@@ -955,7 +955,7 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/shuttle/escape)
|
||||
"uu" = (
|
||||
/mob/living/simple_animal/hostile/alien/maid/barmaid,
|
||||
/mob/living/basic/alien/maid/barmaid,
|
||||
/turf/open/floor/wood/parquet,
|
||||
/area/shuttle/escape)
|
||||
"uy" = (
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
"p" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
@@ -81,8 +81,8 @@
|
||||
/area/virtual_domain/safehouse)
|
||||
"s" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
/mob/living/basic/alien/drone{
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
@@ -175,11 +175,11 @@
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
"J" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/queen/large{
|
||||
/mob/living/basic/alien/queen/large{
|
||||
desc = "A gigantic alien who is in charge of the hive and all of its loyal servants.";
|
||||
name = "alien queen";
|
||||
pixel_x = -16;
|
||||
plants_off = 1
|
||||
can_plant_weeds = 0
|
||||
},
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
@@ -218,7 +218,7 @@
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
"P" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
"Q" = (
|
||||
@@ -228,7 +228,7 @@
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
"S" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/basic/alien,
|
||||
/turf/open/misc/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/space/has_grav/powered/virtual_domain)
|
||||
"T" = (
|
||||
|
||||
@@ -123,7 +123,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
|
||||
|
||||
#define islarva(A) (istype(A, /mob/living/carbon/alien/larva))
|
||||
|
||||
#define isalienadult(A) (istype(A, /mob/living/carbon/alien/adult) || istype(A, /mob/living/simple_animal/hostile/alien))
|
||||
#define isalienadult(A) (istype(A, /mob/living/carbon/alien/adult) || istype(A, /mob/living/basic/alien))
|
||||
|
||||
#define isalienhunter(A) (istype(A, /mob/living/carbon/alien/adult/hunter))
|
||||
|
||||
|
||||
@@ -6,14 +6,15 @@
|
||||
. = ..()
|
||||
var/mob/living/living_pawn = controller.pawn
|
||||
if(LAZYLEN(living_pawn.do_afters))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
if(SPT_PROB(walk_chance, seconds_per_tick) && (living_pawn.mobility_flags & MOBILITY_MOVE) && isturf(living_pawn.loc) && !living_pawn.pulledby)
|
||||
var/move_dir = pick(GLOB.alldirs)
|
||||
var/turf/destination_turf = get_step(living_pawn, move_dir)
|
||||
if(!destination_turf?.can_cross_safely(living_pawn))
|
||||
return
|
||||
return FALSE
|
||||
living_pawn.Move(destination_turf, move_dir)
|
||||
return TRUE
|
||||
|
||||
/datum/idle_behavior/idle_random_walk/less_walking
|
||||
walk_chance = 10
|
||||
|
||||
@@ -151,9 +151,9 @@
|
||||
|
||||
/datum/modular_mob_segment/xenos
|
||||
mobs = list(
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/basic/alien,
|
||||
/mob/living/basic/alien/sentinel,
|
||||
/mob/living/basic/alien/drone,
|
||||
)
|
||||
|
||||
#undef SPAWN_ALWAYS
|
||||
|
||||
@@ -1424,3 +1424,58 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
|
||||
buckle_to.buckle_mob(mob, force = force_buckle)
|
||||
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
///Basic mob flag helpers for things like deleting on death.
|
||||
/obj/effect/mapping_helpers/basic_mob_flags
|
||||
name = "Basic mob flags helper"
|
||||
desc = "Used to apply basic_mob_flags to basic mobs on the same turf."
|
||||
late = TRUE
|
||||
|
||||
///The basic mob flag that we're adding to all basic mobs on the turf.
|
||||
var/flag_to_give
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
log_mapping("[src] spawned outside of mapload!")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/LateInitialize()
|
||||
. = ..()
|
||||
var/had_any_mobs = FALSE
|
||||
for(var/mob/living/basic/basic_mobs in loc)
|
||||
had_any_mobs = TRUE
|
||||
basic_mobs.basic_mob_flags |= flag_to_give
|
||||
if(!had_any_mobs)
|
||||
CRASH("[src] called on a turf without any basic mobs.")
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/del_on_death
|
||||
name = "Basic mob del on death flag helper"
|
||||
icon_state = "basic_mob_del_on_death"
|
||||
flag_to_give = DEL_ON_DEATH
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/flip_on_death
|
||||
name = "Basic mob flip on death flag helper"
|
||||
icon_state = "basic_mob_flip_on_death"
|
||||
flag_to_give = FLIP_ON_DEATH
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/remain_dense_while_dead
|
||||
name = "Basic mob remain dense while dead flag helper"
|
||||
icon_state = "basic_mob_remain_dense_while_dead"
|
||||
flag_to_give = REMAIN_DENSE_WHILE_DEAD
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/flammable_mob
|
||||
name = "Basic mob flammable flag helper"
|
||||
icon_state = "basic_mob_flammable"
|
||||
flag_to_give = FLAMMABLE_MOB
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/immune_to_fists
|
||||
name = "Basic mob immune to fists flag helper"
|
||||
icon_state = "basic_mob_immune_to_fists"
|
||||
flag_to_give = IMMUNE_TO_FISTS
|
||||
|
||||
/obj/effect/mapping_helpers/basic_mob_flags/immune_to_getting_wet
|
||||
name = "Basic mob immune to getting wet flag helper"
|
||||
icon_state = "basic_mob_immune_to_getting_wet"
|
||||
flag_to_give = IMMUNE_TO_GETTING_WET
|
||||
|
||||
84
code/modules/mob/living/basic/alien/_alien.dm
Normal file
84
code/modules/mob/living/basic/alien/_alien.dm
Normal file
@@ -0,0 +1,84 @@
|
||||
/mob/living/basic/alien
|
||||
name = "alien hunter"
|
||||
desc = "Hiss!"
|
||||
icon = 'icons/mob/nonhuman-player/alien.dmi'
|
||||
icon_state = "alienh"
|
||||
icon_living = "alienh"
|
||||
icon_dead = "alienh_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
gender = FEMALE
|
||||
status_flags = CANPUSH
|
||||
butcher_results = list(
|
||||
/obj/item/food/meat/slab/xeno = 4,
|
||||
/obj/item/stack/sheet/animalhide/xeno = 1,
|
||||
)
|
||||
|
||||
maxHealth = 125
|
||||
health = 125
|
||||
bubble_icon = "alien"
|
||||
combat_mode = TRUE
|
||||
faction = list(ROLE_ALIEN)
|
||||
|
||||
// Going for a dark purple here
|
||||
lighting_cutoff_red = 30
|
||||
lighting_cutoff_green = 15
|
||||
lighting_cutoff_blue = 50
|
||||
unique_name = TRUE
|
||||
|
||||
basic_mob_flags = FLAMMABLE_MOB
|
||||
speed = 0
|
||||
obj_damage = 60
|
||||
|
||||
speak_emote = list("hisses")
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
attack_verb_continuous = "slashes"
|
||||
attack_verb_simple = "slash"
|
||||
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_CLAW
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
death_sound = 'sound/voice/hiss6.ogg'
|
||||
death_message = "lets out a waning guttural screech, green blood bubbling from its maw..."
|
||||
|
||||
habitable_atmos = 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)
|
||||
unsuitable_atmos_damage = FALSE
|
||||
unsuitable_heat_damage = 20
|
||||
|
||||
ai_controller = /datum/ai_controller/basic_controller/alien
|
||||
|
||||
///List of loot items to drop when deleted, if this is set then we apply DEL_ON_DEATH
|
||||
var/list/loot
|
||||
///Boolean on whether the xeno can plant weeds.
|
||||
var/can_plant_weeds = TRUE
|
||||
///Boolean on whether the xeno can lay eggs.
|
||||
var/can_lay_eggs = FALSE
|
||||
|
||||
/mob/living/basic/alien/Initialize(mapload)
|
||||
. = ..()
|
||||
if(length(loot))
|
||||
basic_mob_flags |= DEL_ON_DEATH
|
||||
loot = string_list(loot)
|
||||
AddElement(/datum/element/death_drops, loot)
|
||||
AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW)
|
||||
|
||||
/mob/living/basic/alien/get_butt_sprite()
|
||||
return BUTT_SPRITE_XENOMORPH
|
||||
|
||||
///Places alien weeds on the turf the mob is currently standing on.
|
||||
/mob/living/basic/alien/proc/place_weeds()
|
||||
if(!isturf(loc) || isspaceturf(loc))
|
||||
return
|
||||
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
|
||||
return
|
||||
visible_message(span_alertalien("[src] plants some alien weeds!"))
|
||||
new /obj/structure/alien/weeds/node(loc)
|
||||
|
||||
///Lays an egg on the turf the mob is currently standing on.
|
||||
/mob/living/basic/alien/proc/lay_alien_egg()
|
||||
if(!isturf(loc) || isspaceturf(loc))
|
||||
return
|
||||
if(locate(/obj/structure/alien/egg) in get_turf(src))
|
||||
return
|
||||
visible_message(span_alertalien("[src] lays an egg!"))
|
||||
new /obj/structure/alien/egg(loc)
|
||||
73
code/modules/mob/living/basic/alien/alien_ai.dm
Normal file
73
code/modules/mob/living/basic/alien/alien_ai.dm
Normal file
@@ -0,0 +1,73 @@
|
||||
/datum/ai_controller/basic_controller/alien
|
||||
ai_movement = /datum/ai_movement/basic_avoidance
|
||||
idle_behavior = /datum/idle_behavior/idle_random_walk
|
||||
blackboard = list(
|
||||
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
|
||||
)
|
||||
|
||||
planning_subtrees = list(
|
||||
/datum/ai_planning_subtree/simple_find_target,
|
||||
/datum/ai_planning_subtree/attack_obstacle_in_path,
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
||||
)
|
||||
|
||||
movement_delay = 0.8 SECONDS
|
||||
|
||||
/datum/ai_controller/basic_controller/alien/sentinel
|
||||
planning_subtrees = list(
|
||||
/datum/ai_planning_subtree/simple_find_target,
|
||||
/datum/ai_planning_subtree/attack_obstacle_in_path,
|
||||
/datum/ai_planning_subtree/basic_ranged_attack_subtree/alien,
|
||||
)
|
||||
|
||||
/datum/ai_controller/basic_controller/alien/drone
|
||||
idle_behavior = /datum/idle_behavior/idle_random_walk/plant_weeds
|
||||
|
||||
/datum/ai_controller/basic_controller/alien/queen
|
||||
idle_behavior = /datum/idle_behavior/idle_random_walk/plant_weeds/queen
|
||||
|
||||
planning_subtrees = list(
|
||||
/datum/ai_planning_subtree/simple_find_target,
|
||||
/datum/ai_planning_subtree/attack_obstacle_in_path,
|
||||
/datum/ai_planning_subtree/basic_ranged_attack_subtree/alien,
|
||||
)
|
||||
|
||||
/**
|
||||
* Alien projectile
|
||||
* Try to avoid friendly fire, and has a 3 second delay.
|
||||
*/
|
||||
/datum/ai_planning_subtree/basic_ranged_attack_subtree/alien
|
||||
ranged_attack_behavior = /datum/ai_behavior/basic_ranged_attack/alien
|
||||
|
||||
/datum/ai_behavior/basic_ranged_attack/alien
|
||||
action_cooldown = 3 SECONDS
|
||||
required_distance = 3
|
||||
avoid_friendly_fire = TRUE
|
||||
|
||||
/datum/idle_behavior/idle_random_walk/plant_weeds
|
||||
var/plant_cooldown = 30
|
||||
var/plants_off = 0
|
||||
|
||||
/datum/idle_behavior/idle_random_walk/plant_weeds/perform_idle_behavior(seconds_per_tick, datum/ai_controller/controller)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return .
|
||||
plant_cooldown--
|
||||
var/mob/living/basic/alien/alien_pawn = controller.pawn
|
||||
if(alien_pawn.can_plant_weeds && !plants_off && plant_cooldown <= 0)
|
||||
plant_cooldown = initial(plant_cooldown)
|
||||
alien_pawn.place_weeds()
|
||||
|
||||
/datum/idle_behavior/idle_random_walk/plant_weeds/queen
|
||||
var/eggs_off = 0
|
||||
var/egg_cooldown = 30
|
||||
|
||||
/datum/idle_behavior/idle_random_walk/plant_weeds/queen/perform_idle_behavior(seconds_per_tick, datum/ai_controller/controller)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return .
|
||||
egg_cooldown--
|
||||
var/mob/living/basic/alien/alien_pawn = controller.pawn
|
||||
if(alien_pawn.can_lay_eggs && !eggs_off && egg_cooldown <= 0)
|
||||
egg_cooldown = initial(egg_cooldown)
|
||||
alien_pawn.lay_alien_egg()
|
||||
9
code/modules/mob/living/basic/alien/drone.dm
Normal file
9
code/modules/mob/living/basic/alien/drone.dm
Normal file
@@ -0,0 +1,9 @@
|
||||
/mob/living/basic/alien/drone
|
||||
name = "alien drone"
|
||||
icon_state = "aliend"
|
||||
icon_living = "aliend"
|
||||
icon_dead = "aliend_dead"
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
|
||||
ai_controller = /datum/ai_controller/basic_controller/alien/drone
|
||||
60
code/modules/mob/living/basic/alien/maid.dm
Normal file
60
code/modules/mob/living/basic/alien/maid.dm
Normal file
@@ -0,0 +1,60 @@
|
||||
/mob/living/basic/alien/maid
|
||||
name = "lusty xenomorph maid"
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
combat_mode = FALSE
|
||||
friendly_verb_continuous = "caresses"
|
||||
friendly_verb_simple = "caress"
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
icon_state = "maid"
|
||||
icon_living = "maid"
|
||||
icon_dead = "maid_dead"
|
||||
|
||||
/mob/living/basic/alien/maid/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/cleaning)
|
||||
RegisterSignal(src, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(pre_attack))
|
||||
|
||||
///Handles the maid attacking other players, cancelling the attack to clean up instead.
|
||||
/mob/living/basic/alien/maid/proc/pre_attack(mob/living/puncher, atom/target)
|
||||
SIGNAL_HANDLER
|
||||
target.wash(CLEAN_SCRUB)
|
||||
if(istype(target, /obj/effect/decal/cleanable))
|
||||
visible_message(span_notice("[src] cleans up \the [target]."))
|
||||
else
|
||||
visible_message(span_notice("[src] polishes \the [target]."))
|
||||
return COMPONENT_HOSTILE_NO_ATTACK
|
||||
|
||||
/**
|
||||
* Barmaid special type
|
||||
* Spawns on emergency shuttles, has access to them and godmode while inside of them.
|
||||
*/
|
||||
/mob/living/basic/alien/maid/barmaid
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
name = "Barmaid"
|
||||
desc = "A barmaid, a maiden found in a bar."
|
||||
pass_flags = PASSTABLE
|
||||
unique_name = FALSE
|
||||
initial_language_holder = /datum/language_holder/universal
|
||||
|
||||
ai_controller = null //they don't have their own AI and can uniquely only be controlled by players.
|
||||
|
||||
///The access card we use to store access to the emergency shuttle.
|
||||
var/obj/item/card/id/access_card
|
||||
|
||||
/mob/living/basic/alien/maid/barmaid/Initialize(mapload)
|
||||
. = ..()
|
||||
// Simple bot ID card that can hold all accesses. Someone turn access into a component at some point, please.
|
||||
access_card = new /obj/item/card/id/advanced/simple_bot(src)
|
||||
|
||||
var/datum/id_trim/job/cap_trim = SSid_access.trim_singletons_by_path[/datum/id_trim/job/captain]
|
||||
access_card.add_access(cap_trim.access + cap_trim.wildcard_access + list(ACCESS_CENT_BAR))
|
||||
|
||||
ADD_TRAIT(access_card, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
|
||||
AddComponentFrom(ROUNDSTART_TRAIT, /datum/component/area_based_godmode, area_type = /area/shuttle/escape, allow_area_subtypes = TRUE)
|
||||
|
||||
/mob/living/basic/alien/maid/barmaid/Destroy()
|
||||
QDEL_NULL(access_card)
|
||||
return ..()
|
||||
40
code/modules/mob/living/basic/alien/queen.dm
Normal file
40
code/modules/mob/living/basic/alien/queen.dm
Normal file
@@ -0,0 +1,40 @@
|
||||
/mob/living/basic/alien/queen
|
||||
name = "alien queen"
|
||||
icon_state = "alienq"
|
||||
icon_living = "alienq"
|
||||
icon_dead = "alienq_dead"
|
||||
health = 250
|
||||
maxHealth = 250
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
status_flags = NONE //can't shove the queen, kiddo.
|
||||
unique_name = FALSE
|
||||
|
||||
ai_controller = /datum/ai_controller/basic_controller/alien/queen
|
||||
|
||||
///The type of projectile that fires from attacks.
|
||||
var/projectiletype = /obj/projectile/neurotoxin/damaging
|
||||
///The sound that plays when the projectile is fired.
|
||||
var/projectilesound = 'sound/weapons/pierce.ogg'
|
||||
|
||||
/mob/living/basic/alien/queen/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/ranged_attacks, projectile_type = projectiletype, projectile_sound = projectilesound, cooldown_time = 1 SECONDS)
|
||||
|
||||
/mob/living/basic/alien/queen/large
|
||||
name = "alien empress"
|
||||
icon = 'icons/mob/nonhuman-player/alienqueen.dmi'
|
||||
icon_state = "alienq"
|
||||
icon_living = "alienq"
|
||||
icon_dead = "alienq_dead"
|
||||
health_doll_icon = "alienq"
|
||||
bubble_icon = "alienroyal"
|
||||
maxHealth = 400
|
||||
health = 400
|
||||
butcher_results = list(
|
||||
/obj/item/food/meat/slab/xeno = 10,
|
||||
/obj/item/stack/sheet/animalhide/xeno = 2,
|
||||
)
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
|
||||
20
code/modules/mob/living/basic/alien/sentinel.dm
Normal file
20
code/modules/mob/living/basic/alien/sentinel.dm
Normal file
@@ -0,0 +1,20 @@
|
||||
/mob/living/basic/alien/sentinel
|
||||
name = "alien sentinel"
|
||||
icon_state = "aliens"
|
||||
icon_living = "aliens"
|
||||
icon_dead = "aliens_dead"
|
||||
health = 150
|
||||
maxHealth = 150
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
|
||||
ai_controller = /datum/ai_controller/basic_controller/alien/sentinel
|
||||
|
||||
///The type of projectile that fires from attacks.
|
||||
var/projectiletype = /obj/projectile/neurotoxin/damaging
|
||||
///The sound that plays when the projectile is fired.
|
||||
var/projectilesound = 'sound/weapons/pierce.ogg'
|
||||
|
||||
/mob/living/basic/alien/sentinel/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/ranged_attacks, projectile_type = projectiletype, projectile_sound = projectilesound, cooldown_time = 1 SECONDS)
|
||||
@@ -69,11 +69,6 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
|
||||
playsound(get_turf(src), pick('sound/voice/lowHiss2.ogg', 'sound/voice/lowHiss3.ogg', 'sound/voice/lowHiss4.ogg'), 50, FALSE, -5)
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/alien/adult/set_name()
|
||||
if(numba)
|
||||
name = "[name] ([numba])"
|
||||
real_name = name
|
||||
|
||||
/mob/living/carbon/alien/adult/setGrabState(newstate)
|
||||
if(newstate == grab_state)
|
||||
return
|
||||
|
||||
@@ -1453,7 +1453,7 @@
|
||||
else
|
||||
picked_xeno_type = pick(
|
||||
/mob/living/carbon/alien/adult/hunter,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/mob/living/basic/alien/sentinel,
|
||||
)
|
||||
new_mob = new picked_xeno_type(loc)
|
||||
|
||||
@@ -1790,7 +1790,7 @@ GLOBAL_LIST_EMPTY(fire_appearances)
|
||||
if(M.can_be_held && U.pulling == M)
|
||||
M.mob_try_pickup(U)//blame kevinz
|
||||
return//dont open the mobs inventory if you are picking them up
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/mob/living/proc/mob_pickup(mob/living/user)
|
||||
var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, held_state, head_icon, held_lh, held_rh, worn_slot_flags)
|
||||
@@ -1798,6 +1798,7 @@ GLOBAL_LIST_EMPTY(fire_appearances)
|
||||
user.put_in_hands(holder)
|
||||
|
||||
/mob/living/proc/set_name()
|
||||
if(!numba)
|
||||
numba = rand(1, 1000)
|
||||
name = "[name] ([numba])"
|
||||
real_name = name
|
||||
|
||||
@@ -1,173 +0,0 @@
|
||||
/mob/living/simple_animal/hostile/alien
|
||||
name = "alien hunter"
|
||||
desc = "Hiss!"
|
||||
icon = 'icons/mob/nonhuman-player/alien.dmi'
|
||||
icon_state = "alienh"
|
||||
icon_living = "alienh"
|
||||
icon_dead = "alienh_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
gender = FEMALE
|
||||
speed = 0
|
||||
butcher_results = list(/obj/item/food/meat/slab/xeno = 4,
|
||||
/obj/item/stack/sheet/animalhide/xeno = 1)
|
||||
maxHealth = 125
|
||||
health = 125
|
||||
harm_intent_damage = 5
|
||||
obj_damage = 60
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
attack_verb_continuous = "slashes"
|
||||
attack_verb_simple = "slash"
|
||||
speak_emote = list("hisses")
|
||||
bubble_icon = "alien"
|
||||
combat_mode = TRUE
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_CLAW
|
||||
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)
|
||||
faction = list(ROLE_ALIEN)
|
||||
status_flags = CANPUSH
|
||||
minbodytemp = 0
|
||||
unsuitable_heat_damage = 20
|
||||
// Going for a dark purple here
|
||||
lighting_cutoff_red = 30
|
||||
lighting_cutoff_green = 15
|
||||
lighting_cutoff_blue = 50
|
||||
unique_name = TRUE
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
death_sound = 'sound/voice/hiss6.ogg'
|
||||
death_message = "lets out a waning guttural screech, green blood bubbling from its maw..."
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/drone
|
||||
name = "alien drone"
|
||||
icon_state = "aliend"
|
||||
icon_living = "aliend"
|
||||
icon_dead = "aliend_dead"
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
var/plant_cooldown = 30
|
||||
var/plants_off = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/drone/handle_automated_action()
|
||||
if(!..()) //AIStatus is off
|
||||
return
|
||||
plant_cooldown--
|
||||
if(AIStatus == AI_IDLE)
|
||||
if(!plants_off && prob(10) && plant_cooldown <= 0)
|
||||
plant_cooldown = initial(plant_cooldown)
|
||||
SpreadPlants()
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/sentinel
|
||||
name = "alien sentinel"
|
||||
icon_state = "aliens"
|
||||
icon_living = "aliens"
|
||||
icon_dead = "aliens_dead"
|
||||
health = 150
|
||||
maxHealth = 150
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
ranged = 1
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
projectiletype = /obj/projectile/neurotoxin/damaging
|
||||
projectilesound = 'sound/weapons/pierce.ogg'
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen
|
||||
name = "alien queen"
|
||||
icon_state = "alienq"
|
||||
icon_living = "alienq"
|
||||
icon_dead = "alienq_dead"
|
||||
health = 250
|
||||
maxHealth = 250
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
ranged = 1
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
move_to_delay = 4
|
||||
butcher_results = list(/obj/item/food/meat/slab/xeno = 4,
|
||||
/obj/item/stack/sheet/animalhide/xeno = 1)
|
||||
projectiletype = /obj/projectile/neurotoxin/damaging
|
||||
projectilesound = 'sound/weapons/pierce.ogg'
|
||||
status_flags = 0
|
||||
unique_name = FALSE
|
||||
var/sterile = 1
|
||||
var/plants_off = 0
|
||||
var/egg_cooldown = 30
|
||||
var/plant_cooldown = 30
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen/handle_automated_action()
|
||||
if(!..()) //AIStatus is off
|
||||
return
|
||||
egg_cooldown--
|
||||
plant_cooldown--
|
||||
if(AIStatus == AI_IDLE)
|
||||
if(!plants_off && prob(10) && plant_cooldown <= 0)
|
||||
plant_cooldown = initial(plant_cooldown)
|
||||
SpreadPlants()
|
||||
if(!sterile && prob(10) && egg_cooldown <= 0)
|
||||
egg_cooldown = initial(egg_cooldown)
|
||||
LayEggs()
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/get_butt_sprite()
|
||||
return BUTT_SPRITE_XENOMORPH
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/proc/SpreadPlants()
|
||||
if(!isturf(loc) || isspaceturf(loc))
|
||||
return
|
||||
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
|
||||
return
|
||||
visible_message(span_alertalien("[src] plants some alien weeds!"))
|
||||
new /obj/structure/alien/weeds/node(loc)
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/proc/LayEggs()
|
||||
if(!isturf(loc) || isspaceturf(loc))
|
||||
return
|
||||
if(locate(/obj/structure/alien/egg) in get_turf(src))
|
||||
return
|
||||
visible_message(span_alertalien("[src] lays an egg!"))
|
||||
new /obj/structure/alien/egg(loc)
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen/large
|
||||
name = "alien empress"
|
||||
icon = 'icons/mob/nonhuman-player/alienqueen.dmi'
|
||||
icon_state = "alienq"
|
||||
icon_living = "alienq"
|
||||
icon_dead = "alienq_dead"
|
||||
health_doll_icon = "alienq"
|
||||
bubble_icon = "alienroyal"
|
||||
move_to_delay = 4
|
||||
maxHealth = 400
|
||||
health = 400
|
||||
butcher_results = list(/obj/item/food/meat/slab/xeno = 10,
|
||||
/obj/item/stack/sheet/animalhide/xeno = 2)
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/maid
|
||||
name = "lusty xenomorph maid"
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
combat_mode = FALSE
|
||||
friendly_verb_continuous = "caresses"
|
||||
friendly_verb_simple = "caress"
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
icon_state = "maid"
|
||||
icon_living = "maid"
|
||||
icon_dead = "maid_dead"
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/maid/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/cleaning)
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/maid/AttackingTarget(atom/attacked_target)
|
||||
if(ismovable(target))
|
||||
target.wash(CLEAN_SCRUB)
|
||||
if(istype(target, /obj/effect/decal/cleanable))
|
||||
visible_message(span_notice("[src] cleans up \the [target]."))
|
||||
else
|
||||
visible_message(span_notice("[src] polishes \the [target]."))
|
||||
return TRUE
|
||||
@@ -167,31 +167,6 @@
|
||||
. = ..()
|
||||
AddComponentFrom(ROUNDSTART_TRAIT, /datum/component/area_based_godmode, area_type = /area/shuttle/escape, allow_area_subtypes = TRUE)
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/maid/barmaid
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
name = "Barmaid"
|
||||
desc = "A barmaid, a maiden found in a bar."
|
||||
pass_flags = PASSTABLE
|
||||
unique_name = FALSE
|
||||
AIStatus = AI_OFF
|
||||
stop_automated_movement = TRUE
|
||||
initial_language_holder = /datum/language_holder/universal
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/maid/barmaid/Initialize(mapload)
|
||||
. = ..()
|
||||
// Simple bot ID card that can hold all accesses. Someone turn access into a component at some point, please.
|
||||
access_card = new /obj/item/card/id/advanced/simple_bot(src)
|
||||
|
||||
var/datum/id_trim/job/cap_trim = SSid_access.trim_singletons_by_path[/datum/id_trim/job/captain]
|
||||
access_card.add_access(cap_trim.access + cap_trim.wildcard_access + list(ACCESS_CENT_BAR))
|
||||
|
||||
ADD_TRAIT(access_card, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
|
||||
AddComponentFrom(ROUNDSTART_TRAIT, /datum/component/area_based_godmode, area_type = /area/shuttle/escape, allow_area_subtypes = TRUE)
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/maid/barmaid/Destroy()
|
||||
qdel(access_card)
|
||||
. = ..()
|
||||
|
||||
// Bar table, a wooden table that kicks you in a direction if you're not
|
||||
// barstaff (defined as someone who was a roundstart bartender or someone
|
||||
// with CENTCOM_BARSTAFF)
|
||||
|
||||
@@ -24,13 +24,6 @@
|
||||
/mob/living/simple_animal/bot/secbot/pingsky,
|
||||
/mob/living/simple_animal/bot/vibebot,
|
||||
/mob/living/simple_animal/hostile,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/simple_animal/hostile/alien/maid,
|
||||
/mob/living/simple_animal/hostile/alien/maid/barmaid,
|
||||
/mob/living/simple_animal/hostile/alien/queen,
|
||||
/mob/living/simple_animal/hostile/alien/queen/large,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/mob/living/simple_animal/hostile/asteroid,
|
||||
/mob/living/simple_animal/hostile/asteroid/curseblob,
|
||||
/mob/living/simple_animal/hostile/asteroid/elite,
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
@@ -4559,6 +4559,12 @@
|
||||
#include "code\modules\mob\living\basic\festivus_pole.dm"
|
||||
#include "code\modules\mob\living\basic\health_adjustment.dm"
|
||||
#include "code\modules\mob\living\basic\tree.dm"
|
||||
#include "code\modules\mob\living\basic\alien\_alien.dm"
|
||||
#include "code\modules\mob\living\basic\alien\alien_ai.dm"
|
||||
#include "code\modules\mob\living\basic\alien\drone.dm"
|
||||
#include "code\modules\mob\living\basic\alien\maid.dm"
|
||||
#include "code\modules\mob\living\basic\alien\queen.dm"
|
||||
#include "code\modules\mob\living\basic\alien\sentinel.dm"
|
||||
#include "code\modules\mob\living\basic\blob_minions\blob_ai.dm"
|
||||
#include "code\modules\mob\living\basic\blob_minions\blob_mob.dm"
|
||||
#include "code\modules\mob\living\basic\blob_minions\blob_spore.dm"
|
||||
@@ -5003,7 +5009,6 @@
|
||||
#include "code\modules\mob\living\simple_animal\bot\vibebot.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\gondola.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\pet.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\alien.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\dark_wizard.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\illusion.dm"
|
||||
|
||||
4
tools/UpdatePaths/Scripts/82187_basic_xenos.txt
Normal file
4
tools/UpdatePaths/Scripts/82187_basic_xenos.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
# repating all subtypes of xeno (and snipe base type) to basic mob.
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/@SUBTYPES : /mob/living/basic/alien/@SUBTYPES{@OLD}
|
||||
/mob/living/simple_animal/hostile/alien : /mob/living/basic/alien{@OLD}
|
||||
Reference in New Issue
Block a user