Whitespace Standardization [MDB IGNORE] (#15748)

* Update settings

* Whitespace changes

* Comment out merger hooks in gitattributes

Corrupt maps would have to be resolved in repo before hooks could be updated

* Revert "Whitespace changes"

This reverts commit afbdd1d844.

* Whitespace again minus example

* Gitignore example changelog

* Restore changelog merge setting

* Keep older dmi hook attribute until hooks can be updated

* update vscode settings too

* Renormalize remaining

* Revert "Gitignore example changelog"

This reverts commit de22ad375d.

* Attempt to normalize example.yml (and another file I guess)

* Try again
This commit is contained in:
Drathek
2024-02-20 11:28:51 +01:00
committed by GitHub
parent 3b61f677b3
commit 7c8bb85de3
1175 changed files with 818171 additions and 818145 deletions
+51 -51
View File
@@ -1,51 +1,51 @@
/obj/machinery/artillerycontrol
var/reload = 180
name = "bluespace artillery control"
icon_state = "control_boxp1"
icon = 'icons/obj/machines/particle_accelerator2.dmi'
density = TRUE
anchored = TRUE
/obj/machinery/artillerycontrol/process()
if(src.reload<180)
src.reload++
/obj/structure/artilleryplaceholder
name = "artillery"
icon = 'icons/obj/machines/artillery.dmi'
anchored = TRUE
density = TRUE
/obj/structure/artilleryplaceholder/decorative
density = FALSE
/obj/machinery/artillerycontrol/attack_hand(mob/user as mob)
user.set_machine(src)
var/dat = "<B>Bluespace Artillery Control:</B><BR>"
dat += "Locked on<BR>"
dat += "<B>Charge progress: [reload]/180:</B><BR>"
dat += "<A href='byond://?src=\ref[src];fire=1'>Open Fire</A><BR>"
dat += "Deployment of weapon authorized by <br>[using_map.company_name] Naval Command<br><br>Remember, friendly fire is grounds for termination of your contract and life.<HR>"
user << browse(dat, "window=scroll")
onclose(user, "scroll")
return
/obj/machinery/artillerycontrol/Topic(href, href_list)
..()
if (usr.stat || usr.restrained())
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
var/A = tgui_input_list(usr, "Area to jump bombard", "Open Fire", teleportlocs)
var/area/thearea = teleportlocs[A]
if (usr.stat || usr.restrained()) return
if(src.reload < 180) return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
command_announcement.Announce("Bluespace artillery fire detected. Brace for impact.")
message_admins("[key_name_admin(usr)] has launched an artillery strike.", 1)
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
L+=T
var/loc = pick(L)
explosion(loc,2,5,11)
reload = 0
/obj/machinery/artillerycontrol
var/reload = 180
name = "bluespace artillery control"
icon_state = "control_boxp1"
icon = 'icons/obj/machines/particle_accelerator2.dmi'
density = TRUE
anchored = TRUE
/obj/machinery/artillerycontrol/process()
if(src.reload<180)
src.reload++
/obj/structure/artilleryplaceholder
name = "artillery"
icon = 'icons/obj/machines/artillery.dmi'
anchored = TRUE
density = TRUE
/obj/structure/artilleryplaceholder/decorative
density = FALSE
/obj/machinery/artillerycontrol/attack_hand(mob/user as mob)
user.set_machine(src)
var/dat = "<B>Bluespace Artillery Control:</B><BR>"
dat += "Locked on<BR>"
dat += "<B>Charge progress: [reload]/180:</B><BR>"
dat += "<A href='byond://?src=\ref[src];fire=1'>Open Fire</A><BR>"
dat += "Deployment of weapon authorized by <br>[using_map.company_name] Naval Command<br><br>Remember, friendly fire is grounds for termination of your contract and life.<HR>"
user << browse(dat, "window=scroll")
onclose(user, "scroll")
return
/obj/machinery/artillerycontrol/Topic(href, href_list)
..()
if (usr.stat || usr.restrained())
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
var/A = tgui_input_list(usr, "Area to jump bombard", "Open Fire", teleportlocs)
var/area/thearea = teleportlocs[A]
if (usr.stat || usr.restrained()) return
if(src.reload < 180) return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
command_announcement.Announce("Bluespace artillery fire detected. Brace for impact.")
message_admins("[key_name_admin(usr)] has launched an artillery strike.", 1)
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
L+=T
var/loc = pick(L)
explosion(loc,2,5,11)
reload = 0
+381 -381
View File
@@ -1,381 +1,381 @@
//These are meant for spawning on maps, namely Away Missions.
//If someone can do this in a neater way, be my guest-Kor
//To do: Allow corpses to appear mangled, bloody, etc. Allow customizing the bodies appearance (they're all bald and white right now).
/obj/effect/landmark/corpse
name = "Unknown"
var/mobname = "Unknown" //Unused now but it'd fuck up maps to remove it now
var/corpseuniform = null //Set this to an object path to have the slot filled with said object on the corpse.
var/corpsesuit = null
var/corpseshoes = null
var/corpsegloves = null
var/corpseradio = null
var/corpseglasses = null
var/corpsemask = null
var/corpsehelmet = null
var/corpsebelt = null
var/corpsepocket1 = null
var/corpsepocket2 = null
var/corpseback = null
var/corpseid = 0 //Just set to 1 if you want them to have an ID
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
var/species = SPECIES_HUMAN //defaults to generic-ass humans
var/random_species = FALSE //flip to TRUE to randomize species from the list below
var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL) //preset list that can be overriden downstream. only includes common humanoids for voidsuit compatibility's sake.
// var/random_appearance = FALSE //TODO: make this work
// var/cause_of_death = null //TODO: set up a cause-of-death system. needs to support both damage types and actual wound types, so a body can have been bitten/stabbed/clawed/shot/burned/lasered/etc. to death
delete_me = TRUE
/obj/effect/landmark/corpse/Initialize()
..()
createCorpse()
return INITIALIZE_HINT_QDEL
/obj/effect/landmark/corpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it.
var/mob/living/carbon/human/M = new /mob/living/carbon/human (src.loc)
M.low_sorting_priority = TRUE
if(random_species)
var/random_pick = pick(random_species_list)
M.set_species(random_pick)
src.species = random_pick
else
M.set_species(species)
//TODO: insert appearance randomization, needs to be species-based
M.real_name = src.name
M.death(1) //Kills the new mob
//TODO: insert cause of death handling/wound simulation here
if(src.corpseuniform)
M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform)
if(src.corpseshoes)
M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes)
if(src.corpsegloves)
M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves)
if(src.corpseradio)
M.equip_to_slot_or_del(new src.corpseradio(M), slot_l_ear)
if(src.corpseglasses)
M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
if(src.corpsemask)
M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask)
if(src.corpsebelt)
M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt)
if(src.corpsepocket1)
M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store)
if(src.corpsepocket2)
M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store)
if(src.corpseback)
M.equip_to_slot_or_del(new src.corpseback(M), slot_back)
if(src.corpseid == 1)
var/obj/item/weapon/card/id/W = new(M)
var/datum/job/jobdatum
for(var/jobtype in typesof(/datum/job))
var/datum/job/J = new jobtype
if(J.title == corpseidaccess)
jobdatum = J
break
if(src.corpseidicon)
W.icon_state = corpseidicon
if(src.corpseidaccess)
if(jobdatum)
W.access = jobdatum.get_access()
else
W.access = list()
if(corpseidjob)
W.assignment = corpseidjob
M.set_id_info(W)
M.equip_to_slot_or_del(W, slot_wear_id)
// Do suit last to avoid equipping issues
if(src.corpsehelmet)
M.equip_voidhelm_to_slot_or_del_with_refit(new src.corpsehelmet(M), slot_head, src.species)
if(src.corpsesuit)
M.equip_voidsuit_to_slot_or_del_with_refit(new src.corpsesuit(M), slot_wear_suit, src.species)
// I'll work on making a list of corpses people request for maps, or that I think will be commonly used. Syndicate operatives for example.
/obj/effect/landmark/corpse/syndicatesoldier
name = "Mercenary"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/armor/vest
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas
corpsehelmet = /obj/item/clothing/head/helmet/swat
corpseback = /obj/item/weapon/storage/backpack
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = "Syndicate"
/obj/effect/landmark/corpse/syndicatecommando
name = "Mercenary Commando"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/space/void/merc
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas/syndicate
corpsehelmet = /obj/item/clothing/head/helmet/space/void/merc
corpseback = /obj/item/weapon/tank/jetpack/oxygen
corpsepocket1 = /obj/item/weapon/tank/emergency/oxygen
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = "Syndicate"
///////////Civilians//////////////////////
/obj/effect/landmark/corpse/random_civ
name = "Civilian"
corpseuniform = /obj/item/clothing/under/color/grey
corpseshoes = /obj/item/clothing/shoes/black
random_species = TRUE
/obj/effect/landmark/corpse/chef
name = "Chef"
corpseuniform = /obj/item/clothing/under/rank/chef
corpsesuit = /obj/item/clothing/suit/chef/classic
corpseshoes = /obj/item/clothing/shoes/black
corpsehelmet = /obj/item/clothing/head/chefhat
corpseback = /obj/item/weapon/storage/backpack
corpseradio = /obj/item/device/radio/headset
corpseid = 1
corpseidjob = "Chef"
corpseidaccess = "Chef"
/obj/effect/landmark/corpse/doctor
name = "Doctor"
corpseradio = /obj/item/device/radio/headset/headset_med
corpseuniform = /obj/item/clothing/under/rank/medical
corpsesuit = /obj/item/clothing/suit/storage/toggle/labcoat
corpseback = /obj/item/weapon/storage/backpack/medic
corpsepocket1 = /obj/item/device/flashlight/pen
corpseshoes = /obj/item/clothing/shoes/black
corpseid = 1
corpseidjob = "Medical Doctor"
corpseidaccess = "Medical Doctor"
/obj/effect/landmark/corpse/engineer
name = "Engineer"
corpseradio = /obj/item/device/radio/headset/headset_eng
corpseuniform = /obj/item/clothing/under/rank/engineer
corpseback = /obj/item/weapon/storage/backpack/industrial
corpseshoes = /obj/item/clothing/shoes/orange
corpsebelt = /obj/item/weapon/storage/belt/utility/full
corpsegloves = /obj/item/clothing/gloves/yellow
corpsehelmet = /obj/item/clothing/head/hardhat
corpseid = 1
corpseidjob = "Engineer"
corpseidaccess = "Engineer"
/obj/effect/landmark/corpse/engineer/rig
corpsesuit = /obj/item/clothing/suit/space/void/engineering
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/void/engineering
corpseback = /obj/item/weapon/tank/oxygen
/obj/effect/landmark/corpse/clown
name = "Clown"
corpseuniform = /obj/item/clothing/under/rank/clown
corpseshoes = /obj/item/clothing/shoes/clown_shoes
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas/clown_hat
corpsepocket1 = /obj/item/weapon/bikehorn
corpseback = /obj/item/weapon/storage/backpack/clown
corpseid = 1
corpseidjob = "Clown"
corpseidaccess = "Clown"
/obj/effect/landmark/corpse/scientist
name = "Scientist"
corpseradio = /obj/item/device/radio/headset/headset_sci
corpseuniform = /obj/item/clothing/under/rank/scientist
corpsesuit = /obj/item/clothing/suit/storage/toggle/labcoat/science
corpseback = /obj/item/weapon/storage/backpack
corpseshoes = /obj/item/clothing/shoes/white
corpseid = 1
corpseidjob = "Scientist"
corpseidaccess = "Scientist"
/obj/effect/landmark/corpse/security
name = "Security Officer"
corpseradio = /obj/item/device/radio/headset/headset_sec
corpseuniform = /obj/item/clothing/under/rank/security
corpsesuit = /obj/item/clothing/suit/armor/vest
corpseback = /obj/item/weapon/storage/backpack/security
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsegloves = /obj/item/clothing/gloves/black
corpsehelmet = /obj/item/clothing/head/helmet
corpseid = 1
corpseidjob = "Security Officer"
corpseidaccess = "Security Officer"
/obj/effect/landmark/corpse/security/rig
corpsesuit = /obj/item/clothing/suit/space/void/security
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security
corpseback = /obj/item/weapon/tank/jetpack/oxygen
/obj/effect/landmark/corpse/security/rig/eva
corpsesuit = /obj/item/clothing/suit/space/void/security/alt
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security/alt
corpseidjob = "Starship Security Officer"
/obj/effect/landmark/corpse/prisoner
name = "Unknown Prisoner"
corpseuniform = /obj/item/clothing/under/color/prison
corpseshoes = /obj/item/clothing/shoes/orange
corpseid = 1
corpseidjob = "Prisoner"
random_species = TRUE
/obj/effect/landmark/corpse/miner
corpseradio = /obj/item/device/radio/headset/headset_cargo
corpseuniform = /obj/item/clothing/under/rank/miner
corpsegloves = /obj/item/clothing/gloves/black
corpseback = /obj/item/weapon/storage/backpack/industrial
corpseshoes = /obj/item/clothing/shoes/black
corpseid = 1
corpseidjob = "Shaft Miner"
corpseidaccess = "Shaft Miner"
/obj/effect/landmark/corpse/miner/rig
corpsesuit = /obj/item/clothing/suit/space/void/mining
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/void/mining
corpseback = /obj/item/weapon/tank/oxygen
/////////////////Vintage//////////////////////
//define the basic props at this level and only change specifics for variants, e.z.
/obj/effect/landmark/corpse/vintage
name = "Unknown Crewmate"
corpseuniform = /obj/item/clothing/under/utility
corpsesuit = /obj/item/clothing/suit/space/void/refurb
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb
corpsemask = /obj/item/clothing/mask/breath
corpseback = /obj/item/weapon/tank/oxygen
corpseid = 1
corpseidjob = "Crewmate"
/obj/effect/landmark/corpse/vintage/engineering
name = "Unknown Engineer"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/engineering
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/engineering
corpsebelt = /obj/item/weapon/storage/belt/utility/full
corpseback = /obj/item/weapon/tank/oxygen/yellow
corpseidjob = "Engineer"
/obj/effect/landmark/corpse/vintage/marine
name = "Unknown Marine"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/marine
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/marine
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseidjob = "Marine"
/obj/effect/landmark/corpse/vintage/medical
name = "Unknown Medic"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/medical
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/medical
corpsebelt = /obj/item/weapon/storage/belt/medical
corpseidjob = "Medic"
/obj/effect/landmark/corpse/vintage/mercenary
name = "Unknown Mercenary"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/mercenary
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/mercenary
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseback = /obj/item/weapon/tank/oxygen/red
corpseidjob = "Mercenary"
/obj/effect/landmark/corpse/vintage/officer
name = "Unknown Captain"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/officer
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/officer
corpseback = /obj/item/weapon/tank/oxygen/yellow
corpseidjob = "Captain"
/obj/effect/landmark/corpse/vintage/pilot
name = "Unknown Pilot"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/pilot
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/pilot
corpseidjob = "Pilot"
/obj/effect/landmark/corpse/vintage/research
name = "Unknown Researcher"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/research
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/research
corpseidjob = "Researcher"
/////////////////Officers//////////////////////
/obj/effect/landmark/corpse/bridgeofficer
name = "Bridge Officer"
corpseradio = /obj/item/device/radio/headset/heads/hop
corpseuniform = /obj/item/clothing/under/rank/centcom_officer
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
corpseshoes = /obj/item/clothing/shoes/black
corpseglasses = /obj/item/clothing/glasses/sunglasses
corpseid = 1
corpseidjob = "Bridge Officer"
corpseidaccess = "Captain"
/obj/effect/landmark/corpse/commander
name = "Commander"
corpseuniform = /obj/item/clothing/under/rank/centcom_captain
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
corpseradio = /obj/item/device/radio/headset/heads/captain
corpseglasses = /obj/item/clothing/glasses/eyepatch
corpsemask = /obj/item/clothing/mask/smokable/cigarette/cigar/cohiba
corpsehelmet = /obj/item/clothing/head/centhat
corpsegloves = /obj/item/clothing/gloves/swat
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsepocket1 = /obj/item/weapon/flame/lighter/zippo
corpseid = 1
corpseidjob = "Commander"
corpseidaccess = "Captain"
/////////////////Lore Factions//////////////////////
/obj/effect/landmark/corpse/sifguard
name = "Patrolman"
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
corpsesuit = /obj/item/clothing/suit/storage/hooded/wintercoat/solgov
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsemask = /obj/item/clothing/mask/balaclava
corpsehelmet = /obj/item/clothing/head/beret/solgov/sifguard
corpsegloves = /obj/item/clothing/gloves/duty
corpseshoes = /obj/item/clothing/shoes/boots/tactical
corpsepocket1 = /obj/item/clothing/accessory/armor/tag/sifguard
corpseid = 1
corpseidjob = "Sif Defense Force Patrolman"
/obj/effect/landmark/corpse/hedberg
name = "Hedberg-Hammarstrom Mercenary"
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
corpsesuit = /obj/item/clothing/suit/storage/vest/solgov/hedberg
corpsebelt = /obj/item/weapon/storage/belt/security
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsehelmet = /obj/item/clothing/head/beret/corp/hedberg
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
corpseid = 1
corpseidjob = "Hedberg-Hammarstrom Officer"
/obj/effect/landmark/corpse/hedberg/merc
name = "Hedberg-Hammarstrom Mercenary"
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsehelmet = /obj/item/clothing/head/helmet/flexitac
corpsegloves = /obj/item/clothing/gloves/combat
corpseshoes = /obj/item/clothing/shoes/boots/tactical
corpseid = 1
corpseidjob = "Hedberg-Hammarstrom Enforcer"
//These are meant for spawning on maps, namely Away Missions.
//If someone can do this in a neater way, be my guest-Kor
//To do: Allow corpses to appear mangled, bloody, etc. Allow customizing the bodies appearance (they're all bald and white right now).
/obj/effect/landmark/corpse
name = "Unknown"
var/mobname = "Unknown" //Unused now but it'd fuck up maps to remove it now
var/corpseuniform = null //Set this to an object path to have the slot filled with said object on the corpse.
var/corpsesuit = null
var/corpseshoes = null
var/corpsegloves = null
var/corpseradio = null
var/corpseglasses = null
var/corpsemask = null
var/corpsehelmet = null
var/corpsebelt = null
var/corpsepocket1 = null
var/corpsepocket2 = null
var/corpseback = null
var/corpseid = 0 //Just set to 1 if you want them to have an ID
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
var/species = SPECIES_HUMAN //defaults to generic-ass humans
var/random_species = FALSE //flip to TRUE to randomize species from the list below
var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL) //preset list that can be overriden downstream. only includes common humanoids for voidsuit compatibility's sake.
// var/random_appearance = FALSE //TODO: make this work
// var/cause_of_death = null //TODO: set up a cause-of-death system. needs to support both damage types and actual wound types, so a body can have been bitten/stabbed/clawed/shot/burned/lasered/etc. to death
delete_me = TRUE
/obj/effect/landmark/corpse/Initialize()
..()
createCorpse()
return INITIALIZE_HINT_QDEL
/obj/effect/landmark/corpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it.
var/mob/living/carbon/human/M = new /mob/living/carbon/human (src.loc)
M.low_sorting_priority = TRUE
if(random_species)
var/random_pick = pick(random_species_list)
M.set_species(random_pick)
src.species = random_pick
else
M.set_species(species)
//TODO: insert appearance randomization, needs to be species-based
M.real_name = src.name
M.death(1) //Kills the new mob
//TODO: insert cause of death handling/wound simulation here
if(src.corpseuniform)
M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform)
if(src.corpseshoes)
M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes)
if(src.corpsegloves)
M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves)
if(src.corpseradio)
M.equip_to_slot_or_del(new src.corpseradio(M), slot_l_ear)
if(src.corpseglasses)
M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
if(src.corpsemask)
M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask)
if(src.corpsebelt)
M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt)
if(src.corpsepocket1)
M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store)
if(src.corpsepocket2)
M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store)
if(src.corpseback)
M.equip_to_slot_or_del(new src.corpseback(M), slot_back)
if(src.corpseid == 1)
var/obj/item/weapon/card/id/W = new(M)
var/datum/job/jobdatum
for(var/jobtype in typesof(/datum/job))
var/datum/job/J = new jobtype
if(J.title == corpseidaccess)
jobdatum = J
break
if(src.corpseidicon)
W.icon_state = corpseidicon
if(src.corpseidaccess)
if(jobdatum)
W.access = jobdatum.get_access()
else
W.access = list()
if(corpseidjob)
W.assignment = corpseidjob
M.set_id_info(W)
M.equip_to_slot_or_del(W, slot_wear_id)
// Do suit last to avoid equipping issues
if(src.corpsehelmet)
M.equip_voidhelm_to_slot_or_del_with_refit(new src.corpsehelmet(M), slot_head, src.species)
if(src.corpsesuit)
M.equip_voidsuit_to_slot_or_del_with_refit(new src.corpsesuit(M), slot_wear_suit, src.species)
// I'll work on making a list of corpses people request for maps, or that I think will be commonly used. Syndicate operatives for example.
/obj/effect/landmark/corpse/syndicatesoldier
name = "Mercenary"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/armor/vest
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas
corpsehelmet = /obj/item/clothing/head/helmet/swat
corpseback = /obj/item/weapon/storage/backpack
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = "Syndicate"
/obj/effect/landmark/corpse/syndicatecommando
name = "Mercenary Commando"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/space/void/merc
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas/syndicate
corpsehelmet = /obj/item/clothing/head/helmet/space/void/merc
corpseback = /obj/item/weapon/tank/jetpack/oxygen
corpsepocket1 = /obj/item/weapon/tank/emergency/oxygen
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = "Syndicate"
///////////Civilians//////////////////////
/obj/effect/landmark/corpse/random_civ
name = "Civilian"
corpseuniform = /obj/item/clothing/under/color/grey
corpseshoes = /obj/item/clothing/shoes/black
random_species = TRUE
/obj/effect/landmark/corpse/chef
name = "Chef"
corpseuniform = /obj/item/clothing/under/rank/chef
corpsesuit = /obj/item/clothing/suit/chef/classic
corpseshoes = /obj/item/clothing/shoes/black
corpsehelmet = /obj/item/clothing/head/chefhat
corpseback = /obj/item/weapon/storage/backpack
corpseradio = /obj/item/device/radio/headset
corpseid = 1
corpseidjob = "Chef"
corpseidaccess = "Chef"
/obj/effect/landmark/corpse/doctor
name = "Doctor"
corpseradio = /obj/item/device/radio/headset/headset_med
corpseuniform = /obj/item/clothing/under/rank/medical
corpsesuit = /obj/item/clothing/suit/storage/toggle/labcoat
corpseback = /obj/item/weapon/storage/backpack/medic
corpsepocket1 = /obj/item/device/flashlight/pen
corpseshoes = /obj/item/clothing/shoes/black
corpseid = 1
corpseidjob = "Medical Doctor"
corpseidaccess = "Medical Doctor"
/obj/effect/landmark/corpse/engineer
name = "Engineer"
corpseradio = /obj/item/device/radio/headset/headset_eng
corpseuniform = /obj/item/clothing/under/rank/engineer
corpseback = /obj/item/weapon/storage/backpack/industrial
corpseshoes = /obj/item/clothing/shoes/orange
corpsebelt = /obj/item/weapon/storage/belt/utility/full
corpsegloves = /obj/item/clothing/gloves/yellow
corpsehelmet = /obj/item/clothing/head/hardhat
corpseid = 1
corpseidjob = "Engineer"
corpseidaccess = "Engineer"
/obj/effect/landmark/corpse/engineer/rig
corpsesuit = /obj/item/clothing/suit/space/void/engineering
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/void/engineering
corpseback = /obj/item/weapon/tank/oxygen
/obj/effect/landmark/corpse/clown
name = "Clown"
corpseuniform = /obj/item/clothing/under/rank/clown
corpseshoes = /obj/item/clothing/shoes/clown_shoes
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas/clown_hat
corpsepocket1 = /obj/item/weapon/bikehorn
corpseback = /obj/item/weapon/storage/backpack/clown
corpseid = 1
corpseidjob = "Clown"
corpseidaccess = "Clown"
/obj/effect/landmark/corpse/scientist
name = "Scientist"
corpseradio = /obj/item/device/radio/headset/headset_sci
corpseuniform = /obj/item/clothing/under/rank/scientist
corpsesuit = /obj/item/clothing/suit/storage/toggle/labcoat/science
corpseback = /obj/item/weapon/storage/backpack
corpseshoes = /obj/item/clothing/shoes/white
corpseid = 1
corpseidjob = "Scientist"
corpseidaccess = "Scientist"
/obj/effect/landmark/corpse/security
name = "Security Officer"
corpseradio = /obj/item/device/radio/headset/headset_sec
corpseuniform = /obj/item/clothing/under/rank/security
corpsesuit = /obj/item/clothing/suit/armor/vest
corpseback = /obj/item/weapon/storage/backpack/security
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsegloves = /obj/item/clothing/gloves/black
corpsehelmet = /obj/item/clothing/head/helmet
corpseid = 1
corpseidjob = "Security Officer"
corpseidaccess = "Security Officer"
/obj/effect/landmark/corpse/security/rig
corpsesuit = /obj/item/clothing/suit/space/void/security
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security
corpseback = /obj/item/weapon/tank/jetpack/oxygen
/obj/effect/landmark/corpse/security/rig/eva
corpsesuit = /obj/item/clothing/suit/space/void/security/alt
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security/alt
corpseidjob = "Starship Security Officer"
/obj/effect/landmark/corpse/prisoner
name = "Unknown Prisoner"
corpseuniform = /obj/item/clothing/under/color/prison
corpseshoes = /obj/item/clothing/shoes/orange
corpseid = 1
corpseidjob = "Prisoner"
random_species = TRUE
/obj/effect/landmark/corpse/miner
corpseradio = /obj/item/device/radio/headset/headset_cargo
corpseuniform = /obj/item/clothing/under/rank/miner
corpsegloves = /obj/item/clothing/gloves/black
corpseback = /obj/item/weapon/storage/backpack/industrial
corpseshoes = /obj/item/clothing/shoes/black
corpseid = 1
corpseidjob = "Shaft Miner"
corpseidaccess = "Shaft Miner"
/obj/effect/landmark/corpse/miner/rig
corpsesuit = /obj/item/clothing/suit/space/void/mining
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/void/mining
corpseback = /obj/item/weapon/tank/oxygen
/////////////////Vintage//////////////////////
//define the basic props at this level and only change specifics for variants, e.z.
/obj/effect/landmark/corpse/vintage
name = "Unknown Crewmate"
corpseuniform = /obj/item/clothing/under/utility
corpsesuit = /obj/item/clothing/suit/space/void/refurb
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb
corpsemask = /obj/item/clothing/mask/breath
corpseback = /obj/item/weapon/tank/oxygen
corpseid = 1
corpseidjob = "Crewmate"
/obj/effect/landmark/corpse/vintage/engineering
name = "Unknown Engineer"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/engineering
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/engineering
corpsebelt = /obj/item/weapon/storage/belt/utility/full
corpseback = /obj/item/weapon/tank/oxygen/yellow
corpseidjob = "Engineer"
/obj/effect/landmark/corpse/vintage/marine
name = "Unknown Marine"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/marine
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/marine
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseidjob = "Marine"
/obj/effect/landmark/corpse/vintage/medical
name = "Unknown Medic"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/medical
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/medical
corpsebelt = /obj/item/weapon/storage/belt/medical
corpseidjob = "Medic"
/obj/effect/landmark/corpse/vintage/mercenary
name = "Unknown Mercenary"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/mercenary
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/mercenary
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseback = /obj/item/weapon/tank/oxygen/red
corpseidjob = "Mercenary"
/obj/effect/landmark/corpse/vintage/officer
name = "Unknown Captain"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/officer
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/officer
corpseback = /obj/item/weapon/tank/oxygen/yellow
corpseidjob = "Captain"
/obj/effect/landmark/corpse/vintage/pilot
name = "Unknown Pilot"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/pilot
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/pilot
corpseidjob = "Pilot"
/obj/effect/landmark/corpse/vintage/research
name = "Unknown Researcher"
corpsesuit = /obj/item/clothing/suit/space/void/refurb/research
corpsehelmet = /obj/item/clothing/head/helmet/space/void/refurb/research
corpseidjob = "Researcher"
/////////////////Officers//////////////////////
/obj/effect/landmark/corpse/bridgeofficer
name = "Bridge Officer"
corpseradio = /obj/item/device/radio/headset/heads/hop
corpseuniform = /obj/item/clothing/under/rank/centcom_officer
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
corpseshoes = /obj/item/clothing/shoes/black
corpseglasses = /obj/item/clothing/glasses/sunglasses
corpseid = 1
corpseidjob = "Bridge Officer"
corpseidaccess = "Captain"
/obj/effect/landmark/corpse/commander
name = "Commander"
corpseuniform = /obj/item/clothing/under/rank/centcom_captain
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
corpseradio = /obj/item/device/radio/headset/heads/captain
corpseglasses = /obj/item/clothing/glasses/eyepatch
corpsemask = /obj/item/clothing/mask/smokable/cigarette/cigar/cohiba
corpsehelmet = /obj/item/clothing/head/centhat
corpsegloves = /obj/item/clothing/gloves/swat
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsepocket1 = /obj/item/weapon/flame/lighter/zippo
corpseid = 1
corpseidjob = "Commander"
corpseidaccess = "Captain"
/////////////////Lore Factions//////////////////////
/obj/effect/landmark/corpse/sifguard
name = "Patrolman"
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
corpsesuit = /obj/item/clothing/suit/storage/hooded/wintercoat/solgov
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsemask = /obj/item/clothing/mask/balaclava
corpsehelmet = /obj/item/clothing/head/beret/solgov/sifguard
corpsegloves = /obj/item/clothing/gloves/duty
corpseshoes = /obj/item/clothing/shoes/boots/tactical
corpsepocket1 = /obj/item/clothing/accessory/armor/tag/sifguard
corpseid = 1
corpseidjob = "Sif Defense Force Patrolman"
/obj/effect/landmark/corpse/hedberg
name = "Hedberg-Hammarstrom Mercenary"
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
corpsesuit = /obj/item/clothing/suit/storage/vest/solgov/hedberg
corpsebelt = /obj/item/weapon/storage/belt/security
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsehelmet = /obj/item/clothing/head/beret/corp/hedberg
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
corpseid = 1
corpseidjob = "Hedberg-Hammarstrom Officer"
/obj/effect/landmark/corpse/hedberg/merc
name = "Hedberg-Hammarstrom Mercenary"
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsehelmet = /obj/item/clothing/head/helmet/flexitac
corpsegloves = /obj/item/clothing/gloves/combat
corpseshoes = /obj/item/clothing/shoes/boots/tactical
corpseid = 1
corpseidjob = "Hedberg-Hammarstrom Enforcer"
+41 -41
View File
@@ -1,41 +1,41 @@
//////Exile implants will allow you to use the station gate, but not return home. This will allow security to exile badguys/for badguys to exile their kill targets////////
/obj/item/weapon/implanter/exile
name = "implanter-exile"
/obj/item/weapon/implanter/exile/New()
src.imp = new /obj/item/weapon/implant/exile( src )
..()
update()
return
/obj/item/weapon/implant/exile
name = "exile"
desc = "Prevents you from returning from away missions"
/obj/item/weapon/implant/exile/get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> [using_map.company_name] Employee Exile Implant<BR>
<b>Implant Details:</b> The onboard gateway system has been modified to reject entry by individuals containing this implant<BR>"}
return dat
/obj/item/weapon/implantcase/exile
name = "Glass Case- 'Exile'"
desc = "A case containing an exile implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/exile/New()
src.imp = new /obj/item/weapon/implant/exile( src )
..()
return
/obj/structure/closet/secure_closet/exile
name = "Exile Implants"
req_access = list(access_hos)
starts_with = list(/obj/item/weapon/implanter/exile = 1, /obj/item/weapon/implantcase/exile = 5)
//////Exile implants will allow you to use the station gate, but not return home. This will allow security to exile badguys/for badguys to exile their kill targets////////
/obj/item/weapon/implanter/exile
name = "implanter-exile"
/obj/item/weapon/implanter/exile/New()
src.imp = new /obj/item/weapon/implant/exile( src )
..()
update()
return
/obj/item/weapon/implant/exile
name = "exile"
desc = "Prevents you from returning from away missions"
/obj/item/weapon/implant/exile/get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> [using_map.company_name] Employee Exile Implant<BR>
<b>Implant Details:</b> The onboard gateway system has been modified to reject entry by individuals containing this implant<BR>"}
return dat
/obj/item/weapon/implantcase/exile
name = "Glass Case- 'Exile'"
desc = "A case containing an exile implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/exile/New()
src.imp = new /obj/item/weapon/implant/exile( src )
..()
return
/obj/structure/closet/secure_closet/exile
name = "Exile Implants"
req_access = list(access_hos)
starts_with = list(/obj/item/weapon/implanter/exile = 1, /obj/item/weapon/implantcase/exile = 5)
+367 -367
View File
@@ -1,367 +1,367 @@
/obj/machinery/gateway
name = "gateway"
desc = "A mysterious gateway built by unknown hands. It allows for faster than light travel to far-flung locations and even alternate realities." //VOREStation Edit
icon = 'icons/obj/machines/gateway.dmi'
icon_state = "off"
density = TRUE
anchored = TRUE
unacidable = TRUE
var/active = 0
/obj/machinery/gateway/Initialize()
update_icon()
if(dir == SOUTH)
density = FALSE
. = ..()
/obj/machinery/gateway/update_icon()
if(active)
icon_state = "on"
return
icon_state = "off"
//this is da important part wot makes things go
GLOBAL_DATUM(gateway_station, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway/centerstation
density = TRUE
icon_state = "offcenter"
use_power = USE_POWER_IDLE
//warping vars
var/list/linked = list()
var/ready = 0 //have we got all the parts for a gateway?
var/wait = 0 //this just grabs world.time at world start
var/obj/machinery/gateway/centeraway/awaygate = null
/obj/machinery/gateway/centerstation/Initialize()
if(GLOB.gateway_station)
warning("[src] at [x],[y],[z] appears to be an additional station-gateway")
else
GLOB.gateway_station = src
update_icon()
wait = world.time + config.gateway_delay //+ thirty minutes default
if(GLOB.gateway_away)
awaygate = GLOB.gateway_away
else
awaygate = locate(/obj/machinery/gateway/centeraway)
. = ..()
density = TRUE //VOREStation Add
/obj/machinery/gateway/centerstation/Destroy()
if(awaygate?.stationgate == src)
awaygate.stationgate = null
if(GLOB.gateway_station == src)
GLOB.gateway_station = null
return ..()
/obj/machinery/gateway/centerstation/update_icon()
if(active)
icon_state = "oncenter"
return
icon_state = "offcenter"
/* VOREStation Removal - Doesn't do anything
/obj/machinery/gateway/centerstation/New()
density = TRUE
*/ //VOREStation Removal End
/obj/machinery/gateway/centerstation/process()
if(stat & (NOPOWER))
if(active) toggleoff()
return
if(active)
use_power(5000)
/obj/machinery/gateway/centerstation/proc/detect()
linked = list() //clear the list
var/turf/T = loc
for(var/i in alldirs)
T = get_step(loc, i)
var/obj/machinery/gateway/G = locate(/obj/machinery/gateway) in T
if(G)
linked.Add(G)
continue
//this is only done if we fail to find a part
ready = 0
toggleoff()
break
if(linked.len == 8)
ready = 1
/obj/machinery/gateway/centerstation/proc/toggleon(mob/user as mob)
if(!ready) return
if(linked.len != 8) return
if(!powered()) return
if(!awaygate)
to_chat(user, "<span class='notice'>Error: No destination found. Please program gateway.</span>")
return
if(world.time < wait)
to_chat(user, "<span class='notice'>Error: Warpspace triangulation in progress. Estimated time to completion: [round(((wait - world.time) / 10) / 60)] minutes.</span>")
return
if(!awaygate.calibrated && !LAZYLEN(awaydestinations)) //VOREStation Edit
to_chat(user, "<span class='notice'>Error: Destination gate uncalibrated. Gateway unsafe to use without far-end calibration update.</span>")
return
for(var/obj/machinery/gateway/G in linked)
G.active = 1
G.update_icon()
active = 1
update_icon()
/obj/machinery/gateway/centerstation/proc/toggleoff()
for(var/obj/machinery/gateway/G in linked)
G.active = 0
G.update_icon()
active = 0
update_icon()
/obj/machinery/gateway/centerstation/attack_hand(mob/user as mob)
if(!ready)
detect()
return
if(!active)
toggleon(user)
return
toggleoff()
//okay, here's the good teleporting stuff
/obj/machinery/gateway/centerstation/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
if(!awaygate) return
use_power(5000)
M << 'sound/effects/phasein.ogg'
playsound(src, 'sound/effects/phasein.ogg', 100, 1)
if(awaygate.calibrated)
M.forceMove(get_step(awaygate.loc, SOUTH))
M.set_dir(SOUTH)
return
else
//VOREStation Addition Start: Prevent abuse
if(istype(M, /obj/item/device/uav))
var/obj/item/device/uav/L = M
L.power_down()
if(istype(M, /mob/living))
var/mob/living/L = M
if(LAZYLEN(L.buckled_mobs))
var/datum/riding/R = L.riding_datum
for(var/rider in L.buckled_mobs)
R.force_dismount(rider)
//VOREStation Addition End: Prevent abuse
var/obj/effect/landmark/dest = pick(awaydestinations)
if(dest)
M.forceMove(dest.loc)
M.set_dir(SOUTH)
//VOREStation Addition Start: Mcguffin time!
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.client)
awaygate.entrydetect()
//VOREStation Addition End: Mcguffin time!
//VOREStation Addition Start: Abduction!
if(istype(M, /mob/living) && dest.abductor)
var/mob/living/L = M
if(L.nutrition > 500)
L.nutrition = 500 //If the aim is to negate people overpreparing, then they shouldn't be able to stuff themselves full of food either.
//Situations to get the mob out of
if(L.buckled)
L.buckled.unbuckle_mob()
if(istype(L.loc,/obj/mecha))
var/obj/mecha/ME = L.loc
ME.go_out()
else if(istype(L.loc,/obj/machinery/sleeper))
var/obj/machinery/sleeper/SL = L.loc
SL.go_out()
else if(istype(L.loc,/obj/machinery/recharge_station))
var/obj/machinery/recharge_station/RS = L.loc
RS.go_out()
if(!issilicon(L)) //Don't drop borg modules...
var/list/mob_contents = list() //Things which are actually drained as a result of the above not being null.
mob_contents |= L // The recursive check below does not add the object being checked to its list.
mob_contents |= recursive_content_check(L, mob_contents, recursion_limit = 3, client_check = 0, sight_check = 0, include_mobs = 1, include_objects = 1, ignore_show_messages = 1)
for(var/obj/item/weapon/holder/I in mob_contents)
var/obj/item/weapon/holder/H = I
var/mob/living/MI = H.held_mob
MI.forceMove(get_turf(H))
if(!issilicon(MI)) //Don't drop borg modules...
for(var/obj/item/II in MI)
if(istype(II,/obj/item/weapon/implant) || istype(II,/obj/item/device/nif))
continue
MI.drop_from_inventory(II, dest.loc)
var/obj/effect/landmark/finaldest = pick(awayabductors)
MI.forceMove(finaldest.loc)
sleep(1)
MI.Paralyse(10)
MI << 'sound/effects/bamf.ogg'
to_chat(MI,"<span class='warning'>You're starting to come to. You feel like you've been out for a few minutes, at least...</span>")
for(var/obj/item/I in L)
if(istype(I,/obj/item/weapon/implant) || istype(I,/obj/item/device/nif))
continue
L.drop_from_inventory(I, dest.loc)
var/obj/effect/landmark/finaldest = pick(awayabductors)
L.forceMove(finaldest.loc)
sleep(1)
L.Paralyse(10)
L << 'sound/effects/bamf.ogg'
to_chat(L,"<span class='warning'>You're starting to come to. You feel like you've been out for a few minutes, at least...</span>")
//VOREStation Addition End
return
/obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/multitool))
if(!awaygate)
if(GLOB.gateway_away)
awaygate = GLOB.gateway_away
else
awaygate = locate(/obj/machinery/gateway/centeraway)
if(!awaygate) // We still can't find the damn thing because there is no destination.
to_chat(user, "<span class='notice'>Error: Programming failed. No destination found.</span>")
return
to_chat(user, "<span class='notice'><b>Startup programming successful!</b></span>: A destination in another point of space and time has been detected.")
else
to_chat(user, span_black("The gate is already calibrated, there is no work for you to do here."))
return
/////////////////////////////////////Away////////////////////////
GLOBAL_DATUM(gateway_away, /obj/machinery/gateway/centeraway)
/obj/machinery/gateway/centeraway
density = TRUE
icon_state = "offcenter"
use_power = USE_POWER_OFF
var/calibrated = 1
var/list/linked = list() //a list of the connected gateway chunks
var/ready = 0
var/obj/machinery/gateway/centerstation/stationgate = null
/obj/machinery/gateway/centeraway/New()
density = TRUE
/obj/machinery/gateway/centeraway/Initialize()
if(GLOB.gateway_away)
warning("[src] at [x],[y],[z] appears to be an additional away-gateway")
else
GLOB.gateway_away = src
update_icon()
if(GLOB.gateway_station)
stationgate = GLOB.gateway_station
else
stationgate = locate(/obj/machinery/gateway/centerstation)
. = ..()
density = TRUE //VOREStation Add
/obj/machinery/gateway/centeraway/Destroy()
if(stationgate?.awaygate == src)
stationgate.awaygate = null
if(GLOB.gateway_away == src)
GLOB.gateway_away = null
return ..()
/obj/machinery/gateway/centeraway/update_icon()
if(active)
icon_state = "oncenter"
return
icon_state = "offcenter"
/obj/machinery/gateway/centeraway/proc/detect()
linked = list() //clear the list
var/turf/T = loc
for(var/i in alldirs)
T = get_step(loc, i)
var/obj/machinery/gateway/G = locate(/obj/machinery/gateway) in T
if(G)
linked.Add(G)
continue
//this is only done if we fail to find a part
ready = 0
toggleoff()
break
if(linked.len == 8)
ready = 1
/obj/machinery/gateway/centeraway/proc/toggleon(mob/user as mob)
if(!ready) return
if(linked.len != 8) return
if(!stationgate || !calibrated) // Vorestation edit. Not like Polaris ever touches this anyway.
to_chat(user, "<span class='notice'>Error: No destination found. Please calibrate gateway.</span>")
return
for(var/obj/machinery/gateway/G in linked)
G.active = 1
G.update_icon()
active = 1
update_icon()
/obj/machinery/gateway/centeraway/proc/toggleoff()
for(var/obj/machinery/gateway/G in linked)
G.active = 0
G.update_icon()
active = 0
update_icon()
/obj/machinery/gateway/centeraway/attack_hand(mob/user as mob)
if(!ready)
detect()
return
if(!active)
toggleon(user)
return
toggleoff()
/obj/machinery/gateway/centeraway/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
if(istype(M, /mob/living/carbon))
for(var/obj/item/weapon/implant/exile/E in M)//Checking that there is an exile implant in the contents
if(E.imp_in == M)//Checking that it's actually implanted vs just in their pocket
to_chat(M, span_black("The station gate has detected your exile implant and is blocking your entry."))
return
M.forceMove(get_step(stationgate.loc, SOUTH))
M.set_dir(SOUTH)
M << 'sound/effects/phasein.ogg'
playsound(src, 'sound/effects/phasein.ogg', 100, 1)
/obj/machinery/gateway/centeraway/attackby(obj/item/device/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/multitool))
if(calibrated && stationgate)
to_chat(user, span_black("The gate is already calibrated, there is no work for you to do here."))
return
else
// VOREStation Add
if(GLOB.gateway_station)
stationgate = GLOB.gateway_station
else
stationgate = locate(/obj/machinery/gateway/centerstation)
if(!stationgate)
to_chat(user, "<span class='notice'>Error: Recalibration failed. No destination found... That can't be good.</span>")
return
// VOREStation Add End
else
to_chat(user, span_blue("<b>Recalibration successful!</b>:") + span_black(" This gate's systems have been fine tuned. Travel to this gate will now be on target."))
calibrated = 1
return
/obj/machinery/gateway
name = "gateway"
desc = "A mysterious gateway built by unknown hands. It allows for faster than light travel to far-flung locations and even alternate realities." //VOREStation Edit
icon = 'icons/obj/machines/gateway.dmi'
icon_state = "off"
density = TRUE
anchored = TRUE
unacidable = TRUE
var/active = 0
/obj/machinery/gateway/Initialize()
update_icon()
if(dir == SOUTH)
density = FALSE
. = ..()
/obj/machinery/gateway/update_icon()
if(active)
icon_state = "on"
return
icon_state = "off"
//this is da important part wot makes things go
GLOBAL_DATUM(gateway_station, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway/centerstation
density = TRUE
icon_state = "offcenter"
use_power = USE_POWER_IDLE
//warping vars
var/list/linked = list()
var/ready = 0 //have we got all the parts for a gateway?
var/wait = 0 //this just grabs world.time at world start
var/obj/machinery/gateway/centeraway/awaygate = null
/obj/machinery/gateway/centerstation/Initialize()
if(GLOB.gateway_station)
warning("[src] at [x],[y],[z] appears to be an additional station-gateway")
else
GLOB.gateway_station = src
update_icon()
wait = world.time + config.gateway_delay //+ thirty minutes default
if(GLOB.gateway_away)
awaygate = GLOB.gateway_away
else
awaygate = locate(/obj/machinery/gateway/centeraway)
. = ..()
density = TRUE //VOREStation Add
/obj/machinery/gateway/centerstation/Destroy()
if(awaygate?.stationgate == src)
awaygate.stationgate = null
if(GLOB.gateway_station == src)
GLOB.gateway_station = null
return ..()
/obj/machinery/gateway/centerstation/update_icon()
if(active)
icon_state = "oncenter"
return
icon_state = "offcenter"
/* VOREStation Removal - Doesn't do anything
/obj/machinery/gateway/centerstation/New()
density = TRUE
*/ //VOREStation Removal End
/obj/machinery/gateway/centerstation/process()
if(stat & (NOPOWER))
if(active) toggleoff()
return
if(active)
use_power(5000)
/obj/machinery/gateway/centerstation/proc/detect()
linked = list() //clear the list
var/turf/T = loc
for(var/i in alldirs)
T = get_step(loc, i)
var/obj/machinery/gateway/G = locate(/obj/machinery/gateway) in T
if(G)
linked.Add(G)
continue
//this is only done if we fail to find a part
ready = 0
toggleoff()
break
if(linked.len == 8)
ready = 1
/obj/machinery/gateway/centerstation/proc/toggleon(mob/user as mob)
if(!ready) return
if(linked.len != 8) return
if(!powered()) return
if(!awaygate)
to_chat(user, "<span class='notice'>Error: No destination found. Please program gateway.</span>")
return
if(world.time < wait)
to_chat(user, "<span class='notice'>Error: Warpspace triangulation in progress. Estimated time to completion: [round(((wait - world.time) / 10) / 60)] minutes.</span>")
return
if(!awaygate.calibrated && !LAZYLEN(awaydestinations)) //VOREStation Edit
to_chat(user, "<span class='notice'>Error: Destination gate uncalibrated. Gateway unsafe to use without far-end calibration update.</span>")
return
for(var/obj/machinery/gateway/G in linked)
G.active = 1
G.update_icon()
active = 1
update_icon()
/obj/machinery/gateway/centerstation/proc/toggleoff()
for(var/obj/machinery/gateway/G in linked)
G.active = 0
G.update_icon()
active = 0
update_icon()
/obj/machinery/gateway/centerstation/attack_hand(mob/user as mob)
if(!ready)
detect()
return
if(!active)
toggleon(user)
return
toggleoff()
//okay, here's the good teleporting stuff
/obj/machinery/gateway/centerstation/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
if(!awaygate) return
use_power(5000)
M << 'sound/effects/phasein.ogg'
playsound(src, 'sound/effects/phasein.ogg', 100, 1)
if(awaygate.calibrated)
M.forceMove(get_step(awaygate.loc, SOUTH))
M.set_dir(SOUTH)
return
else
//VOREStation Addition Start: Prevent abuse
if(istype(M, /obj/item/device/uav))
var/obj/item/device/uav/L = M
L.power_down()
if(istype(M, /mob/living))
var/mob/living/L = M
if(LAZYLEN(L.buckled_mobs))
var/datum/riding/R = L.riding_datum
for(var/rider in L.buckled_mobs)
R.force_dismount(rider)
//VOREStation Addition End: Prevent abuse
var/obj/effect/landmark/dest = pick(awaydestinations)
if(dest)
M.forceMove(dest.loc)
M.set_dir(SOUTH)
//VOREStation Addition Start: Mcguffin time!
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.client)
awaygate.entrydetect()
//VOREStation Addition End: Mcguffin time!
//VOREStation Addition Start: Abduction!
if(istype(M, /mob/living) && dest.abductor)
var/mob/living/L = M
if(L.nutrition > 500)
L.nutrition = 500 //If the aim is to negate people overpreparing, then they shouldn't be able to stuff themselves full of food either.
//Situations to get the mob out of
if(L.buckled)
L.buckled.unbuckle_mob()
if(istype(L.loc,/obj/mecha))
var/obj/mecha/ME = L.loc
ME.go_out()
else if(istype(L.loc,/obj/machinery/sleeper))
var/obj/machinery/sleeper/SL = L.loc
SL.go_out()
else if(istype(L.loc,/obj/machinery/recharge_station))
var/obj/machinery/recharge_station/RS = L.loc
RS.go_out()
if(!issilicon(L)) //Don't drop borg modules...
var/list/mob_contents = list() //Things which are actually drained as a result of the above not being null.
mob_contents |= L // The recursive check below does not add the object being checked to its list.
mob_contents |= recursive_content_check(L, mob_contents, recursion_limit = 3, client_check = 0, sight_check = 0, include_mobs = 1, include_objects = 1, ignore_show_messages = 1)
for(var/obj/item/weapon/holder/I in mob_contents)
var/obj/item/weapon/holder/H = I
var/mob/living/MI = H.held_mob
MI.forceMove(get_turf(H))
if(!issilicon(MI)) //Don't drop borg modules...
for(var/obj/item/II in MI)
if(istype(II,/obj/item/weapon/implant) || istype(II,/obj/item/device/nif))
continue
MI.drop_from_inventory(II, dest.loc)
var/obj/effect/landmark/finaldest = pick(awayabductors)
MI.forceMove(finaldest.loc)
sleep(1)
MI.Paralyse(10)
MI << 'sound/effects/bamf.ogg'
to_chat(MI,"<span class='warning'>You're starting to come to. You feel like you've been out for a few minutes, at least...</span>")
for(var/obj/item/I in L)
if(istype(I,/obj/item/weapon/implant) || istype(I,/obj/item/device/nif))
continue
L.drop_from_inventory(I, dest.loc)
var/obj/effect/landmark/finaldest = pick(awayabductors)
L.forceMove(finaldest.loc)
sleep(1)
L.Paralyse(10)
L << 'sound/effects/bamf.ogg'
to_chat(L,"<span class='warning'>You're starting to come to. You feel like you've been out for a few minutes, at least...</span>")
//VOREStation Addition End
return
/obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/multitool))
if(!awaygate)
if(GLOB.gateway_away)
awaygate = GLOB.gateway_away
else
awaygate = locate(/obj/machinery/gateway/centeraway)
if(!awaygate) // We still can't find the damn thing because there is no destination.
to_chat(user, "<span class='notice'>Error: Programming failed. No destination found.</span>")
return
to_chat(user, "<span class='notice'><b>Startup programming successful!</b></span>: A destination in another point of space and time has been detected.")
else
to_chat(user, span_black("The gate is already calibrated, there is no work for you to do here."))
return
/////////////////////////////////////Away////////////////////////
GLOBAL_DATUM(gateway_away, /obj/machinery/gateway/centeraway)
/obj/machinery/gateway/centeraway
density = TRUE
icon_state = "offcenter"
use_power = USE_POWER_OFF
var/calibrated = 1
var/list/linked = list() //a list of the connected gateway chunks
var/ready = 0
var/obj/machinery/gateway/centerstation/stationgate = null
/obj/machinery/gateway/centeraway/New()
density = TRUE
/obj/machinery/gateway/centeraway/Initialize()
if(GLOB.gateway_away)
warning("[src] at [x],[y],[z] appears to be an additional away-gateway")
else
GLOB.gateway_away = src
update_icon()
if(GLOB.gateway_station)
stationgate = GLOB.gateway_station
else
stationgate = locate(/obj/machinery/gateway/centerstation)
. = ..()
density = TRUE //VOREStation Add
/obj/machinery/gateway/centeraway/Destroy()
if(stationgate?.awaygate == src)
stationgate.awaygate = null
if(GLOB.gateway_away == src)
GLOB.gateway_away = null
return ..()
/obj/machinery/gateway/centeraway/update_icon()
if(active)
icon_state = "oncenter"
return
icon_state = "offcenter"
/obj/machinery/gateway/centeraway/proc/detect()
linked = list() //clear the list
var/turf/T = loc
for(var/i in alldirs)
T = get_step(loc, i)
var/obj/machinery/gateway/G = locate(/obj/machinery/gateway) in T
if(G)
linked.Add(G)
continue
//this is only done if we fail to find a part
ready = 0
toggleoff()
break
if(linked.len == 8)
ready = 1
/obj/machinery/gateway/centeraway/proc/toggleon(mob/user as mob)
if(!ready) return
if(linked.len != 8) return
if(!stationgate || !calibrated) // Vorestation edit. Not like Polaris ever touches this anyway.
to_chat(user, "<span class='notice'>Error: No destination found. Please calibrate gateway.</span>")
return
for(var/obj/machinery/gateway/G in linked)
G.active = 1
G.update_icon()
active = 1
update_icon()
/obj/machinery/gateway/centeraway/proc/toggleoff()
for(var/obj/machinery/gateway/G in linked)
G.active = 0
G.update_icon()
active = 0
update_icon()
/obj/machinery/gateway/centeraway/attack_hand(mob/user as mob)
if(!ready)
detect()
return
if(!active)
toggleon(user)
return
toggleoff()
/obj/machinery/gateway/centeraway/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
if(istype(M, /mob/living/carbon))
for(var/obj/item/weapon/implant/exile/E in M)//Checking that there is an exile implant in the contents
if(E.imp_in == M)//Checking that it's actually implanted vs just in their pocket
to_chat(M, span_black("The station gate has detected your exile implant and is blocking your entry."))
return
M.forceMove(get_step(stationgate.loc, SOUTH))
M.set_dir(SOUTH)
M << 'sound/effects/phasein.ogg'
playsound(src, 'sound/effects/phasein.ogg', 100, 1)
/obj/machinery/gateway/centeraway/attackby(obj/item/device/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/multitool))
if(calibrated && stationgate)
to_chat(user, span_black("The gate is already calibrated, there is no work for you to do here."))
return
else
// VOREStation Add
if(GLOB.gateway_station)
stationgate = GLOB.gateway_station
else
stationgate = locate(/obj/machinery/gateway/centerstation)
if(!stationgate)
to_chat(user, "<span class='notice'>Error: Recalibration failed. No destination found... That can't be good.</span>")
return
// VOREStation Add End
else
to_chat(user, span_blue("<b>Recalibration successful!</b>:") + span_black(" This gate's systems have been fine tuned. Travel to this gate will now be on target."))
calibrated = 1
return
+79 -79
View File
@@ -1,79 +1,79 @@
//This gateway type takes a special item that you will have to find on the map to activate, instead of using a multitool//
/obj/machinery/gateway/centeraway/mcguffin
icon = 'icons/obj/machines/gateway_vr.dmi'
calibrated = 0
var/mcguffin_type = /obj/item/device/mcguffin/brass //you should be able to change the var to be whatever kind of path you like, so maybe you can use other things on it sometimes
var/key //holds a ref to the key we spawned
/obj/machinery/gateway/centeraway/mcguffin/attackby(obj/item/device/W as obj, mob/user as mob)
if(calibrated && stationgate)
to_chat(user, "<span class='info'>The gate is already configured, you should be able to activate it.</span>")
return
else if(!stationgate)
to_chat(user, "<span class='danger'>Error: Configuration failed. No destination found... That can't be good.</span>")
return
if(istype(W,mcguffin_type) && !calibrated)
to_chat(user, "<span class='emote'>As the device nears the gateway, mechanical clunks and whirrs can be heard. <br>[span_blue("<b>Configuration successful! </b>")]<br>This gate's systems have been fine tuned. Travel to this gate will now be on target.</span>")
calibrated = 1
return
else
to_chat(user, "<span class='danger'>This device does not seem to interface correctly with the gateway. Perhaps you should try something else.</span>")
return
//If you use this kind of gateway you NEED one of these on the map or the players won't be able to leave//
//You should use the random spawner though so it won't always be in the same place//
/obj/item/device/mcguffin/brass
name = "mysterious brass device"
desc = "A curious object made of what appears to be brass and silver. Its purpose is unclear by looking at it. Perhaps it should be used with something of similar materials?"
icon = 'icons/obj/machines/gateway_vr.dmi'
icon_state = "mcguffin"
drop_sound = 'sound/items/drop/wrench.ogg'
pickup_sound = 'sound/items/pickup/wrench.ogg'
/obj/effect/landmark/mcguffin_spawner
name = "gateway key spawner"
icon = 'icons/mob/randomlandmarks.dmi'
icon_state = "key"
/obj/machinery/gateway/centeraway/proc/entrydetect()
return
/obj/machinery/gateway/centeraway/mcguffin/entrydetect()
if(key)
return
var/list/spawners = list()
for(var/obj/effect/landmark/mcguffin_spawner/sp in world)
spawners += sp
var/obj/effect/landmark/mcguffin_spawner/the_cool_one = pick(spawners)
var/atom/destination = get_turf(the_cool_one)
var/obj/structure/closet/CL = locate() in destination
if(CL)
destination = CL
if(!destination)
warning("A gateway is trying to spawn it's mcguffin but there are no mapped in spawner landmarks")
destination = get_turf(src)
key = new mcguffin_type(destination)
/obj/machinery/gateway/centeraway/mcguffin/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
M.forceMove(get_step(stationgate.loc, SOUTH))
M.set_dir(SOUTH)
M << 'sound/effects/swooshygate.ogg'
playsound(src, 'sound/effects/swooshygate.ogg', 100, 1)
/obj/machinery/gateway/brass
name = "mysterious brass gateway"
desc = "A gateway of strange construction. It appears to be made primarily of materials resembling brass and silver."
icon = 'icons/obj/machines/gateway_vr.dmi'
//No, you can't digest the key to leave the gateway.
/obj/item/device/mcguffin/digest_act(var/atom/movable/item_storage = null)
return FALSE
//This gateway type takes a special item that you will have to find on the map to activate, instead of using a multitool//
/obj/machinery/gateway/centeraway/mcguffin
icon = 'icons/obj/machines/gateway_vr.dmi'
calibrated = 0
var/mcguffin_type = /obj/item/device/mcguffin/brass //you should be able to change the var to be whatever kind of path you like, so maybe you can use other things on it sometimes
var/key //holds a ref to the key we spawned
/obj/machinery/gateway/centeraway/mcguffin/attackby(obj/item/device/W as obj, mob/user as mob)
if(calibrated && stationgate)
to_chat(user, "<span class='info'>The gate is already configured, you should be able to activate it.</span>")
return
else if(!stationgate)
to_chat(user, "<span class='danger'>Error: Configuration failed. No destination found... That can't be good.</span>")
return
if(istype(W,mcguffin_type) && !calibrated)
to_chat(user, "<span class='emote'>As the device nears the gateway, mechanical clunks and whirrs can be heard. <br>[span_blue("<b>Configuration successful! </b>")]<br>This gate's systems have been fine tuned. Travel to this gate will now be on target.</span>")
calibrated = 1
return
else
to_chat(user, "<span class='danger'>This device does not seem to interface correctly with the gateway. Perhaps you should try something else.</span>")
return
//If you use this kind of gateway you NEED one of these on the map or the players won't be able to leave//
//You should use the random spawner though so it won't always be in the same place//
/obj/item/device/mcguffin/brass
name = "mysterious brass device"
desc = "A curious object made of what appears to be brass and silver. Its purpose is unclear by looking at it. Perhaps it should be used with something of similar materials?"
icon = 'icons/obj/machines/gateway_vr.dmi'
icon_state = "mcguffin"
drop_sound = 'sound/items/drop/wrench.ogg'
pickup_sound = 'sound/items/pickup/wrench.ogg'
/obj/effect/landmark/mcguffin_spawner
name = "gateway key spawner"
icon = 'icons/mob/randomlandmarks.dmi'
icon_state = "key"
/obj/machinery/gateway/centeraway/proc/entrydetect()
return
/obj/machinery/gateway/centeraway/mcguffin/entrydetect()
if(key)
return
var/list/spawners = list()
for(var/obj/effect/landmark/mcguffin_spawner/sp in world)
spawners += sp
var/obj/effect/landmark/mcguffin_spawner/the_cool_one = pick(spawners)
var/atom/destination = get_turf(the_cool_one)
var/obj/structure/closet/CL = locate() in destination
if(CL)
destination = CL
if(!destination)
warning("A gateway is trying to spawn it's mcguffin but there are no mapped in spawner landmarks")
destination = get_turf(src)
key = new mcguffin_type(destination)
/obj/machinery/gateway/centeraway/mcguffin/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
M.forceMove(get_step(stationgate.loc, SOUTH))
M.set_dir(SOUTH)
M << 'sound/effects/swooshygate.ogg'
playsound(src, 'sound/effects/swooshygate.ogg', 100, 1)
/obj/machinery/gateway/brass
name = "mysterious brass gateway"
desc = "A gateway of strange construction. It appears to be made primarily of materials resembling brass and silver."
icon = 'icons/obj/machines/gateway_vr.dmi'
//No, you can't digest the key to leave the gateway.
/obj/item/device/mcguffin/digest_act(var/atom/movable/item_storage = null)
return FALSE
+21 -21
View File
@@ -1,21 +1,21 @@
/obj/effect/spawner/lootdrop
icon = 'icons/mob/screen1.dmi'
icon_state = "x2"
var/lootcount = 1 //how many items will be spawned
var/lootdoubles = 0 //if the same item can be spawned twice
var/loot = "" //a list of possible items to spawn- a string of paths
/obj/effect/spawner/lootdrop/Initialize()
..()
var/list/things = params2list(loot)
if(things && things.len)
for(var/i = lootcount, i > 0, i--)
if(!things.len)
return
var/loot_spawn = pick(things)
var/loot_path = text2path(loot_spawn)
if(!loot_path || !lootdoubles)
things.Remove(loot_spawn)
continue
new loot_path(get_turf(src))
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/lootdrop
icon = 'icons/mob/screen1.dmi'
icon_state = "x2"
var/lootcount = 1 //how many items will be spawned
var/lootdoubles = 0 //if the same item can be spawned twice
var/loot = "" //a list of possible items to spawn- a string of paths
/obj/effect/spawner/lootdrop/Initialize()
..()
var/list/things = params2list(loot)
if(things && things.len)
for(var/i = lootcount, i > 0, i--)
if(!things.len)
return
var/loot_spawn = pick(things)
var/loot_path = text2path(loot_spawn)
if(!loot_path || !lootdoubles)
things.Remove(loot_spawn)
continue
new loot_path(get_turf(src))
return INITIALIZE_HINT_QDEL
+37 -37
View File
@@ -1,38 +1,38 @@
/obj/item/weapon/paper/pamphlet
name = "pamphlet"
icon_state = "pamphlet"
info = "<b>Welcome to the Gateway project...</b><br>\
Congratulations! If you're reading this, you and your superiors have decided that you're \
ready to commit to a life spent colonising the rolling hills of far away worlds. You \
must be ready for a lifetime of adventure, a little bit of hard work, and an award \
winning dental plan- but that's not all the Gateway project has to offer.<br>\
<br>Because we care about you, we feel it is only fair to make sure you know the risks \
before you commit to joining the Gateway project. All away destinations have \
been fully scanned by a expeditionary team, and are certified to be 100% safe. \
We've even left a case of space beer along with the basic materials you'll need to expand \
the Project's operational area and start your new life.<br><br>\
<b>Gateway Operation Basics</b><br>\
All approved Gateways operate on the same basic principals. They operate off \
area equipment power as you would expect, but they also require a backup wire with at least \
128, 000 Watts of power running through it. Without this supply, it cannot safely function \
and will reject all attempts at operation.<br><br>\
Once it is correctly setup, and once it has enough power to operate, the Gateway will begin \
searching for an output location. The amount of time this takes is variable, but the Gateway \
interface will give you an estimate accurate to the minute. Power loss will not interrupt the \
searching process. Influenza will not interrupt the searching process. Temporal anomalies \
may cause the estimate to be inaccurate, but will not interrupt the searching process.<br><br> \
<b>Life On The Other Side</b><br>\
Once you have traversed the Gateway, you may experience some disorientation. Do not panic. \
This is a normal side effect of travelling vast distances in a short period of time. You should \
survey the immediate area, and attempt to locate your complimentary case of space beer. Our \
expeditionary teams have ensured the complete safety of all away locations, but in a small \
number of cases, the Gateway they have established may not be immediately obvious. \
Do not panic if you cannot locate the return Gateway. Begin colonisation of the destination. \
<br><br><b>A New World</b><br>\
As a participant in the Gateway Project, you will be on the frontiers of space. \
Though complete safety is assured, participants are advised to prepare for inhospitable \
environs."
//we don't want the silly text overlay!
/obj/item/weapon/paper/pamphlet/update_icon()
/obj/item/weapon/paper/pamphlet
name = "pamphlet"
icon_state = "pamphlet"
info = "<b>Welcome to the Gateway project...</b><br>\
Congratulations! If you're reading this, you and your superiors have decided that you're \
ready to commit to a life spent colonising the rolling hills of far away worlds. You \
must be ready for a lifetime of adventure, a little bit of hard work, and an award \
winning dental plan- but that's not all the Gateway project has to offer.<br>\
<br>Because we care about you, we feel it is only fair to make sure you know the risks \
before you commit to joining the Gateway project. All away destinations have \
been fully scanned by a expeditionary team, and are certified to be 100% safe. \
We've even left a case of space beer along with the basic materials you'll need to expand \
the Project's operational area and start your new life.<br><br>\
<b>Gateway Operation Basics</b><br>\
All approved Gateways operate on the same basic principals. They operate off \
area equipment power as you would expect, but they also require a backup wire with at least \
128, 000 Watts of power running through it. Without this supply, it cannot safely function \
and will reject all attempts at operation.<br><br>\
Once it is correctly setup, and once it has enough power to operate, the Gateway will begin \
searching for an output location. The amount of time this takes is variable, but the Gateway \
interface will give you an estimate accurate to the minute. Power loss will not interrupt the \
searching process. Influenza will not interrupt the searching process. Temporal anomalies \
may cause the estimate to be inaccurate, but will not interrupt the searching process.<br><br> \
<b>Life On The Other Side</b><br>\
Once you have traversed the Gateway, you may experience some disorientation. Do not panic. \
This is a normal side effect of travelling vast distances in a short period of time. You should \
survey the immediate area, and attempt to locate your complimentary case of space beer. Our \
expeditionary teams have ensured the complete safety of all away locations, but in a small \
number of cases, the Gateway they have established may not be immediately obvious. \
Do not panic if you cannot locate the return Gateway. Begin colonisation of the destination. \
<br><br><b>A New World</b><br>\
As a participant in the Gateway Project, you will be on the frontiers of space. \
Though complete safety is assured, participants are advised to prepare for inhospitable \
environs."
//we don't want the silly text overlay!
/obj/item/weapon/paper/pamphlet/update_icon()
return
+43 -43
View File
@@ -1,44 +1,44 @@
/obj/effect/step_trigger/message
var/message //the message to give to the mob
var/once = 1
/obj/effect/step_trigger/message/Trigger(mob/M as mob)
if(M.client)
to_chat(M, "<span class='info'>[message]</span>")
if(once)
qdel(src)
/obj/effect/step_trigger/teleport_fancy
var/locationx
var/locationy
var/uses = 1 //0 for infinite uses
var/entersparks = 0
var/exitsparks = 0
var/entersmoke = 0
var/exitsmoke = 0
/obj/effect/step_trigger/teleport_fancy/Trigger(mob/M as mob)
var/dest = locate(locationx, locationy, z)
M.Move(dest)
if(entersparks)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(4, 1, src)
s.start()
if(exitsparks)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(4, 1, dest)
s.start()
if(entersmoke)
var/datum/effect/effect/system/smoke_spread/s = new /datum/effect/effect/system/smoke_spread
s.set_up(4, 1, src, 0)
s.start()
if(exitsmoke)
var/datum/effect/effect/system/smoke_spread/s = new /datum/effect/effect/system/smoke_spread
s.set_up(4, 1, dest, 0)
s.start()
uses--
if(uses == 0)
/obj/effect/step_trigger/message
var/message //the message to give to the mob
var/once = 1
/obj/effect/step_trigger/message/Trigger(mob/M as mob)
if(M.client)
to_chat(M, "<span class='info'>[message]</span>")
if(once)
qdel(src)
/obj/effect/step_trigger/teleport_fancy
var/locationx
var/locationy
var/uses = 1 //0 for infinite uses
var/entersparks = 0
var/exitsparks = 0
var/entersmoke = 0
var/exitsmoke = 0
/obj/effect/step_trigger/teleport_fancy/Trigger(mob/M as mob)
var/dest = locate(locationx, locationy, z)
M.Move(dest)
if(entersparks)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(4, 1, src)
s.start()
if(exitsparks)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(4, 1, dest)
s.start()
if(entersmoke)
var/datum/effect/effect/system/smoke_spread/s = new /datum/effect/effect/system/smoke_spread
s.set_up(4, 1, src, 0)
s.start()
if(exitsmoke)
var/datum/effect/effect/system/smoke_spread/s = new /datum/effect/effect/system/smoke_spread
s.set_up(4, 1, dest, 0)
s.start()
uses--
if(uses == 0)
qdel(src)
+91 -91
View File
@@ -1,91 +1,91 @@
/proc/createRandomZlevel()
if(awaydestinations.len || UNIT_TEST) //crude, but it saves another var! //VOREStation Edit - No loading away missions during CI testing
return
var/list/potentialRandomZlevels = list()
admin_notice(span_red("<B> Searching for away missions...</B>"), R_DEBUG)
var/list/Lines = file2list("maps/RandomZLevels/fileList.txt")
if(!Lines.len) return
for (var/t in Lines)
if (!t)
continue
t = trim(t)
if (length(t) == 0)
continue
else if (copytext(t, 1, 2) == "#")
continue
var/pos = findtext(t, " ")
var/name = null
// var/value = null
if (pos)
// No, don't do lowertext here, that breaks paths on linux
name = copytext(t, 1, pos)
// value = copytext(t, pos + 1)
else
// No, don't do lowertext here, that breaks paths on linux
name = t
if (!name)
continue
potentialRandomZlevels.Add(name)
if(potentialRandomZlevels.len)
admin_notice(span_red("<B>Loading away mission...</B>"), R_DEBUG)
var/map = pick(potentialRandomZlevels)
to_world_log("Away mission picked: [map]") //VOREStation Add for debugging
var/file = file(map)
if(isfile(file))
var/datum/map_template/template = new(file, "away mission")
template.load_new_z()
to_world_log("away mission loaded: [map]")
/* VOREStation Removal - We do this in the special landmark init instead.
for(var/obj/effect/landmark/L in landmarks_list)
if (L.name != "awaystart")
continue
awaydestinations.Add(L)
*/ //VOREStation Removal End
admin_notice(span_red("<B>Away mission loaded.</B>"), R_DEBUG)
else
admin_notice(span_red("<B>No away missions found.</B>"), R_DEBUG)
return
//VOREStation Add - This landmark type so it's not so ghetto.
/obj/effect/landmark/gateway_scatter
name = "uncalibrated gateway destination"
/obj/effect/landmark/gateway_scatter/Initialize()
. = ..()
awaydestinations += src
/obj/effect/landmark/gateway_scatter/abduct
name = "uncalibrated gateway abductor"
abductor = 1
/obj/effect/landmark/event_scatter
name = "uncalibrated event destination"
/obj/effect/landmark/event_scatter/Initialize()
. = ..()
eventdestinations += src
/obj/effect/landmark/event_scatter/abduct
name = "uncalibrated event abductor"
abductor = 1
/obj/effect/landmark/gateway_abduct_dest
name = "abductor gateway destination"
/obj/effect/landmark/gateway_abduct_dest/Initialize()
. = ..()
awayabductors += src
/obj/effect/landmark/event_abduct_dest
name = "abductor event destination"
/obj/effect/landmark/event_abduct_dest/Initialize()
. = ..()
eventabductors += src
//VOREStation Add End
/proc/createRandomZlevel()
if(awaydestinations.len || UNIT_TEST) //crude, but it saves another var! //VOREStation Edit - No loading away missions during CI testing
return
var/list/potentialRandomZlevels = list()
admin_notice(span_red("<B> Searching for away missions...</B>"), R_DEBUG)
var/list/Lines = file2list("maps/RandomZLevels/fileList.txt")
if(!Lines.len) return
for (var/t in Lines)
if (!t)
continue
t = trim(t)
if (length(t) == 0)
continue
else if (copytext(t, 1, 2) == "#")
continue
var/pos = findtext(t, " ")
var/name = null
// var/value = null
if (pos)
// No, don't do lowertext here, that breaks paths on linux
name = copytext(t, 1, pos)
// value = copytext(t, pos + 1)
else
// No, don't do lowertext here, that breaks paths on linux
name = t
if (!name)
continue
potentialRandomZlevels.Add(name)
if(potentialRandomZlevels.len)
admin_notice(span_red("<B>Loading away mission...</B>"), R_DEBUG)
var/map = pick(potentialRandomZlevels)
to_world_log("Away mission picked: [map]") //VOREStation Add for debugging
var/file = file(map)
if(isfile(file))
var/datum/map_template/template = new(file, "away mission")
template.load_new_z()
to_world_log("away mission loaded: [map]")
/* VOREStation Removal - We do this in the special landmark init instead.
for(var/obj/effect/landmark/L in landmarks_list)
if (L.name != "awaystart")
continue
awaydestinations.Add(L)
*/ //VOREStation Removal End
admin_notice(span_red("<B>Away mission loaded.</B>"), R_DEBUG)
else
admin_notice(span_red("<B>No away missions found.</B>"), R_DEBUG)
return
//VOREStation Add - This landmark type so it's not so ghetto.
/obj/effect/landmark/gateway_scatter
name = "uncalibrated gateway destination"
/obj/effect/landmark/gateway_scatter/Initialize()
. = ..()
awaydestinations += src
/obj/effect/landmark/gateway_scatter/abduct
name = "uncalibrated gateway abductor"
abductor = 1
/obj/effect/landmark/event_scatter
name = "uncalibrated event destination"
/obj/effect/landmark/event_scatter/Initialize()
. = ..()
eventdestinations += src
/obj/effect/landmark/event_scatter/abduct
name = "uncalibrated event abductor"
abductor = 1
/obj/effect/landmark/gateway_abduct_dest
name = "abductor gateway destination"
/obj/effect/landmark/gateway_abduct_dest/Initialize()
. = ..()
awayabductors += src
/obj/effect/landmark/event_abduct_dest
name = "abductor event destination"
/obj/effect/landmark/event_abduct_dest/Initialize()
. = ..()
eventabductors += src
//VOREStation Add End