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

rose sign stuff
  • Loading branch information
vampirebat74 committed Dec 21, 2024
1 parent a83f185 commit feda92b
Show file tree
Hide file tree
Showing 47 changed files with 353 additions and 48 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 feda92b

Please sign in to comment.