diff --git a/ModularTegustation/Teguicons/32x32.dmi b/ModularTegustation/Teguicons/32x32.dmi index 73f52fc12863..d6f333d2c27b 100644 Binary files a/ModularTegustation/Teguicons/32x32.dmi and b/ModularTegustation/Teguicons/32x32.dmi differ diff --git a/ModularTegustation/Teguicons/32x64.dmi b/ModularTegustation/Teguicons/32x64.dmi index 35d708fa0cb2..8a596559942e 100644 Binary files a/ModularTegustation/Teguicons/32x64.dmi and b/ModularTegustation/Teguicons/32x64.dmi differ diff --git a/ModularTegustation/Teguicons/64x64.dmi b/ModularTegustation/Teguicons/64x64.dmi index 6bcb0d9d2a0c..4c5a04145bd1 100644 Binary files a/ModularTegustation/Teguicons/64x64.dmi and b/ModularTegustation/Teguicons/64x64.dmi differ diff --git a/ModularTegustation/Teguicons/64x96.dmi b/ModularTegustation/Teguicons/64x96.dmi index beddc2bea87d..01a0b29ff8f4 100644 Binary files a/ModularTegustation/Teguicons/64x96.dmi and b/ModularTegustation/Teguicons/64x96.dmi differ diff --git a/ModularTegustation/ego_weapons/melee/teth.dm b/ModularTegustation/ego_weapons/melee/teth.dm index 2b66b7bde8c5..e026913745a7 100644 --- a/ModularTegustation/ego_weapons/melee/teth.dm +++ b/ModularTegustation/ego_weapons/melee/teth.dm @@ -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' + diff --git a/ModularTegustation/ego_weapons/ranged/ego_bullets/waw.dm b/ModularTegustation/ego_weapons/ranged/ego_bullets/waw.dm index 51c1065b0c37..502c46d1c88f 100644 --- a/ModularTegustation/ego_weapons/ranged/ego_bullets/waw.dm +++ b/ModularTegustation/ego_weapons/ranged/ego_bullets/waw.dm @@ -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 diff --git a/ModularTegustation/ego_weapons/ranged/waw.dm b/ModularTegustation/ego_weapons/ranged/waw.dm index 89bacf2b8378..277502252d39 100644 --- a/ModularTegustation/ego_weapons/ranged/waw.dm +++ b/ModularTegustation/ego_weapons/ranged/waw.dm @@ -593,19 +593,16 @@ FORTITUDE_ATTRIBUTE = 80 ) -/obj/item/ego_weapon/ranged/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/ego_weapon/ranged/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 projectile_path = /obj/projectile/ego_bullet/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 diff --git a/ModularTegustation/lc13_structures.dm b/ModularTegustation/lc13_structures.dm index 3c55c44f73f6..5b0d69c228ba 100644 --- a/ModularTegustation/lc13_structures.dm +++ b/ModularTegustation/lc13_structures.dm @@ -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() @@ -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) diff --git a/code/datums/abnormality/_ego_datum/teth.dm b/code/datums/abnormality/_ego_datum/teth.dm index b879d6b41ad7..5472d7175f9e 100644 --- a/code/datums/abnormality/_ego_datum/teth.dm +++ b/code/datums/abnormality/_ego_datum/teth.dm @@ -228,13 +228,12 @@ 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/ego_weapon/ranged/rapunzel - cost = 20 */ + item_path = /obj/item/ego_weapon/rapunzel + cost = 20 // Someone's Portrait - Snapshot /datum/ego_datum/armor/snapshot diff --git a/code/datums/abnormality/_ego_datum/waw.dm b/code/datums/abnormality/_ego_datum/waw.dm index d4d5f938d359..379735ffec66 100644 --- a/code/datums/abnormality/_ego_datum/waw.dm +++ b/code/datums/abnormality/_ego_datum/waw.dm @@ -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 diff --git a/code/modules/clothing/suits/ego_gear/teth.dm b/code/modules/clothing/suits/ego_gear/teth.dm index 211e9a3613ee..798d53132523 100644 --- a/code/modules/clothing/suits/ego_gear/teth.dm +++ b/code/modules/clothing/suits/ego_gear/teth.dm @@ -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) diff --git a/code/modules/clothing/suits/ego_gear/waw.dm b/code/modules/clothing/suits/ego_gear/waw.dm index 714496430523..fccfe70ce785 100644 --- a/code/modules/clothing/suits/ego_gear/waw.dm +++ b/code/modules/clothing/suits/ego_gear/waw.dm @@ -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 + ) diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/tangle.dm b/code/modules/mob/living/simple_animal/abnormality/teth/tangle.dm new file mode 100644 index 000000000000..5abcbf1c5381 --- /dev/null +++ b/code/modules/mob/living/simple_animal/abnormality/teth/tangle.dm @@ -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 = "tangleawake" + return + + if(work_type == ABNORMALITY_WORK_INSTINCT) + instinct_count+=1 + if((instinct_count==3) || (instinct_count == 6)) + datum_reference.qliphoth_change(-1) + icon_state = "tangleawake" + +/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!")) diff --git a/code/modules/mob/living/simple_animal/abnormality/waw/caterpillar.dm b/code/modules/mob/living/simple_animal/abnormality/waw/caterpillar.dm new file mode 100644 index 000000000000..89349ca4b93b --- /dev/null +++ b/code/modules/mob/living/simple_animal/abnormality/waw/caterpillar.dm @@ -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 diff --git a/code/modules/paperwork/records/info/teth.dm b/code/modules/paperwork/records/info/teth.dm index e1609a23944f..e5bbb6be7982 100644 --- a/code/modules/paperwork/records/info/teth.dm +++ b/code/modules/paperwork/records/info/teth.dm @@ -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.",) diff --git a/code/modules/paperwork/records/info/waw.dm b/code/modules/paperwork/records/info/waw.dm index 650b7f1dacfd..6505c4dd95ce 100644 --- a/code/modules/paperwork/records/info/waw.dm +++ b/code/modules/paperwork/records/info/waw.dm @@ -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" diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index f3660297e74a..a952c62f22d4 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index ed1a8e2ccaae..f1cc646bd4f9 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/clothing/ego_gear/abnormality/waw.dmi b/icons/mob/clothing/ego_gear/abnormality/waw.dmi index 2b492b0f849f..ca99729e0334 100644 Binary files a/icons/mob/clothing/ego_gear/abnormality/waw.dmi and b/icons/mob/clothing/ego_gear/abnormality/waw.dmi differ diff --git a/icons/obj/clothing/ego_gear/abnormality/waw.dmi b/icons/obj/clothing/ego_gear/abnormality/waw.dmi index 71207e2eced6..a4d5159bd244 100644 Binary files a/icons/obj/clothing/ego_gear/abnormality/waw.dmi and b/icons/obj/clothing/ego_gear/abnormality/waw.dmi differ diff --git a/icons/obj/ego_weapons.dmi b/icons/obj/ego_weapons.dmi index 0c21ec94bcbe..edfe16657b68 100644 Binary files a/icons/obj/ego_weapons.dmi and b/icons/obj/ego_weapons.dmi differ diff --git a/lobotomy-corp13.dme b/lobotomy-corp13.dme index 257fe929d30c..338b390a487e 100644 --- a/lobotomy-corp13.dme +++ b/lobotomy-corp13.dme @@ -2877,6 +2877,7 @@ #include "code\modules\mob\living\simple_animal\abnormality\teth\so_that_no_cry.dm" #include "code\modules\mob\living\simple_animal\abnormality\teth\someonesportrait.dm" #include "code\modules\mob\living\simple_animal\abnormality\teth\spider_bud.dm" +#include "code\modules\mob\living\simple_animal\abnormality\teth\tangle.dm" #include "code\modules\mob\living\simple_animal\abnormality\teth\training_rabbit.dm" #include "code\modules\mob\living\simple_animal\abnormality\teth\void_dream.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\alriune.dm" @@ -2885,6 +2886,7 @@ #include "code\modules\mob\living\simple_animal\abnormality\waw\big_bird.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\big_wolf.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\black_swan.dm" +#include "code\modules\mob\living\simple_animal\abnormality\waw\caterpillar.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\clouded_monk.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\clown_smiling.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\contract.dm"