diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 1feedbaf80..ffb1c88385 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -153,7 +153,7 @@
usr << browse(out, "window=edit_memory[src]")
/datum/mind/Topic(href, href_list)
- if(!check_rights(R_ADMIN||R_EVENT)) return
+ if(!check_rights(R_ADMIN||R_EVENT||R_MOD)) return
if(href_list["add_antagonist"])
var/datum/antagonist/antag = all_antag_types[href_list["add_antagonist"]]
diff --git a/code/datums/supplypacks/munitions_vr.dm b/code/datums/supplypacks/munitions_vr.dm
index 01a5becdf9..4ac51417ba 100644
--- a/code/datums/supplypacks/munitions_vr.dm
+++ b/code/datums/supplypacks/munitions_vr.dm
@@ -6,4 +6,4 @@
cost = 35
containertype = /obj/structure/closet/crate/secure
containername = "frontier phaser crate"
- access = access_explorer
\ No newline at end of file
+ access = access_explorer
diff --git a/code/datums/supplypacks/voidsuits_vr.dm b/code/datums/supplypacks/voidsuits_vr.dm
index 60765435f3..db46992a69 100644
--- a/code/datums/supplypacks/voidsuits_vr.dm
+++ b/code/datums/supplypacks/voidsuits_vr.dm
@@ -70,6 +70,8 @@
/obj/item/weapon/tank/oxygen = 3
)
+// Removing due to it being for southern_cross
+/*
/datum/supply_packs/voidsuits/explorer
name = "Exploration voidsuits"
contains = list(
@@ -96,4 +98,5 @@
cost = 20
containertype = "/obj/structure/closet/crate/secure"
containername = "Pilot voidsuit crate"
- access = access_pilot
\ No newline at end of file
+ access = access_pilot
+*/
\ No newline at end of file
diff --git a/code/game/gamemodes/events/dust.dm b/code/game/gamemodes/events/dust.dm
index 88964fa610..9ff4d7494d 100644
--- a/code/game/gamemodes/events/dust.dm
+++ b/code/game/gamemodes/events/dust.dm
@@ -11,21 +11,27 @@ The "dust" will damage the hull of the station causin minor hull breaches.
var/numbers = 1
switch(strength)
if("weak")
- numbers = rand(2,4)
- for(var/i = 0 to numbers)
- new/obj/effect/space_dust/weak()
+ numbers = rand(1,4)
+// for(var/i = 0 to numbers)
+// new/obj/effect/space_dust/weak()
if("norm")
numbers = rand(5,10)
- for(var/i = 0 to numbers)
- new/obj/effect/space_dust()
+// for(var/i = 0 to numbers)
+// new/obj/effect/space_dust()
if("strong")
numbers = rand(10,15)
- for(var/i = 0 to numbers)
- new/obj/effect/space_dust/strong()
+// for(var/i = 0 to numbers)
+// new/obj/effect/space_dust/strong()
if("super")
numbers = rand(15,25)
- for(var/i = 0 to numbers)
- new/obj/effect/space_dust/super()
+// for(var/i = 0 to numbers)
+// new/obj/effect/space_dust/super()
+
+// Instead of calling retardedly stupidly powerful meteors,
+// just bombard the ship with little pellets at a drastically huge number.
+// Along with the fact that shields can BLOCK THE DUST!!! - Jon
+
+ spawn_meteors(numbers, meteors_dust)
return
diff --git a/code/game/gamemodes/events/wormholes.dm b/code/game/gamemodes/events/wormholes.dm
index cece3f67f9..40f1c7c060 100644
--- a/code/game/gamemodes/events/wormholes.dm
+++ b/code/game/gamemodes/events/wormholes.dm
@@ -1,14 +1,30 @@
-/proc/wormhole_event()
+/proc/wormhole_event(var/wormholeAmount = 600, var/event_duration = 3000)
spawn()
+ // Begone you disgusting fucking piece of garbage - Jon
+ /*
var/list/pick_turfs = list()
for(var/turf/simulated/floor/T in turfs)
if(T.z in using_map.station_levels)
pick_turfs += T
+ */
if(pick_turfs.len)
//All ready. Announce that bad juju is afoot.
command_announcement.Announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", new_sound = 'sound/AI/spanomalies.ogg')
+ var/end_time = world.time + event_duration
+ var/list/wormholes = list()
+
+ // Unfortunately, this code is shit. I will not explain why but I'll give one reason. While(1)
+ // I dont want to explain why I think that that fucking line is retarded. I think it's self
+ // explanatory, I can write for over 2000 words explaining why no programmer should EVER do that
+ // unless they want to lag the game intentionally like a douchebag. Remember this proc is being
+ // called on WORLD. MEANING, IF YOU MAKE WORLD SLEEP. YOU MAKE THE SERVER SLEEP YOU DINGUS.
+ // OH MY GOD WHO THE FUCK WOULD EVEN THINK OF THIS!!!
+ //
+ // - Jon, better code below this.
+
+/*
//prob(20) can be approximated to 1 wormhole every 5 turfs!
//admittedly less random but totally worth it >_<
var/event_duration = 3000 //~5 minutes in ticks
@@ -47,6 +63,16 @@
create_wormhole(enter,exit)
sleep(sleep_duration) //have a well deserved nap!
+ */
+
+ // Now that we made the announcement, might as well get the wormholes spawning!
+ for(var/i in 0 to wormholeAmount) // For every 0 to wormhole amount.
+ var/turf/T = pick(pick_turfs) //Pick random turfs from the list we made earlier.
+ wormholes += new /obj/effect/portal/worm(T, null, null, 1)// Spawn the wormhole, ITS THAT EASY?!?!
+
+ while(wormholes.len > 0)
+ if(end_time < world.time)
+ wormholes.Cut() //we've run into overtime. End the event
//maybe this proc can even be used as an admin tool for teleporting players without ruining immulsions?
@@ -59,4 +85,32 @@
P.icon_state = "anom"
P.name = "wormhole"
spawn(rand(300,600))
- qdel(P)
\ No newline at end of file
+ qdel(P)
+
+/obj/effect/portal/worm
+ name = "wormhole"
+ icon_state = "anom"
+ icon = 'icons/obj/objects.dmi'
+ desc = "It looks highly unstable; It could close at any moment."
+ failchance = 0
+
+/obj/effect/portal/worm/attack_hand(mob/user)
+ teleport(user)
+
+/obj/effect/portal/worm/attackby(obj/item/I, mob/user, params)
+ teleport(user)
+
+/obj/effect/portal/worm/teleport(atom/movable/M)
+ if(istype(M, /obj/effect)) //sparks don't teleport
+ return
+ if(M.anchored && istype(M, /obj/mecha))
+ return
+
+ if(istype(M, /atom/movable))
+ var/turf/target
+ if(portals.len)
+ var/obj/effect/portal/P = pick(portals)
+ if(P && isturf(P.loc))
+ target = P.loc
+ if(!target) return
+ do_teleport(M, target, 1, 1, 0, 0) ///You will appear adjacent to the beacon
\ No newline at end of file
diff --git a/code/game/machinery/suit_storage_unit_vr.dm b/code/game/machinery/suit_storage_unit_vr.dm
index 53acbb3aec..7e5a37beeb 100644
--- a/code/game/machinery/suit_storage_unit_vr.dm
+++ b/code/game/machinery/suit_storage_unit_vr.dm
@@ -17,7 +17,7 @@
SPECIES_ZORREN_FLAT,
SPECIES_ZORREN_HIGH
)
-
+/*
/obj/machinery/suit_cycler/explorer
name = "Explorer suit cycler"
model_text = "Exploration"
@@ -62,3 +62,4 @@
else
return ..()
+*/
\ No newline at end of file
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 08f369d735..b4803ac548 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -1,4 +1,9 @@
-GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
+//GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
+// No fucking idea what this proc does but it doesn't seem to
+// help when we need to refere to the global portals list.
+
+var/global/list/portals = list() // Just a list for portals <3
+
/obj/effect/portal
name = "portal"
@@ -13,28 +18,43 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
anchored = 1.0
/obj/effect/portal/Bumped(mob/M as mob|obj)
- spawn(0)
- src.teleport(M)
- return
- return
+// spawn(0)
+// src.teleport(M)
+// return
+// return
+ teleport(M)
/obj/effect/portal/Crossed(AM as mob|obj)
- spawn(0)
- src.teleport(AM)
- return
- return
+// spawn(0)
+// src.teleport(AM)
+// return
+// return
+ teleport(AM)
/obj/effect/portal/attack_hand(mob/user as mob)
- spawn(0)
- src.teleport(user)
- return
- return
+// spawn(0)
+// src.teleport(user)
+// return
+// return
+ teleport(user)
-/obj/effect/portal/New()
- spawn(300)
- qdel(src)
- return
- return
+/obj/effect/portal/New(loc, turf/target, creator=null, lifespan=300)
+ //I'm actually concerned with the ammount of spaghet on my plate today. - Jon
+// spawn(300)
+// qdel(src)
+// return
+// return
+ portals += src
+ src.loc = loc
+ src.target = target
+ src.creator = creator
+ if(lifespan > 0)
+ spawn(lifespan)
+ qdel(src)
+
+/obj/effect/portal/Destroy()
+ portals -= src
+ return ..()
/obj/effect/portal/proc/teleport(atom/movable/M as mob|obj)
if(istype(M, /obj/effect)) //sparks don't teleport
@@ -53,3 +73,9 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
else
do_teleport(M, target, 1) ///You will appear adjacent to the beacon
+// New addition to remove portals via multitools like on codebases like Paradise. - Jon
+/obj/effect/portal/attackby(obj/item/A, mob/user)
+ if(istype(A, /obj/item/device/multitool))
+ qdel(src)
+
+
diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm
index 3818ddac81..44694d1125 100644
--- a/code/game/objects/items/weapons/teleportation.dm
+++ b/code/game/objects/items/weapons/teleportation.dm
@@ -156,7 +156,7 @@ Frequency:
if ((user.get_active_hand() != src || user.stat || user.restrained()))
return
var/count = 0 //num of portals from this teleport in world
- for(var/obj/effect/portal/PO in all_portals)
+ for(var/obj/effect/portal/PO in portals)
if(PO.creator == src) count++
if(count >= 3)
user.show_message("\The [src] is recharging!")
diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
index bb1a62e40b..0151f3d922 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
@@ -5,6 +5,7 @@
anchored = 0
buckle_movable = 1
+ var/move_delay = null
var/driving = 0
var/mob/living/pulling = null
var/bloodiness
@@ -29,6 +30,14 @@
/obj/structure/bed/chair/wheelchair/relaymove(mob/user, direction)
// Redundant check?
+
+
+ var/calculated_move_delay
+ calculated_move_delay += 2 //WHEELCHAIRS ARENT FUCKING SONIC CHAIRS.
+
+ if(world.time < move_delay)
+ return
+
if(user.stat || user.stunned || user.weakened || user.paralysis || user.lying || user.restrained())
if(user==pulling)
pulling = null
@@ -57,6 +66,9 @@
user << "You cannot drive while being pushed."
return
+ move_delay = world.time
+ move_delay += calculated_move_delay
+
// Let's roll
driving = 1
var/turf/T = null
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 92f6525d11..757a397b10 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -350,7 +350,9 @@ var/list/admin_verbs_mod = list(
/datum/admins/proc/quick_nif, //CHOMPStation Add,
/client/proc/allow_character_respawn, // Allows a ghost to respawn ,
/datum/admins/proc/sendFax,
+ /client/proc/giveruntimelog, //allows us to give access to runtime logs to somebody,
/client/proc/getserverlog, //allows us to fetch server logs (diary) for other days,
+ /client/proc/jumptocoord, //we ghost and jump to a coordinate,
/datum/admins/proc/view_txt_log, //shows the server log (diary) for today,
/datum/admins/proc/view_atk_log //shows the server combat-log, doesn't do anything presently,
)
diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm
index a9581341c5..95835341dc 100644
--- a/code/modules/events/wormholes.dm
+++ b/code/modules/events/wormholes.dm
@@ -2,8 +2,62 @@
startWhen = 0
endWhen = 80
+ var/list/pick_turfs = list()
+ var/list/wormholes = list()
+ var/shift_frequency = 3
+ var/number_of_wormholes = 400
+
+
+/datum/event/wormholes/setup()
+ endWhen = rand(40, 80)
+
/datum/event/wormholes/start()
- wormhole_event()
+ for(var/turf/simulated/floor/T in turfs)
+ if(T.z in using_map.station_levels)
+ pick_turfs += T
+
+ for(var/i in 1 to number_of_wormholes)
+ var/turf/T = pick(pick_turfs)
+ wormholes += new /obj/effect/portal/worm(T, null, null, -1)
+
+/datum/event/wormholes/tick()
+ if(activeFor % shift_frequency == 0)
+ for(var/obj/effect/portal/worm/O in wormholes)
+ var/turf/T = pick(pick_turfs)
+ if(T) O.loc = T
/datum/event/wormholes/end()
+ for(var/obj/effect/portal/worm/O in wormholes)
+ qdel(O)
command_announcement.Announce("There are no more space-time anomalies detected on the station.", "Anomaly Alert")
+
+
+
+
+/obj/effect/portal/worm
+ name = "wormhole"
+ icon_state = "anom"
+ icon = 'icons/obj/objects.dmi'
+ desc = "It looks highly unstable; It could close at any moment."
+ failchance = 0
+
+/obj/effect/portal/worm/attack_hand(mob/user)
+ teleport(user)
+
+/obj/effect/portal/worm/attackby(obj/item/I, mob/user, params)
+ teleport(user)
+
+/obj/effect/portal/worm/teleport(atom/movable/M)
+ if(istype(M, /obj/effect)) //sparks don't teleport
+ return
+ if(M.anchored && istype(M, /obj/mecha))
+ return
+
+ if(istype(M, /atom/movable))
+ var/turf/target
+ if(portals.len)
+ var/obj/effect/portal/P = pick(portals)
+ if(P && isturf(P.loc))
+ target = P.loc
+ if(!target) return
+ do_teleport(M, target, 1, 1, 0, 0) ///You will appear adjacent to the beacon
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index 5a09e5f04a..2646d90bbb 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -16,7 +16,7 @@
color_mult = 1
mob_size = MOB_MEDIUM //As of writing, original was MOB_SMALL - Allows normal swapping (good)
- num_alternate_languages = 1 //Might be outdated: They currently have 3 in the other file
+ num_alternate_languages = 3 //Might be outdated: They currently have 3 in the other file
trashcan = 1 //They have goopy bodies. They can just dissolve things within them.
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS | HAS_UNDERWEAR
diff --git a/code/modules/power/fusion/fusion_reactions.dm b/code/modules/power/fusion/fusion_reactions.dm
index 623f70bd6b..0a1df3cb75 100644
--- a/code/modules/power/fusion/fusion_reactions.dm
+++ b/code/modules/power/fusion/fusion_reactions.dm
@@ -112,8 +112,6 @@ proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy)
/decl/fusion_reaction/phoron_supermatter/handle_reaction_special(var/obj/effect/fusion_em_field/holder)
- wormhole_event()
-
var/turf/origin = get_turf(holder)
holder.Rupture()
qdel(holder)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
index 9de15b6915..ef5b9d6797 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
@@ -698,7 +698,7 @@
M.make_dizzy(5)
if(prob(20))
M.hallucination = max(M.hallucination, 10)
-
+
//One of the levofloxacin side effects is 'spontaneous tendon rupture', which I'll immitate here. 1:1000 chance, so, pretty darn rare.
if(ishuman(M) && rand(1,10000) == 1) //VOREStation Edit (more rare)
var/obj/item/organ/external/eo = pick(H.organs) //Misleading variable name, 'organs' is only external organs
@@ -817,16 +817,19 @@
metabolism = 0.01
mrate_static = TRUE
data = 0
+ var/delay = 0
/datum/reagent/methylphenidate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ if(!delay)
+ delay = world.time
if(alien == IS_DIONA)
return
- if(volume <= 0.1 && data != -1)
- data = -1
+ if(volume <= 0.1 && data != -1 && world.time > delay + ANTIDEPRESSANT_MESSAGE_DELAY)
+ delay = world.time
M << "You lose focus..."
else
- if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
- data = world.time
+ if(world.time > delay + ANTIDEPRESSANT_MESSAGE_DELAY)
+ delay = world.time
M << "Your mind feels focused and undivided."
/datum/reagent/citalopram
@@ -839,17 +842,20 @@
metabolism = 0.01
mrate_static = TRUE
data = 0
+ var/delay = 0
/datum/reagent/citalopram/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ if(!delay)
+ delay = world.time
if(alien == IS_DIONA)
return
- if(volume <= 0.1 && data != -1)
- data = -1
- M << "Your mind feels a little less stable..."
+ if(volume <= 0.1 && world.time > delay + ANTIDEPRESSANT_MESSAGE_DELAY)
+ delay = world.time
+ to_chat(M, "Your mind feels a little less stable...")
else
- if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
- data = world.time
- M << "Your mind feels stable... a little stable."
+ if(world.time > delay + ANTIDEPRESSANT_MESSAGE_DELAY)
+ delay = world.time
+ to_chat(M, "Your mind feels stable... a little stable.")
/datum/reagent/paroxetine
name = "Paroxetine"
@@ -861,16 +867,17 @@
metabolism = 0.01
mrate_static = TRUE
data = 0
+ var/delay = 0
/datum/reagent/paroxetine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
- if(volume <= 0.1 && data != -1)
- data = -1
+ if(volume <= 0.1 && world.time > delay + ANTIDEPRESSANT_MESSAGE_DELAY)
+ delay = world.time
M << "Your mind feels much less stable..."
else
- if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
- data = world.time
+ if(world.time > delay + ANTIDEPRESSANT_MESSAGE_DELAY)
+ delay = world.time
if(prob(90))
M << "Your mind feels much more stable."
else
diff --git a/maps/northern_star/northern_star_defines.dm b/maps/northern_star/northern_star_defines.dm
index 3e56c91fe9..27cdd8a239 100644
--- a/maps/northern_star/northern_star_defines.dm
+++ b/maps/northern_star/northern_star_defines.dm
@@ -11,7 +11,7 @@
full_name = "NCS Northern Star"
path = "northern_star"
- lobby_icon = 'icons/misc/title.dmi'
+ lobby_icon = 'icons/misc/title.dmi' // Amazing title screen made by Jareix, kudos to him! <3
lobby_screens = list("mockingjay00")
zlevel_datum_type = /datum/map_z_level/northern_star
diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm
index 6904b2144b..0536a7066a 100644
--- a/maps/southern_cross/structures/closets/misc.dm
+++ b/maps/southern_cross/structures/closets/misc.dm
@@ -7,7 +7,7 @@
starts_with = list(
/obj/item/weapon/gun/energy/gun = 4)
-
+/*
/obj/structure/closet/secure_closet/guncabinet/rifle
name = "rifle cabinet"
req_one_access = list(access_explorer,access_brig)
diff --git a/vorestation.dme b/vorestation.dme
index ffdfb760d2..0cbc3ea520 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -331,7 +331,6 @@
#include "code\datums\supplypacks\misc_ch.dm"
#include "code\datums\supplypacks\misc_vr.dm"
#include "code\datums\supplypacks\munitions.dm"
-#include "code\datums\supplypacks\munitions_vr.dm"
#include "code\datums\supplypacks\recreation.dm"
#include "code\datums\supplypacks\recreation_vr.dm"
#include "code\datums\supplypacks\robotics.dm"
@@ -518,7 +517,6 @@
#include "code\game\gamemodes\events\clang.dm"
#include "code\game\gamemodes\events\dust.dm"
#include "code\game\gamemodes\events\power_failure.dm"
-#include "code\game\gamemodes\events\wormholes.dm"
#include "code\game\gamemodes\events\holidays\Christmas.dm"
#include "code\game\gamemodes\events\holidays\Holidays.dm"
#include "code\game\gamemodes\events\holidays\Other.dm"
@@ -2894,8 +2892,6 @@
#include "maps\RandomZLevels\listeningpost.dm"
#include "maps\RandomZLevels\snowfield.dm"
#include "maps\RandomZLevels\zoo.dm"
-#include "maps\southern_cross\southern_cross_jobs.dm"
-#include "maps\southern_cross\southern_cross_jobs_vr.dm"
#include "maps\southern_cross\items\encryptionkey_sc.dm"
#include "maps\southern_cross\items\encryptionkey_vr.dm"
#include "maps\southern_cross\items\headset_sc.dm"
@@ -2903,13 +2899,9 @@
#include "maps\southern_cross\items\clothing\sc_accessory.dm"
#include "maps\southern_cross\items\clothing\sc_suit.dm"
#include "maps\southern_cross\items\clothing\sc_under.dm"
-#include "maps\southern_cross\job\outfits.dm"
-#include "maps\southern_cross\job\outfits_vr.dm"
#include "maps\southern_cross\loadout\loadout_head.dm"
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
-#include "maps\southern_cross\structures\closets\misc.dm"
-#include "maps\southern_cross\structures\closets\misc_vr.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"
#include "maps\submaps\engine_submaps\engine_areas.dm"