Mining update (#30)

* smol mining update

* Revert "smol mining update"

This reverts commit 9a0bd466ff.

* the .wav files i will use

* the rest that is being added for now

* fixes your stuff

* makes the crusher purchasable

* fixes legion's trophy

* so many icons and oggs

* SIF and more icons

* even more icons, sorry

* new modkits, yay

* oh come on, it didn't update

* some bosses seen to be ready

* Glory Kill system, should work just fine

* even more icons, jeez, also, elite mods

* oh hey, i got the icon

* almost done

* icons and meme dragon

* it's icon was hidden and i didn't notice

* why do i hear boss music ?

* one day...

* while Nano was...

* not continuing that

* stole some compatibility stuff

* the end is near

* some stuff to make stuff work

* probably one of the last commits

* king goat itself

* THE ERRORS, THEY'RE EVERYWHERE

* so close...

* the new ruins should spawn now

* should be the last commit, let's test it

* Now The Gladiator actually exists

* make them mad, and toggle their music

* oh, wait, need to give you the new files

* i think i saved someone's ears

* missing areas, i'm sorry

* good luck fighting KG without a ladder

* just leave a comment, nothing else

* fixes double spawn at least for hiero, aka why the fuck make two of the same proc and not remove 1st

* invisible hat, not anymore

* takes some stuff before bob even merges it on theirs

* how did these icons disappear ?

* fixes some oopsies

* sand plz help

* *fixes your thing*

* and i think i fixed the other

* fixes

* no async needed

* im done, just merge this useless thing

Co-authored-by: crazyraio2 <44246096+crazyraio2@users.noreply.github.com>
This commit is contained in:
Enric Gabriel
2020-07-25 20:04:07 -03:00
committed by GitHub
co-authored by crazyraio2
parent fd16319e61
commit d312fbc4db
171 changed files with 9833 additions and 259 deletions
@@ -0,0 +1,10 @@
/area/ruin/powered/kinggoat_arena
name = "King Goat Arena"
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
noteleport = TRUE
icon_state = "dk_yellow"
/area/lavaland/surface/sif
name = "Lavaland Sif Ruins"
icon_state = "red"
outdoors = TRUE
@@ -0,0 +1,134 @@
//i hate these fucking goats but i can't murder them, for i know they will haunt me in my sleep if i do so. so i nerf them instead.
/obj/item/toy/plush/goatplushie
name = "strange goat plushie"
icon = 'sandcode/icons/obj/plushes.dmi'
icon_state = "goat"
desc = "Despite its cuddly appearance and plush nature, it will beat you up all the same. Goats never change."
/obj/item/toy/plush/goatplushie/angry
icon = 'sandcode/icons/obj/plushes.dmi'
var/mob/living/carbon/target
throwforce = 5
var/cooldown = 0
var/cooldown_modifier = 20
/obj/item/toy/plush/goatplushie/angry/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/item/toy/plush/goatplushie/angry/process()
if (prob(25) && !target)
var/list/targets_to_pick_from = list()
for(var/mob/living/carbon/C in view(7, src))
if(considered_alive(C.mind) && !faction_check(list("goat"), C.faction, FALSE))
targets_to_pick_from += C
if (!targets_to_pick_from.len)
return
target = pick(targets_to_pick_from)
visible_message("<span class='notice'>[src] stares at [target].</span>")
if (world.time > cooldown && target)
ram()
/obj/item/toy/plush/goatplushie/angry/proc/ram()
if(prob((obj_flags & EMAGGED) ? 98:90) && isturf(loc) && considered_alive(target.mind) && !faction_check(list("goat"), target.faction, FALSE))
throw_at(target, 10, 10)
visible_message("<span class='danger'>[src] rams [target]!</span>")
cooldown = world.time + cooldown_modifier
target = null
visible_message("<span class='notice'>[src] looks disinterested.</span>")
/obj/item/toy/plush/goatplushie/angry/emag_act(mob/user)
if (obj_flags&EMAGGED)
visible_message("<span class='notice'>[src] already looks angry enough, you shouldn't anger it more.</span>")
return
cooldown_modifier = cooldown_modifier/2 * 0.75
throwforce = 12.5
force = 10
obj_flags |= EMAGGED
visible_message("<span class='danger'>[src] stares at [user] angrily before going docile.</span>")
/obj/item/toy/plush/goatplushie/angry/Destroy()
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/item/toy/plush/goatplushie
squeak_override = list('sandcode/sound/items/goatsound.ogg'=1)
/obj/item/toy/plush/goatplushie/angry/realgoat
name = "goat plushie"
icon = 'sandcode/icons/obj/plushes.dmi'
icon_state = "realgoat"
/obj/item/toy/plush/realgoat
name = "goat plushie"
icon = 'sandcode/icons/obj/plushes.dmi'
desc = "Despite its cuddly appearance and plush nature, it will beat you up all the same... or at least it would if it wasn't a normal plushie."
icon_state = "realgoat"
squeak_override = list('sandcode/sound/items/goatsound.ogg'=1)
/obj/item/toy/plush/goatplushie/angry/kinggoat
name = "King Goat Plushie"
desc = "A plushie depicting the king of all goats."
icon = 'sandcode/icons/obj/plushes.dmi'
icon_state = "kinggoat"
throwforce = 8
force = 8
attack_verb = list("chomped")
gender = MALE
/obj/item/toy/plush/goatplushie/angry/kinggoat/ascendedkinggoat
name = "Ascended King Goat Plushie"
desc = "A plushie depicting the god of all goats."
icon = 'sandcode/icons/obj/plushes.dmi'
icon_state = "ascendedkinggoat"
throwforce = 10
force = 10
var/divine = TRUE
/obj/item/toy/plush/goatplushie/angry/kinggoat/ascendedkinggoat/attackby(obj/item/I,mob/living/user,params)
if(I.get_sharpness())
user.visible_message("<span class='notice'>[user] attempts to destroy [src]!</span>", "<span class='suicide'>[I] bounces off [src]'s back before breaking into millions of pieces... [src] glares at [user]!</span>") // You fucked up now son
I.play_tool_sound(src)
qdel(I)
user.gib()
/obj/item/toy/plush/goatplushie/angry/kinggoat/attackby(obj/item/I,mob/living/user,params)
if(I.get_sharpness())
user.visible_message("<span class='notice'>[user] rips [src] to shreds!</span>", "<span class='notice'>[src]'s death has attracted the attention of the king goat plushie guards!</span>")
I.play_tool_sound(src)
qdel(src)
var/turf/location = get_turf(user)
new/obj/item/toy/plush/goatplushie/angry/guardgoat/masterguardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat/masterguardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat/masterguardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat/masterguardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
new/obj/item/toy/plush/goatplushie/angry/guardgoat(location)
if(istype(I, /obj/item/reagent_containers/food/snacks/grown/cabbage))
user.visible_message("<span class='notice'>[user] watches as [src] takes a bite out of the cabbage!</span>", "<span class='notice'>[src]'s fur starts glowing. It seems they have ascended!</span>")
playsound(src, 'sound/items/eatfood.ogg', 50, 1)
qdel(I)
qdel(src)
var/turf/location = get_turf(user)
new/obj/item/toy/plush/goatplushie/angry/kinggoat/ascendedkinggoat(location)
/obj/item/toy/plush/goatplushie/angry/guardgoat
name = "guard goat plushie"
desc = "A plushie depicting one of the King Goat's guards, tasked to protect the king at all costs."
icon = 'sandcode/icons/obj/plushes.dmi'
icon_state = "guardgoat"
throwforce = 6
/obj/item/toy/plush/goatplushie/angry/guardgoat/masterguardgoat
name = "royal guard goat plushie"
desc = "A plushie depicting one of the royal King Goat's guards, tasked to protecting the king at all costs and training new goat guards."
icon = 'sandcode/icons/obj/plushes.dmi'
icon_state = "royalguardgoat"
throwforce = 7
@@ -0,0 +1,9 @@
/obj/structure/ladder/unbreakable/kinggoat
name = "Ladder to King Goat's arena"
id = "kinggoat"
height = 0
/obj/structure/ladder/unbreakable/kinggoat/goat2
name = "Ladder out of King Goat's arena"
id = "kinggoat"
height = 1
@@ -0,0 +1,8 @@
/obj/structure/spawner/lavaland/shamblingminer
mob_types = list(/mob/living/simple_animal/hostile/asteroid/miner)
/obj/structure/spawner/lavaland/icewatcher
mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing)
/obj/structure/spawner/lavaland/imp
mob_types = list(/mob/living/simple_animal/hostile/asteroid/imp)
@@ -0,0 +1,105 @@
#define SPAWN_MEGAFAUNA "bluh bluh huge boss"
#define SPAWN_BUBBLEGUM 6
//This list prevents spawning more than the associated amount
//of megafauna.
GLOBAL_LIST_INIT(cap_megas,\
list(/mob/living/simple_animal/hostile/megafauna/dragon = 3,\
/mob/living/simple_animal/hostile/megafauna/colossus = 3,\
/mob/living/simple_animal/hostile/megafauna/bubblegum = 3))
//this is probably a horrendous way to do it
//forgive me for my sins
//this is basically a list of all the turfs that
//attempted to spawn a monster/tendril in lavaland
GLOBAL_LIST_INIT(spawned_turfs, list())
//this list counts all the turfs that successfuly spawned
//a monster or tendril
GLOBAL_LIST_INIT(success_spawned_turfs, list())
/turf/open/floor/plating/asteroid/airless/cave/volcanic
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/random = 40, /obj/structure/spawner/lavaland = 2, \
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/random = 30, /obj/structure/spawner/lavaland/legion = 3, \
/mob/living/simple_animal/hostile/asteroid/miner = 40, /obj/structure/spawner/lavaland/shamblingminer = 2, \
/mob/living/simple_animal/hostile/asteroid/imp = 20, /obj/structure/spawner/lavaland/imp = 1, \
SPAWN_MEGAFAUNA = 6, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10)
//imps are rare because boy they annoying
/turf/open/floor/plating/asteroid/airless/cave/proc/SpawnMonster(turf/T)
if(!isarea(loc))
return
var/area/A = loc
GLOB.spawned_turfs += src
if(prob(30))
if(!A.mob_spawn_allowed)
return
var/randumb = pickweight(mob_spawn_list)
if(!randumb)
return
while(randumb == SPAWN_MEGAFAUNA)
if(A.megafauna_spawn_allowed && megafauna_spawn_list && megafauna_spawn_list.len) //this is danger. it's boss time.
var/maybe_boss = pickweight(megafauna_spawn_list)
if(megafauna_spawn_list[maybe_boss])
var/count = get_mega_count(maybe_boss)
if(count < GLOB.cap_megas[maybe_boss])
randumb = maybe_boss
else
randumb = pickweight(mob_spawn_list)
else //this is not danger, don't spawn a boss, spawn something else
randumb = pickweight(mob_spawn_list)
for(var/mob/living/simple_animal/hostile/H in urange(12,T)) //prevents mob clumps
if((ispath(randumb, /mob/living/simple_animal/hostile/megafauna) || ismegafauna(H)) && get_dist(src, H) <= 7)
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, /obj/structure/spawner/lavaland))
for(var/obj/structure/spawner/lavaland/L in urange(12,T))
return //prevents tendrils spawning in each other's collapse range
new randumb(T)
GLOB.success_spawned_turfs += src
return TRUE
/turf/open/floor/plating/asteroid/airless/cave/proc/BruteForceSpawn(var/mob/living/simple_animal/hostile/megafauna/boss)
if(!isarea(loc))
return FALSE
var/area/A = loc
if(!A.mob_spawn_allowed)
return FALSE
if(!boss || !istype(boss))
return FALSE
if(A.megafauna_spawn_allowed && megafauna_spawn_list && megafauna_spawn_list.len) //this is danger. it's boss time.
if(get_mega_count(boss) < GLOB.cap_megas[boss])
new boss()
return TRUE
return FALSE
/turf/open/floor/plating/asteroid/airless/cave/proc/BruteForceTendril(var/obj/structure/spawner/lavaland/tend)
if(!isarea(loc))
return FALSE
var/area/A = loc
if(!A.mob_spawn_allowed)
return FALSE
if(!tend || !istype(tend))
return FALSE
if(get_tendril_count(tend) < 1)
new tend()
return TRUE
return FALSE
/proc/get_mega_count(var/mob/living/simple_animal/hostile/megafauna/maybe_boss)
var/count = 0
for(var/mob/living/simple_animal/hostile/megafauna/M in GLOB.mob_living_list)
if(istype(M, maybe_boss))
count++
return count
/proc/get_tendril_count(var/obj/structure/spawner/lavaland/meme)
var/count = 0
for(var/obj/structure/spawner/lavaland/T in GLOB.tendrils)
if(istype(T, meme))
count++
return count