Skip to content

Commit

Permalink
adds hookah and tangle
Browse files Browse the repository at this point in the history
  • Loading branch information
Kitsunemitsu committed Oct 25, 2024
1 parent 13e1252 commit a50a7bc
Show file tree
Hide file tree
Showing 22 changed files with 319 additions and 13 deletions.
Binary file modified ModularTegustation/Teguicons/32x32.dmi
Binary file not shown.
Binary file modified ModularTegustation/Teguicons/32x64.dmi
Binary file not shown.
Binary file modified ModularTegustation/Teguicons/64x64.dmi
Binary file not shown.
Binary file modified ModularTegustation/Teguicons/64x96.dmi
Binary file not shown.
3 changes: 2 additions & 1 deletion ModularTegustation/lc13_structures.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
var/last_expand = 0 //last world.time this weed expanded
var/expand_cooldown = 1.5 SECONDS
var/can_expand = TRUE
var/bypass_density = FALSE
var/static/list/blacklisted_turfs

/obj/structure/spreading/Initialize()
Expand Down Expand Up @@ -42,7 +43,7 @@
for(var/turf/T in spread_turfs)
var/obj/machinery/M = locate(/obj/machinery) in T
if(M)
if(M.density)
if(M.density && !bypass_density)
continue
var/obj/structure/spreading/S = locate(/obj/structure/spreading) in T
if(S)
Expand Down
6 changes: 3 additions & 3 deletions code/datums/abnormality/_ego_datum/teth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -228,13 +228,13 @@
cost = 20

// Tangle - Rapunzel
/* /datum/ego_datum/armor/rapunzel
/datum/ego_datum/armor/rapunzel
item_path = /obj/item/clothing/suit/armor/ego_gear/teth/rapunzel
cost = 20

/datum/ego_datum/weapon/rapunzel
item_path = /obj/item/gun/ego_gun/rapunzel
cost = 20 */
item_path = /obj/item/ego_weapon/rapunzel
cost = 20

// Someone's Portrait - Snapshot
/datum/ego_datum/armor/snapshot
Expand Down
9 changes: 9 additions & 0 deletions code/datums/abnormality/_ego_datum/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -500,3 +500,12 @@
/datum/ego_datum/armor/effervescent
item_path = /obj/item/clothing/suit/armor/ego_gear/waw/effervescent
cost = 50

// Hookah Caterpillar - Havana
/datum/ego_datum/weapon/havana
item_path = /obj/item/gun/ego_gun/havana
cost = 50

/datum/ego_datum/armor/havana
item_path = /obj/item/clothing/suit/armor/ego_gear/waw/havana
cost = 50
13 changes: 13 additions & 0 deletions code/game/objects/items/ego_weapons/teth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -586,3 +586,16 @@
attack_verb_continuous = list("smashes", "bludgeons", "crushes")
attack_verb_simple = list("smash", "bludgeon", "crush")
hitsound = 'sound/weapons/fixer/generic/club3.ogg'

/obj/item/ego_weapon/rapunzel
name = "rapunzel"
desc = "The spear often tries to lead the wielder into a long and endless realm of mind, \
but they must try to not be swayed by it."
icon_state = "rapunzel"
force = 28
stuntime = 5 //Mucho damage, bit more stun
damtype = BLACK_DAMAGE
attack_verb_continuous = list("pokes", "jabs", "tears", "lacerates", "gores")
attack_verb_simple = list("poke", "jab", "tear", "lacerate", "gore")
hitsound = 'sound/weapons/fixer/generic/knife2.ogg'

6 changes: 6 additions & 0 deletions code/modules/clothing/suits/ego_gear/teth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -256,3 +256,9 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
desc = "Spare a thought for the poor employees at the branches that fail, trapped and abandoned - buried alive."
icon_state = "denial"
armor = list(RED_DAMAGE = 20, WHITE_DAMAGE = -20, BLACK_DAMAGE = 0, PALE_DAMAGE = 20)

/obj/item/clothing/suit/armor/ego_gear/teth/rapunzel
name = "rapunzel"
desc = "When you have no means of escape, you must forge your own path."
icon_state = "tangle"
armor = list(RED_DAMAGE = 0, WHITE_DAMAGE = 20, BLACK_DAMAGE = 0, PALE_DAMAGE = 0)
9 changes: 9 additions & 0 deletions code/modules/clothing/suits/ego_gear/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -490,3 +490,12 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
FORTITUDE_ATTRIBUTE = 60,
PRUDENCE_ATTRIBUTE = 60,
)

/obj/item/clothing/suit/armor/ego_gear/waw/havana
name = "havana"
desc = "Sit down, relax and take a deep breath."
icon_state = "havana"
armor = list(RED_DAMAGE = 30, WHITE_DAMAGE = 20, BLACK_DAMAGE = 30, PALE_DAMAGE = 60) // 140
attribute_requirements = list(
JUSTICE_ATTRIBUTE = 80
)
127 changes: 127 additions & 0 deletions code/modules/mob/living/simple_animal/abnormality/teth/tangle.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/mob/living/simple_animal/hostile/abnormality/tangle
name = "Tangle"
desc = "What seems to be a severed head laying in a tangle of hair."
icon = 'ModularTegustation/Teguicons/32x32.dmi'
icon_state = "tangle"
icon_living = "tangle"
portrait = "tangle"
maxHealth = 1600
health = 1600
damage_coeff = list(BRUTE = 1, RED_DAMAGE = 1, WHITE_DAMAGE = 0.5, BLACK_DAMAGE = 1, PALE_DAMAGE = 2)
melee_damage_lower = 0 //Doesn't attack
melee_damage_upper = 0
rapid_melee = 2
melee_damage_type = WHITE_DAMAGE
stat_attack = HARD_CRIT
faction = list("hostile")
can_breach = TRUE
threat_level = TETH_LEVEL
start_qliphoth = 2
work_chances = list(
ABNORMALITY_WORK_INSTINCT = 80,
ABNORMALITY_WORK_INSIGHT = list(50, 50, 40, 40, 40),
ABNORMALITY_WORK_ATTACHMENT = list(50, 50, 40, 40, 40),
ABNORMALITY_WORK_REPRESSION = list(50, 50, 40, 40, 40),
)
work_damage_amount = 5
work_damage_type = WHITE_DAMAGE
ego_list = list(
/datum/ego_datum/weapon/rapunzel,
/datum/ego_datum/armor/rapunzel,
)
// gift_type = /datum/ego_gifts/rapunzel
abnormality_origin = ABNORMALITY_ORIGIN_WONDERLAB

var/chosen
var/instinct_count
var/list/hair_list = list()

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

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

//Grab a list of all agents and picks one
/mob/living/simple_animal/hostile/abnormality/tangle/Initialize()
. = ..()
var/list/potentialmarked = list()
for(var/mob/living/carbon/human/L in GLOB.player_list)
if(L.stat >= HARD_CRIT || L.sanity_lost || z != L.z) // Dead or in hard crit, insane, or on a different Z level.
continue
if(HAS_TRAIT(usr, TRAIT_WORK_FORBIDDEN)) //Don't get non agents
continue
potentialmarked += L
if(potentialmarked.len == 1) //If there's only one of you, then don't do it. I'm not that evil.
return
chosen = pick(potentialmarked)



/mob/living/simple_animal/hostile/abnormality/tangle/PostWorkEffect(mob/living/carbon/human/user, work_type, pe, work_time)
// If your'e the chosen, lower
if(user == chosen)
datum_reference.qliphoth_change(-1)
icon_state = "tangledawake"
return

if(work_type == ABNORMALITY_WORK_INSTINCT)
instinct_count+=1
if((instinct_count==3) || (instinct_count == 6))
datum_reference.qliphoth_change(-1)
icon_state = "tangledawake"

/mob/living/simple_animal/hostile/abnormality/tangle/BreachEffect()
..()
icon_state = "tangled"
icon = 'ModularTegustation/Teguicons/32x64.dmi'
new /obj/structure/spreading/tangle_hair (src)


/mob/living/simple_animal/hostile/abnormality/tangle/death()
for(var/V in hair_list)
QDEL_NULL(V)
hair_list-=V
..()


// Hair turf
/obj/structure/spreading/tangle_hair
gender = PLURAL
name = "blonde hair"
desc = "a patch of blonde hair."
icon = 'icons/effects/effects.dmi'
icon_state = "tanglehair"
anchored = TRUE
density = FALSE
layer = TURF_LAYER
plane = FLOOR_PLANE
max_integrity = 20
base_icon_state = "tanglehair"
var/mob/living/simple_animal/hostile/abnormality/tangle/connected_abno

/obj/structure/spreading/tangle_hair/Initialize()
. = ..()

//Stolen from Snow White's. Thanks Para!
if(!connected_abno)
connected_abno = locate(/mob/living/simple_animal/hostile/abnormality/tangle) in GLOB.abnormality_mob_list
if(connected_abno)
connected_abno.hair_list += src
expand()


/obj/structure/spreading/tangle_hair/expand()
addtimer(CALLBACK(src, PROC_REF(expand)), 5 SECONDS)
// if(connected_abno.hair_list.len>=150)
// return
..()

/obj/structure/spreading/tangle_hair/Crossed(atom/movable/AM)
. = ..()
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
H.apply_damage(1, WHITE_DAMAGE, null, H.run_armor_check(null, RED_DAMAGE), spread_damage = TRUE)
if(prob(10))
H.Immobilize(5)
to_chat(H, span_warning("You get caught in the hair!"))
121 changes: 121 additions & 0 deletions code/modules/mob/living/simple_animal/abnormality/waw/caterpillar.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
/mob/living/simple_animal/hostile/abnormality/caterpillar
name = "Hookah Caterpillar"
desc = "A pathetic bug sitting on a leaf."
icon = 'ModularTegustation/Teguicons/64x64.dmi'
icon_state = "caterpillar"
icon_living = "caterpillar"
portrait = "caterpillar"
pixel_x = -16
base_pixel_x = -16
maxHealth = 2300
health = 2300
ranged = TRUE
attack_verb_continuous = "scolds"
attack_verb_simple = "scold"
stat_attack = HARD_CRIT
melee_damage_lower = 11
melee_damage_upper = 12
damage_coeff = list(BRUTE = 1, RED_DAMAGE = 1.5, WHITE_DAMAGE = 1.3, BLACK_DAMAGE = 0.5, PALE_DAMAGE = 0)
speak_emote = list("flutters")

can_breach = TRUE
threat_level = WAW_LEVEL
faction = list("neutral", "hostile")
start_qliphoth = 1
work_chances = list(
ABNORMALITY_WORK_INSTINCT = 75,
ABNORMALITY_WORK_INSIGHT = 75,
ABNORMALITY_WORK_ATTACHMENT = 75,
ABNORMALITY_WORK_REPRESSION = list(20, 20, 20, 20, 65),
)
max_boxes = 18
work_damage_amount = 5
work_damage_type = PALE_DAMAGE
patrol_cooldown_time = 3 SECONDS

ego_list = list(
// /datum/ego_datum/weapon/havana,
// /datum/ego_datum/armor/havana,
)
// gift_type = /datum/ego_gifts/caterpillar
abnormality_origin = ABNORMALITY_ORIGIN_WONDERLAB

var/darts_smoked //how many times you didnt' work repression
var/can_counter = TRUE

//Set a smoker timer for 15 seconds
/mob/living/simple_animal/hostile/abnormality/caterpillar/BreachEffect()
icon = 'ModularTegustation/Teguicons/64x96.dmi'
addtimer(CALLBACK(src, PROC_REF(Smoke_Timer)), 15 SECONDS)
..()

/mob/living/simple_animal/hostile/abnormality/caterpillar/proc/Smoke_Timer()
var/datum/effect_system/smoke_spread/pale/S = new
S.set_up(8, get_turf(src)) //Make the smoke bigger
S.start()
qdel(S)
addtimer(CALLBACK(src, PROC_REF(Smoke_Timer)), 15 SECONDS)


//Counter shit if you get hit by a bullet, we want to keep them either dodging in and out or firing through the gas
/mob/living/simple_animal/hostile/abnormality/caterpillar/proc/Counter_Timer()
can_counter = TRUE

/mob/living/simple_animal/hostile/abnormality/caterpillar/bullet_act(obj/projectile/P)
if(!can_counter)
return
can_counter = FALSE
var/datum/effect_system/smoke_spread/pale/S = new
S.set_up(8, get_turf(src)) //Make the smoke bigger
S.start()
qdel(S)
addtimer(CALLBACK(src, PROC_REF(Counter_Timer)), 15 SECONDS)



/mob/living/simple_animal/hostile/abnormality/caterpillar/PostWorkEffect(mob/living/carbon/human/user, work_type, pe, work_time)
if(work_type != ABNORMALITY_WORK_REPRESSION)
darts_smoked++ //Smoke a fat stoogie if it's not repression

if(darts_smoked<8)
work_damage_amount+=2
max_boxes+=2

if(darts_smoked>=3)
var/datum/effect_system/smoke_spread/pale/S = new
S.set_up(4, get_turf(src)) //Make the smoke bigger
S.start()
qdel(S)

if(darts_smoked>=5)
if(prob(50))
datum_reference.qliphoth_change(-1)



/////////////////////////////////////////////
// Bad smoke
/////////////////////////////////////////////

/obj/effect/particle_effect/smoke/pale
icon_state = "palesmoke"
lifetime = 8

//Bypasses smoke detection
/obj/effect/particle_effect/smoke/pale/smoke_mob(mob/living/carbon/C)
if(!istype(C))
return FALSE
if(lifetime<1)
return FALSE
if(C.smoke_delay)
return FALSE

C.smoke_delay++
addtimer(CALLBACK(src, PROC_REF(remove_smoke_delay), C), 10)
C.deal_damage(27, PALE_DAMAGE)
to_chat(C, span_danger("IT BURNS!"))
C.emote("scream")
return TRUE

/datum/effect_system/smoke_spread/pale
effect_type = /obj/effect/particle_effect/smoke/pale
8 changes: 8 additions & 0 deletions code/modules/paperwork/records/info/teth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -390,3 +390,11 @@
"When the Qliphoth Counter reached 0, the abnormality let out a yell that seems to damage the electricity of the nearest connected circuit.",
"Considering how the containment cells are designed, the nearest circuits seem to be the ciruitry for the facility's lighting.",
"The energy lost from an electric surge from this abnormality will be taken out of the quota.")

//Tangle
/obj/item/paper/fluff/info/teth/tangle
abno_type = /mob/living/simple_animal/hostile/abnormality/tangle
abno_code = "F-01-191"
abno_info = list(
"Tangle had a bad reaction when working on a random EMPLOYEE, and their Qliphoth Counter lowered.",
"Working large amounts of instinct works on tangle ended in it's Qliphoth Counter being lowered.",)
13 changes: 13 additions & 0 deletions code/modules/paperwork/records/info/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -556,3 +556,16 @@
)
abno_breach_damage_type = "White"
abno_breach_damage_count = "Extreme"

//Hookah Caterpillar
/obj/item/paper/fluff/info/waw/caterpillar
abno_type = /mob/living/simple_animal/hostile/abnormality/caterpillar
abno_code = "F-02-190"
abno_info = list(
"Working on F-02-190 on a work type other than repression will increase work damage and PE gained until next breach.",
"When Work damage and PE generated increased, so did the danger to the employee.",
"Eventually, works other than repression on F-02-190 will lower it's Qliphoth Counter.",

)
abno_breach_damage_type = "Pale"
abno_breach_damage_count = "Very High"
13 changes: 5 additions & 8 deletions code/modules/projectiles/guns/ego_gun/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -583,19 +583,16 @@
FORTITUDE_ATTRIBUTE = 80
)

/obj/item/gun/ego_gun/hookah //TODO: Seems like lots of these are placeholder. remind me to finish this weapon if you are reading this.
name = "lethargy"
desc = "Courtesy of the 16th Ego rifleman's brigade."
icon_state = "loyalty"
inhand_icon_state = "loyalty"
/obj/item/gun/ego_gun/havana
name = "havana"
desc = "Within it's simple design lies a lot of struggle"
icon_state = "havana"
inhand_icon_state = "havana"
force = 20
damtype = PALE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_hookah
weapon_weight = WEAPON_HEAVY
spread = 20
special = "This weapon fires 750 rounds per minute. \
This weapon has IFF capabilities.\
Use in hand to turn off IFF."
fire_sound = 'sound/effects/smoke.ogg'
autofire = 0.04 SECONDS
fire_sound_volume = 5
Expand Down
2 changes: 1 addition & 1 deletion code/modules/projectiles/projectile/ego_bullets/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@
L.apply_status_effect(/datum/status_effect/wrath_burning)

/obj/projectile/ego_bullet/ego_hookah
name = "lethargy"
name = "havana"
icon_state = "smoke"
damage = 2
damage_type = PALE_DAMAGE
Expand Down
Binary file modified icons/effects/96x96.dmi
Binary file not shown.
Binary file modified icons/effects/effects.dmi
Binary file not shown.
Binary file modified icons/mob/clothing/ego_gear/abnormality/waw.dmi
Binary file not shown.
Binary file modified icons/obj/clothing/ego_gear/abnormality/waw.dmi
Binary file not shown.
Binary file modified icons/obj/ego_weapons.dmi
Binary file not shown.
Loading

0 comments on commit a50a7bc

Please sign in to comment.