12/21 modernizations from TG live (#103)
* sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes
This commit is contained in:
@@ -12,8 +12,8 @@
|
||||
anchored = 1
|
||||
|
||||
/obj/machinery/artillerycontrol/process()
|
||||
if(src.reload<ARTILLERY_RELOAD_TIME)
|
||||
src.reload++
|
||||
if(reload < ARTILLERY_RELOAD_TIME)
|
||||
reload++
|
||||
|
||||
/obj/structure/artilleryplaceholder
|
||||
name = "artillery"
|
||||
@@ -39,11 +39,13 @@
|
||||
if(..())
|
||||
return
|
||||
var/A
|
||||
A = input("Area to jump bombard", "Open Fire", A) in teleportlocs
|
||||
A = input("Area to bombard", "Open Fire", A) in teleportlocs
|
||||
var/area/thearea = teleportlocs[A]
|
||||
if (usr.stat || usr.restrained()) return
|
||||
if(src.reload < ARTILLERY_RELOAD_TIME) return
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
if(src.reload < ARTILLERY_RELOAD_TIME)
|
||||
return
|
||||
if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr))
|
||||
priority_announce("Bluespace artillery fire detected. Brace for impact.")
|
||||
message_admins("[key_name_admin(usr)] has launched an artillery strike.")
|
||||
var/list/L = list()
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#define FLAG_RETURN_TIME 200 // 20 seconds
|
||||
#define INSTAGIB_RESPAWN 50 //5 seconds
|
||||
#define DEFAULT_RESPAWN 150 //15 seconds
|
||||
#define AMMO_DROP_LIFETIME 300
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +19,7 @@
|
||||
throw_range = 1
|
||||
force = 200
|
||||
armour_penetration = 1000
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
anchored = TRUE
|
||||
flags = HANDSLOW
|
||||
var/team = WHITE_TEAM
|
||||
@@ -26,6 +28,7 @@
|
||||
var/reset_path = /obj/effect/ctf/flag_reset
|
||||
|
||||
/obj/item/weapon/twohanded/required/ctf/New()
|
||||
..()
|
||||
if(!reset)
|
||||
reset = new reset_path(get_turf(src))
|
||||
|
||||
@@ -122,6 +125,7 @@
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "syndbeacon"
|
||||
anchored = 1
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
var/team = WHITE_TEAM
|
||||
//Capture the Flag scoring
|
||||
var/points = 0
|
||||
@@ -131,6 +135,8 @@
|
||||
var/control_points = 0
|
||||
var/control_points_to_win = 180
|
||||
var/list/team_members = list()
|
||||
var/list/spawned_mobs = list()
|
||||
var/list/recently_dead_ckeys = list()
|
||||
var/ctf_enabled = FALSE
|
||||
var/ctf_gear = /datum/outfit/ctf
|
||||
var/instagib_gear = /datum/outfit/ctf/instagib
|
||||
@@ -157,6 +163,21 @@
|
||||
poi_list.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/machinery/capture_the_flag/process()
|
||||
for(var/i in spawned_mobs)
|
||||
if(!i)
|
||||
spawned_mobs -= i
|
||||
continue
|
||||
// Anyone in crit, automatically reap
|
||||
var/mob/living/M = i
|
||||
if(M.InCritical() || M.stat == DEAD)
|
||||
ctf_dust_old(M)
|
||||
else
|
||||
// The changes that you've been hit with no shield but not
|
||||
// instantly critted are low, but have some healing.
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
|
||||
/obj/machinery/capture_the_flag/red
|
||||
name = "Red CTF Controller"
|
||||
icon_state = "syndbeacon"
|
||||
@@ -177,11 +198,12 @@
|
||||
if(ticker.current_state != GAME_STATE_PLAYING)
|
||||
return
|
||||
if(user.ckey in team_members)
|
||||
if(user.mind.current && user.mind.current.timeofdeath + respawn_cooldown > world.time)
|
||||
if(user.ckey in recently_dead_ckeys)
|
||||
user << "It must be more than [respawn_cooldown/10] seconds from your last death to respawn!"
|
||||
return
|
||||
var/client/new_team_member = user.client
|
||||
dust_old(user)
|
||||
if(user.mind && user.mind.current)
|
||||
ctf_dust_old(user.mind.current)
|
||||
spawn_team_member(new_team_member)
|
||||
return
|
||||
|
||||
@@ -196,15 +218,20 @@
|
||||
return
|
||||
team_members |= user.ckey
|
||||
var/client/new_team_member = user.client
|
||||
dust_old(user)
|
||||
if(user.mind && user.mind.current)
|
||||
ctf_dust_old(user.mind.current)
|
||||
spawn_team_member(new_team_member)
|
||||
|
||||
/obj/machinery/capture_the_flag/proc/dust_old(mob/user)
|
||||
if(user.mind && user.mind.current && user.mind.current.z == src.z)
|
||||
new /obj/item/ammo_box/magazine/recharge/ctf (get_turf(user.mind.current))
|
||||
new /obj/item/ammo_box/magazine/recharge/ctf (get_turf(user.mind.current))
|
||||
user.mind.current.dust()
|
||||
/obj/machinery/capture_the_flag/proc/ctf_dust_old(mob/living/body)
|
||||
if(isliving(body) && body.z == src.z)
|
||||
var/turf/T = get_turf(body)
|
||||
new /obj/effect/ctf/ammo(T)
|
||||
recently_dead_ckeys += body.ckey
|
||||
addtimer(src, "clear_cooldown", respawn_cooldown, TIMER_UNIQUE, body.ckey)
|
||||
body.dust()
|
||||
|
||||
/obj/machinery/capture_the_flag/proc/clear_cooldown(var/ckey)
|
||||
recently_dead_ckeys -= ckey
|
||||
|
||||
/obj/machinery/capture_the_flag/proc/spawn_team_member(client/new_team_member)
|
||||
var/mob/living/carbon/human/M = new/mob/living/carbon/human(get_turf(src))
|
||||
@@ -212,6 +239,7 @@
|
||||
M.key = new_team_member.key
|
||||
M.faction += team
|
||||
M.equipOutfit(ctf_gear)
|
||||
spawned_mobs += M
|
||||
|
||||
/obj/machinery/capture_the_flag/Topic(href, href_list)
|
||||
if(href_list["join"])
|
||||
@@ -281,12 +309,15 @@
|
||||
|
||||
/obj/machinery/capture_the_flag/proc/stop_ctf()
|
||||
ctf_enabled = FALSE
|
||||
arena_cleared = FALSE
|
||||
var/area/A = get_area(src)
|
||||
for(var/i in mob_list)
|
||||
var/mob/M = i
|
||||
if((get_area(A) == A) && (M.ckey in team_members))
|
||||
M.dust()
|
||||
team_members.Cut()
|
||||
spawned_mobs.Cut()
|
||||
recently_dead_ckeys.Cut()
|
||||
|
||||
/obj/machinery/capture_the_flag/proc/instagib_mode()
|
||||
for(var/obj/machinery/capture_the_flag/CTF in machines)
|
||||
@@ -300,25 +331,45 @@
|
||||
CTF.ctf_gear = initial(ctf_gear)
|
||||
CTF.respawn_cooldown = DEFAULT_RESPAWN
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/pistol/deagle/CTF
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/ctf
|
||||
desc = "This looks like it could really hurt in melee."
|
||||
force = 75
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser/ctf
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/ctf/dropped()
|
||||
. = ..()
|
||||
addtimer(src, "floor_vanish", 1)
|
||||
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/ctf/proc/floor_vanish()
|
||||
if(isturf(loc))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/gun/ballistic/automatic/laser/ctf
|
||||
mag_type = /obj/item/ammo_box/magazine/recharge/ctf
|
||||
desc = "This looks like it could really hurt in melee."
|
||||
force = 50
|
||||
flags = NODROP | DROPDEL
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf
|
||||
ammo_type = /obj/item/ammo_casing/caseless/laser/ctf
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf/dropped()
|
||||
. = ..()
|
||||
addtimer(src, "floor_vanish", 1)
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf/proc/floor_vanish()
|
||||
if(isturf(loc))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser/ctf
|
||||
projectile_type = /obj/item/projectile/beam/ctf
|
||||
|
||||
/obj/item/projectile/beam/ctf
|
||||
damage = 150
|
||||
icon_state = "omnilaser"
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser/ctf/red
|
||||
// RED TEAM GUNS
|
||||
|
||||
/obj/item/weapon/gun/ballistic/automatic/laser/ctf/red
|
||||
mag_type = /obj/item/ammo_box/magazine/recharge/ctf/red
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf/red
|
||||
@@ -330,7 +381,9 @@
|
||||
/obj/item/projectile/beam/ctf/red
|
||||
icon_state = "laser"
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser/ctf/blue
|
||||
// BLUE TEAM GUNS
|
||||
|
||||
/obj/item/weapon/gun/ballistic/automatic/laser/ctf/blue
|
||||
mag_type = /obj/item/ammo_box/magazine/recharge/ctf/blue
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf/blue
|
||||
@@ -344,16 +397,34 @@
|
||||
|
||||
/datum/outfit/ctf
|
||||
name = "CTF"
|
||||
/obj/item/device/radio/headset
|
||||
ears = /obj/item/device/radio/headset
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
id = /obj/item/weapon/card/id/syndicate
|
||||
belt = /obj/item/weapon/gun/projectile/automatic/pistol/deagle/CTF
|
||||
belt = /obj/item/weapon/gun/ballistic/automatic/pistol/deagle/ctf
|
||||
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf
|
||||
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf
|
||||
r_hand = /obj/item/weapon/gun/projectile/automatic/laser/ctf
|
||||
r_hand = /obj/item/weapon/gun/ballistic/automatic/laser/ctf
|
||||
|
||||
/datum/outfit/ctf/post_equip(mob/living/carbon/human/H, visualsOnly=FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/list/no_drops = list()
|
||||
var/obj/item/weapon/card/id/W = H.wear_id
|
||||
no_drops += W
|
||||
W.registered_name = H.real_name
|
||||
W.update_label(W.registered_name, W.assignment)
|
||||
|
||||
// The shielded hardsuit is already NODROP
|
||||
no_drops += H.get_item_by_slot(slot_gloves)
|
||||
no_drops += H.get_item_by_slot(slot_shoes)
|
||||
no_drops += H.get_item_by_slot(slot_w_uniform)
|
||||
no_drops += H.get_item_by_slot(slot_ears)
|
||||
for(var/i in no_drops)
|
||||
var/obj/item/I = i
|
||||
I.flags |= NODROP
|
||||
|
||||
/datum/outfit/ctf/instagib
|
||||
r_hand = /obj/item/weapon/gun/energy/laser/instakill
|
||||
@@ -362,7 +433,9 @@
|
||||
/datum/outfit/ctf/red
|
||||
ears = /obj/item/device/radio/headset/syndicate/alt
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/red
|
||||
r_hand = /obj/item/weapon/gun/projectile/automatic/laser/ctf/red
|
||||
r_hand = /obj/item/weapon/gun/ballistic/automatic/laser/ctf/red
|
||||
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/red
|
||||
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/red
|
||||
|
||||
/datum/outfit/ctf/red/instagib
|
||||
r_hand = /obj/item/weapon/gun/energy/laser/instakill/red
|
||||
@@ -371,49 +444,50 @@
|
||||
/datum/outfit/ctf/blue
|
||||
ears = /obj/item/device/radio/headset/headset_cent/commander
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/blue
|
||||
r_hand = /obj/item/weapon/gun/projectile/automatic/laser/ctf/blue
|
||||
r_hand = /obj/item/weapon/gun/ballistic/automatic/laser/ctf/blue
|
||||
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/blue
|
||||
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/blue
|
||||
|
||||
/datum/outfit/ctf/blue/instagib
|
||||
r_hand = /obj/item/weapon/gun/energy/laser/instakill/blue
|
||||
shoes = /obj/item/clothing/shoes/jackboots/fast
|
||||
|
||||
/datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H)
|
||||
..()
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(SYND_FREQ)
|
||||
R.freqlock = 1
|
||||
|
||||
/datum/outfit/ctf/blue/post_equip(mob/living/carbon/human/H)
|
||||
..()
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(CENTCOM_FREQ)
|
||||
R.freqlock = 1
|
||||
|
||||
|
||||
|
||||
/obj/structure/divine/trap/ctf
|
||||
/obj/structure/trap/ctf
|
||||
name = "Spawn protection"
|
||||
desc = "Stay outta the enemy spawn!"
|
||||
icon_state = "trap"
|
||||
health = INFINITY
|
||||
maxhealth = INFINITY
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
var/team = WHITE_TEAM
|
||||
constructable = FALSE
|
||||
time_between_triggers = 1
|
||||
alpha = 255
|
||||
|
||||
/obj/structure/divine/trap/examine(mob/user)
|
||||
/obj/structure/trap/examine(mob/user)
|
||||
return
|
||||
|
||||
/obj/structure/divine/trap/ctf/trap_effect(mob/living/L)
|
||||
/obj/structure/trap/ctf/trap_effect(mob/living/L)
|
||||
if(!(src.team in L.faction))
|
||||
L << "<span class='danger'><B>Stay out of the enemy spawn!</B></span>"
|
||||
L.dust()
|
||||
L.death()
|
||||
|
||||
|
||||
/obj/structure/divine/trap/ctf/red
|
||||
/obj/structure/trap/ctf/red
|
||||
team = RED_TEAM
|
||||
icon_state = "trap-fire"
|
||||
|
||||
/obj/structure/divine/trap/ctf/blue
|
||||
/obj/structure/trap/ctf/blue
|
||||
team = BLUE_TEAM
|
||||
icon_state = "trap-frost"
|
||||
|
||||
@@ -429,8 +503,50 @@
|
||||
anchored = TRUE
|
||||
invisibility = INVISIBILITY_OBSERVER
|
||||
alpha = 100
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
|
||||
/obj/effect/ctf/ammo
|
||||
name = "ammo pickup"
|
||||
desc = "You like revenge, right? Everybody likes revenge! Well, \
|
||||
let's go get some!"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "at_shield1"
|
||||
layer = ABOVE_MOB_LAYER
|
||||
alpha = 255
|
||||
invisibility = 0
|
||||
|
||||
/obj/effect/ctf/ammo/New()
|
||||
..()
|
||||
QDEL_IN(src, AMMO_DROP_LIFETIME)
|
||||
|
||||
/obj/effect/ctf/ammo/Crossed(atom/movable/AM)
|
||||
reload(AM)
|
||||
|
||||
/obj/effect/ctf/ammo/Bump(atom/movable/AM)
|
||||
reload(AM)
|
||||
|
||||
/obj/effect/ctf/ammo/Bumped(atom/movable/AM)
|
||||
reload(AM)
|
||||
|
||||
/obj/effect/ctf/ammo/proc/reload(mob/living/M)
|
||||
if(!ishuman(M))
|
||||
return
|
||||
for(var/obj/machinery/capture_the_flag/CTF in machines)
|
||||
if(M in CTF.spawned_mobs)
|
||||
var/outfit = CTF.ctf_gear
|
||||
var/datum/outfit/O = new outfit
|
||||
for(var/obj/item/weapon/gun/G in M)
|
||||
M.unEquip(G)
|
||||
qdel(G)
|
||||
O.equip(M)
|
||||
M << "<span class='notice'>Ammunition reloaded!</span>"
|
||||
playsound(get_turf(M), 'sound/weapons/shotgunpump.ogg', 50, 1, -1)
|
||||
qdel(src)
|
||||
break
|
||||
|
||||
/obj/effect/ctf/dead_barricade
|
||||
name = "dead barrier"
|
||||
desc = "It provided cover in fire fights. And now it's gone."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "barrier0"
|
||||
|
||||
@@ -443,41 +559,6 @@
|
||||
new /obj/structure/barricade/security/ctf(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
//Areas
|
||||
|
||||
/area/ctf
|
||||
name = "Capture the Flag"
|
||||
icon_state = "yellow"
|
||||
requires_power = 0
|
||||
has_gravity = 1
|
||||
|
||||
/area/ctf/control_room
|
||||
name = "Control Room A"
|
||||
|
||||
/area/ctf/control_room2
|
||||
name = "Control Room B"
|
||||
|
||||
/area/ctf/central
|
||||
name = "Central"
|
||||
|
||||
/area/ctf/main_hall
|
||||
name = "Main Hall A"
|
||||
|
||||
/area/ctf/main_hall2
|
||||
name = "Main Hall B"
|
||||
|
||||
/area/ctf/corridor
|
||||
name = "Corridor A"
|
||||
|
||||
/area/ctf/corridor2
|
||||
name = "Corridor B"
|
||||
|
||||
/area/ctf/flag_room
|
||||
name = "Flag Room A"
|
||||
|
||||
/area/ctf/flag_room2
|
||||
name = "Flag Room B"
|
||||
|
||||
|
||||
//Control Point
|
||||
|
||||
@@ -487,6 +568,7 @@
|
||||
icon = 'icons/obj/machines/dominator.dmi'
|
||||
icon_state = "dominator"
|
||||
anchored = 1
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
var/obj/machinery/capture_the_flag/controlling
|
||||
var/team = "none"
|
||||
var/point_rate = 1
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
if(!uses)
|
||||
user << "<span class='warning'>This spawner is out of charges!</span>"
|
||||
return
|
||||
if(jobban_isbanned(user, "lavaland"))
|
||||
user << "<span class='warning'>You are jobanned!</span>"
|
||||
return
|
||||
var/ghost_role = alert("Become [mob_name]? (Warning, You can no longer be cloned!)",,"Yes","No")
|
||||
if(ghost_role == "No" || !loc)
|
||||
return
|
||||
@@ -106,6 +109,7 @@
|
||||
var/radio = null
|
||||
var/glasses = null
|
||||
var/mask = null
|
||||
var/neck = null
|
||||
var/helmet = null
|
||||
var/belt = null
|
||||
var/pocket1 = null
|
||||
@@ -114,6 +118,7 @@
|
||||
var/has_id = 0 //Just set to 1 if you want them to have an ID
|
||||
var/id_job = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
|
||||
var/id_access = 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/id_access_list = null //Allows you to manually add access to an ID card.
|
||||
var/id_icon = null //For setting it to be a gold, silver, centcom etc ID
|
||||
var/husk = null
|
||||
var/outfit_type = null // Will start with this if exists then apply specific slots
|
||||
@@ -140,6 +145,8 @@
|
||||
H.equip_to_slot_or_del(new glasses(H), slot_glasses)
|
||||
if(mask)
|
||||
H.equip_to_slot_or_del(new mask(H), slot_wear_mask)
|
||||
if(neck)
|
||||
H.equip_to_slot_or_del(new neck(H), slot_neck)
|
||||
if(helmet)
|
||||
H.equip_to_slot_or_del(new helmet(H), slot_head)
|
||||
if(belt)
|
||||
@@ -151,9 +158,9 @@
|
||||
if(back)
|
||||
H.equip_to_slot_or_del(new back(H), slot_back)
|
||||
if(l_hand)
|
||||
H.equip_to_slot_or_del(new l_hand(H), slot_l_hand)
|
||||
H.put_in_hands_or_del(new l_hand(H))
|
||||
if(r_hand)
|
||||
H.equip_to_slot_or_del(new r_hand(H), slot_r_hand)
|
||||
H.put_in_hands_or_del(new r_hand(H))
|
||||
if(has_id)
|
||||
var/obj/item/weapon/card/id/W = new(H)
|
||||
if(id_icon)
|
||||
@@ -169,6 +176,10 @@
|
||||
W.access = jobdatum.get_access()
|
||||
else
|
||||
W.access = list()
|
||||
if(id_access_list)
|
||||
if(!W.access)
|
||||
W.access = list()
|
||||
W.access |= id_access_list
|
||||
if(id_job)
|
||||
W.assignment = id_job
|
||||
W.registered_name = H.real_name
|
||||
@@ -255,7 +266,7 @@
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
has_id = 1
|
||||
id_job = "Operative"
|
||||
id_access = "Syndicate"
|
||||
id_access_list = list(access_syndicate)
|
||||
|
||||
/obj/effect/mob_spawn/human/syndicatecommando
|
||||
name = "Syndicate Commando"
|
||||
@@ -270,7 +281,7 @@
|
||||
pocket1 = /obj/item/weapon/tank/internals/emergency_oxygen
|
||||
has_id = 1
|
||||
id_job = "Operative"
|
||||
id_access = "Syndicate"
|
||||
id_access_list = list(access_syndicate)
|
||||
|
||||
///////////Civilians//////////////////////
|
||||
|
||||
|
||||
@@ -1,34 +1,3 @@
|
||||
//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/implant/exile
|
||||
name = "exile implant"
|
||||
desc = "Prevents you from returning from away missions"
|
||||
origin_tech = "materials=2;biotech=3;magnets=2;bluespace=3"
|
||||
activated = 0
|
||||
|
||||
/obj/item/weapon/implant/exile/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Nanotrasen 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/implanter/exile
|
||||
name = "implanter (exile)"
|
||||
|
||||
/obj/item/weapon/implanter/exile/New()
|
||||
imp = new /obj/item/weapon/implant/exile( src )
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implantcase/exile
|
||||
name = "implant case - 'Exile'"
|
||||
desc = "A glass case containing an exile implant."
|
||||
|
||||
/obj/item/weapon/implantcase/exile/New()
|
||||
imp = new /obj/item/weapon/implant/exile(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/exile
|
||||
name = "exile implants"
|
||||
|
||||
@@ -7,7 +7,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
icon_state = "off"
|
||||
density = 1
|
||||
anchored = 1
|
||||
unacidable = 1
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/active = 0
|
||||
|
||||
|
||||
@@ -253,10 +253,10 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
if(!stationgate || qdeleted(stationgate))
|
||||
return
|
||||
if(istype(AM, /mob/living/carbon))
|
||||
for(var/obj/item/weapon/implant/exile/E in AM)//Checking that there is an exile implant in the contents
|
||||
if(E.imp_in == AM)//Checking that it's actually implanted vs just in their pocket
|
||||
AM << "\black The station gate has detected your exile implant and is blocking your entry."
|
||||
return
|
||||
var/mob/living/carbon/C = AM
|
||||
for(var/obj/item/weapon/implant/exile/E in C.implants)//Checking that there is an exile implant
|
||||
AM << "\black The station gate has detected your exile implant and is blocking your entry."
|
||||
return
|
||||
AM.forceMove(get_step(stationgate.loc, SOUTH))
|
||||
AM.setDir(SOUTH)
|
||||
if (ismob(AM))
|
||||
|
||||
@@ -41,8 +41,9 @@ var/global/dmm_suite/preloader/_preloader = new
|
||||
var/list/grid_models = list()
|
||||
var/key_len = 0
|
||||
|
||||
dmmRegex.next = 1
|
||||
while(dmmRegex.Find(tfile, dmmRegex.next))
|
||||
var/stored_index = 1
|
||||
while(dmmRegex.Find(tfile, stored_index))
|
||||
stored_index = dmmRegex.next
|
||||
|
||||
// "aa" = (/type{vars=blah})
|
||||
if(dmmRegex.group[1]) // Model
|
||||
@@ -361,13 +362,6 @@ var/global/dmm_suite/preloader/_preloader = new
|
||||
|
||||
return to_return
|
||||
|
||||
//atom creation method that preloads variables at creation
|
||||
/atom/New()
|
||||
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
|
||||
_preloader.load(src)
|
||||
|
||||
. = ..()
|
||||
|
||||
/dmm_suite/Destroy()
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
|
||||
/*
|
||||
SwapMaps library by Lummox JR
|
||||
@@ -509,7 +509,7 @@ var/swapmaps_initialized
|
||||
var/swapmaps_loaded
|
||||
var/swapmaps_byname
|
||||
|
||||
proc/InitializeSwapMaps()
|
||||
/proc/InitializeSwapMaps()
|
||||
if(swapmaps_initialized) return
|
||||
swapmaps_initialized=1
|
||||
swapmaps_compiled_maxx=world.maxx
|
||||
@@ -523,16 +523,16 @@ proc/InitializeSwapMaps()
|
||||
// so you can look up an icon file by name or vice-versa
|
||||
swapmaps_iconcache[swapmaps_iconcache[V]]=V
|
||||
|
||||
proc/SwapMaps_AddIconToCache(name,icon)
|
||||
/proc/SwapMaps_AddIconToCache(name,icon)
|
||||
if(!swapmaps_iconcache) swapmaps_iconcache=list()
|
||||
swapmaps_iconcache[name]=icon
|
||||
swapmaps_iconcache[icon]=name
|
||||
|
||||
proc/SwapMaps_Find(id)
|
||||
/proc/SwapMaps_Find(id)
|
||||
InitializeSwapMaps()
|
||||
return swapmaps_byname[id]
|
||||
|
||||
proc/SwapMaps_Load(id)
|
||||
/proc/SwapMaps_Load(id)
|
||||
InitializeSwapMaps()
|
||||
var/swapmap/M=swapmaps_byname[id]
|
||||
if(!M)
|
||||
@@ -553,29 +553,29 @@ proc/SwapMaps_Load(id)
|
||||
M.mode=text
|
||||
return M
|
||||
|
||||
proc/SwapMaps_Save(id)
|
||||
/proc/SwapMaps_Save(id)
|
||||
InitializeSwapMaps()
|
||||
var/swapmap/M=swapmaps_byname[id]
|
||||
if(M) M.Save()
|
||||
return M
|
||||
|
||||
proc/SwapMaps_Save_All()
|
||||
/proc/SwapMaps_Save_All()
|
||||
InitializeSwapMaps()
|
||||
for(var/swapmap/M in swapmaps_loaded)
|
||||
if(M) M.Save()
|
||||
|
||||
proc/SwapMaps_Unload(id)
|
||||
/proc/SwapMaps_Unload(id)
|
||||
InitializeSwapMaps()
|
||||
var/swapmap/M=swapmaps_byname[id]
|
||||
if(!M) return // return silently from an error
|
||||
M.Unload()
|
||||
return 1
|
||||
|
||||
proc/SwapMaps_DeleteFile(id)
|
||||
/proc/SwapMaps_DeleteFile(id)
|
||||
fdel("map_[id].sav")
|
||||
fdel("map_[id].txt")
|
||||
|
||||
proc/SwapMaps_CreateFromTemplate(template_id)
|
||||
/proc/SwapMaps_CreateFromTemplate(template_id)
|
||||
var/swapmap/M=new
|
||||
var/savefile/S
|
||||
var/text=0
|
||||
@@ -602,7 +602,7 @@ proc/SwapMaps_CreateFromTemplate(template_id)
|
||||
while(M.locked) sleep(1)
|
||||
return M
|
||||
|
||||
proc/SwapMaps_LoadChunk(chunk_id,turf/locorner)
|
||||
/proc/SwapMaps_LoadChunk(chunk_id,turf/locorner)
|
||||
var/swapmap/M=new
|
||||
var/savefile/S
|
||||
var/text=0
|
||||
@@ -629,7 +629,7 @@ proc/SwapMaps_LoadChunk(chunk_id,turf/locorner)
|
||||
qdel(M)
|
||||
return 1
|
||||
|
||||
proc/SwapMaps_SaveChunk(chunk_id,turf/corner1,turf/corner2)
|
||||
/proc/SwapMaps_SaveChunk(chunk_id,turf/corner1,turf/corner2)
|
||||
if(!corner1 || !corner2)
|
||||
world.log << "SwapMaps error in SwapMaps_SaveChunk():"
|
||||
if(!corner1) world.log << " corner1 turf is null"
|
||||
@@ -650,7 +650,7 @@ proc/SwapMaps_SaveChunk(chunk_id,turf/corner1,turf/corner2)
|
||||
qdel(M)
|
||||
return 1
|
||||
|
||||
proc/SwapMaps_GetSize(id)
|
||||
/proc/SwapMaps_GetSize(id)
|
||||
var/savefile/S
|
||||
var/text=0
|
||||
if(swapmaps_mode==SWAPMAPS_TEXT && fexists("map_[id].txt"))
|
||||
|
||||
@@ -1,32 +1,3 @@
|
||||
//Academy Areas
|
||||
|
||||
/area/awaymission/academy
|
||||
name = "Academy Asteroids"
|
||||
icon_state = "away"
|
||||
|
||||
/area/awaymission/academy/headmaster
|
||||
name = "Academy Fore Block"
|
||||
icon_state = "away1"
|
||||
|
||||
/area/awaymission/academy/classrooms
|
||||
name = "Academy Classroom Block"
|
||||
icon_state = "away2"
|
||||
|
||||
/area/awaymission/academy/academyaft
|
||||
name = "Academy Ship Aft Block"
|
||||
icon_state = "away3"
|
||||
|
||||
/area/awaymission/academy/academygate
|
||||
name = "Academy Gateway"
|
||||
icon_state = "away4"
|
||||
|
||||
/area/awaymission/academy/academycellar
|
||||
name = "Academy Cellar"
|
||||
icon_state = "away4"
|
||||
|
||||
/area/awaymission/academy/academyengine
|
||||
name = "Academy Engine"
|
||||
icon_state = "away4"
|
||||
|
||||
//Academy Items
|
||||
|
||||
@@ -57,17 +28,22 @@
|
||||
icon = 'icons/obj/cult.dmi'
|
||||
icon_state = "forge"
|
||||
anchored = 1
|
||||
var/health = 200
|
||||
obj_integrity = 200
|
||||
max_integrity = 200
|
||||
var/mob/living/current_wizard = null
|
||||
var/next_check = 0
|
||||
var/cooldown = 600
|
||||
var/faction = "wizard"
|
||||
var/broken = 0
|
||||
var/braindead_check = 0
|
||||
|
||||
/obj/structure/academy_wizard_spawner/New()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/structure/academy_wizard_spawner/Destroy()
|
||||
if(!broken)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/structure/academy_wizard_spawner/process()
|
||||
if(next_check < world.time)
|
||||
if(!current_wizard)
|
||||
@@ -91,7 +67,7 @@
|
||||
if(!current_wizard)
|
||||
return
|
||||
spawn(0)
|
||||
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as Wizard Academy Defender?", "wizard", null, ROLE_WIZARD)
|
||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as Wizard Academy Defender?", "wizard", null, ROLE_WIZARD, current_wizard)
|
||||
var/mob/dead/observer/chosen = null
|
||||
|
||||
if(candidates.len)
|
||||
@@ -121,34 +97,18 @@
|
||||
|
||||
wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt)
|
||||
wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile)
|
||||
wizmind.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball)
|
||||
wizmind.AddSpell(new /obj/effect/proc_holder/spell/fireball)
|
||||
|
||||
current_wizard = wizbody
|
||||
|
||||
give_control()
|
||||
|
||||
/obj/structure/academy_wizard_spawner/proc/update_status()
|
||||
if(health<0)
|
||||
/obj/structure/academy_wizard_spawner/deconstruct(disassembled = TRUE)
|
||||
if(!broken)
|
||||
broken = 1
|
||||
visible_message("<span class='warning'>[src] breaks down!</span>")
|
||||
icon_state = "forge_off"
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
broken = 1
|
||||
|
||||
/obj/structure/academy_wizard_spawner/attackby(obj/item/weapon/W, mob/living/user, params)
|
||||
add_fingerprint(user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(!broken)
|
||||
health -= W.force
|
||||
update_status()
|
||||
..()
|
||||
|
||||
/obj/structure/academy_wizard_spawner/bullet_act(obj/item/projectile/Proj)
|
||||
if(!broken)
|
||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
||||
health -= Proj.damage
|
||||
update_status()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/outfit/wizard/academy
|
||||
name = "Academy Wizard"
|
||||
@@ -163,9 +123,9 @@
|
||||
desc = "A die with twenty sides. You can feel unearthly energies radiating from it. Using this might be VERY risky."
|
||||
icon_state = "d20"
|
||||
sides = 20
|
||||
can_be_rigged = FALSE
|
||||
var/reusable = 1
|
||||
var/used = 0
|
||||
var/rigged = -1
|
||||
|
||||
/obj/item/weapon/dice/d20/fate/one_use
|
||||
reusable = 0
|
||||
@@ -176,7 +136,7 @@
|
||||
if(!ishuman(user) || !user.mind || (user.mind in ticker.mode.wizards))
|
||||
user << "<span class='warning'>You feel the magic of the dice is restricted to ordinary humans!</span>"
|
||||
return
|
||||
if(rigged > 0)
|
||||
if(rigged)
|
||||
effect(user,rigged)
|
||||
else
|
||||
effect(user,result)
|
||||
@@ -253,7 +213,7 @@
|
||||
new /obj/item/weapon/coin/gold(M)
|
||||
if(14)
|
||||
//Free Gun
|
||||
new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(src))
|
||||
new /obj/item/weapon/gun/ballistic/revolver/mateba(get_turf(src))
|
||||
if(15)
|
||||
//Random One-use spellbook
|
||||
new /obj/item/weapon/spellbook/oneuse/random(get_turf(src))
|
||||
@@ -266,7 +226,7 @@
|
||||
servant_mind.objectives += O
|
||||
servant_mind.transfer_to(H)
|
||||
|
||||
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [user.real_name] Servant?", "wizard")
|
||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", "wizard", mob = H)
|
||||
var/mob/dead/observer/chosen = null
|
||||
|
||||
if(candidates.len)
|
||||
|
||||
@@ -1,74 +1,57 @@
|
||||
/*Cabin areas*/
|
||||
/area/awaymission/snowforest
|
||||
name = "Snow Forest"
|
||||
icon_state = "away"
|
||||
requires_power = 0
|
||||
luminosity = 1
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_ENABLED
|
||||
|
||||
/area/awaymission/cabin
|
||||
name = "Cabin"
|
||||
icon_state = "away2"
|
||||
requires_power = 1
|
||||
luminosity = 0
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_ENABLED
|
||||
|
||||
/area/awaymission/snowforest/lumbermill
|
||||
name = "Lumbermill"
|
||||
icon_state = "away3"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*Cabin code*/
|
||||
/obj/structure/fireplace
|
||||
name = "fireplace"
|
||||
/obj/structure/firepit
|
||||
name = "firepit"
|
||||
desc = "warm and toasty"
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "fireplace-active"
|
||||
icon = 'icons/obj/fireplace.dmi'
|
||||
icon_state = "firepit-active"
|
||||
density = 0
|
||||
var/active = 1
|
||||
|
||||
/obj/structure/fireplace/initialize()
|
||||
/obj/structure/firepit/initialize()
|
||||
..()
|
||||
toggleFireplace()
|
||||
toggleFirepit()
|
||||
|
||||
/obj/structure/fireplace/attack_hand(mob/living/user)
|
||||
/obj/structure/firepit/attack_hand(mob/living/user)
|
||||
if(active)
|
||||
active = 0
|
||||
toggleFireplace()
|
||||
toggleFirepit()
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/fireplace/attackby(obj/item/W,mob/living/user,params)
|
||||
/obj/structure/firepit/attackby(obj/item/W,mob/living/user,params)
|
||||
if(!active)
|
||||
if(W.is_hot())
|
||||
active = 1
|
||||
toggleFireplace()
|
||||
var/msg = W.ignition_effect(src, user)
|
||||
if(msg)
|
||||
active = TRUE
|
||||
visible_message(msg)
|
||||
toggleFirepit()
|
||||
else
|
||||
return ..()
|
||||
else
|
||||
W.fire_act()
|
||||
|
||||
/obj/structure/fireplace/proc/toggleFireplace()
|
||||
/obj/structure/firepit/proc/toggleFirepit()
|
||||
if(active)
|
||||
set_light(8)
|
||||
icon_state = "fireplace-active"
|
||||
SetLuminosity(8)
|
||||
icon_state = "firepit-active"
|
||||
else
|
||||
set_light(0)
|
||||
icon_state = "fireplace"
|
||||
SetLuminosity(0)
|
||||
icon_state = "firepit"
|
||||
|
||||
/obj/structure/fireplace/extinguish()
|
||||
/obj/structure/firepit/extinguish()
|
||||
if(active)
|
||||
active = 0
|
||||
toggleFireplace()
|
||||
active = FALSE
|
||||
toggleFirepit()
|
||||
|
||||
/obj/structure/fireplace/fire_act()
|
||||
/obj/structure/firepit/fire_act(exposed_temperature, exposed_volume)
|
||||
if(!active)
|
||||
active = 1
|
||||
toggleFireplace()
|
||||
active = TRUE
|
||||
toggleFirepit()
|
||||
|
||||
|
||||
|
||||
//other Cabin Stuff//
|
||||
|
||||
/obj/machinery/recycler/lumbermill
|
||||
name = "lumbermill saw"
|
||||
@@ -96,7 +79,8 @@
|
||||
|
||||
/*Cabin's forest*/
|
||||
/datum/mapGenerator/snowy
|
||||
modules = list(/datum/mapGeneratorModule/snow/pineTrees, \
|
||||
modules = list(/datum/mapGeneratorModule/bottomlayer/snow, \
|
||||
/datum/mapGeneratorModule/snow/pineTrees, \
|
||||
/datum/mapGeneratorModule/snow/deadTrees, \
|
||||
/datum/mapGeneratorModule/snow/randBushes, \
|
||||
/datum/mapGeneratorModule/snow/randIceRocks, \
|
||||
@@ -106,6 +90,9 @@
|
||||
if(istype(T,/turf/open/floor/plating/asteroid/snow))
|
||||
return ..(T)
|
||||
return 0
|
||||
|
||||
/datum/mapGeneratorModule/bottomlayer/snow
|
||||
spawnableTurfs = list(/turf/open/floor/plating/asteroid/snow/atmosphere = 100)
|
||||
|
||||
/datum/mapGeneratorModule/snow/pineTrees
|
||||
spawnableAtoms = list(/obj/structure/flora/tree/pine = 30)
|
||||
|
||||
@@ -1,38 +1,4 @@
|
||||
//centcomAway areas
|
||||
|
||||
/area/awaymission/centcomAway
|
||||
name = "XCC-P5831"
|
||||
icon_state = "away"
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/centcomAway/general
|
||||
name = "XCC-P5831"
|
||||
music = "music/ambigen3.ogg"
|
||||
|
||||
/area/awaymission/centcomAway/maint
|
||||
name = "XCC-P5831 Maintenance"
|
||||
icon_state = "away1"
|
||||
music = "music/ambisin1.ogg"
|
||||
|
||||
/area/awaymission/centcomAway/thunderdome
|
||||
name = "XCC-P5831 Thunderdome"
|
||||
icon_state = "away2"
|
||||
music = "music/ambisin2.ogg"
|
||||
|
||||
/area/awaymission/centcomAway/cafe
|
||||
name = "XCC-P5831 Kitchen Arena"
|
||||
icon_state = "away3"
|
||||
music = "music/ambisin3.ogg"
|
||||
|
||||
/area/awaymission/centcomAway/courtroom
|
||||
name = "XCC-P5831 Courtroom"
|
||||
icon_state = "away4"
|
||||
music = "music/ambisin4.ogg"
|
||||
|
||||
/area/awaymission/centcomAway/hangar
|
||||
name = "XCC-P5831 Hangars"
|
||||
icon_state = "away4"
|
||||
music = "music/ambigen5.ogg"
|
||||
|
||||
//centcomAway items
|
||||
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
//Challenge Areas
|
||||
|
||||
/area/awaymission/challenge/start
|
||||
name = "Where Am I?"
|
||||
icon_state = "away"
|
||||
|
||||
/area/awaymission/challenge/main
|
||||
name = "Danger Room"
|
||||
icon_state = "away1"
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/challenge/end
|
||||
name = "Administration"
|
||||
icon_state = "away2"
|
||||
requires_power = 0
|
||||
|
||||
|
||||
/obj/machinery/power/emitter/energycannon
|
||||
name = "Energy Cannon"
|
||||
@@ -22,6 +6,7 @@
|
||||
icon_state = "emitter"
|
||||
anchored = 1
|
||||
density = 1
|
||||
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
use_power = 0
|
||||
idle_power_usage = 0
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "Research Outpost"
|
||||
icon_state = "away"
|
||||
luminosity = 0
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_ENABLED
|
||||
// dynamic_lighting = DYNAMIC_LIGHTING_ENABLED
|
||||
|
||||
/area/awaymission/research/interior
|
||||
name = "Research Inside"
|
||||
|
||||
@@ -1,51 +1,15 @@
|
||||
//Snow Valley Areas//--
|
||||
|
||||
/area/awaymission/snowdin
|
||||
name = "Snowdin Tundra Plains"
|
||||
icon_state = "away"
|
||||
requires_power = 0
|
||||
luminosity = 1
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_ENABLED
|
||||
|
||||
/area/awaymission/snowdin/post
|
||||
name = "Snowdin Outpost"
|
||||
requires_power = 1
|
||||
|
||||
/area/awaymission/snowdin/igloo
|
||||
name = "Snowdin Igloos"
|
||||
icon_state = "away2"
|
||||
|
||||
/area/awaymission/snowdin/cave
|
||||
name = "Snowdin Caves"
|
||||
icon_state = "away2"
|
||||
luminosity = 0
|
||||
|
||||
/area/awaymission/snowdin/base
|
||||
name = "Snowdin Main Base"
|
||||
icon_state = "away3"
|
||||
requires_power = 1
|
||||
|
||||
/area/awaymission/snowdin/dungeon1
|
||||
name = "Snowdin Depths"
|
||||
icon_state = "away2"
|
||||
luminosity = 0
|
||||
|
||||
/area/awaymission/snowdin/sekret
|
||||
name = "Snowdin Operations"
|
||||
icon_state = "away3"
|
||||
requires_power = 1
|
||||
|
||||
//notes for lore or treasure hints wow//--
|
||||
|
||||
/obj/item/weapon/paper/crumpled/snowdin/snowdingatewaynotice
|
||||
name = "scribbled note"
|
||||
info = {"The gateway has been inactive for months, engineers think its due to the recent drop in tempature fucking with the
|
||||
info = {"The gateway has been inactive for months, engineers think it's due to the recent drop in tempature fucking with the
|
||||
circuitry or something. Without a constant supply of resources from central command, our stock is getting awfully low. Some of the security members have taken to
|
||||
using the sparse rifle ammo left to hunting some of the wildlife to try and keep our food supply from emptying. God forbid if the heating goes out, I don't want to
|
||||
die as a fucking popsicle down here."}
|
||||
|
||||
/obj/item/weapon/paper/crumpled/snowdin/misc1
|
||||
name = "Mission Prologe"
|
||||
name = "Mission Prologue"
|
||||
info = {"Holy shit, what a rush! Those Nanotrasen bastards didn't even know what hit 'em! All five of us dropped in right on the captain, didn't even have time to yell! We were in and out with that disk in mere minutes!
|
||||
Crew didn't even know what was happening till the delta alert went down and by then were were already gone. We got a case to drink on the way home to celebrate, fuckin' job well done!"}
|
||||
|
||||
@@ -62,45 +26,45 @@
|
||||
freezing shut along with a couple storage crates with supplies. Nothing on the radio so far, what the hell do they even expect to hear down here, anyway?<br><br><b>September 15th</b>
|
||||
<br>Another supply shipment through the gateway, they've sent some heavier sets of clothes for the coming winter months. Central said they might encounter issues with shipments
|
||||
during December to Feburary, so we should try to be frugal with the next shipment.<br><br><b>November 20th</b><br>Final shipment from central for the next few months. Going outside
|
||||
for more than 10-15 minutes without losing feeling in your fingers is difficult. We've finally gotten a signal on the radio, its mostly some weird static though. One of the researchers is trying to decypher it.
|
||||
<br><br><b>December 10th</b><br>Signal has gotten much stronger, it almost seems like its coming from under us according to what the researcher managed to decypher. We're waiting from the go from central before investigating.<br><br>
|
||||
<i>The rest of the paper seems to be a mixture of scribles and smudged ink.</i> "}
|
||||
for more than 10-15 minutes without losing feeling in your fingers is difficult. We've finally gotten a signal on the radio, it's mostly some weird static though. One of the researchers is trying to decypher it.
|
||||
<br><br><b>December 10th</b><br>Signal has gotten much stronger, it almost seems like it's coming from under us according to what the researcher managed to decypher. We're waiting from the go from central before investigating.<br><br>
|
||||
<i>The rest of the paper seems to be a mixture of scribbles and smudged ink.</i> "}
|
||||
|
||||
/obj/item/weapon/paper/snowdin/snowdinlog2
|
||||
name = "Activity Log"
|
||||
info = {"<b><center>ACTIVITY LOG</b></center><br><br><b>June 14th</b><br>Movement to the second post is finally done. We're located on the most-southern area of the valley with a similar objective as the northen post.
|
||||
Theres two mid-way stops on the eastern and western sides of the valley so movement inbetween bases isn't horrible. Not too big of a fan of relying on the northen base for
|
||||
info = {"<b><center>ACTIVITY LOG</b></center><br><br><b>June 14th</b><br>Movement to the second post is finally done. We're located on the southernmost area of the valley with a similar objective as the northern post.
|
||||
There are two mid-way stops on the eastern and western sides of the valley so movement in between bases isn't horrible. Not too big of a fan of relying on the northern base for
|
||||
equal supply distribution, though.<br><br><b>August 27h</b><br>First shipment arrived finally, about 4 days after the gateway shipped. Insulation on these buildings is awful, thank god for the spare heaters at least.<br><br>
|
||||
<b>September 20th</b><br>Another shipment arrival, standard shit. Our radios have been picking up a weird signal during the nights recently, we've sent the transcripts over to the northen
|
||||
<b>September 20th</b><br>Another shipment arrival, standard shit. Our radios have been picking up a weird signal during the nights recently, we've sent the transcripts over to the northern
|
||||
base to be decyphered. Probably some drunk russians or something equally stupid.<br><br><b>November 24th</b><br>We've lost communications with the northern base after recieving the last
|
||||
shipment of supplies. The snow has really kicked up recently, shits almost like a constant blizzard right now. Maybe it'll drop down soon so we can get a word in.<br><br>
|
||||
<i>The rest of the paper seems to be a mixture of scribles and smudged ink.</i> "}
|
||||
<i>The rest of the paper seems to be a mixture of scribbles and smudged ink.</i> "}
|
||||
|
||||
obj/item/weapon/paper/snowdin/secnotice
|
||||
/obj/item/weapon/paper/snowdin/secnotice
|
||||
name = "Security Notice"
|
||||
info = {"You have been assigned a postion on a listening outpost. Here you'll be watching over a several crewmembers assigned to watching signals of the general area.
|
||||
info = {"You have been assigned a position on a listening outpost. Here you'll be watching over several crewmembers assigned to watching signals of the general area.
|
||||
As not much is expected in terms of issues, we've only assigned one guard per outpost. Crewmembers are expected to keep to their regulated work schedules and may be
|
||||
disciplined properly if found slacking. Food hording is heavily discouraged as all outposts will be sharing from the same shipment every 2-3 months. Hording of supplies
|
||||
disciplined properly if found slacking. Food hoarding is heavily discouraged as all outposts will be sharing from the same shipment every 2-3 months. Hoarding of supplies
|
||||
should be punished severely as to prevent future incidients. Mutiny and/or rioting should be reported to central and dealt with swiftly. You're here to secure and protect
|
||||
Nanotrasen assets, not be a police officer. Do what you must, but make sure its not messy."}
|
||||
Nanotrasen assets, not be a police officer. Do what you must, but make sure it's not messy."}
|
||||
|
||||
obj/item/weapon/paper/snowdin/syndienotice
|
||||
/obj/item/weapon/paper/snowdin/syndienotice
|
||||
name = "Assignment Notice"
|
||||
info = {"You've been assigned as an agent to listen in on Nanotrasen activities from passing ships and nearby stations. The outpost you've been assigned to is under lays of solid
|
||||
ice and we've supplied you with a scrambler to help avoid Nanotrasen discovery, as they've recently built a listening post of their own aboveground. Get aquainted with your new
|
||||
crewmates, because you're gonna be here for awhile. Enjoy the free syndicakes."}
|
||||
|
||||
obj/item/weapon/paper/crumpled/snowdin/syndielava
|
||||
/obj/item/weapon/paper/crumpled/snowdin/syndielava
|
||||
name = "scribbled note"
|
||||
info = {"Some cracks in the ice nearby have exposed some sort of hidden magma stream under all this shit ice. I don't know whats worse at this point honestly; freezing to death or
|
||||
burning alive."}
|
||||
|
||||
obj/item/weapon/paper/crumpled/snowdin/lootstructures
|
||||
/obj/item/weapon/paper/crumpled/snowdin/lootstructures
|
||||
name = "scribbled note"
|
||||
info = {"From what we've seen so far, theres a ton of iced over ruins down here in the caves. We sent a few men out to check things out and they never came back, so we decided to
|
||||
info = {"From what we've seen so far, theres a ton of iced-over ruins down here in the caves. We sent a few men out to check things out and they never came back, so we decided to
|
||||
border up majority of the ruins. We've heard some weird shit coming out of these caves and I'm not gonna find out the hard way myself."}
|
||||
|
||||
obj/item/weapon/paper/crumpled/snowdin/shovel
|
||||
/obj/item/weapon/paper/crumpled/snowdin/shovel
|
||||
name = "shoveling duties"
|
||||
info = {"Snow piles up bad here all-year round, even worse during the winter months. Keeping a constant rotation of shoveling that shit out of the way of the airlocks and keeping the paths decently clear
|
||||
is a good step towards not getting stuck walking through knee-deep snow."}
|
||||
@@ -166,7 +130,7 @@ obj/item/weapon/paper/crumpled/snowdin/shovel
|
||||
/obj/item/organ/brain/alien = 17,
|
||||
/obj/item/weapon/twohanded/dualsaber = 15,
|
||||
/obj/item/organ/heart/demon = 7,
|
||||
/obj/item/weapon/gun/projectile/automatic/c20r/unrestricted = 16,
|
||||
/obj/item/weapon/gun/ballistic/automatic/c20r/unrestricted = 16,
|
||||
/obj/item/weapon/gun/magic/wand/resurrection/inert = 15,
|
||||
/obj/item/weapon/gun/magic/wand/resurrection = 10,
|
||||
/obj/item/device/radio/uplink/old = 2,
|
||||
@@ -193,7 +157,7 @@ obj/item/weapon/paper/crumpled/snowdin/shovel
|
||||
/obj/item/clothing/under/syndicate/coldres
|
||||
name = "insulated tactical turtleneck"
|
||||
desc = "A non-descript and slightly suspicious looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection"
|
||||
armor = list(melee = 20, bullet = 10, laser = 0,energy = 5, bomb = 0, bio = 0, rad = 0)
|
||||
armor = list(melee = 20, bullet = 10, laser = 0,energy = 5, bomb = 0, bio = 0, rad = 0, fire = 25, acid = 25)
|
||||
cold_protection = CHEST|GROIN|ARMS|LEGS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
/obj/item/clothing/shoes/combat/coldres
|
||||
@@ -220,16 +184,16 @@ obj/item/weapon/paper/crumpled/snowdin/shovel
|
||||
hidden_uplink.name = "dusty radio"
|
||||
hidden_uplink.telecrystals = 10
|
||||
|
||||
obj/effect/mob_spawn/human/syndicatesoldier/coldres
|
||||
/obj/effect/mob_spawn/human/syndicatesoldier/coldres
|
||||
name = "Syndicate Snow Operative"
|
||||
uniform = /obj/item/clothing/under/syndicate/coldres
|
||||
shoes = /obj/item/clothing/shoes/combat/coldres
|
||||
radio = /obj/item/device/radio/headset/syndicate/alt
|
||||
pocket1 = /obj/item/weapon/gun/projectile/automatic/pistol
|
||||
pocket1 = /obj/item/weapon/gun/ballistic/automatic/pistol
|
||||
pocket2 = /obj/item/weapon/card/id/syndicate
|
||||
has_id = 0
|
||||
|
||||
obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive
|
||||
/obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive
|
||||
name = "sleeper"
|
||||
mob_name = "Syndicate Snow Operative"
|
||||
icon = 'icons/obj/Cryogenic2.dmi'
|
||||
@@ -241,7 +205,7 @@ obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive
|
||||
flavour_text = {"You are a syndicate operative recently awoken from cyrostatis in an underground outpost. Monitor Nanotrasen communications and record infomation. All intruders should be
|
||||
disposed of swirfly to assure no gathered infomation is stolen or lost. Try not to wander too far from the outpost as the caves can be a deadly place even for a trained operative such as yourself."}
|
||||
|
||||
obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive/female
|
||||
/obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive/female
|
||||
mob_gender = FEMALE
|
||||
|
||||
//mobs//--
|
||||
@@ -277,3 +241,4 @@ obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive/female
|
||||
name = "icey rocks"
|
||||
color = rgb(114,228,250)
|
||||
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
//Spacebattle Areas
|
||||
|
||||
/area/awaymission/spacebattle
|
||||
name = "Space Battle"
|
||||
icon_state = "away"
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/spacebattle/cruiser
|
||||
name = "Nanotrasen Cruiser"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate1
|
||||
name = "Syndicate Assault Ship 1"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate2
|
||||
name = "Syndicate Assault Ship 2"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate3
|
||||
name = "Syndicate Assault Ship 3"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate4
|
||||
name = "Syndicate War Sphere 1"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate5
|
||||
name = "Syndicate War Sphere 2"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate6
|
||||
name = "Syndicate War Sphere 3"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate7
|
||||
name = "Syndicate Fighter"
|
||||
|
||||
/area/awaymission/spacebattle/secret
|
||||
name = "Hidden Chamber"
|
||||
@@ -7,7 +7,6 @@
|
||||
* for anyone who wants to make their own stuff.
|
||||
*
|
||||
* Contains:
|
||||
* Areas
|
||||
* Landmarks
|
||||
* Guns
|
||||
* Safe code hints
|
||||
@@ -15,29 +14,6 @@
|
||||
* Modified Nar-Sie
|
||||
*/
|
||||
|
||||
/*
|
||||
* Areas
|
||||
*/
|
||||
//Gateroom gets its own APC specifically for the gate
|
||||
/area/awaymission/gateroom
|
||||
|
||||
//Library, medbay, storage room
|
||||
/area/awaymission/southblock
|
||||
|
||||
//Arrivals, security, hydroponics, shuttles (since they dont move, they dont need specific areas)
|
||||
/area/awaymission/arrivalblock
|
||||
|
||||
//Crew quarters, cafeteria, chapel
|
||||
/area/awaymission/midblock
|
||||
|
||||
//engineering, bridge (not really north but it doesnt really need its own APC)
|
||||
/area/awaymission/northblock
|
||||
|
||||
//That massive research room
|
||||
/area/awaymission/research
|
||||
|
||||
//Syndicate shuttle
|
||||
/area/awaymission/syndishuttle
|
||||
|
||||
|
||||
/*
|
||||
@@ -60,7 +36,7 @@
|
||||
* Guns - I'm making these specifically so that I dont spawn a pile of fully loaded weapons on the map.
|
||||
*/
|
||||
//Captain's retro laser - Fires practice laser shots instead.
|
||||
obj/item/weapon/gun/energy/laser/retro/sc_retro
|
||||
/obj/item/weapon/gun/energy/laser/retro/sc_retro
|
||||
name ="retro laser"
|
||||
icon_state = "retro"
|
||||
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces."
|
||||
@@ -68,18 +44,18 @@ obj/item/weapon/gun/energy/laser/retro/sc_retro
|
||||
clumsy_check = 0 //No sense in having a harmless gun blow up in the clowns face
|
||||
|
||||
//Syndicate sub-machine guns.
|
||||
/obj/item/weapon/gun/projectile/automatic/c20r/sc_c20r
|
||||
/obj/item/weapon/gun/ballistic/automatic/c20r/sc_c20r
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/c20r/sc_c20r/New()
|
||||
/obj/item/weapon/gun/ballistic/automatic/c20r/sc_c20r/New()
|
||||
..()
|
||||
for(var/ammo in magazine.stored_ammo)
|
||||
if(prob(95)) //95% chance
|
||||
magazine.stored_ammo -= ammo
|
||||
|
||||
//Barman's shotgun
|
||||
/obj/item/weapon/gun/projectile/shotgun/sc_pump
|
||||
/obj/item/weapon/gun/ballistic/shotgun/sc_pump
|
||||
|
||||
/obj/item/weapon/gun/projectile/shotgun/sc_pump/New()
|
||||
/obj/item/weapon/gun/ballistic/shotgun/sc_pump/New()
|
||||
..()
|
||||
for(var/ammo in magazine.stored_ammo)
|
||||
if(prob(95)) //95% chance
|
||||
@@ -175,7 +151,7 @@ var/sc_safecode5 = "[rand(0,9)]"
|
||||
/obj/singularity/narsie/sc_Narsie/consume(atom/A)
|
||||
if(is_type_in_list(A, uneatable))
|
||||
return 0
|
||||
if (istype(A,/mob/living))
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
L.gib()
|
||||
else if(istype(A,/obj/))
|
||||
|
||||
@@ -4,36 +4,6 @@
|
||||
* Meat Grinder
|
||||
*/
|
||||
|
||||
//Wild West Areas
|
||||
|
||||
/area/awaymission/wwmines
|
||||
name = "Wild West Mines"
|
||||
icon_state = "away1"
|
||||
luminosity = 1
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/wwgov
|
||||
name = "Wild West Mansion"
|
||||
icon_state = "away2"
|
||||
luminosity = 1
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/wwrefine
|
||||
name = "Wild West Refinery"
|
||||
icon_state = "away3"
|
||||
luminosity = 1
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/wwvault
|
||||
name = "Wild West Vault"
|
||||
icon_state = "away3"
|
||||
luminosity = 0
|
||||
|
||||
/area/awaymission/wwvaultdoors
|
||||
name = "Wild West Vault Doors" // this is to keep the vault area being entirely lit because of requires_power
|
||||
icon_state = "away2"
|
||||
requires_power = 0
|
||||
luminosity = 0
|
||||
|
||||
/*
|
||||
* Wish Granter
|
||||
@@ -58,7 +28,7 @@
|
||||
user << "The Wish Granter lies silent."
|
||||
return
|
||||
|
||||
else if(!istype(user, /mob/living/carbon/human))
|
||||
else if(!ishuman(user))
|
||||
user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's."
|
||||
return
|
||||
|
||||
@@ -100,10 +70,7 @@
|
||||
hijack.owner = user.mind
|
||||
user.mind.objectives += hijack
|
||||
user << "<B>Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!</B>"
|
||||
var/obj_count = 1
|
||||
for(var/datum/objective/OBJ in user.mind.objectives)
|
||||
user << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
|
||||
obj_count++
|
||||
user.mind.announce_objectives()
|
||||
user.set_species(/datum/species/shadow)
|
||||
if("Peace")
|
||||
user << "<B>Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence.</B>"
|
||||
@@ -124,15 +91,15 @@
|
||||
icon_state = "blobpod"
|
||||
var/triggered = 0
|
||||
|
||||
/obj/effect/meatgrinder/Crossed(AM as mob|obj)
|
||||
/obj/effect/meatgrinder/Crossed(AM)
|
||||
Bumped(AM)
|
||||
|
||||
/obj/effect/meatgrinder/Bumped(mob/M as mob|obj)
|
||||
/obj/effect/meatgrinder/Bumped(mob/M)
|
||||
|
||||
if(triggered)
|
||||
return
|
||||
|
||||
if(istype(M, /mob/living/carbon/human) && M.stat != DEAD && M.ckey)
|
||||
if(ishuman(M) && M.stat != DEAD && M.ckey)
|
||||
for(var/mob/O in viewers(world.view, src.loc))
|
||||
visible_message("<span class='warning'>[M] triggered the [src]!</span>")
|
||||
triggered = 1
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/obj/structure/signpost/New()
|
||||
. = ..()
|
||||
set_light(2)
|
||||
SetLuminosity(2)
|
||||
|
||||
/obj/structure/signpost/attackby(obj/item/weapon/W, mob/user, params)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
/obj/structure/speaking_tile
|
||||
name = "strange tile"
|
||||
desc = "A weird tile that beckons you towards it. Maybe it can help you get out of this mess..."
|
||||
verb_say = "intones"
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon_state = "speaking_tile"
|
||||
layer = 5
|
||||
var/speaking = FALSE
|
||||
var/times_spoken_to = 0
|
||||
var/list/shenanigans = list()
|
||||
|
||||
/obj/structure/speaking_tile/New()
|
||||
var/savefile/S = new /savefile("data/npc_saves/Poly.sav")
|
||||
S["phrases"] >> shenanigans
|
||||
..()
|
||||
|
||||
/obj/structure/speaking_tile/interact(mob/user)
|
||||
if(!isliving(user) || speaking)
|
||||
return
|
||||
speaking = TRUE
|
||||
|
||||
switch(times_spoken_to)
|
||||
if(0)
|
||||
SpeakPeace(list("Welcome to the error handling room.","Something's goofed up bad to send you here.","You should probably tell an admin what you were doing, or make a bug report."))
|
||||
for(var/obj/structure/signpost/salvation/S in orange(7))
|
||||
S.invisibility = 0
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(1, S.loc)
|
||||
smoke.start()
|
||||
break
|
||||
if(1)
|
||||
SpeakPeace(list("Take that ladder up.","It'll send you back to the station.","Hopefully you'll never need to see this place again."))
|
||||
if(2)
|
||||
SpeakPeace(list("Curious about what happened?","Somehow your corporeal form was sent to nullspace with you still in it.","Lucky for you this room exists to save you from that horrible fate."))
|
||||
if(3)
|
||||
SpeakPeace(list("So yeah, you're welcome.","Anyway don't you have things to do?","There's no real point to sticking around here forever."))
|
||||
if(4)
|
||||
SpeakPeace(list("I'm flattered you care this much about this room.","However it's not proper to just stand in here all shift and see what I'll say.","I'm going to work hard to be more boring so you'll leave."))
|
||||
if(5 to 8)
|
||||
SpeakPeace(list("..."))
|
||||
if(9)
|
||||
SpeakPeace(list("Alright maybe that's <b>too</b> boring.", "I can't keep manually typing these lines out though.", "It's hard to explain but the code structure I'm using is kind of terrible."))
|
||||
if(10)
|
||||
SpeakPeace(list("Oh I have an idea!", "Lets outsource this endless banter to Poly!", "Then you'll be able to keep listening to this without getting bored!"))
|
||||
if(isnull(shenanigans))
|
||||
shenanigans = list("Except the poly file is missing...")
|
||||
if(11 to 14, 16 to 50, 52 to 99, 103 to 107, 109 to 203, 205 to 249, 252 to 665, 667 to 999, 1001 to 5642)
|
||||
SpeakPeace(list(pick(shenanigans),pick(shenanigans),pick(shenanigans)))
|
||||
if(times_spoken_to * 0.1 == round(times_spoken_to * 0.1))
|
||||
SpeakPeace(list("That's [times_spoken_to] times you've spoken to me by the way."))
|
||||
if(15)
|
||||
SpeakPeace(list("See? Isn't this fun?","Now you can mash this for hours without getting bored.","Anyway I'll leave you it."))
|
||||
if(51)
|
||||
SpeakPeace(list("The fun never ends around here.", "The Poly text files stores up to 500 statements.", "But you've probably heard a few repeats by now."))
|
||||
if(100)
|
||||
SpeakPeace(list("And that's a solid hundred.", "Good hustle I guess.", "You've probably heard a lot of repeats by now."))
|
||||
if(101)
|
||||
SpeakPeace(list("I hope you're getting the reference this room is presenting.", "As well as the more obscure meta reference this conversation is presenting.", "This stuff has layers."))
|
||||
if(102)
|
||||
SpeakPeace(list("I am very tempted to just stretch this out forever.","It's technically easier than doing this.","Just an option."))
|
||||
if(108)
|
||||
SpeakPeace(list("But you have my respect for being this dedicated to the joke.", "So tell you what we're going to do, we're going to set a goal.", "250 is your final mission."))
|
||||
if(204)
|
||||
SpeakPeace(list("Notice how there was no special message at 200?", "The slow automation of what used to be meaningful milestones?","It's all part of the joke."))
|
||||
if(250)
|
||||
SpeakPeace(list("Congratulations.", "By my very loose calculations you've now wasted a decent chunk of the round doing this.", "But you've seen this meme to its conclusion, and that's a experience in itself, right?"))
|
||||
if(251)
|
||||
SpeakPeace(list("Anyway, here.", "I can't give you anything that would impact the progression of the round.","But you've earned this at least."))
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/trophy/silver_cup/the_ride = new(get_turf(user))
|
||||
the_ride.name = "Overextending The Joke: Second Place"
|
||||
the_ride.desc = "There's a point where this needed to stop, and we've clearly passed it."
|
||||
if(252)
|
||||
SpeakPeace(list("You know what this means right?", "Of course it's not over!", "The question becomes now is it more impressive to solider on to an unknown finish, or to have to common sense to stop here?"))
|
||||
if(666)
|
||||
SpeakPeace(list("The darkness in your heart won't be filled by simple platitudes.","You won't stop now, you're in this to the end.", "Will you reach the finish line before the round ends?"))
|
||||
if(1000)
|
||||
SpeakPeace(list("The ends exists somewhere beyond meaningful milestones.", "There will be no more messages until then.", "You disgust me."))
|
||||
if(5643)
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/trophy/gold_cup/never_ends = new(get_turf(user))
|
||||
never_ends.name = "Overextending The Joke: First Place"
|
||||
never_ends.desc = "And so we are left alone with our regrets."
|
||||
else
|
||||
y += 2
|
||||
|
||||
speaking = FALSE
|
||||
times_spoken_to++
|
||||
|
||||
/obj/structure/speaking_tile/proc/SpeakPeace(list/statements)
|
||||
for(var/i in 1 to statements.len)
|
||||
say("<span class='deadsay'>[statements[i]]</span>")
|
||||
if(i != statements.len)
|
||||
sleep(30)
|
||||
|
||||
/obj/item/rupee
|
||||
name = "weird crystal"
|
||||
desc = "Your excitement boils away as you realize it's just colored glass. Why would someone hoard these things?"
|
||||
icon = 'icons/obj/economy.dmi'
|
||||
icon_state = "rupee"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
materials = list(MAT_GLASS = 500)
|
||||
|
||||
/obj/item/rupee/New()
|
||||
var/newcolor = color2hex(pick(10;"green", 5;"blue", 3;"red", 1;"purple"))
|
||||
add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY)
|
||||
..()
|
||||
|
||||
/obj/item/rupee/Crossed(mob/M)
|
||||
if(!istype(M))
|
||||
return
|
||||
if(M.put_in_hands(src))
|
||||
if(src != M.get_active_held_item())
|
||||
M.swap_hand()
|
||||
equip_to_best_slot(M)
|
||||
..()
|
||||
|
||||
/obj/item/rupee/equipped(mob/user, slot)
|
||||
playsound(get_turf(loc), 'sound/misc/server-ready.ogg', 50, 1, -1)
|
||||
..()
|
||||
|
||||
/obj/effect/landmark/error
|
||||
name = "error"
|
||||
@@ -127,6 +127,8 @@ var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away
|
||||
var/turf/T = i
|
||||
for(var/mob/living/simple_animal/monster in T)
|
||||
qdel(monster)
|
||||
for(var/obj/structure/flora/ash/plant in T)
|
||||
qdel(plant)
|
||||
template.load(central_turf,centered = TRUE)
|
||||
template.loaded++
|
||||
var/datum/map_template/ruin = template
|
||||
|
||||
Reference in New Issue
Block a user