mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 20:47:10 +01:00
Merge pull request #12230 from Fox-McCloud/tendril-refactor
Refactors Spawners/Tendrils
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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("<span class='danger'>[L] [spawn_text] [P].</span>")
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
/*
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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("<span class='boldannounce'>The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!</span>")
|
||||
visible_message("<span class='warning'>Something falls free of the tendril!</span>")
|
||||
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("<span class='boldannounce'>The tendril falls inward, the ground around it widening into a yawning chasm!</span>")
|
||||
for(var/turf/T in range(2,src))
|
||||
if(!T.density)
|
||||
T.TerraformTurf(/turf/simulated/floor/chasm/straight_down/lava_land_surface)
|
||||
qdel(src)
|
||||
@@ -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
|
||||
|
||||
@@ -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("<span class='danger'>[M.name] has hit [src].</span>")
|
||||
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)
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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**************************/
|
||||
|
||||
|
||||
@@ -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("<span class='boldannounce'>The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!</span>")
|
||||
visible_message("<span class='warning'>Something falls free of the tendril!</span>")
|
||||
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("<span class='boldannounce'>The tendril falls inward, the ground around it widening into a yawning chasm!</span>")
|
||||
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)
|
||||
@@ -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. <span class='nicegreen'>You can see your house from here!</span>")
|
||||
else
|
||||
to_chat(user, "A direct link to another dimension full of creatures not very happy to see you. <span class='warning'>Entering the link would be a very bad idea.</span>")
|
||||
|
||||
/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, "<span class='notice'>You don't feel like going home yet...</span>")
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] is violently pulled into the link!</span>", \
|
||||
"<span class='userdanger'>Touching the portal, you are quickly pulled through into a world of unimaginable horror!</span>")
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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("<span class='danger'>[L] [spawn_text] [src].</span>")
|
||||
|
||||
/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)
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = "<span class='big bold'>You are a syndicate agent,</span><b> assigned to a small listening post station situated near your hated enemy's top secret research facility: Space Station 13. <b>Monitor enemy activity as best you can, and try to keep a low profile. Do not abandon the base.</b> 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!</b> \
|
||||
<br><i>You are free to attack anyone not aligned with the Syndicate in the vicinity of your base. <font size=6>DO NOT</font> 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. <font size=6>DO NOT</font> leave your base without admin permission.</i>"
|
||||
<br><i>You are free to attack anyone not aligned with the Syndicate in the vicinity of your base. <font size=6>DO NOT</font> 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. <font size=6>DO NOT</font> leave your base without admin permission.</i>"
|
||||
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate/comms/space/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
+3
-2
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user