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

mining enemy event

abnormality spawns fixed

elevator fixes and ego mining

compile maps fix

delayed spawners

minor updates and bug fixes

mapping fix

plastic ore, map changes

path changes

dept centers

file rename

Regenerator text + bar instruments
  • Loading branch information
vampirebat74 committed Dec 5, 2024
1 parent 7022e77 commit 68a00df
Show file tree
Hide file tree
Showing 35 changed files with 78,863 additions and 15 deletions.
Binary file modified ModularTegustation/Teguicons/32x32.dmi
Binary file not shown.
Binary file modified ModularTegustation/Teguicons/teguitems.dmi
Binary file not shown.
7 changes: 7 additions & 0 deletions ModularTegustation/ego_weapons/melee/subtype/mining.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/obj/item/ego_weapon/mining//Only works for ER mining
toolspeed = 0.8//total mining time = fortitude mod * toolspeed. Lower is faster.
tool_behaviour = TOOL_MINING

/obj/item/ego_weapon/mining/examine(mob/user)
. = ..()
. += span_notice("This weapon can be used to mine at a [(100/toolspeed)]% efficiency.")
2 changes: 1 addition & 1 deletion ModularTegustation/ego_weapons/melee/teth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@
user.adjustStaminaLoss(20, TRUE, TRUE)
user.throw_at(dodgelanding, 3, 2, spin = TRUE)

/obj/item/ego_weapon/regret
/obj/item/ego_weapon/mining/regret
name = "regret"
desc = "Before swinging this weapon, expressing one’s condolences for the demise of the inmate who couldn't even have a funeral would be nice."
icon_state = "regret"
Expand Down
13 changes: 7 additions & 6 deletions ModularTegustation/ego_weapons/melee/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1336,7 +1336,7 @@
PRUDENCE_ATTRIBUTE = 80
)

/obj/item/ego_weapon/rimeshank
/obj/item/ego_weapon/mining/rimeshank
name = "rimeshank"
desc = "Stay frozen... And there will be no pain."
special = "This weapon can be used to perform a jump attack after a short wind-up."
Expand All @@ -1347,6 +1347,7 @@
attack_verb_continuous = list("slams", "attacks")
attack_verb_simple = list("slam", "attack")
hitsound = 'sound/abnormalities/babayaga/attack.ogg'
toolspeed = 0.3
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 80
)
Expand All @@ -1356,20 +1357,20 @@
var/dash_range = 10
var/can_attack = TRUE

/obj/item/ego_weapon/rimeshank/get_clamped_volume()
/obj/item/ego_weapon/mining/rimeshank/get_clamped_volume()
return 30

/obj/item/ego_weapon/rimeshank/attack(mob/living/target, mob/living/user)
/obj/item/ego_weapon/mining/rimeshank/attack(mob/living/target, mob/living/user)
if(!can_attack)
return
..()
can_attack = FALSE
addtimer(CALLBACK(src, PROC_REF(JumpReset)), 20)

/obj/item/ego_weapon/rimeshank/proc/JumpReset()
/obj/item/ego_weapon/mining/rimeshank/proc/JumpReset()
can_attack = TRUE

/obj/item/ego_weapon/rimeshank/afterattack(atom/A, mob/living/user, proximity_flag, params)
/obj/item/ego_weapon/mining/rimeshank/afterattack(atom/A, mob/living/user, proximity_flag, params)
if(!CanUseEgo(user) || !can_attack)
return
if(!isliving(A))
Expand Down Expand Up @@ -1400,7 +1401,7 @@
animate(user, alpha = 255,pixel_x = 0, pixel_z = -16, time = 0.1 SECONDS)
user.pixel_z = 0

/obj/item/ego_weapon/rimeshank/proc/JumpAttack(atom/A, mob/living/user, proximity_flag, params)
/obj/item/ego_weapon/mining/rimeshank/proc/JumpAttack(atom/A, mob/living/user, proximity_flag, params)
force = 25
A.attackby(src,user)
force = initial(force)
Expand Down
18 changes: 18 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/enkr_corpses.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//dead stuff but better

/obj/effect/mob_spawn/human/agent//TODO: make these always available
icon_state = "corpsehuman"
outfit = /datum/outfit/job/agent
brute_damage = 1000

/obj/effect/mob_spawn/human/agent/loot
icon_state = "corpsehuman"
outfit = /datum/outfit/job/agent

/obj/effect/mob_spawn/human/agent/loot/Initialize()
..()//Loot generation goes here

/obj/effect/mob_spawn/human/manager
icon_state = "corpsehuman"
outfit = /datum/outfit/job/manager
brute_damage = 1000
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/obj/machinery/button/door/landmarkspawner
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF

/obj/machinery/button/door/landmarkspawner/attack_hand(mob/user)
..()
for(var/obj/effect/landmark/delayed/D in GLOB.landmarks_list)
D.CreateLandmark(D.spawner)
208 changes: 208 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/enkr_spawners.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
//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/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
/obj/effect/spawner/map_enemy
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 when initialized the first time in a given round
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 currently for District 4
/datum/enemy/gold,
/datum/enemy/brown,
/datum/enemy/steel,
/datum/enemy/abnos,
//TODO: wineberry creek E.G.O corrosion faction
)

/obj/effect/spawner/map_enemy/New(loc, risk_level)
if(risk_level)
level = risk_level
..()

/obj/effect/spawner/map_enemy/Initialize()
if(!map_enemy)
map_enemy = pick(spawner_types)
var/datum/enemy/myenemy = new map_enemy()
if(istype(myenemy,/datum/enemy))
ordeal_types = myenemy.ordeal_types
var/i = 0
for(var/obj/S as anything in ordeal_types)
i++
if(i == level || i == LAZYLEN(ordeal_types))
var/bonus_spawns = level - i
chosen_spawner = new S(loc, spawns = (1 + bonus_spawns), range = 1)
break
..()
qdel(src)

/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,
)

//Abnormality thralls
/datum/enemy/abnos
ordeal_types = list(
/obj/effect/spawner/scatter/teth,
/obj/effect/spawner/scatter/he,
/obj/effect/spawner/scatter/waw,
/obj/effect/spawner/scatter/aleph,
)

//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 = 10,
)

/obj/effect/spawner/scatter/gold_noon
name = "silent handmaiden spawn"
max_spawns = 5
loot_table = list(
/mob/living/simple_animal/hostile/ordeal/silentgirl_corrosion = 10,
/mob/living/simple_animal/hostile/ordeal/white_lake_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 = "corroded inquisition spawn"
max_spawns = 1
loot_table = list(
/mob/living/simple_animal/hostile/ordeal/snake_corrosion = 10,
/mob/living/simple_animal/hostile/ordeal/dog_corrosion = 10,
/mob/living/simple_animal/hostile/ordeal/dog_corrosion/strong = 3,
/mob/living/simple_animal/hostile/ordeal/snake_corrosion/strong = 3,
/mob/living/simple_animal/hostile/ordeal/NT_corrosion = 3,
/mob/living/simple_animal/hostile/ordeal/tso_corrosion = 1,//bosses
)

/obj/effect/spawner/scatter/teth//generally these are supposed to be humans who died in the facility, but there aren't enough for good variety
name = "teth abnormality thrall spawn"
loot_table = list(
/mob/living/simple_animal/hostile/shrimp = 1,//shrimp liquidation intern
/mob/living/simple_animal/hostile/doomsday_doll = 1,
/mob/living/simple_animal/hostile/runawaybird = 1,//judgement bird minion
/mob/living/simple_animal/hostile/azure_stave = 1,//servant of wrath minion
)

/obj/effect/spawner/scatter/he
name = "he abnormality thrall spawn"
loot_table = list(
/mob/living/simple_animal/hostile/shrimp_soldier = 1,//shotgun shrimp
/mob/living/simple_animal/hostile/gift = 1,//laetitia spider
/mob/living/simple_animal/hostile/grown_strong = 1,
/mob/living/simple_animal/hostile/nosferatu_mob = 1,
/mob/living/simple_animal/hostile/worker_bee = 1,
/mob/living/simple_animal/hostile/soldier_bee = 1,//identical to above, has a hat
/mob/living/simple_animal/hostile/artillery_bee = 1,
/mob/living/simple_animal/hostile/slime = 1,//ML slime (small)
)

/obj/effect/spawner/scatter/waw
name = "waw abnormality thrall spawn"
loot_table = list(
/mob/living/simple_animal/hostile/yagaslave = 1,
/mob/living/simple_animal/hostile/parasite_tree_sapling = 1,
/mob/living/simple_animal/hostile/thunder_zombie = 1,
)

/obj/effect/spawner/scatter/aleph
name = "aleph abnormality thrall spawn"
loot_table = list(
/mob/living/simple_animal/hostile/little_prince_1 = 1,//this guy has a wopping 1200 hp
/mob/living/simple_animal/hostile/mini_censored = 1,
/mob/living/simple_animal/hostile/meatblob = 1,
/mob/living/simple_animal/hostile/meatblob/gunner = 1,
/mob/living/simple_animal/hostile/meatblob/gunner/shotgun = 1,
/mob/living/simple_animal/hostile/meatblob/gunner/sniper = 1,
/mob/living/simple_animal/hostile/slime/big = 1//ML's chosen
)
18 changes: 18 additions & 0 deletions ModularTegustation/tegu_items/enkephalin_rush/enkr_treasure.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//These are just toys and reward items, they don't necessarily have to be E.G.O.
/obj/item/onyx_hook
name = "onyx hook"
desc = "An E.G.O gift left by an unknown abnormality. It looks like something you've seen in a dream."
icon = 'ModularTegustation/Teguicons/teguitems.dmi'
icon_state = "onyx_hook"

/obj/item/onyx_hook/examine_more()
. = list("<span class='notice'><i>On closer examination, [src] appears to be an agate fishook.</i></span>")

/obj/item/onyx_hook/attack_self(mob/user)
to_chat(user,span_notice("You USE the onyx hook."))
if(do_after(user, 12, src))
var/turf/T = get_turf(pick(SSjob.latejoin_trackers))
playsound(user, 'sound/effects/magic.ogg', 60)
flash_color(user, flash_color="#87CEEB", flash_time=12)
user.forceMove(T)
to_chat(user,span_notice("You've returned to safety!"))
Loading

0 comments on commit 68a00df

Please sign in to comment.