Skip to content

Commit

Permalink
Adds three new deathmatch maps - Ragnarok, Lattice Battles, Species S…
Browse files Browse the repository at this point in the history
…howdown (tgstation#85319)

## About The Pull Request

Adds three new deathmatch maps.

### Important nonDM Balance Changes

Cult daggers fit on belts.

Heretic blades fit on belts.

Veil shifters fit on belts.

I really don't know why these didn't, it makes inventory management
rather annoying at times. It also screwed my loadouts over.

Cursed Blades fit on cult robes. They're cult equipment after all.

Bronze suits fit toy watches!!

### Ragnarok


![ragnarok](https://github.com/user-attachments/assets/b20b0974-b1e3-4d1f-9c46-03c56da3eebf)

A vicious battle in the jungle, between the three major religious sects:
Prove your deity's might! And try not to upset any primates. Or fall
into the chasm.

Going clockwise:

**Cultist Invoker**: Wielding a mirror shield, shielded robes, a sword,
and some bolas, this cultist has a 'well-balanced' set of equipment to
annihilate their opponents.

**Cultist Artificer**: This set harnesses the blood magicks - with
spells of stunning, blood rites, and ranged hallucinations, with a
wicked Cursed Blade and Veil Shifter as implement, and Berserker Robes
to finish the look.

**Holy Crusader**: Nullifying most, but certainly not all, of the
fearsome arsenal of the opponents with the null rod at their belt, the
Crusader packs a dangerous claymore and armor to protect them from the
demons.

**Rat'var Apostate**: Hey, what's that guy doing there in the dark? They
don't have any magic because their god is Fucking Dead, but they're
still going to show up for a token effort. Good luck!

**Heretic Scribe**: This mad soul wields an antique rifle and an
assortment of other dangerous relics, with a set of magic geared towards
staying far apart, picking enemies off from range and evading their
attacks for the final blow.

**Heretic Warrior**: With the deadliest of Mansus Magic at their
disposal, this warrior is only limited by their ability to juggle all
their spells at once - don't get overwhelmed sorting your spells while
an Invoker runs at you with a sword and shield and makes you cry
yourself to death.

### Lattice Battles


![spleef](https://github.com/user-attachments/assets/03391656-4544-4230-8a40-ab6349a1458c)

A fresh change of pace: In this pacifist map, the only way to kill your
opponents is to snip the lattices and catwalks from under them. Watch
your step.

### Species Warfare


![species_warfare](https://github.com/user-attachments/assets/35b4acc5-10db-403b-ac0f-78fac8d41e8a)

Prove the might of your static by duking it out with every other kind of
crewmember out there. Features a messy dorms, a ticking-timebomb atmos,
a rather sterile robotics, a slippery closet, a fluffy medbay, and an
energetic bridge.
Mirror Shields now shatter on throw (which stuns and hurts)

## Code changes

Added two new traits, TRAIT_ACT_AS_CULTIST and TRAIT_ACT_AS_HERETIC.
Added these as an OR to respective IS_X checks. Added new GET_X checks
for them, which do not check the trait.

Tidied up the file those are in.

Added belt_contents() to outfits, but it dosen't work....

Added a heretic rust sister-type to rust walls and floors.

Fixed a typo in cult ascension.

## Why It's Good For The Game

These maps all aim to do something interesting and unique with DM rather
than the usual deathfest and hugging of random crates.

Ragnarok allows players to practice unusual and rare magical mechanics,
similar to Ragin' Mages.

Lattice Battles adds SPLEEF to the game, which I think is awesome.

Species Warfare is, I think, fun and funny. Each 'department' has
incredibly chaotic and thematically-appropiate content for the species
its meant to symbolize, and I look forward to the chaos that every round
in it is inevitably going to have.

> Mirror Shields now shatter on throw.

I'm surprised they didn't! Since they aren't used anywhere I can do what
I want with them.

## Code changes

> Added two new traits, TRAIT_ACT_AS_CULTIST and TRAIT_ACT_AS_HERETIC.
Added these as an OR to respective IS_X checks. Added new GET_X checks
for them, which do not check the trait.

I think this is a clever solution to the problem of 'what if I want
someone who acts as the antag, but isn't?' Some procs do need the datum
to modify it, so there's GET_X, but those aren't common and don't seem
likely to be an issue.

> Added belt_contents() to outfits, but it dosen't work....

Help would be very much appreciated, I don't know what I'm doing wrong
here. It's only used for the heretic scribe's unfathomable curio.
Some post-PR cleanup coming up.

## Changelog
:cl:
add: Added three new DM maps - Ragnarok, Lattice Battles, Species
Showdown.
/:cl:
  • Loading branch information
carlarctg authored Aug 19, 2024
1 parent 5e7c5c9 commit 2f69fe6
Show file tree
Hide file tree
Showing 52 changed files with 6,362 additions and 5,200 deletions.
808 changes: 0 additions & 808 deletions _maps/deathmatch/instagib.dmm

This file was deleted.

994 changes: 994 additions & 0 deletions _maps/deathmatch/lattice_battles.dmm

Large diffs are not rendered by default.

1,649 changes: 0 additions & 1,649 deletions _maps/deathmatch/mech_madness.dmm

This file was deleted.

500 changes: 0 additions & 500 deletions _maps/deathmatch/ragecage.dmm

This file was deleted.

2,163 changes: 2,163 additions & 0 deletions _maps/deathmatch/ragnarok.dmm

Large diffs are not rendered by default.

567 changes: 0 additions & 567 deletions _maps/deathmatch/secu_ring.dmm

This file was deleted.

750 changes: 0 additions & 750 deletions _maps/deathmatch/shooting_range.dmm

This file was deleted.

802 changes: 0 additions & 802 deletions _maps/deathmatch/sniper_elite.dmm

This file was deleted.

2,491 changes: 2,491 additions & 0 deletions _maps/deathmatch/species_warfare.dmm

Large diffs are not rendered by default.

37 changes: 28 additions & 9 deletions code/__DEFINES/antagonists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -217,22 +217,28 @@ GLOBAL_LIST_INIT(ai_employers, list(
/// Checks if the given mob is a traitor
#define IS_TRAITOR(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/traitor))

/**
* Cult checks
*/

/// Checks if the given mob is a blood cultist
#define IS_CULTIST(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/cult))
#define IS_CULTIST(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/cult) || HAS_TRAIT(mob, TRAIT_ACT_AS_CULTIST))

/// Checks if the given mob is a blood cultist and is guaranteed to return the datum if possible - will cause issues with above trait
#define GET_CULTIST(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/cult))

/// Checks if the mob is a sentient or non-sentient cultist
#define IS_CULTIST_OR_CULTIST_MOB(mob) ((IS_CULTIST(mob)) || (mob.faction.Find(FACTION_CULT)))
/// Checks if the given mob is a changeling
#define IS_CHANGELING(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/changeling))

/// Checks if the given mob is a nuclear operative
#define IS_NUKE_OP(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/nukeop))

//Tells whether or not someone is a space ninja
#define IS_SPACE_NINJA(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/ninja))
/**
* Heretic checks
*/

/// Checks if the given mob is a heretic.
#define IS_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic))
#define IS_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic) || HAS_TRAIT(mob, TRAIT_ACT_AS_HERETIC))
/// Checks if the given mob is a heretic and is guaranteed to return the datum if possible - will cause issues with above trait
#define GET_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic))

/// Check if the given mob is a heretic monster.
#define IS_HERETIC_MONSTER(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic_monster))
/// Check if the given mob is a lunatic
Expand All @@ -242,6 +248,19 @@ GLOBAL_LIST_INIT(ai_employers, list(
/// CHecks if the given mob is in the mansus realm
#define IS_IN_MANSUS(mob) (istype(get_area(mob), /area/centcom/heretic_sacrifice))

/**
* Etc.
*/

/// Checks if the given mob is a changeling
#define IS_CHANGELING(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/changeling))

/// Checks if the given mob is a nuclear operative
#define IS_NUKE_OP(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/nukeop))

//Tells whether or not someone is a space ninja
#define IS_SPACE_NINJA(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/ninja))

/// Checks if the given mob is a wizard
#define IS_WIZARD(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/wizard))

Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/inventory.dm
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@
#define ITEM_SLOT_HANDCUFFED (1<<18)
/// Legcuff slot (bolas, beartraps)
#define ITEM_SLOT_LEGCUFFED (1<<19)
/// Inside of a character's BELT.........
#define ITEM_SLOT_BELTPACK (1<<20)

/// Total amount of slots
#define SLOTS_AMT 20 // Keep this up to date!
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1216,6 +1216,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Trait given to anything linked to, not necessarily allied to, the mansus
#define TRAIT_MANSUS_TOUCHED "mansus_touched"


// These traits are used in IS_X() as an OR, and is utilized for pseudoantags (such as deathmatch or domains) so they don't need to actually get antag status.
// To specifically and only get the antag datum, GET_X() exists now.
#define TRAIT_ACT_AS_CULTIST "act_as_cultist"
#define TRAIT_ACT_AS_HERETIC "act_as_heretic"

/// Appiled when wizard buy (/datum/spellbook_entry/perks/spalls_lottery) perk.
/// Give 50/25% chance not spend a spellbook charge on 1/2 cost spell.
/// Appiled it wizard can't refund any spells.
Expand Down
2 changes: 2 additions & 0 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -693,6 +693,8 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
slot_strings += "dextrous storage"
if(slot_flags & ITEM_SLOT_BACKPACK)
slot_strings += "backpack"
if(slot_flags & ITEM_SLOT_BELTPACK)
slot_strings += "belt" // ?
return slot_strings

///Returns the direction that the initiator and the target are facing
Expand Down
2 changes: 2 additions & 0 deletions code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,8 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_AI_ACCESS" = TRAIT_AI_ACCESS,
"TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING,
"TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING,
"TRAIT_ACT_AS_CULTIST" = TRAIT_ACT_AS_CULTIST,
"TRAIT_ACT_AS_HERETIC" = TRAIT_ACT_AS_HERETIC,
"TRAIT_ADAMANTINE_EXTRACT_ARMOR" = TRAIT_ADAMANTINE_EXTRACT_ARMOR,
"TRAIT_ADVANCEDTOOLUSER" = TRAIT_ADVANCEDTOOLUSER,
"TRAIT_AGENDER" = TRAIT_AGENDER,
Expand Down
2 changes: 2 additions & 0 deletions code/_globalvars/traits/admin_tooling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
/mob = list(
"TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING,
"TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING,
"TRAIT_ACT_AS_CULTIST" = TRAIT_ACT_AS_CULTIST,
"TRAIT_ACT_AS_HERETIC" = TRAIT_ACT_AS_HERETIC,
"TRAIT_ADVANCEDTOOLUSER" = TRAIT_ADVANCEDTOOLUSER,
"TRAIT_AGENDER" = TRAIT_AGENDER,
"TRAIT_AGEUSIA" = TRAIT_AGEUSIA,
Expand Down
27 changes: 27 additions & 0 deletions code/datums/outfit.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,13 @@
/// Type path of item to go in belt slot
var/belt = null

/**
* list of items that should go in the belt of the user
*
* Format of this list should be: list(path=count,otherpath=count)
*/
var/list/belt_contents = null

/// Type path of item to go in ears slot
var/ears = null

Expand Down Expand Up @@ -252,6 +259,14 @@
for(var/i in 1 to number)
EQUIP_OUTFIT_ITEM(path, ITEM_SLOT_BACKPACK)

if(belt_contents)
for(var/path in belt_contents)
var/number = belt_contents[path]
if(!isnum(number))//Default to 1
number = 1
for(var/i in 1 to number)
EQUIP_OUTFIT_ITEM(path, ITEM_SLOT_BELTPACK)

post_equip(user, visualsOnly)

if(!visualsOnly)
Expand Down Expand Up @@ -360,6 +375,10 @@
num_to_load = 1
for(var/i in 1 to num_to_load)
preload += type_to_load
//Load in belt gear and shit
for(var/datum/type_to_load in belt_contents)
for(var/i in 1 to belt_contents[type_to_load])
preload += type_to_load
preload += belt
preload += ears
preload += glasses
Expand Down Expand Up @@ -406,6 +425,7 @@
.["l_hand"] = l_hand
.["internals_slot"] = internals_slot
.["backpack_contents"] = backpack_contents
.["belt_contents"] = belt_contents
.["box"] = box
.["implants"] = implants
.["accessory"] = accessory
Expand Down Expand Up @@ -433,6 +453,7 @@
l_hand = target.l_hand
internals_slot = target.internals_slot
backpack_contents = target.backpack_contents
belt_contents = target.belt_contents
box = target.box
implants = target.implants
accessory = target.accessory
Expand Down Expand Up @@ -476,6 +497,12 @@
var/itype = text2path(item)
if(itype)
backpack_contents[itype] = backpack[item]
var/list/beltpack = outfit_data["belt_contents"]
belt_contents = list()
for(var/item in beltpack)
var/itype = text2path(item)
if(itype)
belt_contents[itype] = belt[item]
box = text2path(outfit_data["box"])
var/list/impl = outfit_data["implants"]
implants = list()
Expand Down
2 changes: 1 addition & 1 deletion code/game/atom/atom_act.dm
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@

///wrapper proc that passes our mob's rust_strength to the target we are rusting
/mob/living/proc/do_rust_heretic_act(atom/target)
var/datum/antagonist/heretic/heretic_data = IS_HERETIC(src)
var/datum/antagonist/heretic/heretic_data = GET_HERETIC(src)
target.rust_heretic_act(heretic_data?.rust_strength)

/mob/living/basic/heretic_summon/rust_walker/do_rust_heretic_act(atom/target)
Expand Down
20 changes: 20 additions & 0 deletions code/game/objects/effects/spawners/random/decoration.dm
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,26 @@
/obj/item/flashlight/glowstick/pink,
)

/obj/effect/spawner/random/decoration/glowstick/on
name = "random colored glowstick (on)"
icon_state = "glowstick"
loot = list(
/obj/item/flashlight/glowstick,
/obj/item/flashlight/glowstick/red,
/obj/item/flashlight/glowstick/blue,
/obj/item/flashlight/glowstick/cyan,
/obj/item/flashlight/glowstick/orange,
/obj/item/flashlight/glowstick/yellow,
/obj/item/flashlight/glowstick/pink,
)

/obj/effect/spawner/random/decoration/glowstick/on/make_item(spawn_loc, type_path_to_make)
. = ..()

var/obj/item/flashlight/glowstick = .

glowstick.set_light_on(TRUE)

/obj/effect/spawner/random/decoration/paint
name = "paint spawner"
icon_state = "paint"
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/items/devices/flashlight.dm
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,9 @@
color = LIGHT_COLOR_GREEN
light_color = LIGHT_COLOR_GREEN

/obj/item/flashlight/lantern/jade/on
start_on = TRUE

/obj/item/flashlight/slime
gender = PLURAL
name = "glowing slime extract"
Expand Down
1 change: 0 additions & 1 deletion code/game/objects/items/granters/magic/lightning_bolt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@
"UNLIMITED power? Well... maybe if I practice...",
"Wait until they're grouped up...",
)

12 changes: 12 additions & 0 deletions code/game/objects/structures/railings.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,29 @@
energy = 100
bomb = 10

/obj/structure/railing/unbreakable
resistance_flags = INDESTRUCTIBLE

/obj/structure/railing/corner //aesthetic corner sharp edges hurt oof ouch
icon_state = "railing_corner"
density = FALSE
climbable = FALSE

/obj/structure/railing/corner/unbreakable
resistance_flags = INDESTRUCTIBLE

/obj/structure/railing/corner/end //end of a segment of railing without making a loop
icon_state = "railing_end"

/obj/structure/railing/corner/end/unbreakable
resistance_flags = INDESTRUCTIBLE

/obj/structure/railing/corner/end/flip //same as above but flipped around
icon_state = "railing_end_flip"

/obj/structure/railing/corner/end/flip/unbreakable
resistance_flags = INDESTRUCTIBLE

/obj/structure/railing/Initialize(mapload)
. = ..()
if(climbable)
Expand Down
15 changes: 15 additions & 0 deletions code/game/turfs/closed/wall/misc_walls.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@
. = ..()
AddElement(/datum/element/rust)

/turf/closed/wall/heretic_rust
color = MAP_SWITCH(null, COLOR_GREEN_GRAY)

/turf/closed/wall/heretic_rust/Initialize(mapload)
. = ..()
AddElement(/datum/element/rust/heretic)

/turf/closed/wall/r_wall/rust
name = "rusted reinforced wall"
desc = "A huge chunk of rusted reinforced metal."
Expand All @@ -61,6 +68,14 @@
. = ..()
AddElement(/datum/element/rust)

/turf/closed/wall/r_wall/heretic_rust
color = MAP_SWITCH(null, COLOR_GREEN_GRAY)
icon = 'icons/turf/walls/rusty_reinforced_wall.dmi'

/turf/closed/wall/r_wall/heretic_rust/Initialize(mapload)
. = ..()
AddElement(/datum/element/rust/heretic)

/turf/closed/wall/mineral/bronze
name = "clockwork wall"
desc = "A huge chunk of bronze, decorated like gears and cogs."
Expand Down
8 changes: 8 additions & 0 deletions code/game/turfs/open/floor/misc_floor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,14 @@
AddElement(/datum/element/rust)
color = null

/turf/open/floor/plating/heretic_rust
color = COLOR_GREEN_GRAY

/turf/open/floor/plating/heretic_rust/Initialize(mapload)
. = ..()
AddElement(/datum/element/rust/heretic)
color = null

/turf/open/floor/plating/plasma
initial_gas_mix = ATMOS_TANK_PLASMA

Expand Down
10 changes: 6 additions & 4 deletions code/modules/antagonists/cult/blood_magic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -433,13 +433,15 @@
/obj/item/melee/blood_magic/stun/cast_spell(mob/living/target, mob/living/carbon/user)
if(!istype(target) || IS_CULTIST(target))
return
var/datum/antagonist/cult/cultist = IS_CULTIST(user)
var/datum/team/cult/cult_team = cultist.get_team()
var/datum/antagonist/cult/cultist = GET_CULTIST(user)
var/datum/team/cult/cult_team = cultist?.get_team()
var/effect_coef = 1
if(cult_team.cult_ascendent)
if(cult_team?.cult_ascendent)
effect_coef = 0.1
else if(cult_team.cult_risen)
else if(cult_team?.cult_risen)
effect_coef = 0.4
if(IS_CULTIST(user) && isnull(GET_CULTIST(user)))
effect_coef = 0.2
user.visible_message(
span_warning("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!"),
span_cult_italic("You attempt to stun [target] with the spell!"),
Expand Down
18 changes: 6 additions & 12 deletions code/modules/antagonists/cult/cult_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
inhand_x_dimension = 32
inhand_y_dimension = 32
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
force = 15
throwforce = 25
block_chance = 25
Expand Down Expand Up @@ -217,7 +218,7 @@ Striking a noncultist, however, will tear their flesh."}
// Get the heretic's new body and antag datum.
trapped_entity = trapped_mind?.current
trapped_entity.key = trapped_mind?.key
var/datum/antagonist/heretic/heretic_holder = IS_HERETIC(trapped_entity)
var/datum/antagonist/heretic/heretic_holder = GET_HERETIC(trapped_entity)
if(!heretic_holder)
stack_trace("[soul_to_bind] in but not a heretic on the heretic soul blade.")

Expand Down Expand Up @@ -378,7 +379,7 @@ Striking a noncultist, however, will tear their flesh."}
worn_icon = 'icons/mob/clothing/suits/armor.dmi'
inhand_icon_state = "cultrobes"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/melee/sickly_blade/cursed)
armor_type = /datum/armor/hooded_cultrobes
flags_inv = HIDEJUMPSUIT
cold_protection = CHEST|GROIN|LEGS|ARMS
Expand Down Expand Up @@ -595,7 +596,6 @@ Striking a noncultist, however, will tear their flesh."}
/obj/item/clothing/suit/hooded/cultrobes/berserker
name = "flagellant's robes"
desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage. Provides an even greater speed boost if its hood is worn."
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
armor_type = /datum/armor/cultrobes_berserker
slowdown = -0.3 //the hood gives an additional -0.3 if you have it flipped up, for a total of -0.6
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood
Expand Down Expand Up @@ -1278,7 +1278,6 @@ Striking a noncultist, however, will tear their flesh."}
return FALSE

/obj/item/shield/mirror/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
var/turf/impact_turf = get_turf(hit_atom)
if(isliving(hit_atom))
var/mob/living/target = hit_atom

Expand All @@ -1291,14 +1290,9 @@ Striking a noncultist, however, will tear their flesh."}
return
if(!..())
target.Paralyze(30)
var/mob/thrower = throwingdatum?.get_thrower()
if(thrower)
for(var/mob/living/Next in orange(2, impact_turf))
if(!Next.density || IS_CULTIST(Next))
continue
throw_at(Next, 3, 1, thrower)
return
throw_at(thrower, 7, 1, null)
new /obj/effect/temp_visual/cult/sparks(target)
playsound(target, 'sound/effects/glassbr3.ogg', 100)
qdel(src)
else
..()

Expand Down
3 changes: 2 additions & 1 deletion code/modules/antagonists/cult/datums/cult_team.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
for(var/datum/mind/mind as anything in members)
if(mind.current)
SEND_SOUND(mind.current, 'sound/ambience/antag/bloodcult/bloodcult_halos.ogg')
to_chat(mind.current, span_cult_large(span_warning("Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!")))
to_chat(mind.current, span_cult_large(span_warning("Your cult is ascendant and the red harvest approaches - you cannot hide your true nature for much longer!!")))
mind.current.AddElement(/datum/element/cult_halo)
cult_ascendent = TRUE
log_game("The blood cult has ascended with [cultplayers] players.")
Expand Down Expand Up @@ -134,6 +134,7 @@
return "<div class='panel redborder'>[parts.Join("<br>")]</div>"

/datum/team/cult/proc/is_sacrifice_target(datum/mind/mind)

for(var/datum/objective/sacrifice/sac_objective in objectives)
if(mind == sac_objective.target)
return TRUE
Expand Down
Loading

0 comments on commit 2f69fe6

Please sign in to comment.