diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index aa4b49ff6fc..b3b86ac13e1 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -33,7 +33,8 @@ #define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) #define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) #define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation -#define COMSIG_PARENT_QDELETED "parent_qdeleted" //after a datum's Destroy() is called: (force, qdel_hint), at this point none of the other components chose to interrupt qdel and Destroy has been called +#define COMSIG_PARENT_QDELETING "parent_qdeleting" //just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called +#define COMSIG_TOPIC "handle_topic" //generic topic handler (usr, href_list) // /atom signals #define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index edc77bae4c3..e3169ded7fa 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -137,8 +137,11 @@ #define FLAMMABLE 0 #define ON_FIRE 1 -//resistance_flags -#define INDESTRUCTIBLE 64 //doesn't take damage +//Fire and Acid stuff, for resistance_flags +#define UNACIDABLE (1<<4) //acid can't even appear on it, let alone melt it. +#define ACID_PROOF (1<<5) //acid stuck on it doesn't melt it. +#define INDESTRUCTIBLE (1<<6) //doesn't take damage +#define FREEZE_PROOF (1<<7) //can't be frozen #define CHECK_RICOCHET_1 (1<<4) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 8bc65fcf691..739b059f3bd 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -11,7 +11,8 @@ icon = 'icons/mob/screen_gen.dmi' layer = HUD_LAYER plane = HUD_PLANE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF + resistance_flags = INDESTRUCTIBLE + burn_state = LAVA_PROOF unacidable = TRUE var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. var/datum/hud/hud = null diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 9b802291d84..4c397636cab 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -266,8 +266,8 @@ SUBSYSTEM_DEF(garbage) D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time var/start_tick = world.tick_usage + SEND_SIGNAL(D, COMSIG_PARENT_QDELETING, force) // Let the (remaining) components know about the result of Destroy var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. - SEND_SIGNAL(D, COMSIG_PARENT_QDELETED, force, hint) // Let the (remaining) components know about the result of Destroy if(world.time != start_time) I.slept_destroy++ else diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm new file mode 100644 index 00000000000..68ec51959a2 --- /dev/null +++ b/code/datums/components/spawner.dm @@ -0,0 +1,51 @@ +/datum/component/spawner + var/mob_types = list(/mob/living/simple_animal/hostile/carp) + var/spawn_time = 300 //30 seconds default + var/list/spawned_mobs = list() + var/spawn_delay = 0 + var/max_mobs = 5 + var/spawn_text = "emerges from" + var/list/faction = list("mining") + + + +/datum/component/spawner/Initialize(_mob_types, _spawn_time, _faction, _spawn_text, _max_mobs) + if(_spawn_time) + spawn_time=_spawn_time + if(_mob_types) + mob_types=_mob_types + if(_faction) + faction=_faction + if(_spawn_text) + spawn_text=_spawn_text + if(_max_mobs) + max_mobs=_max_mobs + + RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), .proc/stop_spawning) + START_PROCESSING(SSprocessing, src) + +/datum/component/spawner/process() + try_spawn_mob() + + +/datum/component/spawner/proc/stop_spawning(force) + STOP_PROCESSING(SSprocessing, src) + for(var/mob/living/simple_animal/L in spawned_mobs) + if(L.nest == src) + L.nest = null + spawned_mobs = null + +/datum/component/spawner/proc/try_spawn_mob() + var/atom/P = parent + if(spawned_mobs.len >= max_mobs) + return 0 + if(spawn_delay > world.time) + return 0 + spawn_delay = world.time + spawn_time + var/chosen_mob_type = pick(mob_types) + var/mob/living/simple_animal/L = new chosen_mob_type(P.loc) + L.admin_spawned = P.admin_spawned + spawned_mobs += L + L.nest = src + L.faction = src.faction + P.visible_message("[L] [spawn_text] [P].") \ No newline at end of file diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 5feec285408..6b9d89a984a 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -4,7 +4,7 @@ /obj/effect icon = 'icons/effects/effects.dmi' - burn_state = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF resistance_flags = INDESTRUCTIBLE anchored = 1 can_be_hit = FALSE diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 8698a4a2bbe..c98f3355538 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -262,7 +262,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ singular_name = "durathread roll" icon_state = "sheet-durathread" item_state = "sheet-cloth" - resistance_flags = FLAMMABLE + burn_state = FLAMMABLE force = 0 throwforce = 0 merge_type = /obj/item/stack/sheet/durathread @@ -276,7 +276,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ desc = "A bundle of raw cotton ready to be spun on the loom." singular_name = "raw cotton ball" icon_state = "sheet-cotton" - resistance_flags = FLAMMABLE + burn_state = FLAMMABLE force = 0 throwforce = 0 merge_type = /obj/item/stack/sheet/cotton diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index eda3088199e..cc7270e73c8 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1506,7 +1506,7 @@ obj/item/toy/cards/deck/syndicate/black icon = 'icons/obj/toy.dmi' icon_state = "toy_mouse" w_class = WEIGHT_CLASS_SMALL - resistance_flags = FLAMMABLE + burn_state = FLAMMABLE var/cooldown = 0 /* diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 9f3829a8277..482bf4b84b6 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -333,7 +333,7 @@ desc = "A huge chunk of warm metal. The clanging of machinery emanates from within." icon = 'icons/turf/walls/clockwork_wall.dmi' icon_state = "clockwork_wall" - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF unacidable = TRUE mineral_amount = 1 canSmoothWith = list(/obj/effect/clockwork/overlay/wall, /obj/structure/falsewall/brass) diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm new file mode 100644 index 00000000000..7ce1f6626b9 --- /dev/null +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -0,0 +1,100 @@ +//Necropolis Tendrils, which spawn lavaland monsters and break into a chasm when killed +/obj/structure/spawner/lavaland + name = "necropolis tendril" + desc = "A vile tendril of corruption, originating deep underground. Terrible monsters are pouring out of it." + + icon = 'icons/mob/nest.dmi' + icon_state = "tendril" + + faction = list("mining") + max_mobs = 3 + max_integrity = 250 + mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/tendril) + + move_resist = INFINITY // just killing it tears a massive hole in the ground, let's not move it + anchored = TRUE + burn_state = LAVA_PROOF + + var/gps = null + var/obj/effect/light_emitter/tendril/emitted_light + +/obj/structure/spawner/lavaland/goliath + mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril) + +/obj/structure/spawner/lavaland/legion + mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril) + +GLOBAL_LIST_INIT(tendrils, list()) + +/obj/structure/spawner/lavaland/Initialize(mapload) + . = ..() + emitted_light = new(loc) + gps = new /obj/item/gps/internal(src) + GLOB.tendrils += src + return INITIALIZE_HINT_LATELOAD + +/obj/structure/spawner/lavaland/LateInitialize() + for(var/F in RANGE_TURFS(1, src)) + if(ismineralturf(F)) + var/turf/simulated/mineral/M = F + M.ChangeTurf(M.turf_type, FALSE, FALSE, TRUE) + +/obj/structure/spawner/lavaland/deconstruct(disassembled) + new /obj/effect/collapse(loc) + new /obj/structure/closet/crate/necropolis/tendril(loc) + return ..() + + +/obj/structure/spawner/lavaland/Destroy() + var/last_tendril = TRUE + if(GLOB.tendrils.len>1) + last_tendril = FALSE + + if(last_tendril && !admin_spawned) + if(SSmedals.hub_enabled) + for(var/mob/living/L in view(7,src)) + if(L.stat || !L.client) + continue + SSmedals.UnlockMedal("[BOSS_MEDAL_TENDRIL] [ALL_KILL_MEDAL]", L.client) + SSmedals.SetScore(TENDRIL_CLEAR_SCORE, L.client, 1) + GLOB.tendrils -= src + QDEL_NULL(emitted_light) + QDEL_NULL(gps) + return ..() + +/obj/effect/light_emitter/tendril + set_luminosity = 4 + set_cap = 2.5 + light_color = LIGHT_COLOR_LAVA + +/obj/effect/collapse + name = "collapsing necropolis tendril" + desc = "Get clear!" + layer = TABLE_LAYER + icon = 'icons/mob/nest.dmi' + icon_state = "tendril" + anchored = TRUE + density = TRUE + var/obj/effect/light_emitter/tendril/emitted_light + +/obj/effect/collapse/Initialize(mapload) + . = ..() + emitted_light = new(loc) + visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") + visible_message("Something falls free of the tendril!") + playsound(loc, 'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE) + addtimer(CALLBACK(src, .proc/collapse), 50) + +/obj/effect/collapse/Destroy() + QDEL_NULL(emitted_light) + return ..() + +/obj/effect/collapse/proc/collapse() + for(var/mob/M in range(7, src)) + shake_camera(M, 15, 1) + playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, TRUE) + visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") + for(var/turf/T in range(2,src)) + if(!T.density) + T.TerraformTurf(/turf/simulated/floor/chasm/straight_down/lava_land_surface) + qdel(src) \ No newline at end of file diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 1bb19a81bd2..68a3081fc22 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -17,7 +17,7 @@ GLOBAL_LIST_EMPTY(safes) anchored = TRUE density = TRUE - resistance_flags = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF unacidable = TRUE var/open = FALSE diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm new file mode 100644 index 00000000000..71149cb1733 --- /dev/null +++ b/code/game/objects/structures/spawner.dm @@ -0,0 +1,124 @@ +/obj/structure/spawner + name = "monster nest" + icon = 'icons/mob/animal.dmi' + icon_state = "hole" + max_integrity = 100 + + move_resist = MOVE_FORCE_EXTREMELY_STRONG + anchored = TRUE + density = TRUE + + var/max_mobs = 5 + var/spawn_time = 300 //30 seconds default + var/mob_types = list(/mob/living/simple_animal/hostile/carp) + var/spawn_text = "emerges from" + var/faction = list("hostile") + var/spawner_type = /datum/component/spawner + +/obj/structure/spawner/Initialize(mapload) + . = ..() + AddComponent(spawner_type, mob_types, spawn_time, faction, spawn_text, max_mobs) + +/obj/structure/spawner/attack_animal(mob/living/simple_animal/M) + if(faction_check(faction, M.faction, FALSE) && !M.client) + return + ..() + +/obj/structure/spawner/blob_act(obj/structure/blob/B) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable + take_damage(400, BRUTE, "melee", 0, get_dir(src, B)) + +/obj/structure/spawner/ex_act(severity) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable + if(resistance_flags & INDESTRUCTIBLE) + return + switch(severity) + if(1) + obj_integrity = 0 + qdel(src) + if(2) + take_damage(rand(100, 250), BRUTE, "bomb", 0) + if(3) + take_damage(rand(10, 90), BRUTE, "bomb", 0) + +/obj/structure/spawner/mech_melee_attack(obj/mecha/M) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable + M.do_attack_animation(src) + var/play_soundeffect = 0 + var/mech_damtype = M.damtype + if(M.selected) + mech_damtype = M.selected.damtype + play_soundeffect = 1 + else + switch(M.damtype) + if(BRUTE) + playsound(src, 'sound/weapons/punch4.ogg', 50, 1) + if(BURN) + playsound(src, 'sound/items/welder.ogg', 50, 1) + if(TOX) + playsound(src, 'sound/effects/spray2.ogg', 50, 1) + return 0 + else + return 0 + visible_message("[M.name] has hit [src].") + return take_damage(M.force*3, mech_damtype, "melee", play_soundeffect, get_dir(src, M)) // multiplied by 3 so we can hit objs hard but not be overpowered against mobs. + +/obj/structure/spawner/syndicate + name = "warp beacon" + icon = 'icons/obj/device.dmi' + icon_state = "syndbeacon" + spawn_text = "warps in from" + mob_types = list(/mob/living/simple_animal/hostile/syndicate/ranged) + faction = list(ROLE_SYNDICATE) + +/obj/structure/spawner/skeleton + name = "bone pit" + desc = "A pit full of bones, and some still seem to be moving..." + icon_state = "hole" + icon = 'icons/mob/nest.dmi' + max_integrity = 150 + max_mobs = 15 + spawn_time = 150 + mob_types = list(/mob/living/simple_animal/hostile/skeleton) + spawn_text = "climbs out of" + faction = list("skeleton") + +/obj/structure/spawner/clown + name = "Laughing Larry" + desc = "A laughing, jovial figure. Something seems stuck in his throat." + icon_state = "clownbeacon" + icon = 'icons/obj/device.dmi' + max_integrity = 200 + max_mobs = 15 + spawn_time = 150 + mob_types = list(/mob/living/simple_animal/hostile/retaliate/clown) + spawn_text = "climbs out of" + faction = list("clown") + +/obj/structure/spawner/mining + name = "monster den" + desc = "A hole dug into the ground, harboring all kinds of monsters found within most caves or mining asteroids." + icon_state = "hole" + max_integrity = 200 + max_mobs = 3 + icon = 'icons/mob/nest.dmi' + spawn_text = "crawls out of" + mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub, /mob/living/simple_animal/hostile/asteroid/goliath, /mob/living/simple_animal/hostile/asteroid/hivelord, /mob/living/simple_animal/hostile/asteroid/basilisk) + faction = list("mining") + +/obj/structure/spawner/mining/goldgrub + name = "goldgrub den" + desc = "A den housing a nest of goldgrubs, annoying but arguably much better than anything else you'll find in a nest." + mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub) + +/obj/structure/spawner/mining/goliath + name = "goliath den" + desc = "A den housing a nest of goliaths, oh god why?" + mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath) + +/obj/structure/spawner/mining/hivelord + name = "hivelord den" + desc = "A den housing a nest of hivelords." + mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord) + +/obj/structure/spawner/mining/basilisk + name = "basilisk den" + desc = "A den housing a nest of basilisks, bring a coat." + mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk) \ No newline at end of file diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 15e578ed88f..c958096cc74 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -419,7 +419,7 @@ name = "wooden chair" icon_state = "wooden_chair_toppled" item_state = "woodenchair" - resistance_flags = FLAMMABLE + burn_state = FLAMMABLE max_integrity = 70 hitsound = 'sound/weapons/genhit1.ogg' origin_type = /obj/structure/chair/wood diff --git a/code/game/turfs/simulated/floor/asteroid.dm b/code/game/turfs/simulated/floor/asteroid.dm index 275b3a49502..de414ebf0c3 100644 --- a/code/game/turfs/simulated/floor/asteroid.dm +++ b/code/game/turfs/simulated/floor/asteroid.dm @@ -159,9 +159,9 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me has_data = TRUE /turf/simulated/floor/plating/asteroid/airless/cave/volcanic - mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/random = 50, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, \ - /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 40, /mob/living/simple_animal/hostile/spawner/lavaland = 2, \ - /mob/living/simple_animal/hostile/asteroid/hivelord/legion = 30, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, \ + mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/random = 50, /obj/structure/spawner/lavaland/goliath = 3, \ + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 40, /obj/structure/spawner/lavaland = 2, \ + /mob/living/simple_animal/hostile/asteroid/hivelord/legion = 30, /obj/structure/spawner/lavaland/legion = 3, \ SPAWN_MEGAFAUNA = 6, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10) data_having_type = /turf/simulated/floor/plating/asteroid/airless/cave/volcanic/has_data @@ -279,7 +279,7 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me return //if there's a megafauna within standard view don't spawn anything at all if(ispath(randumb, /mob/living/simple_animal/hostile/asteroid) || istype(H, /mob/living/simple_animal/hostile/asteroid)) return //if the random is a standard mob, avoid spawning if there's another one within 12 tiles - if((ispath(randumb, /mob/living/simple_animal/hostile/spawner/lavaland) || istype(H, /mob/living/simple_animal/hostile/spawner/lavaland)) && get_dist(src, H) <= 2) + if((ispath(randumb, /obj/structure/spawner/lavaland) || istype(H, /obj/structure/spawner/lavaland)) && get_dist(src, H) <= 2) return //prevents tendrils spawning in each other's collapse range new randumb(T) diff --git a/code/game/turfs/simulated/floor/chasm.dm b/code/game/turfs/simulated/floor/chasm.dm index 1768b2d472a..fda758238e8 100644 --- a/code/game/turfs/simulated/floor/chasm.dm +++ b/code/game/turfs/simulated/floor/chasm.dm @@ -8,7 +8,20 @@ canSmoothWith = list(/turf/simulated/floor/chasm) density = TRUE //This will prevent hostile mobs from pathing into chasms, while the canpass override will still let it function like an open turf var/static/list/falling_atoms = list() //Atoms currently falling into the chasm - var/static/list/forbidden_types = typecacheof(list(/obj/effect/portal, /obj/singularity, /obj/structure/stone_tile, /obj/item/projectile, /obj/effect/temp_visual, /obj/effect/collapse, /obj/effect/collapse)) + var/static/list/forbidden_types = typecacheof(list( + /obj/singularity, + /obj/docking_port, + /obj/structure/lattice, + /obj/structure/stone_tile, + /obj/item/projectile, + /obj/effect/portal, + /obj/effect/hotspot, + /obj/effect/landmark, + /obj/effect/temp_visual, + /obj/effect/light_emitter/tendril, + /obj/effect/collapse, + /obj/effect/particle_effect/ion_trails + )) var/drop_x = 1 var/drop_y = 1 var/drop_z = 1 diff --git a/code/modules/awaymissions/mission_code/ruins/oldstation.dm b/code/modules/awaymissions/mission_code/ruins/oldstation.dm index 83cdfd8ac5c..b66b272c763 100644 --- a/code/modules/awaymissions/mission_code/ruins/oldstation.dm +++ b/code/modules/awaymissions/mission_code/ruins/oldstation.dm @@ -160,7 +160,7 @@ item_state = "anc_helm" armor = list("melee" = 30, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75) item_color = "ancient" - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF sprite_sheets = null /obj/item/clothing/suit/space/hardsuit/ancient @@ -170,7 +170,7 @@ item_state = "anc_hardsuit" armor = list("melee" = 30, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75) slowdown = 3 - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF sprite_sheets = null helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient var/footstep = 1 diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index b50c1cd68e0..aac3bdcdc30 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -46,7 +46,7 @@ icon_state = "gas_mining" actions_types = list(/datum/action/item_action/adjust) armor = list("melee" = 10, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 0, "bio" = 50, "rad" = 0) - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index bc7d0d6c701..9dc2f20fb1d 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -126,7 +126,7 @@ name = "mining boots" desc = "Steel-toed mining boots for mining in hazardous environments. Very good at keeping toes uncrushed." icon_state = "explorer" - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF /obj/item/clothing/shoes/winterboots name = "winter boots" @@ -310,7 +310,7 @@ icon_state = "jetboots" item_state = "jetboots" item_color = "hosred" - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF actions_types = list(/datum/action/item_action/bhop) permeability_coefficient = 0.05 can_cut_open = FALSE diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index fef732ed01b..276bb0bf620 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -8,7 +8,7 @@ flash_protect = 2 tint = 2 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0) - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF var/brightness_on = 4 //luminosity when the light is on var/on = FALSE var/smile = FALSE diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 0d7267d9a92..d1e9fee0c00 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -501,7 +501,7 @@ heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF /obj/item/clothing/head/hooded/drake name = "drake helmet" @@ -511,7 +511,7 @@ armor = list("melee" = 70, "bullet" = 30, "laser" = 50, "energy" = 40, "bomb" = 70, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100) heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF flags = BLOCKHAIR flags_cover = HEADCOVERSEYES diff --git a/code/modules/food_and_drinks/food/foods/meat.dm b/code/modules/food_and_drinks/food/foods/meat.dm index 8e667bab885..c18f06c64af 100644 --- a/code/modules/food_and_drinks/food/foods/meat.dm +++ b/code/modules/food_and_drinks/food/foods/meat.dm @@ -239,7 +239,7 @@ /obj/item/reagent_containers/food/snacks/goliath_steak name = "goliath steak" desc = "A delicious, lava cooked steak." - resistance_flags = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF icon_state = "goliathsteak" trash = null list_reagents = list("protein" = 6, "vitamin" = 2) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 566694d480d..fc0e58d9874 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -12,7 +12,7 @@ hoodtype = /obj/item/clothing/head/hooded/explorer armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF hide_tail_by_species = list("Vox" , "Vulpkanin" , "Unathi" , "Tajaran") sprite_sheets = list( @@ -34,7 +34,7 @@ min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF sprite_sheets = list( "Vox" = 'icons/mob/species/vox/head.dmi', @@ -50,7 +50,7 @@ item_state = "hostile_env" flags = THICKMATERIAL //not spaceproof max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - burn_state = FIRE_PROOF | LAVA_PROOF + burn_state = LAVA_PROOF slowdown = 0 armor = list(melee = 70, bullet = 40, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 100) allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) @@ -82,7 +82,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT flags = THICKMATERIAL // no space protection armor = list(melee = 70, bullet = 40, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 100) - burn_state = FIRE_PROOF | LAVA_PROOF + burn_state = LAVA_PROOF /obj/item/clothing/head/helmet/space/hostile_environment/New() ..() diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 015921634fe..575ea17d7c0 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -295,7 +295,8 @@ /obj/structure/fans/tiny/invisible name = "air flow blocker" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF + resistance_flags = INDESTRUCTIBLE + burn_state = LAVA_PROOF unacidable = TRUE invisibility = INVISIBILITY_ABSTRACT diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm index 6a30c565547..c9b35e6f883 100644 --- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm +++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm @@ -168,7 +168,7 @@ force = 25 damtype = BURN hitsound = 'sound/weapons/sear.ogg' - burn_state = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF unacidable = 1 var/turf_type = /turf/simulated/floor/plating/lava/smooth var/transform_string = "lava" diff --git a/code/modules/mining/lavaland/loot/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm index 48c4249fd62..24210fc2ff0 100644 --- a/code/modules/mining/lavaland/loot/colossus_loot.dm +++ b/code/modules/mining/lavaland/loot/colossus_loot.dm @@ -27,7 +27,7 @@ luminosity = 8 max_n_of_items = INFINITY unacidable = 1 - burn_state = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF pixel_y = -4 use_power = NO_POWER_USE var/memory_saved = FALSE @@ -116,7 +116,7 @@ luminosity = 8 use_power = NO_POWER_USE density = 1 - burn_state = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF unacidable = 1 var/activation_method = "touch" var/activation_damage_type = null diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index 3727c103a64..67b597e90aa 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -164,8 +164,7 @@ icon_state = "goliath_boat" icon = 'icons/obj/lavaland/dragonboat.dmi' keytype = /obj/item/oar - burn_state = LAVA_PROOF | FIRE_PROOF - resistance_flags = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF /obj/vehicle/lavaboat/relaymove(mob/user, direction) var/turf/next = get_step(src, direction) @@ -185,7 +184,7 @@ desc = "Not to be confused with the kind Research hassles you for." force = 12 w_class = WEIGHT_CLASS_NORMAL - burn_state = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF /datum/crafting_recipe/oar name = "goliath bone oar" @@ -208,7 +207,7 @@ desc = "A tiny ship inside a bottle." icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "ship_bottle" - resistance_flags = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF /obj/item/ship_in_a_bottle/attack_self(mob/user) to_chat(user, "You're not sure how they get the ships in these things, but you're pretty sure you know how to get it out.") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 1a0a063e33f..9a7f5c6fe15 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -6,7 +6,7 @@ icon_state = "necrocrate" icon_opened = "necrocrateopen" icon_closed = "necrocrate" - burn_state = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF unacidable = 1 /obj/structure/closet/crate/necropolis/tendril diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index b85db884ef5..dd00368a2ab 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -2,12 +2,22 @@ //this item is intended to give the effect of entering the mine, so that light gradually fades /obj/effect/light_emitter - name = "Light emtter" - anchored = 1 + name = "Light emitter" + anchored = TRUE invisibility = 101 - unacidable = 1 - light_range = 8 - light_power = 0 + unacidable = TRUE + var/set_luminosity = 8 + var/set_cap = 0 + +/obj/effect/light_emitter/Initialize(mapload) + . = ..() + set_light(set_luminosity, set_cap) + +/obj/effect/light_emitter/singularity_pull() + return + +/obj/effect/light_emitter/singularity_act() + return /**********************Miner Lockers**************************/ diff --git a/code/modules/mob/living/simple_animal/hostile/mining/necropolis_tendril.dm b/code/modules/mob/living/simple_animal/hostile/mining/necropolis_tendril.dm deleted file mode 100644 index e910bac7ca3..00000000000 --- a/code/modules/mob/living/simple_animal/hostile/mining/necropolis_tendril.dm +++ /dev/null @@ -1,81 +0,0 @@ -/mob/living/simple_animal/hostile/spawner/lavaland - name = "necropolis tendril" - desc = "A vile tendril of corruption, originating deep underground. Terrible monsters are pouring out of it." - icon = 'icons/mob/nest.dmi' - icon_state = "tendril" - icon_living = "tendril" - icon_dead = "tendril" - faction = list("mining") - weather_immunities = list("lava","ash") - luminosity = 1 - health = 250 - maxHealth = 250 - max_mobs = 3 - spawn_time = 300 //30 seconds default - mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/tendril) - spawn_text = "emerges from" - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - move_resist = INFINITY - anchored = TRUE - loot = list(/obj/effect/collapse, /obj/structure/closet/crate/necropolis/tendril) - del_on_death = 1 - var/gps = null - -/mob/living/simple_animal/hostile/spawner/lavaland/New() - ..() - //for(var/F in RANGE_TURFS(1, src)) TODO: Uncomment - //if(ismineralturf(F)) - //var/turf/simulated/mineral/M = F - //M.ChangeTurf(M.turf_type, FALSE, TRUE) - gps = new /obj/item/gps/internal(src) - -/mob/living/simple_animal/hostile/spawner/lavaland/Destroy() - qdel(gps) - . = ..() - -/mob/living/simple_animal/hostile/spawner/lavaland/death() - var/last_tendril = TRUE - for(var/mob/living/simple_animal/hostile/spawner/lavaland/other in GLOB.mob_list) - if(other != src) - last_tendril = FALSE - break - if(last_tendril && !admin_spawned) - if(SSmedals.hub_enabled) - for(var/mob/living/L in view(7,src)) - if(L.stat || !L.client) - continue - SSmedals.UnlockMedal("[BOSS_MEDAL_TENDRIL] [ALL_KILL_MEDAL]", L.client) - SSmedals.SetScore(TENDRIL_CLEAR_SCORE, L.client, 1) - ..() - -/obj/effect/collapse - name = "collapsing necropolis tendril" - desc = "Get clear!" - luminosity = 1 - layer = ABOVE_OPEN_TURF_LAYER - icon = 'icons/mob/nest.dmi' - icon_state = "tendril" - anchored = TRUE - -/obj/effect/collapse/New() - ..() - visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") - visible_message("Something falls free of the tendril!") - playsound(get_turf(src),'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1) - spawn(50) - for(var/mob/M in range(7,src)) - shake_camera(M, 15, 1) - playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, 1) - visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") - for(var/turf/T in range(2,src)) - if(!T.density) - T.TerraformTurf(/turf/simulated/floor/chasm/straight_down/lava_land_surface) - qdel(src) - -/mob/living/simple_animal/hostile/spawner/lavaland/goliath - mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril) - -/mob/living/simple_animal/hostile/spawner/lavaland/legion - mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril) diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm index 70d279fd400..96c0bf632ac 100644 --- a/code/modules/mob/living/simple_animal/hostile/netherworld.dm +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -64,12 +64,11 @@ attacktext = "punches" deathmessage = "falls apart into a fine dust." -/mob/living/simple_animal/hostile/spawner/nether +/obj/structure/spawner/nether name = "netherworld link" desc = null //see examine() icon_state = "nether" - health = 50 - maxHealth = 50 + max_integrity = 50 spawn_time = 600 //1 minute max_mobs = 15 icon = 'icons/mob/nest.dmi' @@ -77,31 +76,30 @@ mob_types = list(/mob/living/simple_animal/hostile/netherworld/migo, /mob/living/simple_animal/hostile/netherworld, /mob/living/simple_animal/hostile/netherworld/blankbody) faction = list("nether") -/mob/living/simple_animal/hostile/spawner/nether/death() - . = ..() - qdel(src) +/obj/structure/spawner/nether/Initialize(mapload) + .=..() + START_PROCESSING(SSprocessing, src) -/mob/living/simple_animal/hostile/spawner/nether/examine(mob/user) +/obj/structure/spawner/nether/examine(mob/user) ..() - if(isskeleton(user)) + if(isskeleton(user) || iszombie(user)) to_chat(user, "A direct link to another dimension full of creatures very happy to see you. You can see your house from here!") else to_chat(user, "A direct link to another dimension full of creatures not very happy to see you. Entering the link would be a very bad idea.") -/mob/living/simple_animal/hostile/spawner/nether/attack_hand(mob/user) +/obj/structure/spawner/nether/attack_hand(mob/user) . = ..() - if(isskeleton(user)) + if(isskeleton(user) || iszombie(user)) to_chat(user, "You don't feel like going home yet...") else user.visible_message("[user] is violently pulled into the link!", \ "Touching the portal, you are quickly pulled through into a world of unimaginable horror!") contents.Add(user) -/mob/living/simple_animal/hostile/spawner/nether/Life() - . = ..() +/obj/structure/spawner/nether/process() for(var/mob/living/M in contents) if(M) - playsound(src, 'sound/magic/demon_consume.ogg', 50, 1) + playsound(src, 'sound/magic/demon_consume.ogg', 50, TRUE) M.adjustBruteLoss(60) new /obj/effect/gibspawner/generic(get_turf(M), M) if(M.stat == DEAD) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 299be975def..b64a044cbea 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -76,7 +76,7 @@ var/mob/living/carbon/human/master_commander = null //holding var for determining who own/controls a sentient simple animal (for sentience potions). - var/mob/living/simple_animal/hostile/spawner/nest + var/datum/component/spawner/nest var/sentience_type = SENTIENCE_ORGANIC // Sentience type, for slime potions diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm deleted file mode 100644 index 747c7690150..00000000000 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ /dev/null @@ -1,85 +0,0 @@ -/mob/living/simple_animal/hostile/spawner - name = "monster nest" - icon = 'icons/mob/animal.dmi' - health = 100 - maxHealth = 100 - var/list/spawned_mobs = list() - var/max_mobs = 5 - var/spawn_delay = 0 - var/spawn_time = 300 //30 seconds default - var/mob_types = list(/mob/living/simple_animal/hostile/carp) - var/spawn_text = "emerges from" - status_flags = 0 - move_resist = MOVE_FORCE_VERY_STRONG - AIStatus = AI_OFF - a_intent = INTENT_HARM - stop_automated_movement = 1 - wander = 0 - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = 350 - layer = MOB_LAYER-0.1 - sentience_type = SENTIENCE_BOSS - - -/mob/living/simple_animal/hostile/spawner/Destroy() - for(var/mob/living/simple_animal/L in spawned_mobs) - if(L.nest == src) - L.nest = null - spawned_mobs = null - return ..() - -/mob/living/simple_animal/hostile/spawner/Life() - ..() - spawn_mob() - -/mob/living/simple_animal/hostile/spawner/proc/spawn_mob() - if(spawned_mobs.len >= max_mobs) - return 0 - if(spawn_delay > world.time) - return 0 - spawn_delay = world.time + spawn_time - var/chosen_type = pick(mob_types) - var/mob/living/simple_animal/L = new chosen_type(loc) - L.admin_spawned = admin_spawned //If we were admin spawned, lets have our children count as that as well. - spawned_mobs += L - L.nest = src - L.faction = src.faction - visible_message("[L] [spawn_text] [src].") - -/mob/living/simple_animal/hostile/spawner/syndicate - name = "warp beacon" - icon = 'icons/obj/device.dmi' - icon_state = "syndbeacon" - spawn_text = "warps in from" - mob_types = list(/mob/living/simple_animal/hostile/syndicate/ranged) - faction = list("syndicate") - -/mob/living/simple_animal/hostile/spawner/mining - name = "monster den" - desc = "A hole dug into the ground, harboring all kinds of monsters found within most caves or mining areas." - icon_state = "hole" - icon_living = "hole" - health = 200 - maxHealth = 200 - max_mobs = 3 - icon = 'icons/mob/nest.dmi' - spawn_text = "crawls out of" - mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub) - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - faction = list("mining") - -/mob/living/simple_animal/hostile/spawner/mining/goliath - name = "goliath den" - desc = "A den housing a nest of goliaths, oh god why?" - mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath) - -/mob/living/simple_animal/hostile/spawner/mining/hivelord - name = "hivelord den" - desc = "A den housing a nest of hivelords." - mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord) - -/mob/living/simple_animal/hostile/spawner/mining/basilisk - name = "basilisk den" - desc = "A den housing a nest of basilisks, bring a coat." - mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk) diff --git a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm index 7800b3eb9ab..168fde07e7d 100644 --- a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm +++ b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm @@ -9,7 +9,7 @@ anchored = TRUE density = TRUE - resistance_flags = FIRE_PROOF | LAVA_PROOF + burn_state = LAVA_PROOF max_integrity = 200 var/faction = list("ashwalker") diff --git a/code/modules/ruins/lavalandruin_code/dead_ratvar.dm b/code/modules/ruins/lavalandruin_code/dead_ratvar.dm index b634aba5c4c..cde2007d643 100644 --- a/code/modules/ruins/lavalandruin_code/dead_ratvar.dm +++ b/code/modules/ruins/lavalandruin_code/dead_ratvar.dm @@ -13,7 +13,8 @@ bound_height = 64 pixel_y = -10 unacidable = TRUE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF + resistance_flags = INDESTRUCTIBLE + burn_state = LAVA_PROOF // An "overlay" used by clockwork walls and floors to appear normal to mesons. /obj/effect/clockwork/overlay @@ -78,7 +79,7 @@ anchored = TRUE density = TRUE unacidable = TRUE - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF desc = "A massive brass gear. You could probably secure or unsecure it with a wrench, or just climb over it." /obj/structure/clockwork/wall_gear/displaced @@ -149,7 +150,7 @@ desc = "Broken shards of some oddly malleable metal. They occasionally move and seem to glow." icon = 'icons/obj/clockwork_objects.dmi' icon_state = "alloy_shards" - resistance_flags = LAVA_PROOF | FIRE_PROOF + burn_state = LAVA_PROOF unacidable = TRUE var/randomsinglesprite = FALSE var/randomspritemax = 2 diff --git a/code/modules/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/ruins/lavalandruin_code/syndicate_base.dm index bbfa4ef688a..73cdd9fe40c 100644 --- a/code/modules/ruins/lavalandruin_code/syndicate_base.dm +++ b/code/modules/ruins/lavalandruin_code/syndicate_base.dm @@ -18,7 +18,7 @@ /obj/item/grenade/chem_grenade/adv_release = 5, /obj/item/reagent_containers/food/drinks/bottle/holywater = 1) product_slogans = "It's not pyromania if you're getting paid!;You smell that? Plasma, son. Nothing else in the world smells like that.;I love the smell of Plasma in the morning." - resistance_flags = FIRE_PROOF + burn_state = FIRE_PROOF // Spawners /obj/effect/mob_spawn/human/lavaland_syndicate @@ -63,7 +63,7 @@ /obj/effect/mob_spawn/human/lavaland_syndicate/comms/space flavour_text = "You are a syndicate agent, assigned to a small listening post station situated near your hated enemy's top secret research facility: Space Station 13. Monitor enemy activity as best you can, and try to keep a low profile. Do not abandon the base. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands! \ -
You are free to attack anyone not aligned with the Syndicate in the vicinity of your base. DO NOT work against Syndicate personnel (such as traitors or nuclear operatives). You may work with or against non-Syndicate antagonists on a case-by-case basis. DO NOT leave your base without admin permission." +
You are free to attack anyone not aligned with the Syndicate in the vicinity of your base. DO NOT work against Syndicate personnel (such as traitors or nuclear operatives). You may work with or against non-Syndicate antagonists on a case-by-case basis. DO NOT leave your base without admin permission." /obj/effect/mob_spawn/human/lavaland_syndicate/comms/space/Initialize(mapload) . = ..() diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index 3c9f093921e..869c280a477 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -11,7 +11,8 @@ density = TRUE pixel_x = -32 pixel_y = -32 - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF + resistance_flags = INDESTRUCTIBLE + burn_state = LAVA_PROOF unacidable = 1 light_range = 8 light_color = LIGHT_COLOR_LAVA @@ -213,7 +214,8 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) anchored = TRUE pixel_x = -64 pixel_y = -40 - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF + resistance_flags = INDESTRUCTIBLE + burn_state = LAVA_PROOF unacidable = TRUE var/open = FALSE var/static/mutable_appearance/top_overlay @@ -245,7 +247,8 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) icon_state = "pristine_tile1" layer = ABOVE_OPEN_TURF_LAYER anchored = TRUE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF + resistance_flags = INDESTRUCTIBLE + burn_state = LAVA_PROOF unacidable = TRUE var/tile_key = "pristine_tile" var/tile_random_sprite_max = 24 diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index abb30f22f16..91693668637 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -5,7 +5,7 @@ sustain the zombie, forcing open airlock doors and opening \ child-safe caps on bottles." flags = NODROP|ABSTRACT|DROPDEL - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF + resistance_flags = INDESTRUCTIBLE burn_state = LAVA_PROOF unacidable = TRUE icon = 'icons/effects/blood.dmi' diff --git a/paradise.dme b/paradise.dme index 21d156ad2df..237ef95349a 100644 --- a/paradise.dme +++ b/paradise.dme @@ -283,6 +283,7 @@ #include "code\datums\components\jestosterone.dm" #include "code\datums\components\material_container.dm" #include "code\datums\components\paintable.dm" +#include "code\datums\components\spawner.dm" #include "code\datums\components\squeak.dm" #include "code\datums\components\waddling.dm" #include "code\datums\diseases\_disease.dm" @@ -1066,6 +1067,7 @@ #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\signs.dm" +#include "code\game\objects\structures\spawner.dm" #include "code\game\objects\structures\spirit_board.dm" #include "code\game\objects\structures\statues.dm" #include "code\game\objects\structures\table_frames.dm" @@ -1109,6 +1111,7 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" #include "code\game\objects\structures\decor\decor.dm" #include "code\game\objects\structures\decor\machinery\telecomms.dm" +#include "code\game\objects\structures\lavaland\necropolis_tendril.dm" #include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" #include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" #include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" @@ -1911,7 +1914,6 @@ #include "code\modules\mob\living\simple_animal\powers.dm" #include "code\modules\mob\living\simple_animal\shade.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" -#include "code\modules\mob\living\simple_animal\spawner.dm" #include "code\modules\mob\living\simple_animal\tribbles.dm" #include "code\modules\mob\living\simple_animal\bot\bot.dm" #include "code\modules\mob\living\simple_animal\bot\cleanbot.dm" @@ -1986,7 +1988,6 @@ #include "code\modules\mob\living\simple_animal\hostile\mining\gutlunch.dm" #include "code\modules\mob\living\simple_animal\hostile\mining\hivelord.dm" #include "code\modules\mob\living\simple_animal\hostile\mining\mining.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining\necropolis_tendril.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\fish.dm"