Skip to content

Commit

Permalink
Adds Enkephalin Rush
Browse files Browse the repository at this point in the history
Adds enkephalin rush

adds ores

mining and walls

fixing spawners

Convert maps to TGM

new         : _maps/shuttles/enkephalin_rush_elevator.dmm
new         : _maps/templates/enkephalin_rush/dist4_briah.dmm

Automatically commited by: tools\mapmerge2\fixup.py

stuff

linters
  • Loading branch information
vampirebat74 committed Oct 9, 2024
1 parent 4b98584 commit 88ac95b
Show file tree
Hide file tree
Showing 18 changed files with 84,876 additions and 2 deletions.
Binary file modified ModularTegustation/Teguicons/32x32.dmi
Binary file not shown.
153 changes: 153 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/enkr_spawners.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
//Mainly supplies for latejoiners
/obj/effect/landmark/enkritemspawn
name = "site burial requisitions"
desc = "It spawns an item. Notify a coder. Thanks!"
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "x4"
var/list/possible_items = list(
/obj/item/ksyringe,
/obj/item/reagent_containers/hypospray/medipen/salacid,
/obj/item/reagent_containers/hypospray/medipen/mental,
/obj/item/flashlight/flare,
/obj/item/pickaxe,
)

/obj/effect/landmark/enkritemspawn/Initialize()
..()
var/spawning = pick(possible_items)
new spawning(get_turf(src))
var/timeradd = rand(1200, 1800)
addtimer(CALLBACK(src, PROC_REF(spawnagain)), timeradd)

/obj/effect/landmark/enkritemspawn/proc/spawnagain()
var/timeradd = rand(1200, 1800)
addtimer(CALLBACK(src, PROC_REF(spawnagain)), timeradd)

if(prob(50)) //50% to spawn
return

var/spawning = pick(possible_items)
new spawning(get_turf(src))


//map-based enemy faction selection
//this will need its own folder
/obj/effect/spawner/scatter/enemy/map_enemy
max_spawns = 0
var/risk_multiplier = 1
var/level = 1//risk level
var/obj/effect/spawner/scatter/chosen_spawner//the spawner this copies vars from
var/global/map_enemy//enemy type determined on roundstart
var/list/ordeal_types = list()//the types of ordeals the enemy type can spawn
var/list/spawner_types = list(//TODO: this needs to be determined by specific maps. Default is for District 4
/datum/enemy/gold,
/datum/enemy/brown,
/datum/enemy/steel,
)

/obj/effect/spawner/scatter/enemy/map_enemy/Initialize()//FIXME: basically none of this actually works. It spawns the picked spawner type while additionally spawning itself
if(!map_enemy)
map_enemy = pick(spawner_types)
say(map_enemy)
var/datum/enemy/myenemy = new map_enemy()
if(istype(myenemy,/datum/enemy))
ordeal_types = myenemy.ordeal_types
say("there are [LAZYLEN(ordeal_types)] ordeal types")
var/i = 0
for(var/obj/S as anything in ordeal_types)
say(S)
i++
if(i == level)
chosen_spawner = new S()
break
var/bonus_spawns = level - i
loot_table = chosen_spawner.loot_table//add the mobs to your own list
max_spawns = ((chosen_spawner.max_spawns / 5) + 1) * bonus_spawns//these are meant to be fight solo. additional risk levels multiply # of units
chosen_spawner.max_spawns = 0
..()//spawn the enemies
return INITIALIZE_HINT_QDEL

/datum/enemy
var/ordeal_types = list()

//amber ordeals
/datum/enemy/amber
ordeal_types = list(
/obj/effect/spawner/scatter/amber_dawn,
)
//clockwork teeth; green ordeals
/datum/enemy/green
ordeal_types = list(
/obj/effect/spawner/scatter/green_dawn,
/obj/effect/spawner/scatter/green_noon,
)
//sweepers
/datum/enemy/indigo
ordeal_types = list(
/obj/effect/spawner/scatter/indigo_dawn,
/obj/effect/spawner/scatter/indigo_noon,
)
//E.G.O corroded LC employees
/datum/enemy/gold
ordeal_types = list(
/obj/effect/spawner/scatter/gold_dawn,
/obj/effect/spawner/scatter/gold_noon,
/obj/effect/spawner/scatter/gold_dusk,
/obj/effect/spawner/scatter/gold_midnight,
)
//peccatulae
/datum/enemy/brown
ordeal_types = list(
/obj/effect/spawner/scatter/brown_dawn,
)
//G. corp veterans
/datum/enemy/steel
ordeal_types = list(
/obj/effect/spawner/scatter/steel_dawn,
/obj/effect/spawner/scatter/steel_noon,
)

//Peccatulae
/obj/effect/spawner/scatter/brown_dawn
name = "mixed peccatulae spawn"
max_spawns = 10
loot_table = list(
/mob/living/simple_animal/hostile/ordeal/sin_sloth = 1,
/mob/living/simple_animal/hostile/ordeal/sin_gluttony = 1,
/mob/living/simple_animal/hostile/ordeal/sin_gloom = 1,
/mob/living/simple_animal/hostile/ordeal/sin_pride = 1,
/mob/living/simple_animal/hostile/ordeal/sin_lust = 1,
/mob/living/simple_animal/hostile/ordeal/sin_wrath = 1,
)

//E.G.O Corrosions
/obj/effect/spawner/scatter/gold_dawn
name = "amurdad-beanstalk corrosion spawn"
max_spawns = 5
loot_table = list(
/mob/living/simple_animal/hostile/ordeal/fallen_amurdad_corrosion = 1,
/mob/living/simple_animal/hostile/ordeal/beanstalk_corrosion = 1,
)

/obj/effect/spawner/scatter/gold_noon
name = "silent handmaiden spawn"
max_spawns = 5
loot_table = list(
/mob/living/simple_animal/hostile/ordeal/silentgirl_corrosion = 1,
)

/obj/effect/spawner/scatter/gold_dusk
name = "electric gold dusk spawn"
max_spawns = 5
loot_table = list(
/mob/living/simple_animal/hostile/ordeal/centipede_corrosion = 1 ,
/mob/living/simple_animal/hostile/ordeal/thunderbird_corrosion = 1,
/mob/living/simple_animal/hostile/ordeal/KHz_corrosion = 1,
)

/obj/effect/spawner/scatter/gold_midnight
name = "da capo corrosion spawn"
max_spawns = 1
loot_table = list(
/mob/living/simple_animal/hostile/ordeal/tso_corrosion = 1 ,
)
17 changes: 17 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/facility.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//move this to a mapping folder
/obj/effect/spawner/room/dist4_briah
name = "district 4 briah layer spawner"
dir = NORTH
icon_state = "random_room"
room_width = 54
room_height = 70
room_type = "enkephalin_rush"


/datum/map_template/random_room/enkephalin_rush/dist4_briah
centerspawner = FALSE
template_width = 49
template_height = 35
room_type = "enkephalin_rush"
weight = 1
mappath = "_maps/templates/enkephalin_rush/dist4_briah.dmm"
224 changes: 224 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/ore_turfs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
//path is closed/minerals.dm
//'icons/turf/mining.dmi'
//FIXME: destroys tile decals and grants 4 experience by default
/turf/closed/mineral/facility//wall piece
name = "rubble"
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/rock_wall.dmi'
icon_state = "rock2"
base_icon_state = "rock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
baseturfs = /turf/open/floor/plating
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
environment_type = "waste"
turf_type = /turf/open/floor/plating/asteroid
defer_change = TRUE

/turf/closed/mineral/random/facility
name = "rubble"
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/rock_wall.dmi'
icon_state = "rock2"
base_icon_state = "rock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
defer_change = TRUE
environment_type = "waste"
turf_type = /turf/open/floor/plating
baseturfs = /turf/open/floor/plating
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
var/risk_level = 1
var/mining_time = 40
var/list/chem_list
/*
Tool speeds for pickaxes are the following:
improvised pick: 3
pickaxe: 1
drill: 0.6
silver p: 0.5
diamond p: 0.3
diamond drill: 0.2
jackhammer: 0.1
*/

/turf/closed/mineral/random/facility/Initialize()
if(prob(30))
baseturfs = /turf/open/floor/plating/rust
if(prob(30))
risk_level += 1
..()

/turf/closed/mineral/random/facility/Change_Ore(ore_type, random = 0)
. = ..()
if(mineralType)
smooth_icon = 'icons/turf/walls/rock_wall.dmi'
icon = 'icons/turf/walls/rock_wall.dmi'
icon_state = "rock_wall-0"
base_icon_state = "rock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER

/turf/closed/mineral/random/facility//assiyah, ZAYIN-TETH level
mineralChance = 10
mineralSpawnChanceList = list(
/obj/item/stack/ore/uranium = 1, /obj/item/stack/ore/diamond = 1, /obj/item/stack/ore/gold = 2, /obj/item/stack/ore/silver = 3,
/obj/item/stack/ore/ironscrap = 20, /obj/item/stack/ore/glassrubble = 40, /obj/item/stack/ore/plasteel = 5)

/turf/closed/mineral/random/facility/briah//HE-WAW level
mineralChance = 15
mineralSpawnChanceList = list(
/obj/item/stack/ore/uranium = 3, /obj/item/stack/ore/diamond = 2, /obj/item/stack/ore/gold = 3, /obj/item/stack/ore/silver = 5,
/obj/item/stack/ore/ironscrap = 40, /obj/item/stack/ore/glassrubble = 20, /obj/item/stack/ore/plasteel = 10)
risk_level = 3
mining_time = 120

/turf/closed/mineral/random/facility/atzliuth//WAW-ALEPH level
mineralChance = 20
mineralSpawnChanceList = list(
/obj/item/stack/ore/uranium = 5, /obj/item/stack/ore/diamond = 10, /obj/item/stack/ore/gold = 5, /obj/item/stack/ore/silver = 5,
/obj/item/stack/ore/ironscrap = 5, /obj/item/stack/ore/glassrubble = 10, /obj/item/stack/ore/plasteel = 30)
risk_level = 4
mining_time = 300

/turf/closed/mineral/random/facility/attackby(obj/item/I, mob/user, params)
if (!ISADVANCEDTOOLUSER(user))
to_chat(usr, "<span class='warning'>You don't have the dexterity to do this!</span>")
return

if(I.tool_behaviour == TOOL_MINING)
var/turf/T = user.loc
if (!isturf(T))
return
if(mining_time * I.toolspeed >= 100)
to_chat(user, "<span class='notice'>Your [I] barely chips the rock!</span>")
return

if(last_act + (mining_time * I.toolspeed) > world.time)//prevents message spam
return
last_act = world.time
to_chat(user, "<span class='notice'>You start picking...</span>")
if(I.use_tool(src, user, mining_time, volume=50))
if(ismineralturf(src))
to_chat(user, "<span class='notice'>You finish cutting into the rock.</span>")
gets_drilled(user, TRUE)
SSblackbox.record_feedback("tally", "pick_used_mining", 1, I.type)
else
return attack_hand(user)

/turf/closed/mineral/random/facility/gets_drilled(user)//no experience
if(mineralType && (mineralAmt > 0))
new mineralType(src, mineralAmt)
SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, mineralType)

for(var/obj/effect/temp_visual/mining_overlay/M in src)
qdel(M)
var/flags = NONE
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
flags = CHANGETURF_DEFER_CHANGE
if(prob(10))
PickEvents(user)
ScrapeAway(null, flags)
addtimer(CALLBACK(src, PROC_REF(AfterChange)), 1, TIMER_UNIQUE)
playsound(get_turf(src), 'sound/effects/break_stone.ogg', 50, TRUE) //beautiful destruction

/turf/closed/mineral/random/facility/proc/PickEvents(user)
if(prob(100))
MiningEvent()
if(prob(30))
SummonMobs()
return
else
AbnoEvent()

/turf/closed/mineral/random/facility/proc/MiningEvent(user)
if(prob(50))//explosion
var/explosion_damage = (risk_level * 20)
if(prob(risk_level * 10))//explode
visible_message(span_danger("[src] suddenly explodes!"))
new /obj/effect/temp_visual/explosion(get_turf(src))
playsound(get_turf(src), 'sound/effects/ordeals/steel/gcorp_boom.ogg', 60, TRUE)
for(var/mob/living/L in view(3, src))
L.apply_damage(explosion_damage, RED_DAMAGE, null, L.run_armor_check(null, RED_DAMAGE))
return
else
visible_message(span_danger("You feel a sudden rush of air as [src] crumbles down!"))
var/datum/effect_system/smoke_spread/chem/S = new
var/turf/location = get_turf(src)
// Create the reagents to put into the air
create_reagents(100)
PickChems(risk_level)
S.attach(location)
S.set_up(reagents, 2, location, silent = FALSE)
S.start()

/turf/closed/mineral/random/facility/proc/PickChems(risk_level)//TODO: make sure these are actually dangerous
switch(risk_level)
if(1)
chem_list = list(
/datum/reagent/toxin/mutagen = 1,
/datum/reagent/toxin/minttoxin = 10,//fatties get ownzoned
/datum/reagent/toxin/mutetoxin = 15,
/datum/reagent/drug/space_drugs = 30,
/datum/reagent/toxin/chloralhydrate = 30,
/datum/reagent/toxin/staminatoxin = 50,
)
if(2)
chem_list = list(
/datum/reagent/toxin/acid = 5,
/datum/reagent/toxin/minttoxin = 10,
/datum/reagent/toxin/mutetoxin = 30,
/datum/reagent/drug/space_drugs = 15,
/datum/reagent/toxin/chloralhydrate = 20,
/datum/reagent/toxin/staminatoxin = 30,
)
if(3)
chem_list = list(
/datum/reagent/toxin/cyanide = 1,
/datum/reagent/toxin = 10,
/datum/reagent/toxin/mutagen = 5,
/datum/reagent/toxin/acid = 10,
/datum/reagent/toxin/minttoxin = 10,
/datum/reagent/toxin/mutetoxin = 10,
/datum/reagent/toxin/mindbreaker = 10,
/datum/reagent/toxin/chloralhydrate = 10,
/datum/reagent/toxin/staminatoxin = 10,
)
if(4)
chem_list = list(
/datum/reagent/toxin/cyanide = 1,
/datum/reagent/toxin = 20,
/datum/reagent/toxin/mutagen = 10,
/datum/reagent/toxin/acid = 20,
/datum/reagent/toxin/minttoxin = 5,
/datum/reagent/toxin/mutetoxin = 5,
/datum/reagent/toxin/mindbreaker = 15,
/datum/reagent/toxin/chloralhydrate = 20,
/datum/reagent/toxin/staminatoxin = 5,
)
else//5, or 6 if it somehow appears
chem_list = list(
/datum/reagent/toxin/cyanide = 1,
/datum/reagent/toxin = 30,
/datum/reagent/toxin/mutagen = 10,
/datum/reagent/toxin/acid = 30,
/datum/reagent/toxin/minttoxin = 1,
/datum/reagent/toxin/mutetoxin = 1,
/datum/reagent/toxin/mindbreaker = 10,
/datum/reagent/toxin/chloralhydrate = 30,
/datum/reagent/toxin/staminatoxin = 1,
)

var/chosen_reagent = pickweight(chem_list)
reagents.add_reagent(chosen_reagent, (risk_level * 20))

/turf/closed/mineral/random/facility/proc/SummonMobs(user)

/turf/closed/mineral/random/facility/proc/AbnoEvent(user)


/turf/closed/mineral/random/facility/abnospawner
name = "shifty rubble"//you need to varedit the threat levels

/turf/closed/mineral/random/facility/abnospawner/gets_drilled(user)
AbnoEvent()
..()
Loading

0 comments on commit 88ac95b

Please sign in to comment.