Skip to content

Commit

Permalink
Adds a new TETH abnormality
Browse files Browse the repository at this point in the history
should fix linters

adds better storm sanity
  • Loading branch information
Coxswain-Navigator committed Feb 26, 2025
1 parent 1e17fc6 commit 1cb69ab
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 0 deletions.
Binary file modified ModularTegustation/Teguicons/64x64.dmi
Binary file not shown.
5 changes: 5 additions & 0 deletions code/modules/mob/living/carbon/human/ego_gifts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,11 @@
justice_bonus = 3
slot = HELMET

/datum/ego_gifts/desert
name = "desert"
icon_state = "desert"
temperance_bonus = 2
slot = EYE

/**
* HE EGO Gifts
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
/mob/living/simple_animal/hostile/abnormality/sirocco
name = "Sirocco"
desc = "A sentient dust storm. You can see the silhouette of a child-like figure inside."
icon = 'ModularTegustation/Teguicons/64x64.dmi'
icon_state = "sirocco"
icon_living = "sirocco"
portrait = "sirocco"
del_on_death = TRUE
pixel_x = -16
base_pixel_x = -16
maxHealth = 1200
health = 1200
blood_volume = 0
density = FALSE
damage_coeff = list(RED_DAMAGE = 0, WHITE_DAMAGE = 0, BLACK_DAMAGE = 0, PALE_DAMAGE = 0)
stat_attack = HARD_CRIT
can_breach = TRUE
threat_level = TETH_LEVEL
start_qliphoth = 2
move_to_delay = 6

work_chances = list(
ABNORMALITY_WORK_INSTINCT = list(50, 50, 40, 30, 30),
ABNORMALITY_WORK_INSIGHT = list(30, 15, -50, -50, -50),
ABNORMALITY_WORK_ATTACHMENT = 60,
ABNORMALITY_WORK_REPRESSION = list(40, 20, -20, -20, -20),
)
work_damage_amount = 10
work_damage_type = RED_DAMAGE

ego_list = list(
/datum/ego_datum/weapon/desert,
/datum/ego_datum/armor/desert,
)
gift_type = /datum/ego_gifts/desert
abnormality_origin = ABNORMALITY_ORIGIN_COMMUNITY

observation_prompt = "Why is everyone here such a bore? <br>Why doesn't anyone want to play with me? <br>\
A young girl's voice cries out from somewhere within the storm. <br>\
\"Everyone keeps staring at the floor like life's a chore...is being an adult really that bad?\" <br.\
\"If that's what an adult is like, I don't wanna grow up!\" <br>\
What do you say to it?"

observation_choices = list(
"You have to grow up eventually" = list(TRUE, "The storm begins to slow down. <br>\
\"But all of the adults here, don't they regret growing up?\" <br>\
Maybe. Maybe not. <br>\
It's better to grow and change instead of stagnating, hiding away from the real world. <br>\
The storm crawls to a halt. <br>\
\"...Maybe you're right. If no one else wants to play, maybe I should just stop playing.\" <br>\
You can only hope if it breaches again, it'll be less of a nuisance. <br>\
You leave the storm to complanate your words."),
"Don't worry about it" = list(FALSE, "\"Yeah! No point worrying about some lame adults!\" <br>\
\"Hehe! When I get out again, you gotta watch how fast I throw that lame friend of yorus!\" <br>\
Seems like encouraging it is only going to make things worse down the line. <br>\
Oh well. Maybe one day it'll tire itself out. <br>Best to leave it alone for now."),
)

// Prevents spawning in normal game modes
can_spawn = FALSE

var/list/grabbed_list = list()
var/list_refresh_time = 30
var/cooldown_time = 5
var/aoe_damage = 12

/mob/living/simple_animal/hostile/abnormality/sirocco/proc/Grabber()
for(var/atom/movable/A in oview(2, src)) // Grab anything in our range
if(A && !A.anchored && !isobserver(A) && A != src)
A.throw_at(src, 1, 1, src, FALSE)
addtimer(CALLBACK(src, PROC_REF(Grabber)), cooldown_time)
addtimer(CALLBACK(src, PROC_REF(ThrowAround)), 2)

/mob/living/simple_animal/hostile/abnormality/sirocco/proc/ThrowAround() // Make this do stuff
var/turf/turf_underneath = get_turf(src)
for(var/atom/movable/A in turf_underneath)
var/randomdir = rand(0, 8)
if(A && !A.anchored && !isobserver(A) && A != src && !(A in grabbed_list))
A.throw_at(get_edge_target_turf(src,randomdir), 5, 3, src, TRUE)
if(isliving(A))
grabbed_list += A

/mob/living/simple_animal/hostile/abnormality/sirocco/proc/RefreshList()
grabbed_list = list()
addtimer(CALLBACK(src, PROC_REF(RefreshList)), list_refresh_time)

/mob/living/simple_animal/hostile/abnormality/sirocco/AttackingTarget()
return FALSE

/mob/living/simple_animal/hostile/abnormality/sirocco/PickTarget(list/Targets)
return

/* Qliphoth/Breach effects */
/mob/living/simple_animal/hostile/abnormality/sirocco/BreachEffect(mob/living/carbon/human/user, breach_type)
. = ..()
addtimer(CALLBACK(src, PROC_REF(Grabber)), cooldown_time)
addtimer(CALLBACK(src, PROC_REF(EndStorm)), 3 MINUTES)
addtimer(CALLBACK(src, PROC_REF(RefreshList)), list_refresh_time)



/mob/living/simple_animal/hostile/abnormality/sirocco/FailureEffect(mob/living/carbon/human/user, work_type, pe)
. = ..()
datum_reference.qliphoth_change(-1)
return

/mob/living/simple_animal/hostile/abnormality/sirocco/proc/EndStorm()
death()
Binary file modified icons/mob/clothing/ego_gear/ego_gifts.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions lobotomy-corp13.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2773,6 +2773,7 @@
#include "code\modules\mob\living\simple_animal\abnormality\_auxiliary_modes\community\ego_armor.dm"
#include "code\modules\mob\living\simple_animal\abnormality\_auxiliary_modes\community\ego_weapons.dm"
#include "code\modules\mob\living\simple_animal\abnormality\_auxiliary_modes\community\aleph\crying_children.dm"
#include "code\modules\mob\living\simple_animal\abnormality\_auxiliary_modes\community\teth\sirocco.dm"
#include "code\modules\mob\living\simple_animal\abnormality\_auxiliary_modes\joke\_egodatum.dm"
#include "code\modules\mob\living\simple_animal\abnormality\_auxiliary_modes\joke\ego_armor.dm"
#include "code\modules\mob\living\simple_animal\abnormality\_auxiliary_modes\joke\ego_guns.dm"
Expand Down

0 comments on commit 1cb69ab

Please sign in to comment.