mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-26 01:52:15 +00:00
317 lines
8.1 KiB
Plaintext
317 lines
8.1 KiB
Plaintext
/obj/effect/landmark
|
|
name = "landmark"
|
|
icon = 'icons/mob/screen/generic.dmi'
|
|
icon_state = "x2"
|
|
anchored = 1.0
|
|
unacidable = 1
|
|
simulated = 0
|
|
invisibility = 101
|
|
var/delete_me = 0
|
|
|
|
/obj/effect/landmark/New()
|
|
..()
|
|
tag = text("landmark*[]", name)
|
|
do_landmark_effect()
|
|
return 1
|
|
|
|
/obj/effect/landmark/proc/do_landmark_effect()
|
|
switch(name) //some of these are probably obsolete
|
|
if("start")
|
|
newplayer_start = get_turf(loc)
|
|
delete_me = 1
|
|
return
|
|
if("JoinLate")
|
|
latejoin += loc
|
|
delete_me = 1
|
|
return
|
|
if("KickoffLocation")
|
|
kickoffsloc += loc
|
|
delete_me = 1
|
|
return
|
|
if("JoinLateGateway")
|
|
latejoin_gateway += loc
|
|
delete_me = 1
|
|
return
|
|
if("JoinLateCryo")
|
|
latejoin_cryo += loc
|
|
delete_me = 1
|
|
return
|
|
if("JoinLateCryoCommand")
|
|
latejoin_cryo_command += loc
|
|
delete_me = 1
|
|
if("JoinLateLift")
|
|
latejoin_living_quarters_lift += loc
|
|
delete_me = 1
|
|
return
|
|
if("JoinLateCyborg")
|
|
latejoin_cyborg += loc
|
|
delete_me = 1
|
|
return
|
|
if("JoinLateMerchant")
|
|
latejoin_merchant += loc
|
|
delete_me = 1
|
|
return
|
|
if("tdome1")
|
|
tdome1 += loc
|
|
if("tdome2")
|
|
tdome2 += loc
|
|
if("tdomeadmin")
|
|
tdomeadmin += loc
|
|
if("tdomeobserve")
|
|
tdomeobserve += loc
|
|
if("endgame_exit")
|
|
endgame_safespawns += loc
|
|
delete_me = 1
|
|
return
|
|
if("bluespacerift")
|
|
endgame_exits += loc
|
|
delete_me = 1
|
|
return
|
|
if("asteroid spawn")
|
|
asteroid_spawn += loc
|
|
delete_me = 1
|
|
return
|
|
if("skrell_entry")
|
|
dream_entries += loc
|
|
delete_me = 1
|
|
return
|
|
if("virtual_reality_spawn")
|
|
virtual_reality_spawn += loc
|
|
delete_me = 1
|
|
return
|
|
|
|
landmarks_list += src
|
|
|
|
/obj/effect/landmark/proc/delete()
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/Initialize()
|
|
. = ..()
|
|
if(delete_me)
|
|
qdel(src)
|
|
|
|
/obj/effect/landmark/Destroy()
|
|
landmarks_list -= src
|
|
return ..()
|
|
|
|
/obj/effect/landmark/start
|
|
name = "start"
|
|
icon = 'icons/mob/screen/generic.dmi'
|
|
icon_state = "x"
|
|
anchored = 1.0
|
|
invisibility = 101
|
|
|
|
/obj/effect/landmark/start/New()
|
|
..()
|
|
tag = "start*[name]"
|
|
|
|
return 1
|
|
|
|
//Costume spawner landmarks
|
|
/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
|
|
|
|
var/list/options = typesof(/obj/effect/landmark/costume)
|
|
var/PICK= options[rand(1,options.len)]
|
|
new PICK(src.loc)
|
|
delete_me = 1
|
|
|
|
//SUBCLASSES. Spawn a bunch of items and disappear likewise
|
|
/obj/effect/landmark/costume/chicken/New()
|
|
new /obj/item/clothing/suit/chickensuit(src.loc)
|
|
new /obj/item/clothing/head/chicken(src.loc)
|
|
new /obj/item/reagent_containers/food/snacks/egg(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/gladiator/New()
|
|
new /obj/item/clothing/under/gladiator(src.loc)
|
|
new /obj/item/clothing/head/helmet/gladiator(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/madscientist/New()
|
|
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
|
new /obj/item/clothing/head/flatcap(src.loc)
|
|
new /obj/item/clothing/suit/storage/toggle/labcoat(src.loc)
|
|
new /obj/item/clothing/glasses/regular(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/elpresidente/New()
|
|
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
|
new /obj/item/clothing/head/flatcap(src.loc)
|
|
new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(src.loc)
|
|
new /obj/item/clothing/shoes/jackboots(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/maid/New()
|
|
new /obj/item/clothing/under/skirt/(src.loc)
|
|
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
|
|
new CHOICE(src.loc)
|
|
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/butler/New()
|
|
new /obj/item/clothing/suit/wcoat(src.loc)
|
|
new /obj/item/clothing/under/suit_jacket(src.loc)
|
|
new /obj/item/clothing/head/that(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/scratch/New()
|
|
new /obj/item/clothing/gloves/white(src.loc)
|
|
new /obj/item/clothing/shoes/white(src.loc)
|
|
new /obj/item/clothing/under/suit_jacket/white(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/highlander/New()
|
|
new /obj/item/clothing/under/kilt(src.loc)
|
|
new /obj/item/clothing/head/beret/red(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/prig/New()
|
|
new /obj/item/clothing/suit/wcoat(src.loc)
|
|
new /obj/item/clothing/glasses/monocle(src.loc)
|
|
var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
|
|
new CHOICE(src.loc)
|
|
new /obj/item/clothing/shoes/black(src.loc)
|
|
new /obj/item/cane(src.loc)
|
|
new /obj/item/clothing/under/sl_suit(src.loc)
|
|
new /obj/item/clothing/mask/fakemoustache(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/nightowl/New()
|
|
new /obj/item/clothing/under/owl(src.loc)
|
|
new /obj/item/clothing/mask/gas/owl_mask(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/waiter/New()
|
|
new /obj/item/clothing/under/waiter(src.loc)
|
|
new /obj/item/clothing/head/rabbitears(src.loc)
|
|
new /obj/item/clothing/suit/apron(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/pirate/New()
|
|
new /obj/item/clothing/suit/pirate(src.loc)
|
|
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana/pirate)
|
|
new CHOICE(src.loc)
|
|
new /obj/item/clothing/glasses/eyepatch(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/commie/New()
|
|
new /obj/item/clothing/head/ushanka/grey(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/holiday_priest/New()
|
|
new /obj/item/clothing/suit/holidaypriest(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/cutewitch/New()
|
|
new /obj/item/clothing/under/sundress(src.loc)
|
|
new /obj/item/clothing/head/witchwig(src.loc)
|
|
new /obj/item/staff/broom(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/fakewizard/New()
|
|
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
|
|
new /obj/item/clothing/head/wizard/fake(src.loc)
|
|
new /obj/item/staff/(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/costume/sexymime/New()
|
|
new /obj/item/clothing/mask/gas/sexymime(src.loc)
|
|
new /obj/item/clothing/under/sexymime(src.loc)
|
|
delete_me = 1
|
|
|
|
/obj/effect/landmark/dungeon_spawn
|
|
name = "asteroid spawn"
|
|
icon = 'icons/1024x1024.dmi'
|
|
icon_state = "yellow"
|
|
|
|
/obj/effect/landmark/distress_team_equipment
|
|
name = "distress equipment"
|
|
|
|
/obj/effect/landmark/force_spawnpoint
|
|
name = "force spawnpoint"
|
|
var/job_tag = "Anyone"
|
|
|
|
/obj/effect/landmark/force_spawnpoint/do_landmark_effect()
|
|
LAZYINITLIST(force_spawnpoints)
|
|
LAZYADD(force_spawnpoints[job_tag], loc)
|
|
|
|
var/list/ruin_landmarks = list()
|
|
|
|
/obj/effect/landmark/ruin
|
|
var/datum/map_template/ruin/ruin_template
|
|
|
|
/obj/effect/landmark/ruin/New(loc, my_ruin_template)
|
|
name = "ruin_[sequential_id(/obj/effect/landmark/ruin)]"
|
|
..(loc)
|
|
ruin_template = my_ruin_template
|
|
ruin_landmarks |= src
|
|
|
|
/obj/effect/landmark/ruin/Destroy()
|
|
ruin_landmarks -= src
|
|
ruin_template = null
|
|
. = ..()
|
|
|
|
/obj/effect/landmark/entry_point
|
|
name = "entry point landmark"
|
|
icon_state = "dir_arrow"
|
|
movable_flags = MOVABLE_FLAG_EFFECTMOVE
|
|
|
|
/obj/effect/landmark/entry_point/Initialize()
|
|
..()
|
|
return INITIALIZE_HINT_LATELOAD
|
|
|
|
/obj/effect/landmark/entry_point/LateInitialize()
|
|
if(current_map.use_overmap)
|
|
SSshuttle.entry_points_to_initialize += src
|
|
name += " [x], [y]"
|
|
|
|
/obj/effect/landmark/entry_point/proc/get_candidate()
|
|
var/obj/effect/overmap/visitable/sector = map_sectors["[z]"]
|
|
if(!sector)
|
|
return
|
|
return attempt_hook_up_recursive(sector)
|
|
|
|
/obj/effect/landmark/entry_point/proc/attempt_hook_up_recursive(var/obj/effect/overmap/visitable/sector)
|
|
if(attempt_hook_up(sector))
|
|
return sector
|
|
for(var/obj/effect/overmap/visitable/ship/candidate in sector)
|
|
if((. = .(candidate)))
|
|
return
|
|
|
|
/obj/effect/landmark/entry_point/proc/attempt_hook_up(var/obj/effect/overmap/visitable/sector)
|
|
if(!istype(sector))
|
|
return FALSE
|
|
if(sector.check_ownership(src))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
//The four entry point landmarks below are named assuming that fore is facing DOWNWARDS.
|
|
/obj/effect/landmark/entry_point/aft
|
|
name = "aft"
|
|
|
|
/obj/effect/landmark/entry_point/starboard
|
|
name = "starboard"
|
|
dir = 4
|
|
|
|
/obj/effect/landmark/entry_point/port
|
|
name = "port"
|
|
dir = 8
|
|
|
|
/obj/effect/landmark/entry_point/fore
|
|
name = "fore"
|
|
dir = 1
|
|
|
|
/obj/effect/landmark/entry_point/south
|
|
name = "south"
|
|
|
|
/obj/effect/landmark/entry_point/east
|
|
name = "east"
|
|
dir = 4
|
|
|
|
/obj/effect/landmark/entry_point/west
|
|
name = "west"
|
|
dir = 8
|
|
|
|
/obj/effect/landmark/entry_point/north
|
|
name = "north"
|
|
dir = 1 |