mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* tweaks
* Update jungle.dm
* rename to fitting name
* Revert "rename to fitting name"
This reverts commit 060cfa8989.
* renames and shift
* Update JungleBiomes.dm
* smooth
* Update jungle_turfs.dm
* tweaks
* lighting
* i hate icon cutter
* magnus purpur
* Update JungleBiomes.dm
* Update water.dm
* almost, but not quite
* Update smoothwater.dmi
* fixtearing
* tar biome
* Update jungle_datums.dm
568 lines
17 KiB
Plaintext
568 lines
17 KiB
Plaintext
/obj/structure/flora/tree/dead/jungle
|
|
icon = 'icons/obj/flora/deadtrees.dmi'
|
|
desc = "A dead tree. How it died, you know not."
|
|
icon_state = "nwtree_1"
|
|
|
|
/obj/structure/flora/tree/dead/jungle/Initialize()
|
|
. = ..()
|
|
icon_state = "nwtree_[rand(1, 6)]"
|
|
|
|
/obj/effect/better_animated_temp_visual/skin_twister_in
|
|
layer = BELOW_MOB_LAYER
|
|
duration = 8
|
|
icon = 'yogstation/icons/effects/64x64.dmi'
|
|
animated_icon_state = "skin_twister_in"
|
|
pixel_y = -16
|
|
pixel_x = -16
|
|
|
|
/obj/effect/better_animated_temp_visual/skin_twister_out
|
|
layer = BELOW_MOB_LAYER
|
|
duration = 8
|
|
icon = 'yogstation/icons/effects/64x64.dmi'
|
|
animated_icon_state = "skin_twister_out"
|
|
pixel_y = -16
|
|
pixel_x = -16
|
|
|
|
/obj/effect/tar_king
|
|
layer = BELOW_MOB_LAYER
|
|
icon_state = ""
|
|
|
|
//For some reason Initialize() doesnt want to get properly overloaded, so I'm forced to use this
|
|
/obj/effect/tar_king/New(loc, datum/following, direction)
|
|
. = ..()
|
|
RegisterSignal(following,COMSIG_MOVABLE_MOVED,PROC_REF(follow))
|
|
setDir(direction)
|
|
|
|
/obj/effect/tar_king/proc/follow(datum/source)
|
|
forceMove(get_turf(source))
|
|
|
|
/obj/effect/tar_king/rune_attack
|
|
icon = 'yogstation/icons/effects/160x160.dmi'
|
|
pixel_x = -64
|
|
pixel_y = -64
|
|
|
|
/obj/effect/tar_king/rune_attack/New(loc, ...)
|
|
. = ..()
|
|
flick("rune_attack",src)
|
|
QDEL_IN(src,13)
|
|
|
|
/obj/effect/tar_king/slash
|
|
icon = 'yogstation/icons/effects/160x160.dmi'
|
|
pixel_x = -64
|
|
pixel_y = -64
|
|
|
|
/obj/effect/tar_king/slash/New(loc, datum/following, direction)
|
|
. = ..()
|
|
flick("slash",src)
|
|
QDEL_IN(src,4)
|
|
|
|
/obj/effect/tar_king/impale
|
|
icon = 'yogstation/icons/effects/160x160.dmi'
|
|
pixel_x = -64
|
|
pixel_y = -64
|
|
|
|
/obj/effect/tar_king/impale/New(loc, ...)
|
|
. = ..()
|
|
flick("stab",src)
|
|
QDEL_IN(src,4)
|
|
|
|
/obj/effect/tar_king/orb_out
|
|
pixel_x = -16
|
|
pixel_y = -16
|
|
icon = 'yogstation/icons/effects/64x64.dmi'
|
|
|
|
/obj/effect/tar_king/orb_out/New(loc, ...)
|
|
. = ..()
|
|
flick("ability1",src)
|
|
QDEL_IN(src,4)
|
|
|
|
/obj/effect/tar_king/orb_in
|
|
pixel_x = -16
|
|
pixel_y = -16
|
|
icon = 'yogstation/icons/effects/64x64.dmi'
|
|
|
|
/obj/effect/tar_king/orb_in/New(loc, ...)
|
|
. = ..()
|
|
flick("ability0",src)
|
|
QDEL_IN(src,4)
|
|
|
|
/obj/structure/tar_pit
|
|
name = "Tar pit"
|
|
desc = "A pit filled with viscious substance resembling tar, every so often a bubble rises to the top."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "tar_pit"
|
|
layer = SIGIL_LAYER
|
|
anchored = TRUE
|
|
density = FALSE
|
|
|
|
/obj/structure/tar_pit/Initialize()
|
|
. = ..()
|
|
GLOB.tar_pits += src
|
|
|
|
/obj/structure/tar_pit/Destroy()
|
|
GLOB.tar_pits -= src
|
|
return ..()
|
|
|
|
|
|
/obj/effect/timed_attack
|
|
var/replace_icon_state = ""
|
|
var/animation_length = 0
|
|
|
|
/obj/effect/timed_attack/New(loc, ...)
|
|
. = ..()
|
|
flick(replace_icon_state,src)
|
|
addtimer(CALLBACK(src,PROC_REF(finish_attack)),animation_length)
|
|
|
|
/obj/effect/timed_attack/proc/finish_attack()
|
|
qdel(src)
|
|
|
|
|
|
/obj/effect/timed_attack/tar_king
|
|
icon = 'yogstation/icons/effects/jungle.dmi'
|
|
animation_length = 13
|
|
|
|
/obj/effect/timed_attack/tar_king/spawn_shrine
|
|
replace_icon_state = "tar_king_shrine"
|
|
|
|
/obj/effect/timed_attack/tar_king/spawn_shrine/finish_attack()
|
|
new /obj/structure/tar_pit(loc)
|
|
return ..()
|
|
|
|
|
|
/obj/effect/timed_attack/tar_priest
|
|
icon = 'yogstation/icons/effects/jungle.dmi'
|
|
animation_length = 13
|
|
|
|
/obj/effect/timed_attack/tar_priest/curse
|
|
replace_icon_state = "tar_shade_curse"
|
|
|
|
|
|
/obj/effect/timed_attack/tar_priest/curse/finish_attack()
|
|
var/turf/T = get_turf(src)
|
|
for(var/mob/living/L in T.contents)
|
|
L.apply_status_effect(/datum/status_effect/tar_curse)
|
|
return ..()
|
|
/obj/effect/timed_attack/tar_priest/shroud
|
|
replace_icon_state = "tar_shade_shroud"
|
|
|
|
/obj/effect/timed_attack/tar_priest/shroud/finish_attack()
|
|
var/turf/T = get_turf(src)
|
|
for(var/mob/living/L in T.contents)
|
|
if(L.has_status_effect(/datum/status_effect/tar_curse))
|
|
L.set_blindness(20)
|
|
SEND_SIGNAL(L,COMSIG_JUNGLELAND_TAR_CURSE_PROC)
|
|
else
|
|
L.adjust_eye_blur(20)
|
|
return ..()
|
|
/obj/effect/timed_attack/tar_priest/tendril
|
|
replace_icon_state = "tar_shade_tendril"
|
|
|
|
/obj/effect/timed_attack/tar_priest/tendril/finish_attack()
|
|
var/turf/T = get_turf(src)
|
|
for(var/mob/living/L in T.contents)
|
|
if(L.has_status_effect(/datum/status_effect/tar_curse))
|
|
L.Stun(5 SECONDS)
|
|
SEND_SIGNAL(L,COMSIG_JUNGLELAND_TAR_CURSE_PROC)
|
|
else
|
|
L.adjustStaminaLoss(60)
|
|
return ..()
|
|
|
|
/obj/structure/fluff/tarstatue
|
|
name = "Tar Statue"
|
|
desc = "A lifelike recreation of some...one? It seems damaged from years of neglect."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "damaged_tarstatue"
|
|
deconstructible = FALSE
|
|
density = TRUE
|
|
|
|
/obj/structure/tar_altar
|
|
name = "Forgotten Altar"
|
|
desc = "A might pillar of ivory, untouched by time and corrosion. There is a large hole on the top, it's missing a key ingredient..."
|
|
icon = 'yogstation/icons/obj/jungle32x48.dmi'
|
|
icon_state = "tar_altar"
|
|
layer = ABOVE_ALL_MOB_LAYER
|
|
resistance_flags = INDESTRUCTIBLE
|
|
anchored = TRUE
|
|
density = TRUE
|
|
|
|
/obj/structure/tar_altar/attacked_by(obj/item/I, mob/living/user)
|
|
if(!istype(I,/obj/item/full_tar_crystal))
|
|
return ..()
|
|
|
|
add_overlay(image(icon = src.icon, icon_state = "tar_altar_crystal"))
|
|
qdel(I)
|
|
INVOKE_ASYNC(src,PROC_REF(summon))
|
|
|
|
/obj/structure/tar_altar/proc/summon()
|
|
for(var/mob/living/L in range(7,src))
|
|
shake_camera(L,1 SECONDS, 4)
|
|
|
|
animate(src,time = 15 SECONDS, color = "#1f0010")
|
|
sleep(20 SECONDS)
|
|
visible_message(span_colossus("WHO DARES?"))
|
|
|
|
for(var/mob/living/L in range(7,src))
|
|
shake_camera(L,2 SECONDS, 2)
|
|
sleep(2 SECONDS)
|
|
|
|
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
|
|
new /mob/living/simple_animal/hostile/megafauna/tar_king(get_turf(src))
|
|
|
|
/obj/structure/herb
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
anchored = TRUE
|
|
density = FALSE
|
|
|
|
var/picked_result
|
|
var/picked_amt
|
|
|
|
/obj/structure/herb/attack_hand(mob/user)
|
|
. = ..()
|
|
if(!do_after(user, 5 SECONDS, src))
|
|
return
|
|
|
|
for(var/i in 1 to picked_amt)
|
|
new picked_result(get_turf(src))
|
|
|
|
qdel(src)
|
|
|
|
/obj/structure/herb/explosive_shrooms
|
|
name = "Explosive Mushroom"
|
|
desc = "Highly volatile mushrooms, they contain a high amount of volatile alkalines that will explode after a short delay if stepped on."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "explosive_shrooms"
|
|
picked_amt = 1
|
|
picked_result = /obj/item/explosive_shroom
|
|
var/delay = (2.5 SECONDS)
|
|
|
|
/obj/structure/herb/explosive_shrooms/Cross(atom/movable/AM)
|
|
. = ..()
|
|
if(!isliving(AM) || ishostile(AM))
|
|
return
|
|
|
|
animate(src,time= delay, color = "#e05a5a")
|
|
addtimer(CALLBACK(src,PROC_REF(explode)), delay)
|
|
|
|
/obj/structure/herb/explosive_shrooms/proc/explode()
|
|
dyn_explosion(get_turf(src),4)
|
|
if(src && !QDELETED(src))
|
|
qdel(src)
|
|
|
|
//haha you get the jokes, the shrooms that make you trip balls are called "liberal hats", pun being that there are shrooms that do that that are called "liberty caps" haha
|
|
/obj/structure/herb/liberal_hats
|
|
name = "Liberal Hats"
|
|
desc = "Liberate yourself from the chains of your flesh, consume and witness the world in new colors."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "liberal_hats"
|
|
picked_amt = 3
|
|
picked_result = /obj/item/reagent_containers/food/snacks/grown/jungle/liberal_hat
|
|
|
|
/obj/structure/herb/cinchona
|
|
name = "Cinchona Exotica"
|
|
desc = "A small shrubby tree with a very peculiar bark..."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "herb_5"
|
|
picked_amt = 3
|
|
picked_result = /obj/item/reagent_containers/food/snacks/grown/jungle/cinchona_bark
|
|
|
|
/obj/structure/herb/fruit
|
|
desc = "Fruiting plant, I wonder what the berry tastes like?"
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
picked_amt = 1
|
|
|
|
/obj/structure/herb/fruit/Initialize()
|
|
. = ..()
|
|
var/fruit = pick("kuku","bonji","bianco")
|
|
switch(fruit)
|
|
if("kuku")
|
|
name = "Kuku bush"
|
|
icon_state = "kuku_plant"
|
|
picked_result = /obj/item/reagent_containers/food/snacks/grown/jungle/kuku
|
|
if("bonji")
|
|
name = "Bonji bush"
|
|
icon_state = "bonji_plant"
|
|
picked_result = /obj/item/reagent_containers/food/snacks/grown/jungle/bonji
|
|
if("bianco")
|
|
name = "Bianco bush"
|
|
icon_state = "bianco_plant"
|
|
picked_result = /obj/item/reagent_containers/food/snacks/grown/jungle/bianco
|
|
|
|
/obj/structure/herb/magnus_purpura
|
|
name = "Magnus Purpura"
|
|
desc = "A weird flower that can surivive in the harshest environments of jungleland. It thrives where others disolve and wither away. Maybe you could use that to your advantage?"
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "magnus_purpura"
|
|
picked_amt = 1
|
|
picked_result = /obj/item/reagent_containers/food/snacks/grown/jungle/magnus_purpura
|
|
|
|
|
|
/obj/structure/flytrap //feed it a specific mob loot to get rare materials. Can rarely drop VERY rare minerals like bananium!
|
|
name = "Mineral Rich Flytrap"
|
|
desc = "The mouth doesn't look big enough to hurt you, but it does look very hungry."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "flytrap"
|
|
anchored = TRUE
|
|
density = FALSE
|
|
|
|
var/full = FALSE
|
|
var/craving = /obj/item/stack/sheet/meduracha
|
|
|
|
/obj/structure/flytrap/Initialize()
|
|
. = ..()
|
|
switch(rand(1,3))
|
|
if(1)
|
|
craving = /obj/item/stack/sheet/meduracha
|
|
desc = "The mouth doesn't look big enough to hurt you, but it does look very hungry. It seems peckish for some meduracha tentacles."
|
|
if(2)
|
|
craving = /obj/item/stack/sheet/skin_twister
|
|
desc = "The mouth doesn't look big enough to hurt you, but it does look very hungry. It seems to have a specific appetite for skintwister hide."
|
|
if(3)
|
|
craving = /obj/item/stack/sheet/slime
|
|
desc = "The mouth doesn't look big enough to hurt you, but it does look very hungry. Seems starving for some slime."
|
|
|
|
/obj/structure/flytrap/attackby(obj/item/W, mob/user, params)
|
|
if(istype(W, craving) && full == FALSE )
|
|
user.visible_message(span_notice("[user] feeds the [src], and watches as it spews out materials!"),span_notice("You place the [W] inside the mouth of the [src], watching as it devours it and shoots out minerals!"))
|
|
full = TRUE
|
|
switch(rand(1,25))
|
|
if(1 to 8)
|
|
for(var/i in 1 to 5)
|
|
new /obj/item/stack/ore/dilithium_crystal(get_turf(src))
|
|
if(9 to 14)
|
|
for(var/i in 1 to 5)
|
|
new /obj/item/stack/ore/diamond(get_turf(src))
|
|
if(15 to 22)
|
|
for(var/i in 1 to 5)
|
|
new /obj/item/stack/ore/bluespace_crystal(get_turf(src))
|
|
if(23)
|
|
new /obj/item/stack/ore/bananium(get_turf(src))
|
|
if(24)
|
|
new /obj/item/stack/sheet/mineral/mythril(get_turf(src))
|
|
if(25)
|
|
new /obj/item/stack/sheet/mineral/adamantine(get_turf(src))
|
|
icon_state = "flytrap_closed"
|
|
desc = "A relatively large venus fly trap. The mouths seem to be closed, it doesn't look like they'll open any time soon."
|
|
W.use(1)
|
|
else
|
|
return ..()
|
|
|
|
/obj/structure/tar_shrine
|
|
name = "Tar shrine"
|
|
desc = "Strangely translucent pool of tar."
|
|
icon = 'yogstation/icons/obj/jungle32x48.dmi'
|
|
icon_state = "shrine"
|
|
resistance_flags = INDESTRUCTIBLE
|
|
anchored = TRUE
|
|
|
|
|
|
/obj/structure/spawner/nest
|
|
name = "Fauna nest"
|
|
desc = "Breeding grounds for the fauna of the jungle."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "nest"
|
|
faction = list("mining")
|
|
max_mobs = 3
|
|
max_integrity = 250
|
|
resistance_flags = UNACIDABLE
|
|
move_resist = INFINITY
|
|
anchored = TRUE
|
|
density = FALSE
|
|
var/list/possible_mob_types = list()
|
|
|
|
GLOBAL_LIST_INIT(nests, list())
|
|
/obj/structure/spawner/nest/Initialize()
|
|
for(var/obj/structure/flora/F in orange(3,src))
|
|
qdel(F)
|
|
GLOB.nests += src
|
|
mob_types = list(pick(possible_mob_types))
|
|
return ..()
|
|
|
|
/obj/structure/spawner/nest/deconstruct(disassembled, force)
|
|
visible_message(span_boldannounce("You've awakened a sleeping monster from within the nest! Get back!"))
|
|
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1)
|
|
spawn_mother_monster()
|
|
return ..()
|
|
|
|
/obj/structure/spawner/nest/proc/spawn_mother_monster()
|
|
var/mob/living/simple_animal/hostile/yog_jungle/type = pick(mob_types)
|
|
if(initial(type.alpha_type) == 0)
|
|
var/mob/living/simple_animal/hostile/yog_jungle/monster = new type(loc)
|
|
monster.setMaxHealth(monster.maxHealth * 1.5)
|
|
monster.health = monster.maxHealth * 1.5
|
|
monster.move_to_delay = max(monster.move_to_delay / 2, 1)
|
|
if(monster.alpha_damage_boost == 1) //mobs with really high damage amounts may be exempt from giant damage boosts
|
|
monster.melee_damage_lower *= 1.5
|
|
monster.melee_damage_upper *= 1.5
|
|
monster.faction = list("mining")
|
|
var/matrix/M = matrix()
|
|
M.Scale(1.5,1.5)
|
|
monster.transform = M
|
|
monster.color = "#c30505"
|
|
return
|
|
type = initial(type.alpha_type)
|
|
new type(loc)
|
|
/obj/structure/spawner/nest/jungle
|
|
possible_mob_types = list(/mob/living/simple_animal/hostile/yog_jungle/dryad, /mob/living/simple_animal/hostile/yog_jungle/yellowjacket)
|
|
|
|
/obj/structure/spawner/nest/swamp
|
|
possible_mob_types = list(/mob/living/simple_animal/hostile/yog_jungle/mosquito,/mob/living/simple_animal/hostile/yog_jungle/meduracha, /mob/living/simple_animal/hostile/yog_jungle/blobby)
|
|
|
|
/obj/structure/spawner/nest/dying
|
|
possible_mob_types = list(/mob/living/simple_animal/hostile/yog_jungle/corrupted_dryad,/mob/living/simple_animal/hostile/yog_jungle/mosquito)
|
|
|
|
/obj/effect/spawner/tendril_spawner
|
|
|
|
/obj/effect/spawner/tendril_spawner/Initialize()
|
|
. = ..()
|
|
var/type = pick(typesof(/obj/structure/spawner/lavaland))
|
|
new type(loc)
|
|
qdel(src)
|
|
|
|
/obj/effect/better_animated_temp_visual/tar_shield_pop
|
|
layer = BELOW_MOB_LAYER
|
|
duration = 5
|
|
icon = 'yogstation/icons/effects/96x96.dmi'
|
|
animated_icon_state = "tar_shield_pop"
|
|
pixel_y = -32
|
|
pixel_x = -32
|
|
|
|
/obj/effect/better_animated_temp_visual
|
|
var/animated_icon_state
|
|
var/duration
|
|
|
|
/obj/effect/better_animated_temp_visual/New(loc, ...)
|
|
. = ..()
|
|
flick(animated_icon_state,src)
|
|
QDEL_IN(src,duration)
|
|
|
|
/obj/machinery/advanced_airlock_controller/jungleland
|
|
exterior_pressure = 205
|
|
depressurization_margin = 50
|
|
depressurization_target = 20
|
|
|
|
/obj/structure/tar_assistant_spawner
|
|
name = "Ivory Pillar"
|
|
desc = "It calls towards it's master."
|
|
icon = 'yogstation/icons/obj/jungle32x48.dmi'
|
|
icon_state = "tar_assistant_base"
|
|
anchored = TRUE
|
|
density = TRUE
|
|
|
|
var/used = FALSE
|
|
var/in_use = FALSE
|
|
|
|
/obj/structure/tar_assistant_spawner/Initialize()
|
|
. = ..()
|
|
update_appearance(UPDATE_OVERLAYS)
|
|
|
|
/obj/structure/tar_assistant_spawner/examine(mob/user)
|
|
. = ..()
|
|
if(!used)
|
|
. += "There is a humanoid shape poking out of the pillar."
|
|
. += "There is a small opening big enough for your hand to fit in on the humanoid's chest."
|
|
else
|
|
. += "There is a humanoid shaped hole carved into the pillar..."
|
|
|
|
/obj/structure/tar_assistant_spawner/update_overlays()
|
|
. = ..()
|
|
if(used)
|
|
return
|
|
. += mutable_appearance(icon, "tar_assistant")
|
|
|
|
/obj/structure/tar_assistant_spawner/attack_hand(mob/user)
|
|
if(used)
|
|
return ..()
|
|
if(!in_use)
|
|
to_chat(user,span_notice("You insert the hand into the small hole in the pillar and a couple drops of blood spill down the spike..."))
|
|
INVOKE_ASYNC(src,PROC_REF(spawn_assistant),user)
|
|
else
|
|
to_chat(user,span_notice("The pillar is still moving!"))
|
|
|
|
/obj/structure/tar_assistant_spawner/proc/spawn_assistant(mob/user)
|
|
var/min = -2
|
|
var/max = 2
|
|
var/duration = 15 SECONDS
|
|
visible_message(span_notice("The pillar begins to shake violently and call out to the void!"))
|
|
in_use = TRUE
|
|
for(var/i in 0 to duration-1)
|
|
if (i == 0)
|
|
animate(src, pixel_x=rand(min,max), pixel_y=rand(min,max), time=0.1 SECONDS)
|
|
else
|
|
animate(src,pixel_x=rand(min,max), pixel_y=rand(min,max), time=0.1 SECONDS)
|
|
var/list/L = pollGhostCandidates("Do you want to play as a Tar Assistant?", ROLE_GOLEM, null, FALSE, 15 SECONDS, null)
|
|
if(!LAZYLEN(L))
|
|
to_chat(user,span_notice("The ivory pillar stops quaking as noone answered it's call."))
|
|
in_use = FALSE
|
|
return
|
|
var/mob/living/carbon/human/H = new /mob/living/carbon/human(get_turf(src))
|
|
var/mob/dead/observer/C = pick(L)
|
|
H.ghostize(TRUE)
|
|
H.key = C.key
|
|
H.set_species(/datum/species/golem/tar)
|
|
log_game("[key_name_admin(C)] has taken control of [key_name_admin(H)], his master is [key_name_admin(user)]")
|
|
to_chat(H, span_boldnotice("Your master is [user], you are bound to his will, protect him at all cost."))
|
|
to_chat(user,span_boldnotice("A wave of unusual energy washes over you as you realize you are now the master of [H]."))
|
|
used = TRUE
|
|
in_use = FALSE
|
|
update_appearance(UPDATE_OVERLAYS)
|
|
|
|
/obj/effect/dummy/phased_mob/spell_jaunt/tar_pool
|
|
name = "pool of tar"
|
|
desc = "You can feel someone's gaze when looking at it."
|
|
icon = 'yogstation/icons/effects/64x64.dmi'
|
|
icon_state = "tar_pool"
|
|
pixel_x = -16
|
|
pixel_y = -16
|
|
invisibility = 0
|
|
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
|
movespeed = 3
|
|
movedelay = 3
|
|
|
|
/obj/effect/dummy/phased_mob/spell_jaunt/tar_pool/phased_check(mob/living/user, direction)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
if(isclosedturf(.))
|
|
return null
|
|
|
|
/obj/structure/enchanting_table
|
|
name = "Ivory Table"
|
|
desc = "Table made out of ivory, it has runes carved into it."
|
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
|
icon_state = "enchant_active"
|
|
anchored = TRUE
|
|
density = TRUE
|
|
var/used = FALSE
|
|
var/in_use = FALSE
|
|
|
|
/obj/structure/enchanting_table/examine(mob/user)
|
|
. = ..()
|
|
if(!used)
|
|
. += "It glows with incandescent power."
|
|
. += "There is just enough space in the middle of the runes to place an item there."
|
|
|
|
/obj/structure/enchanting_table/attacked_by(obj/item/I, mob/living/user)
|
|
if(used)
|
|
return ..()
|
|
if(in_use)
|
|
return
|
|
in_use = TRUE
|
|
to_chat(user,span_notice("You begin to enchant [I]..."))
|
|
|
|
if(!do_after(user,5 SECONDS, src))
|
|
in_use = FALSE
|
|
return
|
|
in_use = FALSE
|
|
used = TRUE
|
|
I.AddComponent(/datum/component/fantasy,5)
|
|
|
|
to_chat(user,span_notice("You successfully enchant [I]."))
|
|
update_icon()
|
|
|
|
/obj/structure/enchanting_table/update_icon()
|
|
. = ..()
|
|
if(used)
|
|
icon_state = "enchant"
|
|
else
|
|
icon_state = "enchant_active"
|