Skip to content

Commit

Permalink
Adds the mining breach type
Browse files Browse the repository at this point in the history
HE level

he, teth, waw

linters, some zayins
  • Loading branch information
vampirebat74 committed Dec 18, 2024
1 parent a83f185 commit c56a057
Show file tree
Hide file tree
Showing 47 changed files with 299 additions and 46 deletions.
Binary file modified ModularTegustation/Teguicons/96x48.dmi
Binary file not shown.
23 changes: 23 additions & 0 deletions ModularTegustation/tegu_items/debug_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -373,3 +373,26 @@
say("Restarting...")
SLEEP_CHECK_DEATH(10)
DeepsCheckStart()

//breach tester
/obj/item/breachtester//for testing many abnormalities very quickly
name = "Breach tester"
desc = "For testing use only, DO NOT DISTRIBUTE! Breach types can be checked under _DEFINES/abnormalities.dm"
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "nanoimplant"
var/breach_type = BREACH_NORMAL
var/list/breach_list = list(
BREACH_NORMAL, BREACH_PINK, BREACH_MINING,
)

/obj/item/breachtester/attack_self(mob/user)
breach_type = input(user, "Which breach will you test?") as null|anything in breach_list

/obj/item/breachtester/attack(mob/living/simple_animal/hostile/abnormality/target, mob/living/carbon/human/user)
if(!isabnormalitymob(target))
to_chat(user, span_warning("\"[target]\" isn't an Abnormality."))
return
target.BreachEffect(user, breach_type)
to_chat(user, span_nicegreen("You triggered a [breach_type] breach!"))


1 change: 1 addition & 0 deletions code/__DEFINES/abnormalities.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
// Breach types
#define BREACH_NORMAL 0
#define BREACH_PINK 1
#define BREACH_MINING 2

// List
#define THREAT_TO_NAME list(\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,14 @@ GLOBAL_LIST_EMPTY(army)
//*--Combat Mechanics--*
/mob/living/simple_animal/hostile/abnormality/army/BreachEffect(mob/living/carbon/human/user, breach_type)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_ABNORMALITY_BREACH, src)
FearEffect()
Blackify()
SpawnAdds()//set its alpha to 0 and make it non-dense
if(breach_type == BREACH_MINING)
for(var/i = 1 to 3)
var/mob/living/simple_animal/hostile/army_enemy/E = new(get_turf(src))
RegisterSignal(E, COMSIG_PARENT_QDELETING, PROC_REF(ArmyDeath))
else
FearEffect()
Blackify()
SpawnAdds()//set its alpha to 0 and make it non-dense
for(var/mob/living/L in protected_targets)
L.remove_status_effect(STATUS_EFFECT_PROTECTION)
density = FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@
. = ..()
var/turf/T = pick(GLOB.department_centers)
soundloop.start()
forceMove(T)
if(breach_type != BREACH_MINING)
forceMove(T)
BluePulse()
return
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,9 @@

//Breach
/mob/living/simple_animal/hostile/abnormality/distortedform/BreachEffect(mob/living/carbon/human/user, breach_type)
if(breach_type == BREACH_MINING)
qdel(src)
return
. = ..()
if(breached)
return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,10 @@ GLOBAL_LIST_EMPTY(meat_list)
/mob/living/simple_animal/hostile/abnormality/last_shot/Move()
return FALSE

/mob/living/simple_animal/hostile/abnormality/last_shot/BreachEffect()
/mob/living/simple_animal/hostile/abnormality/last_shot/BreachEffect(mob/living/carbon/human/user, breach_type)
if(breach_type == BREACH_MINING)
..()
return
var/turf/T = pick(GLOB.department_centers)
forceMove(T)
..()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@
datum_reference.qliphoth_change(-1)

/mob/living/simple_animal/hostile/abnormality/nobody_is/BreachEffect(mob/living/carbon/human/user, breach_type)
if(!(status_flags & GODMODE)) // Already breaching
if(current_stage > 1)
return
if(reflect_timer)
deltimer(reflect_timer)
Expand All @@ -240,6 +240,8 @@
return
CheckMirrorIcon() //Clear overlays
next_stage()
if(breach_type == BREACH_MINING)
return
// Teleport us somewhere where nobody will see us at first
var/list/priority_list = list()
for(var/turf/T in GLOB.xeno_spawn)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -322,8 +322,9 @@
ZeroQliphoth()
return
. = ..()
var/turf/T = pick(GLOB.department_centers)
forceMove(T)
if(breach_type != BREACH_MINING)
var/turf/T = pick(GLOB.department_centers)
forceMove(T)

//Weather controlling
/mob/living/simple_animal/hostile/abnormality/seasons/proc/CheckWeather()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,9 @@

/mob/living/simple_animal/hostile/abnormality/silentorchestra/BreachEffect(mob/living/carbon/human/user, breach_type)
. = ..()
var/turf/T = pick(GLOB.department_centers)
forceMove(T)
if(breach_type != BREACH_MINING)
var/turf/T = pick(GLOB.department_centers)
forceMove(T)
DamagePulse()
return

Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,8 @@

/mob/living/simple_animal/hostile/abnormality/space_lady/BreachEffect(mob/living/carbon/human/user, breach_type)
. = ..()
Teleport()
if(breach_type != BREACH_MINING)
Teleport()


//Bullets
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,9 @@ GLOBAL_LIST_EMPTY(apostles)
return

/mob/living/simple_animal/hostile/abnormality/white_night/BreachEffect(mob/living/carbon/human/user, breach_type)
if(breach_type == BREACH_MINING)
qdel(src)
return
holy_revival_cooldown = world.time + holy_revival_cooldown_base
. = ..()
for(var/mob/M in GLOB.player_list)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,10 @@
//***Breach Mechanics***//
/mob/living/simple_animal/hostile/abnormality/doomsday_calendar/BreachEffect(mob/living/carbon/human/user, breach_type)
. = ..()
var/turf/T = pick(GLOB.department_centers)
if(breach_type != BREACH_MINING)
var/turf/T = pick(GLOB.department_centers)
forceMove(T)
icon_state = "doomsday_active"
forceMove(T)
AnnounceBreach()
SpawnAdds()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,9 @@

/mob/living/simple_animal/hostile/abnormality/highway_devotee/BreachEffect(mob/living/carbon/human/user, breach_type)
. = ..()
var/turf/T = pick(GLOB.xeno_spawn)
forceMove(T)
if(breach_type != BREACH_MINING)
var/turf/T = pick(GLOB.xeno_spawn)
forceMove(T)
addtimer(CALLBACK(src, PROC_REF(KillYourself)), 3 MINUTES)
dir = pick(list(NORTH, SOUTH, WEST, EAST))
for(var/turf/open/U in range(2, src))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@
. = ..()
if(!datum_reference.abno_radio)
AbnoRadio()
addtimer(CALLBACK(src, PROC_REF(TryTeleport)), 5)
if(breach_type != BREACH_MINING)
addtimer(CALLBACK(src, PROC_REF(TryTeleport)), 5)

/mob/living/simple_animal/hostile/abnormality/jangsan/proc/TryTeleport() //stolen from knight of despair
dir = 2
Expand Down
14 changes: 14 additions & 0 deletions code/modules/mob/living/simple_animal/abnormality/he/laetitia.dm
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,20 @@
P.TriggerPrank()
return

/mob/living/simple_animal/hostile/abnormality/laetitia/BreachEffect(mob/living/carbon/human/user, breach_type)
if(breach_type == BREACH_MINING)
SummonAdds()
addtimer(CALLBACK(src, PROC_REF(SummonAdds)), 20 SECONDS)
return ..()

/mob/living/simple_animal/hostile/abnormality/laetitia/proc/SummonAdds()
var/mob/living/simple_animal/hostile/ordeal/pink_midnight/pink = locate() in GLOB.mob_living_list
for(var/i = 1 to 2)
var/turf/target_turf = get_turf(pink ? pink : src)
var/mob/living/simple_animal/hostile/gift/new_mob = new(target_turf)
if(pink)
new_mob.faction += "pink_midnight"

//Her friend
/mob/living/simple_animal/hostile/gift
name = "Little Witch's Friend"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
var/teleport_cooldown_time = 5 MINUTES
var/teleport_cooldown
var/damage_taken = FALSE
var/noteleport = FALSE

//PLAYABLE ATTACKS
attack_action_types = list(/datum/action/innate/abnormality_attack/toggle/porccubus_dash_toggle)
Expand Down Expand Up @@ -132,11 +133,13 @@
//it does have a dash that makes it able to jump around, but it can't properly "roam" per say.
/mob/living/simple_animal/hostile/abnormality/porccubus/BreachEffect(mob/living/carbon/human/user, breach_type)
. = ..()
if(breach_type == BREACH_MINING)
noteleport = TRUE
playsound(src, 'sound/abnormalities/porccubus/head_explode_laugh.ogg', 50, FALSE, 4)
icon_living = "porrcubus"
icon_state = icon_living
ranged_cooldown = world.time + ranged_cooldown_time
if(!IsCombatMap())
if(!IsCombatMap() && (breach_type != BREACH_MINING))
var/turf/T = pick(GLOB.xeno_spawn)
forceMove(T)
teleport_cooldown = world.time + teleport_cooldown_time
Expand All @@ -148,7 +151,7 @@
. = ..()
if(status_flags & GODMODE)
return
if(IsCombatMap())
if(IsCombatMap() || noteleport)
return
if(teleport_cooldown < world.time) //if porccubus hasn't taken damage for 5 minutes we make him move so he doesn't stay stuck in whatever cell he got thrown in.
teleport_cooldown = world.time + teleport_cooldown_time
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,6 @@

//BreachEffect and combat
/mob/living/simple_animal/hostile/abnormality/red_shoes/BreachEffect(mob/living/carbon/human/user, breach_type)
if(!(status_flags & GODMODE))
return
soundloop.stop()
for(var/mob/living/carbon/human/H in GLOB.mob_living_list)//stops possessing people, prevents runtimes. Panicked players are ghosted so use mob_living_list
UnPossess(H)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@
faction += "pink_midnight"
//Call root code but with normal breach
. = ..(null, BREACH_NORMAL)
if(!IsCombatMap())
if(!IsCombatMap() && breach_type != BREACH_MINING)
var/turf/T = pick(GLOB.department_centers)
forceMove(T)
update_icon()
Expand Down
25 changes: 23 additions & 2 deletions code/modules/mob/living/simple_animal/abnormality/he/you_strong.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
icon_state = "you_strong_pause"
icon_living = "you_strong_pause"
portrait = "grown_strong"
maxHealth = 200
health = 200
maxHealth = 2000
health = 2000
damage_coeff = list(RED_DAMAGE = 1, WHITE_DAMAGE = 1.5, BLACK_DAMAGE = 1.5, PALE_DAMAGE = 0)
threat_level = HE_LEVEL
start_qliphoth = 3
work_chances = list(
Expand Down Expand Up @@ -68,6 +69,12 @@
soundloop.volume = 75
soundloop.extra_range = 0

/mob/living/simple_animal/hostile/abnormality/you_strong/Move()
return FALSE

/mob/living/simple_animal/hostile/abnormality/you_strong/CanAttack(atom/the_target)
return FALSE

/mob/living/simple_animal/hostile/abnormality/you_strong/WorkComplete(mob/living/carbon/human/user, work_type, pe, work_time, canceled)
. = ..()
if(work_type == ABNORMALITY_WORK_REPRESSION)
Expand Down Expand Up @@ -131,6 +138,20 @@
SLEEP_CHECK_DEATH(6)
icon_state = "you_strong_pause"

/mob/living/simple_animal/hostile/abnormality/you_strong/BreachEffect(mob/living/carbon/human/user, breach_type)
if(breach_type == BREACH_MINING)
SummonAdds()
addtimer(CALLBACK(src, PROC_REF(SummonAdds)), 20 SECONDS)
return ..()

/mob/living/simple_animal/hostile/abnormality/you_strong/proc/SummonAdds()
var/mob/living/simple_animal/hostile/ordeal/pink_midnight/pink = locate() in GLOB.mob_living_list
for(var/i = 1 to 2)
var/turf/target_turf = get_turf(pink ? pink : src)
var/mob/living/simple_animal/hostile/grown_strong/new_mob = new(target_turf)
if(pink)
new_mob.faction += "pink_midnight"

/mob/living/simple_animal/hostile/abnormality/you_strong/attacked_by(obj/item/I, mob/living/user)
if(!(I.type in taken_parts))
return ..()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@
icon = 'ModularTegustation/Teguicons/48x64.dmi'
icon_state = "bloodbath"
portrait = "blood_bath"
maxHealth = 400
health = 400
maxHealth = 1000
health = 1000
move_to_delay = 3
attack_sound = 'sound/abnormalities/ichthys/slap.ogg'
attack_verb_continuous = "mauls"
attack_verb_simple = "maul"
melee_damage_lower = 6
melee_damage_upper = 12
melee_damage_type = WHITE_DAMAGE
damage_coeff = list(RED_DAMAGE = 1.6, WHITE_DAMAGE = 1, BLACK_DAMAGE = 1.4, PALE_DAMAGE = 1.5)
ranged = TRUE
threat_level = TETH_LEVEL
work_chances = list(
ABNORMALITY_WORK_INSTINCT = list(55, 55, 50, 50, 50),
Expand Down Expand Up @@ -38,6 +47,8 @@
observation_fail_message = "You looked away. <br>This is not the first time you ignore them. <br>It will be the same afterwards."

var/hands = 0
var/can_act = TRUE
var/special_attack_cooldown

/mob/living/simple_animal/hostile/abnormality/bloodbath/PostWorkEffect(mob/living/carbon/human/user, work_type, pe, work_time)
// any work performed with level 1 Fort and Temperance makes you panic and die
Expand Down Expand Up @@ -67,3 +78,50 @@
datum_reference.max_boxes = max_boxes
icon_state = "bloodbath"
return

/mob/living/simple_animal/hostile/abnormality/bloodbath/BreachEffect(mob/living/carbon/human/user, breach_type)
if(breach_type != BREACH_MINING && breach_type != BREACH_PINK)
return
if(breach_type == BREACH_PINK)
maxHealth = 4000
melee_damage_lower = 20
melee_damage_upper = 40
..()
icon_state = "bloodbath_DF"
pixel_x = -8
base_pixel_x = -8
update_icon()

/mob/living/simple_animal/hostile/abnormality/bloodbath/OpenFire()
if(!can_act)
return
if(special_attack_cooldown > world.time)
return
BloodBathSlam()

/mob/living/simple_animal/hostile/abnormality/bloodbath/proc/BloodBathSlam()//weaker version of the DF form
if(!can_act)
return
special_attack_cooldown = world.time + 5 SECONDS
can_act = FALSE
for(var/turf/L in view(3, src))
new /obj/effect/temp_visual/cult/sparks(L)
playsound(get_turf(src), 'sound/abnormalities/ichthys/jump.ogg', 100, FALSE, 6)
icon_state = "bloodbath_slamprepare"
SLEEP_CHECK_DEATH(12)
for(var/turf/T in view(3, src))
var/obj/effect/temp_visual/small_smoke/halfsecond/FX = new(T)
FX.color = "#b52e19"
for(var/mob/living/carbon/human/H in HurtInTurf(T, list(), 50, WHITE_DAMAGE, null, null, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE))
if(H.sanity_lost)
H.gib()
playsound(get_turf(src), 'sound/abnormalities/bloodbath/Bloodbath_EyeOn.ogg', 125, FALSE, 6)
icon_state = "bloodbath_slam"
SLEEP_CHECK_DEATH(3)
icon_state = "bloodbath_DF"
can_act = TRUE

/mob/living/simple_animal/hostile/abnormality/bloodbath/Move()
if(!can_act)
return FALSE
..()
11 changes: 11 additions & 0 deletions code/modules/mob/living/simple_animal/abnormality/teth/book.dm
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@
if((initial(abno.threat_level)) <= TETH_LEVEL)
nasties += abno

/mob/living/simple_animal/hostile/abnormality/book/Move()
return FALSE

/mob/living/simple_animal/hostile/abnormality/book/proc/RipPages()
var/mob/living/simple_animal/newspawn
if(wordcount >= 3)
Expand Down Expand Up @@ -151,3 +154,11 @@
sleep(0.5 SECONDS)
newspawn = pick(nasties)
SpawnMob(newspawn)

/mob/living/simple_animal/hostile/abnormality/book/BreachEffect(mob/living/carbon/human/user, breach_type)
if(breach_type == BREACH_MINING)
var/newspawn = pick(nasties)
SpawnMob(newspawn)
newspawn = pick(nasties)
addtimer(CALLBACK(src, PROC_REF(SpawnMob), newspawn), 10 SECONDS)
return ..()
Loading

0 comments on commit c56a057

Please sign in to comment.