Skip to content

Commit

Permalink
Adds enkephalin rush
Browse files Browse the repository at this point in the history
adds ores

mining and walls
  • Loading branch information
vampirebat74 committed Oct 6, 2024
1 parent 9c82f71 commit c3739e9
Show file tree
Hide file tree
Showing 17 changed files with 7,680 additions and 3,281 deletions.
45 changes: 45 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/enemy.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//map-based enemy faction selection
//this will need its own folder
/datum/enemy
var/name = "enemy"
var/level = 0//this is determined the same way as ordeals: 1-4 as dawn through midnight
var/list/ordeal_types = list()
var/datum/ordeal/chosen_ordeal
var/group_size = 1
var/risk_multiplier = 1//triggering an event dealier than the ordeal will spawn units equal to group_size times this amount

/datum/enemy/proc/Run(turf/T, level)
if(!level)//not a subtype
return
for(var/i = 1, i <= 4, i++)//This counts up
chosen_ordeal = ordeal_types[i]
if(i == level)
break
i++
if(!chosen_ordeal)
return
for(group_size in T)
chosen_ordeal.spawngrunts(T, spawn_amount = risk_multiplier)

/datum/enemy/gold
ordeal_types = list(
/datum/ordeal/gold_dawn = 1,
/datum/ordeal/boss/gold_noon = 2,
/datum/ordeal/gold_dawn/gold_dusk = 3,
/datum/ordeal/gold_dawn/gold_midnight = 4,
)
group_size = 2

/datum/enemy/brown
ordeal_types = list(
/datum/ordeal/brown_dawn = 1,
)
group_size = 2
risk_multiplier = 2

/datum/enemy/steel
ordeal_types = list(
/datum/ordeal/simplespawn/steel_dawn = 1,
/datum/ordeal/simplecommander/steel_noon = 2,
/datum/ordeal/simplecommander/steel_dusk = 3,
)
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"
30 changes: 30 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/itemspawner.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//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))
223 changes: 223 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/ore_turfs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
//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()
..()
37 changes: 37 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/ores.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
//refer to ores_coins.dm for the base type
//use mining.dmi for icons
/obj/item/stack/ore/ironscrap
name = "scrap"
icon_state = "Iron ore"
inhand_icon_state = "Iron ore"
singular_name = "iron ore chunk"
points = 1
mats_per_unit = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/metal
mine_experience = 0
scan_state = "rock_Iron"
spreadChance = 20//FIND OUT WHAT THIS IS
merge_type = /obj/item/stack/ore/ironscrap

/obj/item/stack/ore/glassrubble
name = "broken glass"
icon = 'icons/obj/shards.dmi'
icon_state = "large"
inhand_icon_state = "Glass ore"//TODO: find these
points = 1
mats_per_unit = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/glass
mine_experience = 0
merge_type = /obj/item/stack/ore/glassrubble

/obj/item/stack/ore/plasteel
name = "X corp scrap alloy"
icon_state = "Adamantine ore"
inhand_icon_state = "Adamantine ore"
points = 15
mats_per_unit = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT, /datum/material/iron=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/plasteel
mine_experience = 0
scan_state = "rock_Plasma"
spreadChance = 8
merge_type = /obj/item/stack/ore/plasteel
17 changes: 17 additions & 0 deletions _maps/district_4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"version": 1,
"map_name": "District 4",
"map_path": "map_files/Enkephalin Rush",
"map_file": [
"district_4.dmm"
],
"traits": [
{
"Baseturf": "/turf/open/floor/plating/asteroid"
}
],
"space_ruin_levels": 0,
"space_empty_levels": 0,
"minetype": "none",
"maptype": "enkephalin_rush"
}
Loading

0 comments on commit c3739e9

Please sign in to comment.