mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 15:45:25 +01:00
Merge pull request #8161 from uraniummeltdown/kvlt
Restricted Cult Summon Areas
This commit is contained in:
@@ -5,4 +5,6 @@ var/wavesecret = 0 // meteor mode, delays wave progression, terrible name
|
||||
var/datum/station_state/start_state = null // Used in round-end report
|
||||
|
||||
var/custom_event_msg = null
|
||||
var/custom_event_admin_msg = null
|
||||
var/custom_event_admin_msg = null
|
||||
|
||||
var/list/summon_spots = list()
|
||||
|
||||
@@ -30,6 +30,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
luminosity = 0
|
||||
mouse_opacity = 0
|
||||
invisibility = INVISIBILITY_LIGHTING
|
||||
var/valid_territory = TRUE //used for cult summoning areas on station zlevel
|
||||
var/map_name // Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
|
||||
var/lightswitch = 1
|
||||
|
||||
var/eject = null
|
||||
@@ -122,6 +124,7 @@ var/list/ghostteleportlocs = list()
|
||||
power_light = 0
|
||||
power_equip = 0
|
||||
power_environ = 0
|
||||
valid_territory = FALSE
|
||||
outdoors = 1
|
||||
ambientsounds = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/traitor.ogg')
|
||||
|
||||
@@ -150,6 +153,7 @@ var/list/ghostteleportlocs = list()
|
||||
/area/shuttle
|
||||
no_teleportlocs = 1
|
||||
requires_power = 0
|
||||
valid_territory = FALSE
|
||||
|
||||
/area/shuttle/arrival
|
||||
name = "\improper Arrival Shuttle"
|
||||
@@ -554,6 +558,7 @@ var/list/ghostteleportlocs = list()
|
||||
name = "\improper Asteroid"
|
||||
icon_state = "asteroid"
|
||||
requires_power = 0
|
||||
valid_territory = FALSE
|
||||
|
||||
/area/asteroid/cave // -- TLE
|
||||
name = "\improper Asteroid - Underground"
|
||||
@@ -881,6 +886,7 @@ var/list/ghostteleportlocs = list()
|
||||
//Maintenance
|
||||
/area/maintenance
|
||||
ambientsounds = list('sound/ambience/ambimaint1.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimaint3.ogg', 'sound/ambience/ambimaint4.ogg', 'sound/ambience/ambimaint5.ogg')
|
||||
valid_territory = FALSE
|
||||
|
||||
/area/maintenance/atmos_control
|
||||
name = "Atmospherics Maintenance"
|
||||
@@ -1137,6 +1143,7 @@ var/list/ghostteleportlocs = list()
|
||||
/area/crew_quarters/sleep
|
||||
name = "\improper Dormitories"
|
||||
icon_state = "Sleep"
|
||||
valid_territory = FALSE
|
||||
|
||||
/area/crew_quarters/sleep_male
|
||||
name = "\improper Male Dorm"
|
||||
@@ -1372,6 +1379,7 @@ var/list/ghostteleportlocs = list()
|
||||
/area/solar
|
||||
requires_power = 0
|
||||
dynamic_lighting = 0
|
||||
valid_territory = FALSE
|
||||
|
||||
auxport
|
||||
name = "\improper Fore Port Solar Array"
|
||||
@@ -1876,6 +1884,7 @@ area/security/podbay
|
||||
/area/toxins/test_area
|
||||
name = "\improper Toxins Test Area"
|
||||
icon_state = "toxtest"
|
||||
valid_territory = FALSE
|
||||
|
||||
/area/toxins/mixing
|
||||
name = "\improper Toxins Mixing Room"
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
layer = 10
|
||||
uid = ++global_uid
|
||||
all_areas += src
|
||||
map_name = name // Save the initial (the name set in the map) name of the area.
|
||||
|
||||
if(type == /area) // override defaults for space. TODO: make space areas of type /area/space rather than /area
|
||||
requires_power = 1
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#define SUMMON_POSSIBILITIES 3
|
||||
var/global/list/all_cults = list()
|
||||
|
||||
/datum/game_mode
|
||||
@@ -106,6 +107,12 @@ var/global/list/all_cults = list()
|
||||
modePlayer += cult
|
||||
acolytes_needed = acolytes_needed + round((num_players_started() / 10))
|
||||
|
||||
if(!summon_spots.len)
|
||||
while(summon_spots.len < SUMMON_POSSIBILITIES)
|
||||
var/area/summon = pick(return_sorted_areas() - summon_spots)
|
||||
if(summon && is_station_level(summon.z) && summon.valid_territory)
|
||||
summon_spots += summon
|
||||
|
||||
for(var/datum/mind/cult_mind in cult)
|
||||
equip_cultist(cult_mind.current)
|
||||
cult_mind.current.faction |= "cult"
|
||||
@@ -135,7 +142,7 @@ var/global/list/all_cults = list()
|
||||
else
|
||||
explanation = "Free objective."
|
||||
if("eldergod")
|
||||
explanation = "Summon [ticker.mode.cultdat.entity_name]. It will only work if nine cultists stand on and around it."
|
||||
explanation = "Summon [ticker.mode.cultdat.entity_name] by invoking the 'Tear Reality' rune.<b>The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin.</b>"
|
||||
to_chat(cult_mind.current, "<B>Objective #[obj_count]</B>: [explanation]")
|
||||
cult_mind.memory += "<B>Objective #[obj_count]</B>: [explanation]<BR>"
|
||||
|
||||
|
||||
@@ -109,10 +109,10 @@
|
||||
|
||||
if(prob(40))//split the chance of this
|
||||
objectives += "eldergod"
|
||||
explanation = "Summon [ticker.mode.cultdat.entity_name] on the Station via the use of the Tear Reality rune."
|
||||
explanation = "Summon [ticker.mode.cultdat.entity_name] on the Station via the use of the Tear Reality rune. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
|
||||
else
|
||||
objectives += "slaughter"
|
||||
explanation = "Bring the Slaughter via the rune 'Bring forth the slaughter'."
|
||||
explanation = "Bring the Slaughter via the rune 'Bring forth the slaughter'. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
|
||||
|
||||
for(var/datum/mind/cult_mind in cult)
|
||||
to_chat(cult_mind.current, "<span class='cult'>You and your acolytes have succeeded in preparing the station for the ultimate ritual!</span>")
|
||||
|
||||
@@ -201,6 +201,7 @@
|
||||
|
||||
/obj/item/weapon/tome/proc/finale_runes_ok(mob/living/user, obj/effect/rune/rune_to_scribe)
|
||||
var/datum/game_mode/cult/cult_mode = ticker.mode
|
||||
var/area/A = get_area(src)
|
||||
if(GAMEMODE_IS_CULT)
|
||||
if(!canbypass)//not an admin-tome, check things
|
||||
if(!cult_mode.narsie_condition_cleared)
|
||||
@@ -215,6 +216,9 @@
|
||||
if(!((CULT_ELDERGOD in cult_mode.objectives) || (CULT_SLAUGHTER in cult_mode.objectives)))
|
||||
to_chat(user, "<span class='warning'>[cult_mode.cultdat.entity_name]'s power does not wish to be unleashed!</span>")
|
||||
return 0
|
||||
if(!(A in summon_spots))
|
||||
to_chat(user, "<span class='cultlarge'>[cult_mode.cultdat.entity_name] can only be summoned where the veil is weak - in [english_list(summon_spots)]!</span>")
|
||||
return 0
|
||||
var/confirm_final = alert(user, "This is the FINAL step to summon your deities power, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for [cult_mode.cultdat.entity_name]!", "No")
|
||||
if(confirm_final == "No" || confirm_final == null)
|
||||
to_chat(user, "<span class='cult'>You decide to prepare further before scribing the rune.</span>")
|
||||
@@ -236,6 +240,7 @@
|
||||
var/entered_rune_name
|
||||
var/list/possible_runes = list()
|
||||
var/list/shields = list()
|
||||
var/area/A = get_area(src)
|
||||
if(locate(/obj/effect/rune) in runeturf)
|
||||
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
|
||||
return
|
||||
@@ -261,6 +266,7 @@
|
||||
if(!rune_to_scribe)
|
||||
return
|
||||
runeturf = get_turf(user) //we may have moved. adjust as needed...
|
||||
A = get_area(src)
|
||||
if(locate(/obj/effect/rune) in runeturf)
|
||||
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
|
||||
return
|
||||
@@ -268,7 +274,11 @@
|
||||
return
|
||||
if(ispath(rune_to_scribe, /obj/effect/rune/narsie) || ispath(rune_to_scribe, /obj/effect/rune/slaughter))//may need to change this - Fethas
|
||||
if(finale_runes_ok(user,rune_to_scribe))
|
||||
command_announcement.Announce("Figments from an eldritch god are being summoned somwhere on the station from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg')
|
||||
A = get_area(src)
|
||||
if(!(A in summon_spots)) // Check again to make sure they didn't move
|
||||
to_chat(user, "<span class='cultlarge'>The ritual can only begin where the veil is weak - in [english_list(summon_spots)]!</span>")
|
||||
return
|
||||
command_announcement.Announce("Figments from an eldritch god are being summoned somewhere on the station from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg')
|
||||
for(var/B in spiral_range_turfs(1, user, 1))
|
||||
var/turf/T = B
|
||||
var/obj/machinery/shield/N = new(T)
|
||||
|
||||
Reference in New Issue
Block a user