Skip to content

Commit

Permalink
Limbus Labs Additions (#2047)
Browse files Browse the repository at this point in the history
* Update eris.dm

* Update pisc_mermaid.dm

* Update pisc_mermaid.dm

* Update despair_knight.dm

* Update clouded_monk.dm

* Update clouded_monk.dm

* Update clouded_monk.dm

* Update clouded_monk.dm

* Update galaxy_child.dm

* Update eris.dm

* Update scorched_girl.dm

* Update !abno_overwrites.dm

* Update galaxy_child.dm

* Update despair_knight.dm

* Update galaxy_child.dm

* Update highsec.dm

* Update lowsec.dm

* Update spawners.dm

* Update spawners.dm

* Update scorched_girl.dm

* Update galaxy_child.dm

* Update spawners.dm

* Update galaxy_child.dm

* Update despair_knight.dm

* Update galaxy_child.dm

* Update code/modules/mob/living/simple_animal/abnormality/he/galaxy_child.dm

Co-authored-by: Gboster-0 <[email protected]>

* Update code/modules/mob/living/simple_animal/abnormality/he/pisc_mermaid.dm

Co-authored-by: Gboster-0 <[email protected]>

* Update code/modules/mob/living/simple_animal/abnormality/waw/clouded_monk.dm

Co-authored-by: Gboster-0 <[email protected]>

* Update code/modules/mob/living/simple_animal/abnormality/waw/despair_knight.dm

Co-authored-by: Gboster-0 <[email protected]>

* Update code/modules/mob/living/simple_animal/abnormality/teth/scorched_girl.dm

Co-authored-by: Gboster-0 <[email protected]>

* Update laboratory.dmm

* Update !other_overwrites.dm

* Update !other_overwrites.dm

* Update laboratory.dmm

* Update spawners.dm

* Child of the galaxy gift cooldown increased (Temporary solution for today at least)

* Bug Fixes

* GBee added and bugfixes

* One more fix

* No more nonconsensual gifts

* Update ModularTegustation/tegu_items/limbus_labs/!abno_overwrites.dm

Co-authored-by: [̸R̵e̵d̴a̴c̶t̸e̸d̴]̵ <[email protected]>

* Update code/modules/mob/living/simple_animal/abnormality/waw/generalb.dm

Co-authored-by: [̸R̵e̵d̴a̴c̶t̸e̸d̴]̵ <[email protected]>

* Fixed Invincibility Bug

* Update !abno_overwrites.dm

* QoH and final bugfixes

* Revert QoH part for now

This reverts commit e5cf6bb.

---------

Co-authored-by: Gboster-0 <[email protected]>
Co-authored-by: [̸R̵e̵d̴a̴c̶t̸e̸d̴]̵ <[email protected]>
  • Loading branch information
3 people authored May 2, 2024
1 parent 65ecbc7 commit c5ccd3a
Show file tree
Hide file tree
Showing 18 changed files with 372 additions and 16 deletions.
17 changes: 16 additions & 1 deletion ModularTegustation/tegu_items/limbus_labs/!abno_overwrites.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,19 @@
if(SSmaptype.maptype == "limbus_labs")
health = 1500
maxHealth = 1500
damage_coeff = list(RED_DAMAGE = 1, WHITE_DAMAGE = 0.8, BLACK_DAMAGE = 0.8, PALE_DAMAGE = 1.2)
ChangeResistances(1, 0.8, 0.8, 1.2)

/mob/living/simple_animal/hostile/abnormality/scorched_girl/Initialize()
..()
if(SSmaptype.maptype == "limbus_labs")
health = 600
boom_damage = 80

/mob/living/simple_animal/hostile/abnormality/general_b/Initialize()
..()
if(SSmaptype.maptype == "limbus_labs")
health = 2000
maxHealth = 2000
ChangeResistances(0.7, 0.6, 0.8, 1)
melee_damage_lower = 35
melee_damage_upper = 47
21 changes: 20 additions & 1 deletion ModularTegustation/tegu_items/limbus_labs/!other_overwrites.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,28 @@
if(SSmaptype.maptype == "limbus_labs")
max_damage = 50

//Abnormalities have no name here.
//Abnormalities have no name here. And we don't want nonsentient ones to breach
/mob/living/simple_animal/hostile/abnormality/Initialize()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
name = "Limbus Company Specimen"
faction = list("neutral")

//To avoid other issues when possessed

/mob/living/simple_animal/hostile/abnormality/Login()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
faction = list("hostile")

/mob/living/simple_animal/hostile/abnormality/Logout()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
faction = list("neutral")

//Torso Fabricator is free for this mode, but 100 ahn for an organic body.
/obj/machinery/body_fabricator/Initialize()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
prosthetic_cost = 0
organic_cost = 100
7 changes: 6 additions & 1 deletion ModularTegustation/tegu_items/limbus_labs/spawners.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ GLOBAL_LIST_INIT(low_security, list(
/mob/living/simple_animal/hostile/abnormality/fairy_longlegs,
/mob/living/simple_animal/hostile/abnormality/pisc_mermaid,
/mob/living/simple_animal/hostile/abnormality/der_freischutz,

/mob/living/simple_animal/hostile/abnormality/scorched_girl,
/mob/living/simple_animal/hostile/abnormality/eris,
/mob/living/simple_animal/hostile/abnormality/schadenfreude,
/mob/living/simple_animal/hostile/abnormality/galaxy_child,
/mob/living/simple_animal/hostile/abnormality/woodsman
))

GLOBAL_LIST_INIT(high_security, list(
Expand All @@ -22,6 +26,7 @@ GLOBAL_LIST_INIT(high_security, list(
/mob/living/simple_animal/hostile/abnormality/mountain,
/mob/living/simple_animal/hostile/abnormality/despair_knight,
/mob/living/simple_animal/hostile/abnormality/red_hood,
/mob/living/simple_animal/hostile/abnormality/general_b

))

Expand Down
4 changes: 2 additions & 2 deletions _maps/map_files/Event/laboratory.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -768,8 +768,7 @@
/obj/machinery/light{
dir = 4
},
/obj/structure/table/glass,
/obj/item/storage/box/medipens,
/obj/machinery/body_fabricator,
/turf/open/floor/plasteel/white,
/area/centcom)
"nl" = (
Expand Down Expand Up @@ -2716,6 +2715,7 @@
"Sx" = (
/obj/structure/table/glass,
/obj/item/storage/box/medipens,
/obj/item/storage/box/medipens,
/turf/open/floor/plasteel/white,
/area/centcom)
"Sz" = (
Expand Down
2 changes: 1 addition & 1 deletion code/modules/jobs/job_types/labs/research/paperwork.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
job_notice = "Make 3 copies of each report, one for the manager, one for Asset protection, and one for the LR which will then be put into the vault."
job_abbreviation = "ARCH"

/datum/job/ist/after_spawn(mob/living/carbon/human/H, mob/M, latejoin = FALSE)
/datum/job/archivist/after_spawn(mob/living/carbon/human/H, mob/M, latejoin = FALSE)
..()
ADD_TRAIT(H, TRAIT_COMBATFEAR_IMMUNE, JOB_TRAIT)
ADD_TRAIT(H, TRAIT_WORK_FORBIDDEN, JOB_TRAIT)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/jobs/job_types/labs/security/highsec.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
outfit = /datum/outfit/job/high_sec_officer
display_order = 9.5

job_important = "You are a High Security Officer, hired by LCB. Your job to ensure the safety of the researchers of the High Security Zone. Deal with any hazards that occur with the zone, and attempt to coerce abnormalities to stay. If you are unable to keep the abnormalities to stay through coersion, suppress them."
job_important = "You are a High Security Officer, hired by LCB. Your job to ensure the safety of the researchers of the High Security Zone. Deal with any hazards that occur with the zone, and attempt to coerce abnormalities to stay. If you are unable to keep the abnormalities to stay through coersion, suppress them. During your free time, feel free to interact with the abnormalities in your zone."

alt_titles = list()
roundstart_attributes = list(
Expand Down
2 changes: 1 addition & 1 deletion code/modules/jobs/job_types/labs/security/lowsec.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
outfit = /datum/outfit/job/low_sec_officer
display_order = 8.5

job_important = "You are a Low Security Officer, hired by LCB. Your job to ensure the safety of the researchers of the Low Security Zone. Deal with any hazards that occur with the zone, and attempt to coerce abnormalities to stay. If you are unable to keep the abnormalities to stay through coersion, suppress them."
job_important = "You are a Low Security Officer, hired by LCB. Your job to ensure the safety of the researchers of the Low Security Zone. Deal with any hazards that occur with the zone, and attempt to coerce abnormalities to stay. If you are unable to keep the abnormalities to stay through coersion, suppress them. During your free time, feel free to interact with the abnormalities in your zone."

alt_titles = list()
roundstart_attributes = list(
Expand Down
2 changes: 1 addition & 1 deletion code/modules/jobs/job_types/labs/support/janitor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
job_important = "You are a limbus company janitor. Assist the facility in cleaning up as you can."
job_abbreviation = "JAN"

/datum/job/lc_engineer/after_spawn(mob/living/carbon/human/H, mob/M, latejoin = FALSE)
/datum/job/lc_janitor/after_spawn(mob/living/carbon/human/H, mob/M, latejoin = FALSE)
..()
H.set_attribute_limit(0)
ADD_TRAIT(H, TRAIT_COMBATFEAR_IMMUNE, JOB_TRAIT)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/dead/observer/observer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -737,7 +737,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
to_chat(usr, span_userdanger("You dont exist, so you cant possess!"))
return ..()

if(!isabnormalitymob(over)) // we want them to ONLY be able to possess abnormalities
if(!isabnormalitymob(over) && !SSmaptype.maptype == "limbus_labs") // we want them to ONLY be able to possess abnormalities
to_chat(usr, span_userdanger("You can only possess abnormalities!"))
return ..()

Expand Down
8 changes: 8 additions & 0 deletions code/modules/mob/living/simple_animal/abnormality/he/eris.dm
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@
/mob/living/simple_animal/hostile/abnormality/eris/proc/Dine(mob/living/carbon/human/poorfuck)
manual_emote("unhinges her jaw, revealing many rows of teeth!")
playsound(get_turf(src), 'sound/abnormalities/bigbird/bite.ogg', 50, 1, 2)
if(SSmaptype.maptype == "limbus_labs")
for(var/obj/item/organ/O in poorfuck.getorganszone(BODY_ZONE_HEAD, TRUE))
O.Remove(poorfuck)
O.forceMove(get_turf(poorfuck))
poorfuck.dust()
new /obj/effect/gibspawner/generic/silent(get_turf(poorfuck))

Expand Down Expand Up @@ -143,6 +147,10 @@

playsound(get_turf(src), 'sound/abnormalities/bigbird/bite.ogg', 50, 1, 2)
new /obj/effect/gibspawner/generic/silent(get_turf(current_petter))
if(SSmaptype.maptype == "limbus_labs")
for(var/obj/item/organ/O in current_petter.getorganszone(BODY_ZONE_HEAD, TRUE))
O.Remove(current_petter)
O.forceMove(get_turf(current_petter))
current_petter.dust()

SLEEP_CHECK_DEATH(20)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#define STATUS_EFFECT_FRIENDSHIP /datum/status_effect/display/friendship
#define GALAXY_COOLDOWN (60 SECONDS)
/mob/living/simple_animal/hostile/abnormality/galaxy_child
name = "Child of the Galaxy"
desc = "A young, lost child."
Expand Down Expand Up @@ -37,6 +38,88 @@
var/depressed = FALSE
var/chance_modifier = 1

var/galaxy_cooldown
var/galaxy_cooldown_time = 5 SECONDS

attack_action_types = list(/datum/action/cooldown/friend_gift, /datum/action/cooldown/galaxygiftbreak)

/datum/action/cooldown/friend_gift
name = "Gift Pebble"
icon_icon = 'ModularTegustation/Teguicons/status_sprites.dmi'
button_icon_state = "friendship"
check_flags = AB_CHECK_CONSCIOUS
transparent_when_unavailable = TRUE
cooldown_time = GALAXY_COOLDOWN //5 seconds

/datum/action/cooldown/friend_gift/Trigger()
if(!..())
return FALSE
if(!istype(owner, /mob/living/simple_animal/hostile/abnormality/galaxy_child))
return FALSE
var/mob/living/simple_animal/hostile/abnormality/galaxy_child/galaxy_child = owner
StartCooldown()
galaxy_child.manualgift()
return TRUE

/mob/living/simple_animal/hostile/abnormality/galaxy_child/proc/manualgift()
var/list/nearby = viewers(7, src) // first call viewers to get all mobs that see us
if((SSmaptype.maptype == "limbus_labs"))
for(var/mob in nearby) // then sanitize the list
if(mob == src) // cut ourselfes from the list
nearby -= mob
if(!ishuman(mob)) // cut all the non-humans from the list
nearby -= mob
//if(mob.stat == DEAD)
//nearby -= mob
if(mob in galaxy_friend) //cut who is already a friend
nearby -= mob
var/mob/living/carbon/human/new_friend = input(src, "Choose who you want to gift a pebble to", "Select your new friend") as null|anything in nearby // pick someone from the list
var/giftask = alert(new_friend, "Do you wish to receive the child's gift?", "Recieve Gift", "Yes", "No")
if(giftask == "Yes")
new_friend.apply_status_effect(STATUS_EFFECT_FRIENDSHIP)
galaxy_friend |= new_friend
heal_amount += heal_mod
damage_amount += damage_mod
RegisterSignal(new_friend, COMSIG_LIVING_DEATH, PROC_REF(FriendDeath))
icon_state = "galaxy"
depressed = FALSE

/datum/action/cooldown/galaxygiftbreak
name = "Break Gifts"
check_flags = AB_CHECK_CONSCIOUS
transparent_when_unavailable = TRUE
cooldown_time = GALAXY_COOLDOWN //5 seconds

/datum/action/cooldown/galaxygiftbreak/Trigger()
if(!..())
return FALSE
if(!istype(owner, /mob/living/simple_animal/hostile/abnormality/galaxy_child))
return FALSE
var/mob/living/simple_animal/hostile/abnormality/galaxy_child/galaxy_child = owner
StartCooldown()
galaxy_child.break_gifts()
return TRUE

/mob/living/simple_animal/hostile/abnormality/galaxy_child/proc/break_gifts(mob/living/carbon/human/user)
if((SSmaptype.maptype == "limbus_labs"))
if(LAZYLEN(galaxy_friend))
for(var/mob/living/carbon/human/L in galaxy_friend)
if(QDELETED(L))
continue
L.apply_damage(damage_amount, BLACK_DAMAGE, null, L.run_armor_check(null, BLACK_DAMAGE), spread_damage = TRUE)
L.remove_status_effect(STATUS_EFFECT_FRIENDSHIP)
UnregisterSignal(L, COMSIG_LIVING_DEATH)
new /obj/effect/temp_visual/pebblecrack(get_turf(L))
playsound(get_turf(L), "shatter", 50, TRUE)
to_chat(L, span_userdanger("Your pebble violently shatters as Child of the Galaxy begins to weep!"))
//reset everything
heal_amount = 0
damage_amount = 0
depressed = TRUE
LAZYCLEARLIST(galaxy_friend)
icon_state = "galaxy_weep"


/mob/living/simple_animal/hostile/abnormality/galaxy_child/examine(mob/user)
. = ..()
if(depressed)
Expand Down Expand Up @@ -118,6 +201,7 @@
/mob/living/simple_animal/hostile/abnormality/galaxy_child/proc/FriendDeath(datum/source, gibbed)
SIGNAL_HANDLER
UnregisterSignal(source, COMSIG_LIVING_DEATH)
to_chat(src, span_userdanger("You sense that one of your friends has perished...."))
datum_reference.qliphoth_change(-4)

//FRIEND
Expand Down Expand Up @@ -146,3 +230,5 @@
/obj/effect/temp_visual/pebblecrack/Initialize(mapload, atom/mimiced_atom)
. = ..()
animate(src, alpha = 0, time = duration)

#undef GALAXY_COOLDOWN
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,37 @@
var/obj/item/clothing/head/unrequited_crown/crown
var/mob/living/carbon/human/love_target

attack_action_types = list(
/datum/action/innate/change_icon_merm,
)


/datum/action/innate/change_icon_merm
name = "Toggle Icon"
desc = "Toggle your icon between breached and contained. (Works only for Limbus Company Labratories)"

/datum/action/innate/change_icon_merm/Activate()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
owner.icon = 'ModularTegustation/Teguicons/48x32.dmi'
owner.icon_state = "pmermaid_standing"
owner.pixel_x = -12
owner.base_pixel_x = -12
owner.pixel_y = 0
owner.base_pixel_y = 0
active = 1

/datum/action/innate/change_icon_merm/Deactivate()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
owner.icon = 'ModularTegustation/Teguicons/64x64.dmi'
owner.icon_state = "pmermaid_breach"
owner.pixel_x = 0
owner.base_pixel_x = 0
owner.pixel_y = -16
owner.base_pixel_y = -16
active = 0

/mob/living/simple_animal/hostile/abnormality/pisc_mermaid/FailureEffect(mob/living/carbon/human/user, work_type, pe)
. = ..()
datum_reference.qliphoth_change(-1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,30 @@
//Unique variable im defining for this abnormality. This is the timer for their during work emotes.
var/work_emote_cooldown = 0

attack_action_types = list(
/datum/action/innate/change_icon_forsaken,
)


/datum/action/innate/change_icon_forsaken
name = "Toggle Icon"
desc = "Toggle your icon between breached and contained. (Works only for Limbus Company Labratories)"

/datum/action/innate/change_icon_forsaken/Activate()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
owner.icon = 'ModularTegustation/Teguicons/tegumobs.dmi'
owner.icon_state = "forsakenmurdererinert"
active = 1

/datum/action/innate/change_icon_forsaken/Deactivate()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
owner.icon = 'ModularTegustation/Teguicons/tegumobs.dmi'
owner.icon_state = "forsakenmurdererbreach"
active = 0


//When work type is bad the qliphoth counter lowers with no chance.
/mob/living/simple_animal/hostile/abnormality/forsaken_murderer/FailureEffect(mob/living/carbon/human/user, work_type, pe)
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,29 @@
var/boom_damage = 250
patrol_cooldown_time = 10 SECONDS //Scorched be zooming

attack_action_types = list(
/datum/action/innate/change_icon_scorch,
)


/datum/action/innate/change_icon_scorch
name = "Toggle Icon"
desc = "Toggle your icon between breached and contained. (Works only for Limbus Company Labratories)"

/datum/action/innate/change_icon_scorch/Activate()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
owner.icon = 'ModularTegustation/Teguicons/tegumobs.dmi'
owner.icon_state = "scorched"
active = 1

/datum/action/innate/change_icon_scorch/Deactivate()
. = ..()
if(SSmaptype.maptype == "limbus_labs")
owner.icon = 'ModularTegustation/Teguicons/tegumobs.dmi'
owner.icon_state = "scorched_breach"
active = 0

/mob/living/simple_animal/hostile/abnormality/scorched_girl/patrol_select()
var/turf/target_center
var/highestcount = 0
Expand Down Expand Up @@ -110,7 +133,11 @@
var/datum/effect_system/smoke_spread/S = new
S.set_up(7, get_turf(src))
S.start()
qdel(src)
if(SSmaptype.maptype != "limbus_labs")
qdel(src)
else
exploding = FALSE
return

/mob/living/simple_animal/hostile/abnormality/scorched_girl/NeutralEffect(mob/living/carbon/human/user, work_type, pe)
. = ..()
Expand Down
Loading

0 comments on commit c5ccd3a

Please sign in to comment.