[READY FOR REVIEW] I killed bubblegum on hard mode and all I got was this stupid medal. Adds hard mode to megafauna. (#22016)

* hard mode stuff

* further progress

* more progress

* pausing work to fix bug

* lets pr this mess

* more progress saving as vacation soon

* sleep_check_qdel

* saving work

* medals into deconflicting

* icons

* Fix compilings, medals

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* yes

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* earliest of the returns

* icons

* Apply suggestions from code review

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>

* Update code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>

* ah lateload, my beloved and hated with no debug points

* todoops

* requested changes

* move medals / move comment

* guh

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2023-10-09 16:45:41 -04:00
committed by GitHub
parent 793fd34b6b
commit 64456806a5
43 changed files with 2077 additions and 1215 deletions

View File

@@ -0,0 +1,79 @@
/obj/item/grenade/megafauna_hardmode
name = "\improper HRD-MDE Scanning Grenade"
desc = "An advanced grenade that releases nanomachines, which enter nearby megafauna. This will enrage them greatly, but allows nanotrasen to fully research their abilities."
icon = 'icons/obj/grenade.dmi'
icon_state = "enrager"
item_state = "grenade"
/obj/item/grenade/megafauna_hardmode/prime()
update_mob()
playsound(loc, 'sound/effects/empulse.ogg', 50, TRUE)
for(var/mob/living/simple_animal/hostile/megafauna/M in range(7, src))
M.enrage()
visible_message("<span class='userdanger'>[M] begins to wake up as the nanomachines enter them, it looks pissed!</span>")
qdel(src)
/obj/item/paper/hardmode
name = "HRD-MDE Scanner Guide"
icon_state = "paper"
info = {"<b>Welcome to the NT HRD-MDE Project</b><br>
<br>
This guide will cover the basics on the Hi-tech Research and Development, Mining Department Experiment project.<br>
<br>
These grenades when used, will disperse a cloud of nanomachines into nearbye fauna, allowing a detailed examination of their body structure when alive. We will use this data to develope new products to sell, and we need your help!<br>
<br>
We need to see these fauna working at their full potential with the nanomachines in them, so you will have to fight them. As a warning, these nanomachines have been known to irratate and annoy animals in testing, as well injecting a cocktail of drugs into them to get their organs outputting at maximum potential.<br>
<br>
We operate on a limited budget, but we do provide payment for participating in this project: 0.1% of profits from any products made from this research, and medals showing off your pride for NT and promoting their research.
<br><hr>
<font size =\"1\"><i>By participating in this experiment you waive all rights for compensation of death on the job.</font></i>
"}
/obj/item/disk/fauna_research
name = "empty HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Seems empty?"
icon_state = "holodisk"
var/obj/item/clothing/accessory/medal/output
/obj/item/disk/fauna_research/Initialize(mapload)
. = ..()
for(var/obj/structure/closet/C in get_turf(src))
forceMove(C)
return
/obj/item/disk/fauna_research/blood_drunk_miner
name = "blood drunk HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Contains data on the dash and resistance of the blood drunk miner."
output = /obj/item/clothing/accessory/medal/blood_drunk
/obj/item/disk/fauna_research/hierophant
name = "\improper Hierophant HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Contains data on the energy manipulation and material composition of the Hierophant."
output = /obj/item/clothing/accessory/medal/plasma/hierophant
/obj/item/disk/fauna_research/ash_drake
name = "ash drake HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Contains data on the fire production methods and rapid regeneration of the ash drakes."
output = /obj/item/clothing/accessory/medal/plasma/ash_drake
/obj/item/disk/fauna_research/vetus
name = "\improper Vetus Speculator HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Contains data on the anomaly manipulation and computing processes of the Vetus Speculator."
output = /obj/item/clothing/accessory/medal/alloy/vetus
/obj/item/disk/fauna_research/colossus
name = "colossus HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Contains data on the powerful voice and A-T field of the colossi."
output = /obj/item/clothing/accessory/medal/silver/colossus
/obj/item/disk/fauna_research/legion
name = "\improper Legion HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Contains data on the endless regeneration and disintegration laser of the Legion."
output = /obj/item/clothing/accessory/medal/silver/legion
/obj/item/disk/fauna_research/bubblegum
name = "\improper Bubblegum HRD-MDE project disk"
desc = "A disk used by the HRD-MDE project. Contains data on the bloodcrawling and \[REDACTED\] of Bubblegum." //I hate this so much
output = /obj/item/clothing/accessory/medal/gold/bubblegum

View File

@@ -13,6 +13,76 @@
. = ..()
new /obj/item/crusher_trophy/demon_claws(src)
/obj/structure/closet/crate/necropolis/bubblegum/bait/populate_contents()
return
/obj/structure/closet/crate/necropolis/bubblegum/bait/open(by_hand)
. = ..()
for(var/obj/effect/bubblegum_trigger/B in contents)
B.targets_to_fuck_up += usr
B.activate()
/obj/effect/bubblegum_trigger
var/list/targets_to_fuck_up = list()
/obj/effect/bubblegum_trigger/Initialize(mapload, target_list)
. = ..()
addtimer(CALLBACK(src, PROC_REF(activate)), 15 SECONDS) //We try to auto engage the fun 15 seconds after death, or when manually opened, whichever comes first. If for some strange reason the target list is empty, we'll trigger when opened
targets_to_fuck_up = target_list
/obj/effect/bubblegum_trigger/proc/activate()
if(!length(targets_to_fuck_up))
return
var/spawn_locs = list()
for(var/obj/effect/landmark/spawner/bubblegum_arena/R in GLOB.landmarks_list)
spawn_locs += get_turf(R)
for(var/mob/living/M in targets_to_fuck_up)
var/turf/T = get_turf(M)
M.Immobilize(1 SECONDS)
to_chat(M, "<span class='colossus'><b>NO! I REFUSE TO LET YOU THINK YOU HAVE WON. I SHALL END YOUR INSIGNIFICANT LIFE!</b></span>")
new /obj/effect/temp_visual/bubblegum_hands/leftpaw(T)
new /obj/effect/temp_visual/bubblegum_hands/leftthumb(T)
sleep(8)
playsound(T, 'sound/misc/enter_blood.ogg', 100, TRUE, -1)
var/turf/target_turf = pick(spawn_locs)
M.forceMove(target_turf)
playsound(target_turf, 'sound/misc/exit_blood.ogg', 100, TRUE, -1)
for(var/obj/effect/landmark/spawner/bubblegum/B in GLOB.landmarks_list)
new /mob/living/simple_animal/hostile/megafauna/bubblegum/round_2(get_turf(B))
/obj/effect/bubblegum_exit/Initialize(mapload, target_list)
. = ..()
addtimer(CALLBACK(src, PROC_REF(activate)), 10 SECONDS)
/obj/effect/bubblegum_exit/proc/activate()
var/spawn_exit = list()
for(var/obj/effect/landmark/spawner/bubblegum_exit/E in GLOB.landmarks_list)
for(var/turf/T in range(4, E))
if(T.density)
continue
spawn_exit += get_turf(T)
var/area/probably_bubblearena = get_area(src)
for(var/mob/living/M in probably_bubblearena)
var/turf/T = get_turf(M)
M.Immobilize(1 SECONDS)
to_chat(M, "<span class='colossus'><b>Now... get out of my home.</b></span>")
new /obj/effect/temp_visual/bubblegum_hands/leftpaw(T)
new /obj/effect/temp_visual/bubblegum_hands/leftthumb(T)
sleep(8)
playsound(T, 'sound/misc/enter_blood.ogg', 100, TRUE, -1)
var/turf/target_turf = pick(spawn_exit)
M.forceMove(target_turf)
playsound(target_turf, 'sound/misc/exit_blood.ogg', 100, TRUE, -1)
for(var/obj/O in probably_bubblearena) //Mobs are out, lets get items / limbs / brains. Lets also exclude blood..
if(iseffect(O))
continue
if(istype(O, /obj/structure/stone_tile)) //Taking the tiles from the arena is funny, but a bit stupid
continue
var/turf/target_turf = pick(spawn_exit)
O.forceMove(target_turf)
// Mayhem
/obj/item/mayhem

View File

@@ -91,6 +91,7 @@
EQUIPMENT("Soap", /obj/item/soap/nanotrasen, 200),
EQUIPMENT("Space Cash", /obj/item/stack/spacecash/c200, 2000),
EQUIPMENT("Whiskey", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100),
EQUIPMENT("HRD-MDE Project Box", /obj/item/storage/box/hardmode_box, 5000) //I want miners have to pay a lot to get this, but be set once they do.
)
prize_list["Extra"] = list() // Used in child vendors