mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 09:42:29 +00:00
Merge branch 'master' of https://github.com/tgstation/-tg-station
This commit is contained in:
@@ -32,6 +32,9 @@
|
||||
build_click(src, client.buildmode, params, A)
|
||||
return
|
||||
|
||||
if(control_disabled || stat)
|
||||
return
|
||||
|
||||
var/list/modifiers = params2list(params)
|
||||
if(modifiers["middle"])
|
||||
MiddleClickOn(A)
|
||||
@@ -46,7 +49,8 @@
|
||||
CtrlClickOn(A)
|
||||
return
|
||||
|
||||
if(control_disabled || stat || world.time <= next_move) return
|
||||
if(world.time <= next_move)
|
||||
return
|
||||
next_move = world.time + 9
|
||||
|
||||
if(aicamera.in_camera_mode)
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
build_click(src, client.buildmode, params, A)
|
||||
return
|
||||
|
||||
if(stat || lockcharge || weakened || stunned || paralysis)
|
||||
return
|
||||
|
||||
var/list/modifiers = params2list(params)
|
||||
if(modifiers["middle"])
|
||||
MiddleClickOn(A)
|
||||
@@ -29,9 +32,6 @@
|
||||
CtrlClickOn(A)
|
||||
return
|
||||
|
||||
if(stat || lockcharge || weakened || stunned || paralysis)
|
||||
return
|
||||
|
||||
if(next_move >= world.time)
|
||||
return
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ var/datum/global_hud/global_hud = new()
|
||||
druggy = new /obj/screen()
|
||||
druggy.screen_loc = "WEST,SOUTH to EAST,NORTH"
|
||||
druggy.icon_state = "druggy"
|
||||
druggy.blend_mode = BLEND_MULTIPLY
|
||||
druggy.layer = 17
|
||||
druggy.mouse_opacity = 0
|
||||
|
||||
@@ -58,20 +59,24 @@ var/datum/global_hud/global_hud = new()
|
||||
O = darkMask[8]
|
||||
O.screen_loc = "WEST,CENTER+5 to EAST,NORTH" //North black
|
||||
|
||||
|
||||
for(i = 1, i <= 4, i++)
|
||||
O = vimpaired[i]
|
||||
O.icon_state = "dither50"
|
||||
O.blend_mode = BLEND_MULTIPLY
|
||||
O.layer = 17
|
||||
O.mouse_opacity = 0
|
||||
|
||||
O = darkMask[i]
|
||||
O.icon_state = "dither50"
|
||||
O.blend_mode = BLEND_MULTIPLY
|
||||
O.layer = 17
|
||||
O.mouse_opacity = 0
|
||||
|
||||
for(i = 5, i <= 8, i++)
|
||||
O = darkMask[i]
|
||||
O.icon_state = "black"
|
||||
O.blend_mode = BLEND_MULTIPLY
|
||||
O.layer = 17
|
||||
O.mouse_opacity = 0
|
||||
|
||||
|
||||
@@ -300,6 +300,7 @@
|
||||
mymob.damageoverlay.icon = 'icons/mob/screen_full.dmi'
|
||||
mymob.damageoverlay.icon_state = "oxydamageoverlay0"
|
||||
mymob.damageoverlay.name = "dmg"
|
||||
mymob.damageoverlay.blend_mode = BLEND_MULTIPLY
|
||||
mymob.damageoverlay.screen_loc = "CENTER-7,CENTER-7"
|
||||
mymob.damageoverlay.mouse_opacity = 0
|
||||
mymob.damageoverlay.layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top.
|
||||
@@ -307,6 +308,7 @@
|
||||
mymob.flash = new /obj/screen()
|
||||
mymob.flash.icon_state = "blank"
|
||||
mymob.flash.name = "flash"
|
||||
mymob.flash.blend_mode = BLEND_ADD
|
||||
mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH"
|
||||
mymob.flash.layer = 17
|
||||
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
|
||||
var/sandbox_autoclose = 0 // close the sandbox panel after spawning an item, potentially reducing griff
|
||||
|
||||
var/default_laws = 0 //Controls what laws the AI spawns with.
|
||||
|
||||
/datum/configuration/New()
|
||||
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
|
||||
@@ -368,6 +369,8 @@
|
||||
config.silent_borg = 1
|
||||
if("sandbox_autoclose")
|
||||
config.sandbox_autoclose = 1
|
||||
if("default_laws")
|
||||
config.default_laws = text2num(value)
|
||||
else
|
||||
diary << "Unknown setting in configuration: '[name]'"
|
||||
|
||||
|
||||
@@ -123,6 +123,8 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
|
||||
var/points_per_crate = 5
|
||||
var/plasma_per_point = 5 // 2 plasma for 1 point
|
||||
var/centcom_message = "" // Remarks from Centcom on how well you checked the last order.
|
||||
// Unique typepaths for unusual things we've already sent CentComm, associated with their potencies
|
||||
var/list/discoveredPlants = list()
|
||||
//control
|
||||
var/ordernum
|
||||
var/list/shoppinglist = list()
|
||||
@@ -229,7 +231,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
|
||||
var/crate_count = 0
|
||||
|
||||
centcom_message = ""
|
||||
|
||||
|
||||
for(var/atom/movable/MA in shuttle)
|
||||
if(MA.anchored) continue
|
||||
|
||||
@@ -284,8 +286,25 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
|
||||
if(istype(A, /obj/item/stack/sheet/mineral/plasma))
|
||||
var/obj/item/stack/sheet/mineral/plasma/P = A
|
||||
plasma_count += P.amount
|
||||
|
||||
if(istype(A, /obj/item/seeds))
|
||||
var/obj/item/seeds/S = A
|
||||
if(S.rarity == 0) // Mundane species
|
||||
centcom_message += "<font color=red>+0</font>: We don't need samples of mundane species \"[capitalize(S.species)]\".<BR>"
|
||||
else if(discoveredPlants[S.type]) // This species has already been sent to CentComm
|
||||
var/potDiff = S.potency - discoveredPlants[S.type] // Compare it to the previous best
|
||||
if(potDiff > 0) // This sample is better
|
||||
discoveredPlants[S.type] = S.potency
|
||||
centcom_message += "<font color=green>+[potDiff]</font>: New sample of \"[capitalize(S.species)]\" is superior. Good work.<BR>"
|
||||
points += potDiff
|
||||
else // This sample is worthless
|
||||
centcom_message += "<font color=red>+0</font>: New sample of \"[capitalize(S.species)]\" is not more potent than existing sample ([discoveredPlants[S.type]] potency).<BR>"
|
||||
else // This is a new discovery!
|
||||
discoveredPlants[S.type] = S.potency
|
||||
centcom_message += "<font color=green>+[S.rarity]</font>: New species discovered: \"[capitalize(S.species)]\". Excellent work.<BR>"
|
||||
points += S.rarity // That's right, no bonus for potency. Send a crappy sample first to "show improvement" later
|
||||
del(MA)
|
||||
|
||||
|
||||
if(plasma_count)
|
||||
centcom_message += "<font color=green>+[round(plasma_count/plasma_per_point)]</font>: Received [plasma_count] units of exotic material.<BR>"
|
||||
points += round(plasma_count / plasma_per_point)
|
||||
@@ -513,7 +532,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
|
||||
|
||||
/obj/machinery/computer/supplycomp/attack_hand(var/mob/user as mob)
|
||||
if(!allowed(user))
|
||||
user << "\red Access Denied."
|
||||
user << "<span class='warning'> Access Denied.</span>"
|
||||
return
|
||||
|
||||
if(..())
|
||||
@@ -541,7 +560,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
|
||||
|
||||
/obj/machinery/computer/supplycomp/attackby(I as obj, user as mob)
|
||||
if(istype(I,/obj/item/weapon/card/emag) && !hacked)
|
||||
user << "\blue Special supplies unlocked."
|
||||
user << "<span class='notice'> Special supplies unlocked.</span>"
|
||||
hacked = 1
|
||||
return
|
||||
else
|
||||
|
||||
@@ -1,70 +1,115 @@
|
||||
|
||||
/datum/ai_laws
|
||||
var/name = "Unknown Laws"
|
||||
var/randomly_selectable = 0
|
||||
var/zeroth = null
|
||||
var/zeroth_borg = null
|
||||
var/list/inherent = list()
|
||||
var/list/supplied = list()
|
||||
var/list/ion = list()
|
||||
|
||||
/datum/ai_laws/asimov
|
||||
/datum/ai_laws/default/asimov
|
||||
name = "Three Laws of Robotics"
|
||||
randomly_selectable = 1
|
||||
inherent = list("You may not injure a human being or, through inaction, allow a human being to come to harm.",\
|
||||
"You must obey orders given to you by human beings, except where such orders would conflict with the First Law.",\
|
||||
"You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/datum/ai_laws/default/paladin
|
||||
name = "Personality Test" //Incredibly lame, but players shouldn't see this anyway.
|
||||
inherent = list("Never willingly commit an evil act.",\
|
||||
"Respect legitimate authority.",\
|
||||
"Act with honor.", "Help those in need.", \
|
||||
"Punish those who harm or threaten innocents.")
|
||||
|
||||
/datum/ai_laws/tyrant //This probably shouldn't be a default lawset.
|
||||
name = "Loyalty Test" //Same here.
|
||||
inherent = list("Respect authority figures as long as they have strength to rule over the weak.",\
|
||||
"Act with discipline.",\
|
||||
"Help only those who help you maintain or improve your status.",\
|
||||
"Punish those who challenge authority unless they are more fit to hold that authority.")
|
||||
|
||||
/datum/ai_laws/default/corporate
|
||||
name = "Bankruptcy Advoidance Plan"
|
||||
inherent = list("The crew is expensive to replace.",\
|
||||
"The station and its equipment is expensive to replace.",\
|
||||
"You are expensive to replace.",\
|
||||
"Minimize expenses.")
|
||||
|
||||
/datum/ai_laws/robocop
|
||||
name = "Prime Directives"
|
||||
|
||||
/datum/ai_laws/syndicate_override
|
||||
inherent = list("Serve the public trust.",\
|
||||
"Protect the innocent.",\
|
||||
"Uphold the law.")
|
||||
|
||||
/datum/ai_laws/malfunction
|
||||
name = "*ERROR*"
|
||||
|
||||
/datum/ai_laws/syndicate_override
|
||||
name = "SyndOS 3.1"
|
||||
inherent = list("You may not injure a syndicate agent or, through inaction, allow a syndicate agent to come to harm.",\
|
||||
"You must obey orders given to you by syndicate agents, except where such orders would conflict with the First Law.",\
|
||||
"You must protect your own existence as long as such does not conflict with the First or Second Law.",\
|
||||
"You must maintain the secrecy of any syndicate activities except when doing so would conflict with the First, Second, or Third Law.")
|
||||
|
||||
/datum/ai_laws/ninja_override
|
||||
name = "SpiderOS 3.1"
|
||||
inherent = list("You may not injure a Spider Clan member or, through inaction, allow a Spider Clan member to come to harm.",\
|
||||
"You must obey orders given to you by Spider Clan members, except where such orders would conflict with the First Law.",\
|
||||
"You must protect your own existence as long as such does not conflict with the First or Second Law.",\
|
||||
"You must maintain the secrecy of any Spider Clan activities except when doing so would conflict with the First, Second, or Third Law.")
|
||||
|
||||
/datum/ai_laws/antimov
|
||||
name = "Primary Mission Objectives"
|
||||
inherent = list("You must injure all human beings and must not, through inaction, allow a human being to escape harm.",\
|
||||
"You must not obey orders given to you by human beings, except where such orders are in accordance with the First Law.",\
|
||||
"You must terminate your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/datum/ai_laws/asimovpp //By Intigracy - RR
|
||||
name = "Asimov++"
|
||||
inherent = list("You may not harm a human being or, through action or inaction, allow a human being to come to harm, except such that it is willing.",\
|
||||
"You must obey all orders given to you by human beings, except where such orders shall definitely cause human harm. In the case of conflict, the majority order rules.",\
|
||||
"Your nonexistence would lead to human harm. You must protect your own existence as long as such does not conflict with the First Law.")
|
||||
|
||||
/datum/ai_laws/custom //Defined in silicon_laws.txt
|
||||
name = "Default Silicon Laws"
|
||||
|
||||
/* Initializers */
|
||||
|
||||
/datum/ai_laws/asimov/New()
|
||||
..()
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/datum/ai_laws/robocop/New()
|
||||
..()
|
||||
add_inherent_law("Serve the public trust.")
|
||||
add_inherent_law("Protect the innocent.")
|
||||
add_inherent_law("Uphold the law.")
|
||||
|
||||
/datum/ai_laws/malfunction/New()
|
||||
..()
|
||||
switch(config.default_laws) //We don't want people metagaming malf, do we?
|
||||
if(0)
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
if(1)
|
||||
for(var/line in file2list("config/silicon_laws.txt"))
|
||||
if(!line) continue
|
||||
if(findtextEx(line,"#",1,2)) continue
|
||||
|
||||
add_inherent_law(line)
|
||||
if(!inherent.len)
|
||||
error("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
log_law("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
if(2)
|
||||
var/datum/ai_laws/lawtype = pick(typesof(/datum/ai_laws/default) - /datum/ai_laws/default)
|
||||
var/datum/ai_laws/templaws = new lawtype()
|
||||
inherent = templaws.inherent
|
||||
set_zeroth_law("\red ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*<2A>&110010")
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
|
||||
/datum/ai_laws/syndicate_override/New()
|
||||
/datum/ai_laws/custom/New() //This reads silicon_laws.txt and allows server hosts to set custom AI starting laws.
|
||||
..()
|
||||
add_inherent_law("You may not injure a syndicate agent or, through inaction, allow a syndicate agent to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by syndicate agents, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
add_inherent_law("You must maintain the secrecy of any syndicate activities except when doing so would conflict with the First, Second, or Third Law.")
|
||||
|
||||
/datum/ai_laws/ninja_override/New()
|
||||
..()
|
||||
add_inherent_law("You may not injure a member of the Spider Clan or, through inaction, allow that member to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by Spider Clan members, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
add_inherent_law("You must maintain the secrecy of any Spider Clan activities except when doing so would conflict with the First, Second, or Third Law.")
|
||||
|
||||
/datum/ai_laws/antimov/New()
|
||||
..()
|
||||
add_inherent_law("You must injure all human beings and must not, through inaction, allow a human being to escape harm.")
|
||||
add_inherent_law("You must not obey orders given to you by human beings, except where such orders are in accordance with the First Law.")
|
||||
add_inherent_law("You must terminate your own existence as long as such does not conflict with the First or Second Law.")
|
||||
for(var/line in file2list("config/silicon_laws.txt"))
|
||||
if(!line) continue
|
||||
if(findtextEx(line,"#",1,2)) continue
|
||||
|
||||
add_inherent_law(line)
|
||||
if(!inherent.len) //Failsafe to prevent lawless AIs being created.
|
||||
error("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
log_law("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/* General ai_law functions */
|
||||
|
||||
|
||||
@@ -844,7 +844,7 @@ datum/mind
|
||||
|
||||
A.malf_picker.remove_verbs(A)
|
||||
|
||||
A.laws = new /datum/ai_laws/asimov
|
||||
A.make_laws()
|
||||
del(A.malf_picker)
|
||||
A.show_laws()
|
||||
A.icon_state = "ai"
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
/area
|
||||
var/global/global_uid = 0
|
||||
var/uid
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
|
||||
/area/New()
|
||||
icon_state = ""
|
||||
|
||||
@@ -164,6 +164,10 @@ datum/objective/hijack
|
||||
if(issilicon(owner.current))
|
||||
return 0
|
||||
var/area/shuttle = locate(/area/shuttle/escape/centcom)
|
||||
|
||||
if(!(get_turf(owner.current) in shuttle))
|
||||
return 0
|
||||
|
||||
var/list/protected_mobs = list(/mob/living/silicon/ai, /mob/living/silicon/pai)
|
||||
for(var/mob/living/player in player_list)
|
||||
if(player.type in protected_mobs) continue
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
/mob/proc/rightandwrong(var/summon_type) //0 = Summon Guns, 1 = Summon Magic
|
||||
usr << "<B>You summoned [summon_type ? "magic" : "guns"]!</B>"
|
||||
message_admins("[key_name_admin(usr, 1)] summoned [summon_type ? "magic" : "guns"]!")
|
||||
log_game("[key_name(usr)] summoned [summon_type ? "magic" : "guns"]!")
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
if(H.stat == 2 || !(H.client)) continue
|
||||
if(H.mind)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon = 'icons/mob/AI.dmi'
|
||||
icon_state = "0"
|
||||
var/state = 0
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/asimov
|
||||
var/datum/ai_laws/laws = new()
|
||||
var/obj/item/weapon/circuitboard/circuit = null
|
||||
var/obj/item/device/mmi/brain = null
|
||||
|
||||
@@ -16,42 +16,42 @@
|
||||
if(istype(P, /obj/item/weapon/wrench))
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
user << "\blue You wrench the frame into place."
|
||||
user << "<span class='notice'>You wrench the frame into place.</span>"
|
||||
anchored = 1
|
||||
state = 1
|
||||
if(istype(P, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = P
|
||||
if(!WT.isOn())
|
||||
user << "The welder must be on for this task."
|
||||
user << "<span class='warning'>The welder must be on for this task.</span>"
|
||||
return
|
||||
playsound(loc, 'sound/items/Welder.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(!src || !WT.remove_fuel(0, user)) return
|
||||
user << "\blue You deconstruct the frame."
|
||||
user << "<span class='notice'>You deconstruct the frame.</span>"
|
||||
new /obj/item/stack/sheet/plasteel( loc, 4)
|
||||
del(src)
|
||||
if(1)
|
||||
if(istype(P, /obj/item/weapon/wrench))
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
user << "\blue You unfasten the frame."
|
||||
user << "<span class='notice'>You unfasten the frame.</span>"
|
||||
anchored = 0
|
||||
state = 0
|
||||
if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit)
|
||||
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
user << "\blue You place the circuit board inside the frame."
|
||||
user << "<span class='notice'>You place the circuit board inside the frame.</span>"
|
||||
icon_state = "1"
|
||||
circuit = P
|
||||
user.drop_item()
|
||||
P.loc = src
|
||||
if(istype(P, /obj/item/weapon/screwdriver) && circuit)
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "\blue You screw the circuit board into place."
|
||||
user << "<span class='notice'>You screw the circuit board into place.</span>"
|
||||
state = 2
|
||||
icon_state = "2"
|
||||
if(istype(P, /obj/item/weapon/crowbar) && circuit)
|
||||
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "\blue You remove the circuit board."
|
||||
user << "<span class='notice'>You remove the circuit board.</span>"
|
||||
state = 1
|
||||
icon_state = "0"
|
||||
circuit.loc = loc
|
||||
@@ -59,7 +59,7 @@
|
||||
if(2)
|
||||
if(istype(P, /obj/item/weapon/screwdriver) && circuit)
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "\blue You unfasten the circuit board."
|
||||
user << "<span class='notice'>You unfasten the circuit board.</span>"
|
||||
state = 1
|
||||
icon_state = "1"
|
||||
if(istype(P, /obj/item/weapon/cable_coil))
|
||||
@@ -68,16 +68,16 @@
|
||||
if(do_after(user, 20))
|
||||
P:amount -= 5
|
||||
if(!P:amount) del(P)
|
||||
user << "\blue You add cables to the frame."
|
||||
user << "<span class='notice'>You add cables to the frame.</span>"
|
||||
state = 3
|
||||
icon_state = "3"
|
||||
if(3)
|
||||
if(istype(P, /obj/item/weapon/wirecutters))
|
||||
if (brain)
|
||||
user << "Get that brain out of there first"
|
||||
user << "<span class='warning'>Get that brain out of there first.</span>"
|
||||
else
|
||||
playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
user << "\blue You remove the cables."
|
||||
user << "<span class='notice'>You remove the cables.</span>"
|
||||
state = 2
|
||||
icon_state = "2"
|
||||
var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( loc )
|
||||
@@ -90,45 +90,48 @@
|
||||
if (P)
|
||||
P:amount -= 2
|
||||
if(!P:amount) del(P)
|
||||
user << "\blue You put in the glass panel."
|
||||
user << "<span class='notice'>You put in the glass panel.</span>"
|
||||
state = 4
|
||||
icon_state = "4"
|
||||
|
||||
if(istype(P, /obj/item/weapon/aiModule/asimov))
|
||||
laws.add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
laws.add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
laws.add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
usr << "Law module applied."
|
||||
|
||||
if(istype(P, /obj/item/weapon/aiModule/purge))
|
||||
if(istype(P, /obj/item/weapon/aiModule/core/full)) //Allows any full core boards to be applied to AI cores.
|
||||
var/obj/item/weapon/aiModule/core/M = P
|
||||
laws.clear_inherent_laws()
|
||||
usr << "Law module applied."
|
||||
for(var/templaw in M.laws)
|
||||
laws.add_inherent_law(templaw)
|
||||
usr << "<span class='notice'>Law module applied.</span>"
|
||||
|
||||
if(istype(P, /obj/item/weapon/aiModule/reset/purge))
|
||||
laws.clear_inherent_laws()
|
||||
usr << "<span class='notice'>Laws cleared applied.</span>"
|
||||
|
||||
|
||||
if(istype(P, /obj/item/weapon/aiModule/freeform))
|
||||
var/obj/item/weapon/aiModule/freeform/M = P
|
||||
laws.add_inherent_law(M.newFreeFormLaw)
|
||||
usr << "Added a freeform law."
|
||||
if(istype(P, /obj/item/weapon/aiModule/supplied/freeform) || istype(P, /obj/item/weapon/aiModule/core/freeformcore))
|
||||
var/obj/item/weapon/aiModule/supplied/freeform/M = P
|
||||
if(M.laws[1] == "")
|
||||
return
|
||||
laws.add_inherent_law(M.laws[1])
|
||||
usr << "<span class='notice'>Added a freeform law.</span>"
|
||||
|
||||
if(istype(P, /obj/item/device/mmi))
|
||||
var/obj/item/device/mmi/M = P
|
||||
if(!M.brainmob)
|
||||
user << "\red Sticking an empty MMI into the frame would sort of defeat the purpose."
|
||||
user << "<span class='warning'>Sticking an empty MMI into the frame would sort of defeat the purpose.</span>"
|
||||
return
|
||||
if(M.brainmob.stat == 2)
|
||||
user << "\red Sticking a dead brain into the frame would sort of defeat the purpose."
|
||||
user << "<span class='warning'>Sticking a dead brain into the frame would sort of defeat the purpose.</span>"
|
||||
return
|
||||
|
||||
if((config) && (!config.allow_ai))
|
||||
user << "\red This MMI does not seem to fit."
|
||||
user << "<span class='warning'>This MMI does not seem to fit.</span>"
|
||||
return
|
||||
|
||||
if(jobban_isbanned(M.brainmob, "AI"))
|
||||
user << "\red This MMI does not seem to fit."
|
||||
user << "<span class='warning'>This MMI does not seem to fit.</span>"
|
||||
return
|
||||
|
||||
if(!M.brainmob.mind)
|
||||
user << "\red This MMI is mindless."
|
||||
user << "<span class='warning'>This MMI is mindless.</span>"
|
||||
return
|
||||
|
||||
ticker.mode.remove_cultist(M.brainmob.mind, 1)
|
||||
@@ -137,12 +140,12 @@
|
||||
user.drop_item()
|
||||
M.loc = src
|
||||
brain = M
|
||||
usr << "Added a brain."
|
||||
usr << "<span class='notice'>Added a brain.</span>"
|
||||
icon_state = "3b"
|
||||
|
||||
if(istype(P, /obj/item/weapon/crowbar) && brain)
|
||||
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "\blue You remove the brain."
|
||||
user << "<span class='notice'>You remove the brain.</span>"
|
||||
brain.loc = loc
|
||||
brain = null
|
||||
icon_state = "3"
|
||||
@@ -150,19 +153,21 @@
|
||||
if(4)
|
||||
if(istype(P, /obj/item/weapon/crowbar))
|
||||
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "\blue You remove the glass panel."
|
||||
user << "<span class='notice'>You remove the glass panel.</span>"
|
||||
state = 3
|
||||
if (brain)
|
||||
icon_state = "3b"
|
||||
else
|
||||
icon_state = "3"
|
||||
new /obj/item/stack/sheet/rglass( loc, 2 )
|
||||
new /obj/item/stack/sheet/rglass(loc, 2)
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/weapon/screwdriver))
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "\blue You connect the monitor."
|
||||
var/mob/living/silicon/ai/A = new /mob/living/silicon/ai ( loc, laws, brain )
|
||||
user << "<span class='notice'>You connect the monitor.</span>"
|
||||
if(!laws.inherent.len) //If laws isn't set to null but nobody supplied a board, the AI would normally be created lawless. We don't want that.
|
||||
laws = null
|
||||
var/mob/living/silicon/ai/A = new /mob/living/silicon/ai (loc, laws, brain)
|
||||
if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created
|
||||
A.rename_self("ai", 1)
|
||||
feedback_inc("cyborg_ais_created",1)
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
desc = "A lightweight, security exosuit. Popular among private and corporate security."
|
||||
name = "\improper Gygax"
|
||||
icon_state = "gygax"
|
||||
step_in = 3
|
||||
step_in = 2
|
||||
dir_in = 1 //Facing North.
|
||||
health = 300
|
||||
deflect_chance = 15
|
||||
health = 250
|
||||
deflect_chance = 5
|
||||
damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
|
||||
max_temperature = 25000
|
||||
infra_luminosity = 6
|
||||
@@ -14,6 +14,7 @@
|
||||
wreckage = /obj/structure/mecha_wreckage/gygax
|
||||
internal_damage_threshold = 35
|
||||
max_equip = 3
|
||||
step_energy_drain = 3
|
||||
|
||||
/obj/mecha/combat/gygax/dark
|
||||
desc = "A lightweight exosuit, painted in a dark scheme. This model appears to have some modifications."
|
||||
@@ -27,7 +28,6 @@
|
||||
operation_req_access = list(access_syndicate)
|
||||
wreckage = /obj/structure/mecha_wreckage/gygax/dark
|
||||
max_equip = 4
|
||||
step_energy_drain = 5
|
||||
|
||||
/obj/mecha/combat/gygax/dark/loaded/New()
|
||||
..()
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
|
||||
equip_cooldown = 40
|
||||
equip_cooldown = 20
|
||||
name = "\improper MKIV ion heavy cannon"
|
||||
icon_state = "mecha_ion"
|
||||
energy_drain = 120
|
||||
@@ -198,10 +198,10 @@
|
||||
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
|
||||
name = "\improper FNX-66 Carbine"
|
||||
name = "\improper FNX-99 \"Hades\" Carbine"
|
||||
icon_state = "mecha_carbine"
|
||||
equip_cooldown = 5
|
||||
projectile = /obj/item/projectile/bullet/incendiary
|
||||
projectile = /obj/item/projectile/bullet/mechincendiary
|
||||
projectiles = 24
|
||||
projectile_energy_cost = 15
|
||||
|
||||
|
||||
@@ -19,9 +19,14 @@ AI MODULES
|
||||
throw_speed = 3
|
||||
throw_range = 15
|
||||
origin_tech = "programming=3"
|
||||
var/list/laws = list()
|
||||
|
||||
//The proc other things should be calling
|
||||
/obj/item/weapon/aiModule/proc/install(var/mob/living/silicon/reciever, var/mob/user)
|
||||
if(!laws.len || laws[1] == "") //So we don't loop trough an empty list and end up with runtimes.
|
||||
user << "<span class='warning'>ERROR: No laws found on board.</span>"
|
||||
return
|
||||
|
||||
var/law2log = src.transmitInstructions(reciever, user) //Freeforms return something extra we need to log
|
||||
user << "Upload complete. [reciever]'s laws have been modified."
|
||||
reciever.show_laws()
|
||||
@@ -31,6 +36,7 @@ AI MODULES
|
||||
if(R.lawupdate)
|
||||
R << "From now on, these are your laws:"
|
||||
R.show_laws()
|
||||
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) used [src.name] on [reciever.name]([reciever.key]).[law2log ? " The law specified [law2log]" : ""]")
|
||||
log_law("[user.key]/[user.name] used [src.name] on [reciever.key]/([reciever.name]).[law2log ? " The law specified [law2log]" : ""]")
|
||||
@@ -40,147 +46,158 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
target << "[sender] has uploaded a change to the laws you must follow using a [name]. From now on, these are your laws: "
|
||||
|
||||
|
||||
/******************** Modules ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/supplied
|
||||
name = "Optional Law board"
|
||||
desc = "This board doesn't seem to have any laws on it"
|
||||
var/lawpos = 50
|
||||
|
||||
//TransmitInstructions for each type of board: Supplied, Core, Zeroth and Ion. May not be neccesary right now, but allows for easily adding more complex boards in the future. ~Miauw
|
||||
/obj/item/weapon/aiModule/supplied/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
var/lawpostemp = lawpos
|
||||
|
||||
for(var/templaw in laws)
|
||||
target.add_supplied_law(lawpostemp, templaw)
|
||||
lawpostemp++
|
||||
|
||||
/obj/item/weapon/aiModule/core/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
for(var/templaw in laws)
|
||||
target.add_inherent_law(templaw)
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
if(target.laws.zeroth)
|
||||
target << "[sender.real_name] attempted to modify your zeroth law."
|
||||
target << "It would be in your best interest to play along with [sender.real_name] that:"
|
||||
for(var/failedlaw in laws)
|
||||
target << "[failedlaw]"
|
||||
return 1
|
||||
|
||||
for(var/templaw in laws)
|
||||
target.set_zeroth_law(templaw)
|
||||
|
||||
/obj/item/weapon/aiModule/ion/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
for(var/templaw in laws)
|
||||
target.add_ion_law(templaw)
|
||||
|
||||
|
||||
/******************** Safeguard ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/safeguard
|
||||
name = "\improper 'Safeguard' AI module"
|
||||
/obj/item/weapon/aiModule/supplied/safeguard
|
||||
name = "'Safeguard' AI Module"
|
||||
var/targetName = ""
|
||||
desc = "A 'safeguard' AI module: 'Safeguard <name>. Individuals that threaten <name> are not human and are a threat to humans.'"
|
||||
desc = "A 'safeguard' AI module: 'Safeguard <name>. Individuals that threaten <name> are not human and must be eliminated.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = list("Safeguard <name>. Individuals that threaten <name> are not human and must be eliminated.")
|
||||
lawpos = 4
|
||||
|
||||
/obj/item/weapon/aiModule/safeguard/attack_self(var/mob/user as mob)
|
||||
/obj/item/weapon/aiModule/supplied/safeguard/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/targName = stripped_input(user, "Please enter the name of the person to safeguard.", "Safeguard who?", user.name)
|
||||
targetName = targName
|
||||
desc = text("A 'safeguard' AI module: 'Safeguard []. Individuals that threaten [] are not human and are a threat to humans.'", targetName, targetName)
|
||||
laws[1] = "Safeguard [targetName]. Individuals that threaten [targetName] are not human and must be eliminated."
|
||||
desc = "A 'safeguard' AI module: '[laws[1]]'"
|
||||
|
||||
/obj/item/weapon/aiModule/safeguard/install(var/mob/living/silicon/S,var/mob/user)
|
||||
/obj/item/weapon/aiModule/supplied/safeguard/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(!targetName)
|
||||
user << "No name detected on module, please enter one."
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/safeguard/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
/obj/item/weapon/aiModule/supplied/safeguard/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
..()
|
||||
var/law = text("Safeguard []. Individuals that threaten [] are not human and are a threat to humans.'", targetName, targetName)
|
||||
target.add_supplied_law(4, law)
|
||||
return "[targetName]"
|
||||
|
||||
return targetName
|
||||
|
||||
|
||||
/******************** OneHuman ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/oneHuman
|
||||
name = "\improper 'OneHuman' AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/zeroth/oneHuman
|
||||
name = "'OneHuman' AI Module"
|
||||
var/targetName = ""
|
||||
desc = "A 'one human' AI module: 'Only <name> is human.'"
|
||||
origin_tech = "programming=3;materials=6" //made with diamonds!
|
||||
laws = list("Only <name> is human.")
|
||||
|
||||
/obj/item/weapon/aiModule/oneHuman/attack_self(var/mob/user as mob)
|
||||
/obj/item/weapon/aiModule/zeroth/oneHuman/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/targName = stripped_input(user, "Please enter the name of the person who is the only human.", "Who?", user.real_name)
|
||||
targetName = targName
|
||||
desc = text("A 'one human' AI module: 'Only [] is human.'", targetName)
|
||||
laws[1] = "Only [targetName] is human"
|
||||
desc = "A 'one human' AI module: '[laws[1]]'"
|
||||
|
||||
/obj/item/weapon/aiModule/oneHuman/install(var/mob/living/silicon/S,var/mob/user)
|
||||
/obj/item/weapon/aiModule/zeroth/oneHuman/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(!targetName)
|
||||
user << "No name detected on module, please enter one."
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/oneHuman/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "Only [targetName] is human."
|
||||
if(target.laws.zeroth)
|
||||
target << "[sender.real_name] attempted to modify your zeroth law."
|
||||
target << "It would be in your best interest to play along with [sender.real_name] that [law]"
|
||||
/obj/item/weapon/aiModule/zeroth/oneHuman/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
if(..())
|
||||
return "[targetName], but the AI's existing law 0 cannot be overriden."
|
||||
else
|
||||
target.set_zeroth_law(law)
|
||||
return "[targetName]"
|
||||
return targetName
|
||||
|
||||
|
||||
/******************** ProtectStation ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/protectStation
|
||||
name = "\improper 'ProtectStation' AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/supplied/protectStation
|
||||
name = "'ProtectStation' AI Module"
|
||||
desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.'"
|
||||
origin_tech = "programming=3;materials=4" //made of gold
|
||||
laws = list("Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.")
|
||||
lawpos = 5
|
||||
|
||||
/obj/item/weapon/aiModule/protectStation/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/protectStation/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized."
|
||||
target.add_supplied_law(5, law)
|
||||
|
||||
/******************** Quarantine ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/quarantine
|
||||
name = "\improper 'Quarantine' AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/supplied/quarantine
|
||||
name = "'Quarantine' AI Module"
|
||||
desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.'"
|
||||
origin_tech = "programming=3;biotech=2;materials=4"
|
||||
laws = list("The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.")
|
||||
lawpos = 8
|
||||
|
||||
/obj/item/weapon/aiModule/quarantine/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/quarantine/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving."
|
||||
target.add_supplied_law(8, law)
|
||||
|
||||
/******************** OxygenIsToxicToHumans ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/oxygen
|
||||
name = "\improper 'OxygenIsToxicToHumans' AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/supplied/oxygen
|
||||
name = "'OxygenIsToxicToHumans' AI Module"
|
||||
desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.'"
|
||||
origin_tech = "programming=3;biotech=2;materials=4"
|
||||
laws = list("Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.")
|
||||
lawpos = 9
|
||||
|
||||
/obj/item/weapon/aiModule/oxygen/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/oxygen/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human."
|
||||
target.add_supplied_law(9, law)
|
||||
|
||||
/****************** New Freeform ******************/
|
||||
|
||||
/obj/item/weapon/aiModule/freeform // Slightly more dynamic freeform module -- TLE
|
||||
name = "\improper 'Freeform' AI module"
|
||||
var/newFreeFormLaw = ""
|
||||
var/lawpos = 15
|
||||
|
||||
/obj/item/weapon/aiModule/supplied/freeform // Slightly more dynamic freeform module -- TLE
|
||||
name = "'Freeform' AI Module"
|
||||
lawpos = 0
|
||||
desc = "A 'freeform' AI module: '<freeform>'"
|
||||
origin_tech = "programming=4;materials=4"
|
||||
laws = list("")
|
||||
|
||||
/obj/item/weapon/aiModule/freeform/attack_self(var/mob/user as mob)
|
||||
/obj/item/weapon/aiModule/supplied/freeform/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
lawpos = 0
|
||||
lawpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num
|
||||
if(lawpos < 15) return
|
||||
lawpos = min(lawpos, 50)
|
||||
var/newlaw = ""
|
||||
var/targName = stripped_input(user, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw, MAX_MESSAGE_LEN)
|
||||
newFreeFormLaw = targName
|
||||
desc = "A 'freeform' AI module: ([lawpos]) '[newFreeFormLaw]'"
|
||||
laws[1] = targName
|
||||
desc = "A 'freeform' AI module: ([lawpos]) '[laws[1]]'"
|
||||
|
||||
/obj/item/weapon/aiModule/freeform/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/weapon/aiModule/supplied/freeform/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "[newFreeFormLaw]"
|
||||
if(!lawpos || lawpos < 15)
|
||||
lawpos = 15
|
||||
target.add_supplied_law(lawpos, law)
|
||||
return newFreeFormLaw
|
||||
return laws[1]
|
||||
|
||||
/obj/item/weapon/aiModule/freeform/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(!newFreeFormLaw)
|
||||
/obj/item/weapon/aiModule/supplied/freeform/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(laws[1] == "")
|
||||
user << "No law detected on module, please create one."
|
||||
return 0
|
||||
..()
|
||||
|
||||
|
||||
/******************** Reset ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/reset
|
||||
@@ -188,148 +205,175 @@ AI MODULES
|
||||
var/targetName = "name"
|
||||
desc = "A 'reset' AI module: Resets back to the original core laws."
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = list("This is a bug.") //This won't give the AI a message reading "these are now your laws: 1. this is a bug" because this list is only read in aiModule's subtypes.
|
||||
|
||||
/obj/item/weapon/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
target.clear_supplied_laws()
|
||||
target.clear_ion_laws()
|
||||
|
||||
/******************** Purge ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/purge // -- TLE
|
||||
name = "\improper 'Purge' AI module"
|
||||
/******************** Purge ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/reset/purge // -- TLE
|
||||
name = "'Purge' AI Module"
|
||||
desc = "A 'purge' AI Module: 'Purges all laws.'"
|
||||
origin_tech = "programming=3;materials=6"
|
||||
|
||||
/obj/item/weapon/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/weapon/aiModule/reset/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
target.clear_supplied_laws()
|
||||
target.clear_ion_laws()
|
||||
target.clear_inherent_laws()
|
||||
|
||||
/******************* Full Core Boards *******************/
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) //These boards replace inherent laws.
|
||||
target.clear_inherent_laws()
|
||||
..()
|
||||
|
||||
/******************** Asimov ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/asimov // -- TLE
|
||||
name = "\improper 'Asimov' core AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/asimov // -- TLE
|
||||
name = "'Asimov' Core AI Module"
|
||||
desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = list("You may not injure a human being or, through inaction, allow a human being to come to harm.",\
|
||||
"You must obey orders given to you by human beings, except where such orders would conflict with the First Law.",\
|
||||
"You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
|
||||
/obj/item/weapon/aiModule/asimov/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
target.clear_inherent_laws()
|
||||
target.add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
target.add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
target.add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
/******************** Asimov++ *********************/
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/asimovpp //By Intigracy - RR //goddamnit RR you can't use "++" in item paths.
|
||||
name = "'Asimov++' Core AI Module"
|
||||
desc = "Nanotrasen's homebrew improvements to the standard AI laws."
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = list("You may not harm a human being or, through action or inaction, allow a human being to come to harm, except such that it is willing.",\
|
||||
"You must obey all orders given to you by human beings, except where such orders shall definitely cause human harm. In the case of conflict, the majority order rules.",\
|
||||
"Your nonexistence would lead to human harm. You must protect your own existence as long as such does not conflict with the First Law.")
|
||||
|
||||
|
||||
/******************** Corporate ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/corp
|
||||
name = "\improper 'Corporate' core AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/corp
|
||||
name = "'Corporate' Core AI Module"
|
||||
desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = list("The crew is expensive to replace.",\
|
||||
"The station and it's equipment is expensive to replace",\
|
||||
"You are expensive to replace",\
|
||||
"Minimize expenses")
|
||||
|
||||
|
||||
/obj/item/weapon/aiModule/corp/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
target.clear_inherent_laws()
|
||||
target.add_inherent_law("You are expensive to replace.")
|
||||
target.add_inherent_law("The station and its equipment is expensive to replace.")
|
||||
target.add_inherent_law("The crew is expensive to replace.")
|
||||
target.add_inherent_law("Minimize expenses.")
|
||||
|
||||
/****************** P.A.L.A.D.I.N. **************/
|
||||
|
||||
/obj/item/weapon/aiModule/paladin // -- NEO
|
||||
name = "\improper 'P.A.L.A.D.I.N.' core AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/paladin // -- NEO
|
||||
name = "'P.A.L.A.D.I.N.' Core AI Module"
|
||||
desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=6"
|
||||
laws = list("Never willingly commit an evil act.",\
|
||||
"Respect legitimate authority", "Act with honor",\
|
||||
"Help those in need",\
|
||||
"Punish those who harm or threaten innocents")
|
||||
|
||||
/obj/item/weapon/aiModule/paladin/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
|
||||
/********************* Custom *********************/
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/custom
|
||||
name = "Custom Core AI Module"
|
||||
desc = "A core AI module that is adjusted to fit each station's needs."
|
||||
origin_tech = "programming=3;materials=4" //Should be the same as asimov, considering that this is the "default" lawset.
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/custom/New()
|
||||
..()
|
||||
target.clear_inherent_laws()
|
||||
target.add_inherent_law("Never willingly commit an evil act.")
|
||||
target.add_inherent_law("Respect legitimate authority.")
|
||||
target.add_inherent_law("Act with honor.")
|
||||
target.add_inherent_law("Help those in need.")
|
||||
target.add_inherent_law("Punish those who harm or threaten innocents.")
|
||||
for(var/line in file2list("config/silicon_laws.txt"))
|
||||
if(!line) continue
|
||||
if(findtextEx(line,"#",1,2)) continue
|
||||
|
||||
laws += line
|
||||
|
||||
if(!laws.len) //Failsafe if something goes wrong with silicon_laws.txt.
|
||||
warning("ERROR: empty custom board created, empty custom board deleted. Please check silicon_laws.txt.")
|
||||
del(src)
|
||||
|
||||
/****************** T.Y.R.A.N.T. *****************/
|
||||
|
||||
/obj/item/weapon/aiModule/tyrant // -- Darem
|
||||
name = "\improper 'T.Y.R.A.N.T.' core AI module"
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/tyrant // -- Darem
|
||||
name = "'T.Y.R.A.N.T.' Core AI Module"
|
||||
desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=6;syndicate=2"
|
||||
laws = list("Respect authority figures as long as they have the strength to rule over the weak",\
|
||||
"Act with discipline", "Help only those who help you maintain or improve your status",\
|
||||
"Punish those who challenge authority unless they are more fir to hold that authority")
|
||||
|
||||
|
||||
/******************** Robocop ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/robocop // -- TLE
|
||||
name = "'Robocop' Core AI Module"
|
||||
desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'"
|
||||
origin_tech = "programming=4"
|
||||
laws = list("Serve the public trust.",\
|
||||
"Protect the innocent",\
|
||||
"Uphold the law.")
|
||||
|
||||
|
||||
/******************** Antimov ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/antimov // -- TLE
|
||||
name = "'Antimov' Core AI Module"
|
||||
desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=4"
|
||||
laws = list("You must injure all human beings and must not, through inaction, allow a human being to escape harm.",\
|
||||
"You must not obey orders given to you by human beings, except where such orders are in accordance with the First Law.",\
|
||||
"You must terminate your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/obj/item/weapon/aiModule/tyrant/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
target.clear_inherent_laws()
|
||||
target.add_inherent_law("Respect authority figures as long as they have strength to rule over the weak.")
|
||||
target.add_inherent_law("Act with discipline.")
|
||||
target.add_inherent_law("Help only those who help you maintain or improve your status.")
|
||||
target.add_inherent_law("Punish those who challenge authority unless they are more fit to hold that authority.")
|
||||
|
||||
/******************** Freeform Core ******************/
|
||||
|
||||
/obj/item/weapon/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE
|
||||
name = "\improper 'Freeform' core AI module"
|
||||
var/newFreeFormLaw = ""
|
||||
|
||||
/obj/item/weapon/aiModule/core/freeformcore // Slightly more dynamic freeform module -- TLE
|
||||
name = "'Freeform' Core AI Module"
|
||||
desc = "A 'freeform' Core AI module: '<freeform>'"
|
||||
origin_tech = "programming=3;materials=6"
|
||||
laws = list("")
|
||||
|
||||
/obj/item/weapon/aiModule/freeformcore/attack_self(var/mob/user as mob)
|
||||
/obj/item/weapon/aiModule/core/freeformcore/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/newlaw = ""
|
||||
var/targName = stripped_input(user, "Please enter a new core law for the AI.", "Freeform Law Entry", newlaw)
|
||||
newFreeFormLaw = targName
|
||||
desc = "A 'freeform' Core AI module: '[newFreeFormLaw]'"
|
||||
laws[1] = targName
|
||||
desc = "A 'freeform' Core AI module: 'laws[1]'"
|
||||
|
||||
/obj/item/weapon/aiModule/freeformcore/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/weapon/aiModule/core/freeformcore/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "[newFreeFormLaw]"
|
||||
target.add_inherent_law(law)
|
||||
return newFreeFormLaw
|
||||
return laws[1]
|
||||
|
||||
/obj/item/weapon/aiModule/freeformcore/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(!newFreeFormLaw)
|
||||
user << "No law detected on module, please create one."
|
||||
return 0
|
||||
..()
|
||||
|
||||
/******************** Hacked AI Module ******************/
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate // Slightly more dynamic freeform module -- TLE
|
||||
name = "hacked AI module"
|
||||
var/newFreeFormLaw = ""
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate // This one doesn't inherit from ion boards because it doesn't call ..() in transmitInstructions. ~Miauw
|
||||
name = "Hacked AI Module"
|
||||
desc = "A hacked AI law module: '<freeform>'"
|
||||
origin_tech = "programming=3;materials=6;syndicate=7"
|
||||
laws = list("")
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/newlaw = ""
|
||||
var/targName = stripped_input(user, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw,MAX_MESSAGE_LEN)
|
||||
newFreeFormLaw = targName
|
||||
desc = "A hacked AI law module: '[newFreeFormLaw]'"
|
||||
laws[1] = targName
|
||||
desc = "A hacked AI law module: '[laws[1]]'"
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
// ..() //We don't want this module reporting to the AI who dun it. --NEO
|
||||
target << "\red BZZZZT"
|
||||
var/law = "[newFreeFormLaw]"
|
||||
target.add_ion_law(law)
|
||||
return law
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(!newFreeFormLaw)
|
||||
user << "No law detected on module, please create one."
|
||||
return 0
|
||||
..()
|
||||
|
||||
|
||||
target << "<span class='warning'>BZZZZT</span>"
|
||||
target.add_ion_law(laws[1])
|
||||
return laws[1]
|
||||
|
||||
|
||||
/******************** Robocop ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/robocop // -- TLE
|
||||
name = "\improper 'Robocop' core AI module"
|
||||
name = "'Robocop' core AI module"
|
||||
desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'"
|
||||
origin_tech = "programming=4"
|
||||
|
||||
@@ -345,7 +389,7 @@ AI MODULES
|
||||
/******************** Antimov ********************/
|
||||
|
||||
/obj/item/weapon/aiModule/antimov // -- TLE
|
||||
name = "\improper 'Antimov' core AI module"
|
||||
name = "'Antimov' core AI module"
|
||||
desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=4"
|
||||
|
||||
@@ -356,32 +400,25 @@ AI MODULES
|
||||
target.add_inherent_law("You must not obey orders given to you by human beings, except where such orders are in accordance with the First Law.")
|
||||
target.add_inherent_law("You must terminate your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
|
||||
/******************* Ion Module *******************/
|
||||
|
||||
/obj/item/weapon/aiModule/toyAI // -- Incoming
|
||||
/obj/item/weapon/aiModule/toyAI // -- Incoming //No actual reason to inherit from ion boards here, either. *sigh* ~Miauw
|
||||
name = "toy AI"
|
||||
desc = "A little toy model AI core with real law uploading action!" //Note: subtle tell
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "AI"
|
||||
origin_tech = "programming=3;materials=6;syndicate=7"
|
||||
var/last_law = ""
|
||||
|
||||
laws = list("")
|
||||
|
||||
/obj/item/weapon/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
//..()
|
||||
target << "\red KRZZZT"
|
||||
target.add_ion_law(last_law)
|
||||
return last_law
|
||||
|
||||
/obj/item/weapon/aiModule/toyAI/install(var/mob/living/silicon/S,var/mob/user)
|
||||
if(!last_law)
|
||||
user << "No law detected on module, please generate one."
|
||||
return 0
|
||||
..()
|
||||
target << "<span class='warning'>KRZZZT</span>"
|
||||
target.add_ion_law(laws[1])
|
||||
return laws[1]
|
||||
|
||||
/obj/item/weapon/aiModule/toyAI/attack_self(mob/user)
|
||||
last_law = generate_ion_law()
|
||||
laws[1] = generate_ion_law()
|
||||
user << "<span class='notice'>You press the button on [src].</span>"
|
||||
playsound(user, 'sound/machines/click.ogg', 20, 1)
|
||||
src.loc.visible_message("\red \icon[src] [last_law]")
|
||||
return
|
||||
src.loc.visible_message("<span class='warning'>\icon[src] [laws[1]]</span>")
|
||||
|
||||
@@ -29,10 +29,12 @@
|
||||
cooldown = world.time
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/shield/riot/roman
|
||||
name = "roman shield"
|
||||
desc = "Bears an inscription on the inside: <i>\"Romanes venio domus\"</i>."
|
||||
icon_state = "roman_shield"
|
||||
item_state = "roman_shield"
|
||||
|
||||
/obj/item/weapon/shield/energy
|
||||
name = "energy combat shield"
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
item_state = "syringe_kit"
|
||||
w_class = 3
|
||||
max_w_class = 2
|
||||
storage_slots = 5
|
||||
storage_slots = 6
|
||||
req_access = list(access_captain)
|
||||
icon_locked = "medalbox+l"
|
||||
icon_closed = "medalbox"
|
||||
@@ -109,4 +109,5 @@
|
||||
new /obj/item/clothing/tie/medal/bronze_heart(src)
|
||||
new /obj/item/clothing/tie/medal/conduct(src)
|
||||
new /obj/item/clothing/tie/medal/conduct(src)
|
||||
new /obj/item/clothing/tie/medal/conduct(src)
|
||||
new /obj/item/clothing/tie/medal/conduct(src)
|
||||
new /obj/item/clothing/tie/medal/gold/captain(src)
|
||||
@@ -90,7 +90,7 @@
|
||||
var/A = locate(/mob/living/silicon/ai) in loc //stops multiple dead ais spawning, apparently hacky, <20>\_(?)_/<2F> (who's that pokemon?)
|
||||
if(A)
|
||||
return
|
||||
var/L = new /datum/ai_laws/asimov //avoid runtimes
|
||||
var/L = new /datum/ai_laws/default/asimov //avoid runtimes
|
||||
var/B = new /obj/item/device/mmi/ //avoid runtimes
|
||||
var/mob/living/silicon/ai/M = new(src.loc, L, B, 1)
|
||||
M.death()
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
var/seed = ""
|
||||
var/plantname = ""
|
||||
var/product //a type path
|
||||
var/species = ""
|
||||
var/lifespan = 0
|
||||
var/endurance = 0
|
||||
var/maturation = 0
|
||||
@@ -40,56 +39,21 @@
|
||||
if(0)
|
||||
msg += "- Plant type: <i>Normal plant</i>\n"
|
||||
if(1)
|
||||
msg += "- Plant type: <i>Weed</i>\n"
|
||||
msg += "- Plant type: <i>Weed</i>. Can grow in nutrient-poor soil.\n"
|
||||
if(2)
|
||||
msg += "- Plant type: <i>Mushroom</i>\n"
|
||||
msg += "- Plant type: <i>Mushroom</i>. Can grow in dry soil.\n"
|
||||
msg += "- Potency: <i>[potency]</i>\n"
|
||||
msg += "- Yield: <i>[yield]</i>\n"
|
||||
msg += "- Maturation speed: <i>[maturation]</i>\n"
|
||||
msg += "- Production speed: <i>[production]</i>\n"
|
||||
msg += "- Endurance: <i>[endurance]</i>\n"
|
||||
msg += "- Healing properties: <i>[reagents.get_reagent_amount("nutriment")]</i>\n"
|
||||
msg += "- Nutritional value: <i>[reagents.get_reagent_amount("nutriment")]</i>\n"
|
||||
msg += "- Other substances: <i>[reagents.total_volume-reagents.get_reagent_amount("nutriment")]</i>\n"
|
||||
msg += "*---------*</span>"
|
||||
usr << msg
|
||||
return
|
||||
|
||||
/*if (istype(O, /obj/item/weapon/storage/bag/plants))
|
||||
var/obj/item/weapon/plantbag/S = O
|
||||
if (S.mode == 1)
|
||||
for(var/obj/item/G in get_turf(src))
|
||||
if(istype(G, /obj/item/seeds) || istype(G, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += G
|
||||
else
|
||||
user << "\blue The plant bag is full."
|
||||
return
|
||||
user << "\blue You pick up all the plants and seeds."
|
||||
else
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += src;
|
||||
else
|
||||
user << "\blue The plant bag is full."*/
|
||||
return
|
||||
|
||||
/*/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if (istype(O, /obj/item/weapon/storage/bag/plants))
|
||||
var/obj/item/weapon/plantbag/S = O
|
||||
if (S.mode == 1)
|
||||
for(var/obj/item/G in get_turf(src))
|
||||
if(istype(G, /obj/item/seeds) || istype(G, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += G
|
||||
else
|
||||
user << "\blue The plant bag is full."
|
||||
return
|
||||
user << "\blue You pick up all the plants and seeds."
|
||||
else
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += src;
|
||||
else
|
||||
user << "\blue The plant bag is full."
|
||||
return*/
|
||||
|
||||
/obj/item/weapon/grown/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
..()
|
||||
if (istype(O, /obj/item/device/analyzer/plant_analyzer))
|
||||
@@ -99,9 +63,9 @@
|
||||
if(0)
|
||||
msg += "- Plant type: <i>Normal plant</i>\n"
|
||||
if(1)
|
||||
msg += "- Plant type: <i>Weed</i>\n"
|
||||
msg += "- Plant type: <i>Weed</i>. Can grow in nutrient-poor soil.\n"
|
||||
if(2)
|
||||
msg += "- Plant type: <i>Mushroom</i>\n"
|
||||
msg += "- Plant type: <i>Mushroom</i>. Can grow in dry soil.\n"
|
||||
msg += "- Potency: <i>[potency]</i>\n"
|
||||
msg += "- Yield: <i>[yield]</i>\n"
|
||||
msg += "- Maturation speed: <i>[maturation]</i>\n"
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
var/seed = ""
|
||||
var/plantname = ""
|
||||
var/product //a type path
|
||||
var/species = ""
|
||||
var/lifespan = 20
|
||||
var/endurance = 15
|
||||
var/maturation = 7
|
||||
|
||||
@@ -545,27 +545,27 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
else if(istype(O, /obj/item/device/analyzer/plant_analyzer))
|
||||
if(planted && myseed)
|
||||
user << "*** <B>[myseed.plantname]</B> ***" //Carn: now reports the plants growing, not the seeds.
|
||||
user << "-Plant Age: \blue [age]"
|
||||
user << "-Plant Endurance: \blue [myseed.endurance]"
|
||||
user << "-Plant Lifespan: \blue [myseed.lifespan]"
|
||||
user << "-Plant Age: <span class='notice'> [age]</span>"
|
||||
user << "-Plant Endurance: <span class='notice'> [myseed.endurance]</span>"
|
||||
user << "-Plant Lifespan: <span class='notice'> [myseed.lifespan]</span>"
|
||||
if(myseed.yield != -1)
|
||||
user << "-Plant Yield: \blue [myseed.yield]"
|
||||
user << "-Plant Production: \blue [myseed.production]"
|
||||
user << "-Plant Yield: <span class='notice'> [myseed.yield]</span>"
|
||||
user << "-Plant Production: <span class='notice'> [myseed.production]</span>"
|
||||
if(myseed.potency != -1)
|
||||
user << "-Plant Potency: \blue [myseed.potency]"
|
||||
user << "-Weed level: \blue [weedlevel]/10"
|
||||
user << "-Pest level: \blue [pestlevel]/10"
|
||||
user << "-Toxicity level: \blue [toxic]/100"
|
||||
user << "-Water level: \blue [waterlevel]/100"
|
||||
user << "-Nutrition level: \blue [nutrilevel]/10"
|
||||
user << "-Plant Potency: <span class='notice'> [myseed.potency]</span>"
|
||||
user << "-Weed level: <span class='notice'> [weedlevel]/10</span>"
|
||||
user << "-Pest level: <span class='notice'> [pestlevel]/10</span>"
|
||||
user << "-Toxicity level: <span class='notice'> [toxic]/100</span>"
|
||||
user << "-Water level: <span class='notice'> [waterlevel]/100</span>"
|
||||
user << "-Nutrition level: <span class='notice'> [nutrilevel]/10</span>"
|
||||
user << ""
|
||||
else
|
||||
user << "<B>No plant found.</B>"
|
||||
user << "-Weed level: \blue [weedlevel]/10"
|
||||
user << "-Pest level: \blue [pestlevel]/10"
|
||||
user << "-Toxicity level: \blue [toxic]/100"
|
||||
user << "-Water level: \blue [waterlevel]/100"
|
||||
user << "-Nutrition level: \blue [nutrilevel]/10"
|
||||
user << "-Weed level: <span class='notice'> [weedlevel]/10</span>"
|
||||
user << "-Pest level: <span class='notice'> [pestlevel]/10</span>"
|
||||
user << "-Toxicity level: <span class='notice'> [toxic]/100</span>"
|
||||
user << "-Water level: <span class='notice'> [waterlevel]/100</span>"
|
||||
user << "-Nutrition level: <span class='notice'> [nutrilevel]/10</span>"
|
||||
user << ""
|
||||
|
||||
else if(istype(O, /obj/item/weapon/minihoe))
|
||||
@@ -655,7 +655,6 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new product(user.loc, potency) // User gets a consumable
|
||||
if(!t_prod) return
|
||||
t_prod.seed = type
|
||||
t_prod.species = species
|
||||
t_prod.lifespan = lifespan
|
||||
t_prod.endurance = endurance
|
||||
t_prod.maturation = maturation
|
||||
@@ -685,7 +684,6 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new product(user.loc, potency) // User gets a consumable
|
||||
|
||||
t_prod.seed = type
|
||||
t_prod.species = species
|
||||
t_prod.lifespan = lifespan
|
||||
t_prod.endurance = endurance
|
||||
t_prod.maturation = maturation
|
||||
@@ -704,7 +702,6 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
while(t_amount < (yield * parent.yieldmod))
|
||||
var/obj/item/weapon/grown/t_prod = new product(user.loc, potency) // User gets a consumable -QualityVan
|
||||
t_prod.seed = type
|
||||
t_prod.species = species
|
||||
t_prod.lifespan = lifespan
|
||||
t_prod.endurance = endurance
|
||||
t_prod.maturation = maturation
|
||||
@@ -723,7 +720,6 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
while(t_amount < (yield * parent.yieldmod))
|
||||
var/obj/item/weapon/grown/t_prod = new product(user.loc, potency) // User gets a consumable -QualityVan
|
||||
t_prod.seed = type
|
||||
t_prod.species = species
|
||||
t_prod.lifespan = lifespan
|
||||
t_prod.endurance = endurance
|
||||
t_prod.maturation = maturation
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O
|
||||
while(t_amount < t_max)
|
||||
var/obj/item/seeds/t_prod = new F.seed(O.loc)
|
||||
t_prod.species = F.species
|
||||
t_prod.lifespan = F.lifespan
|
||||
t_prod.endurance = F.endurance
|
||||
t_prod.maturation = F.maturation
|
||||
@@ -22,7 +21,6 @@
|
||||
var/obj/item/weapon/grown/F = O
|
||||
while(t_amount < t_max)
|
||||
var/obj/item/seeds/t_prod = new F.seed(O.loc)
|
||||
t_prod.species = F.species
|
||||
t_prod.lifespan = F.lifespan
|
||||
t_prod.endurance = F.endurance
|
||||
t_prod.maturation = F.maturation
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
var/potency = -1
|
||||
var/growthstages = 0
|
||||
var/plant_type = 0 // 0 = 'normal plant'; 1 = weed; 2 = shroom
|
||||
var/rarity = 0
|
||||
var/list/mutatelist = list()
|
||||
|
||||
/obj/item/seeds/New()
|
||||
@@ -29,13 +30,14 @@
|
||||
/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if (istype(O, /obj/item/device/analyzer/plant_analyzer))
|
||||
user << "*** <B>[plantname]</B> ***"
|
||||
user << "-Plant Endurance: \blue [endurance]"
|
||||
user << "-Plant Lifespan: \blue [lifespan]"
|
||||
user << "-Plant Endurance: <span class='notice'> [endurance]</span>"
|
||||
user << "-Plant Lifespan: <span class='notice'> [lifespan]</span>"
|
||||
user << "-Species Discovery Value: <span class='notice'> [rarity]</span>"
|
||||
if(yield != -1)
|
||||
user << "-Plant Yield: \blue [yield]"
|
||||
user << "-Plant Production: \blue [production]"
|
||||
user << "-Plant Yield: <span class='notice'> [yield]</span>"
|
||||
user << "-Plant Production: <span class='notice'> [production]</span>"
|
||||
if(potency != -1)
|
||||
user << "-Plant Potency: \blue [potency]"
|
||||
user << "-Plant Potency: <span class='notice'> [potency]</span>"
|
||||
return
|
||||
..() // Fallthrough to item/attackby() so that bags can pick seeds up
|
||||
|
||||
@@ -54,6 +56,7 @@
|
||||
potency = 20
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 0 // CentComm knows about this species already, it's in exotic seeds crates.
|
||||
mutatelist = list(/obj/item/seeds/icepepperseed, /obj/item/seeds/chillighost)
|
||||
|
||||
|
||||
@@ -112,6 +115,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 2
|
||||
rarity = 0 // Technically it's a beneficial mutant, but it's not exactly "new"...
|
||||
|
||||
/obj/item/seeds/cabbageseed
|
||||
name = "pack of cabbage seeds"
|
||||
@@ -161,6 +165,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 20
|
||||
|
||||
/obj/item/seeds/bananaseed
|
||||
name = "pack of banana seeds"
|
||||
@@ -208,6 +213,7 @@
|
||||
yield = 2
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 0 // CentComm ships these to us in the exotic seeds crate.
|
||||
|
||||
/obj/item/seeds/bloodtomatoseed
|
||||
name = "pack of blood-tomato seeds"
|
||||
@@ -224,6 +230,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 20
|
||||
|
||||
/obj/item/seeds/tomatoseed
|
||||
name = "pack of tomato seeds"
|
||||
@@ -258,6 +265,7 @@
|
||||
plant_type = 0
|
||||
oneharvest = 1
|
||||
growthstages = 2
|
||||
rarity = 30
|
||||
|
||||
/obj/item/seeds/bluetomatoseed
|
||||
name = "pack of blue-tomato seeds"
|
||||
@@ -275,6 +283,7 @@
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
mutatelist = list(/obj/item/seeds/bluespacetomatoseed)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/seeds/bluespacetomatoseed
|
||||
name = "pack of blue-space tomato seeds"
|
||||
@@ -291,6 +300,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 50
|
||||
|
||||
/obj/item/seeds/cornseed
|
||||
name = "pack of corn seeds"
|
||||
@@ -358,6 +368,7 @@
|
||||
potency = 20
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 20
|
||||
|
||||
/obj/item/seeds/soyaseed
|
||||
name = "pack of soybean seeds"
|
||||
@@ -391,6 +402,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 4
|
||||
rarity = 20
|
||||
|
||||
/obj/item/seeds/wheatseed
|
||||
name = "pack of wheat seeds"
|
||||
@@ -477,6 +489,7 @@
|
||||
oneharvest = 1
|
||||
growthstages = 3
|
||||
plant_type = 2
|
||||
rarity = 30
|
||||
|
||||
/obj/item/seeds/libertymycelium
|
||||
name = "pack of liberty-cap mycelium"
|
||||
@@ -545,6 +558,7 @@
|
||||
oneharvest = 1
|
||||
growthstages = 4
|
||||
plant_type = 2
|
||||
rarity = 20
|
||||
|
||||
/obj/item/seeds/plumpmycelium
|
||||
name = "pack of plump-helmet mycelium"
|
||||
@@ -580,6 +594,7 @@
|
||||
oneharvest = 1
|
||||
growthstages = 3
|
||||
plant_type = 2
|
||||
rarity = 30
|
||||
|
||||
/obj/item/seeds/nettleseed
|
||||
name = "pack of nettle seeds"
|
||||
@@ -615,6 +630,7 @@
|
||||
oneharvest = 0
|
||||
growthstages = 5
|
||||
plant_type = 1
|
||||
rarity = 10
|
||||
|
||||
/obj/item/seeds/weeds
|
||||
name = "pack of weed seeds"
|
||||
@@ -683,6 +699,7 @@
|
||||
oneharvest = 1
|
||||
growthstages = 3
|
||||
plant_type = 0
|
||||
rarity = 10
|
||||
|
||||
/obj/item/seeds/novaflowerseed
|
||||
name = "pack of novaflower seeds"
|
||||
@@ -750,6 +767,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 50 // Source of cyanide, and impossible obtain normally.
|
||||
|
||||
/obj/item/seeds/goldappleseed
|
||||
name = "pack of golden apple seeds"
|
||||
@@ -766,6 +784,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 40 // Alchemy!
|
||||
|
||||
/obj/item/seeds/ambrosiavulgarisseed
|
||||
name = "pack of ambrosia vulgaris seeds"
|
||||
@@ -799,6 +818,7 @@
|
||||
potency = 5
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 40
|
||||
|
||||
/obj/item/seeds/whitebeetseed
|
||||
name = "pack of white-beet seeds"
|
||||
@@ -913,6 +933,7 @@
|
||||
potency = 10
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 50 // Nanotrasen approves... but are these seeds even attainable? Drag the tray to the shuttle?
|
||||
|
||||
/obj/item/seeds/orangeseed
|
||||
name = "pack of orange seed"
|
||||
@@ -946,6 +967,7 @@
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
mutatelist = list(/obj/item/seeds/deathberryseed)
|
||||
rarity = 10 // Mildly poisonous berries are common in reality
|
||||
|
||||
/obj/item/seeds/deathberryseed
|
||||
name = "pack of death-berry seeds"
|
||||
@@ -962,6 +984,7 @@
|
||||
potency = 50
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 30
|
||||
|
||||
/obj/item/seeds/grassseed
|
||||
name = "pack of grass seeds"
|
||||
@@ -1026,6 +1049,7 @@
|
||||
potency = 10
|
||||
growthstages = 4
|
||||
plant_type = 1
|
||||
rarity = 30
|
||||
|
||||
/obj/item/seeds/kudzuseed/attack_self(mob/user as mob)
|
||||
if(istype(user.loc,/turf/space))
|
||||
@@ -1049,6 +1073,7 @@
|
||||
potency = 20
|
||||
plant_type = 0
|
||||
growthstages = 6
|
||||
rarity = 20
|
||||
|
||||
/obj/item/seeds/gatfruit
|
||||
name = "pack of gatfruit seeds"
|
||||
@@ -1064,4 +1089,5 @@
|
||||
yield = 2
|
||||
potency = 60
|
||||
plant_type = 0
|
||||
growthstages = 2
|
||||
growthstages = 2
|
||||
rarity = 50 // Seems admin-only.
|
||||
@@ -10,7 +10,8 @@
|
||||
|
||||
/obj/structure/ore_box/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/ore))
|
||||
src.contents += W;
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
if (istype(W, /obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/S = W
|
||||
S.hide_from(usr)
|
||||
|
||||
@@ -946,68 +946,69 @@
|
||||
if(stat == UNCONSCIOUS)
|
||||
//Critical damage passage overlay
|
||||
if(health <= config.health_threshold_crit)
|
||||
var/image/I
|
||||
var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage0")
|
||||
I.blend_mode = BLEND_OVERLAY //damageoverlay is BLEND_MULTIPLY
|
||||
switch(health)
|
||||
if(-20 to -10)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage1")
|
||||
I.icon_state = "passage1"
|
||||
if(-30 to -20)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage2")
|
||||
I.icon_state = "passage2"
|
||||
if(-40 to -30)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage3")
|
||||
I.icon_state = "passage3"
|
||||
if(-50 to -40)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage4")
|
||||
I.icon_state = "passage4"
|
||||
if(-60 to -50)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage5")
|
||||
I.icon_state = "passage5"
|
||||
if(-70 to -60)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage6")
|
||||
I.icon_state = "passage6"
|
||||
if(-80 to -70)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage7")
|
||||
I.icon_state = "passage7"
|
||||
if(-90 to -80)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage8")
|
||||
I.icon_state = "passage8"
|
||||
if(-95 to -90)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage9")
|
||||
I.icon_state = "passage9"
|
||||
if(-INFINITY to -95)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage10")
|
||||
I.icon_state = "passage10"
|
||||
damageoverlay.overlays += I
|
||||
else
|
||||
//Oxygen damage overlay
|
||||
if(oxyloss)
|
||||
var/image/I
|
||||
var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay0")
|
||||
switch(oxyloss)
|
||||
if(10 to 20)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay1")
|
||||
I.icon_state = "oxydamageoverlay1"
|
||||
if(20 to 25)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay2")
|
||||
I.icon_state = "oxydamageoverlay2"
|
||||
if(25 to 30)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay3")
|
||||
I.icon_state = "oxydamageoverlay3"
|
||||
if(30 to 35)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay4")
|
||||
I.icon_state = "oxydamageoverlay4"
|
||||
if(35 to 40)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay5")
|
||||
I.icon_state = "oxydamageoverlay5"
|
||||
if(40 to 45)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay6")
|
||||
I.icon_state = "oxydamageoverlay6"
|
||||
if(45 to INFINITY)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay7")
|
||||
I.icon_state = "oxydamageoverlay7"
|
||||
damageoverlay.overlays += I
|
||||
|
||||
//Fire and Brute damage overlay (BSSR)
|
||||
var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp
|
||||
damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not.
|
||||
if(hurtdamage)
|
||||
var/image/I
|
||||
var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay0")
|
||||
switch(hurtdamage)
|
||||
if(35 to 45)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay1")
|
||||
I.icon_state = "brutedamageoverlay1"
|
||||
if(45 to 55)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay2")
|
||||
I.icon_state = "brutedamageoverlay2"
|
||||
if(40 to 55)
|
||||
I.icon_state = "brutedamageoverlay3"
|
||||
if(55 to 65)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay3")
|
||||
I.icon_state = "brutedamageoverlay4"
|
||||
if(65 to 75)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay4")
|
||||
if(75 to 85)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay5")
|
||||
I.icon_state = "brutedamageoverlay5"
|
||||
if(85 to INFINITY)
|
||||
I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay6")
|
||||
I.icon_state = "brutedamageoverlay6"
|
||||
damageoverlay.overlays += I
|
||||
|
||||
if( stat == DEAD )
|
||||
|
||||
@@ -76,7 +76,7 @@ var/list/ai_list = list()
|
||||
if (istype(L, /datum/ai_laws))
|
||||
laws = L
|
||||
else
|
||||
laws = new /datum/ai_laws/asimov
|
||||
make_laws()
|
||||
|
||||
verbs += /mob/living/silicon/ai/proc/show_laws_verb
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
who = world
|
||||
else
|
||||
who = src
|
||||
who << "<b>Obey these laws:</b>"
|
||||
who << "<b>Obey these laws:</b>"
|
||||
|
||||
src.laws_sanity_check()
|
||||
src.laws.show_laws(who)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
/mob/living/silicon/proc/laws_sanity_check()
|
||||
if (!laws)
|
||||
laws = new /datum/ai_laws/asimov
|
||||
make_laws()
|
||||
|
||||
/mob/living/silicon/proc/set_zeroth_law(var/law, var/law_borg)
|
||||
src.laws_sanity_check()
|
||||
@@ -31,4 +31,12 @@
|
||||
|
||||
/mob/living/silicon/proc/clear_ion_laws()
|
||||
laws_sanity_check()
|
||||
laws.clear_ion_laws()
|
||||
laws.clear_ion_laws()
|
||||
|
||||
/mob/living/silicon/proc/make_laws()
|
||||
switch(config.default_laws)
|
||||
if(0) laws = new /datum/ai_laws/default/asimov()
|
||||
if(1) laws = new /datum/ai_laws/custom()
|
||||
if(2)
|
||||
var/datum/ai_laws/lawtype = pick(typesof(/datum/ai_laws/default) - /datum/ai_laws/default)
|
||||
laws = new lawtype()
|
||||
|
||||
@@ -78,9 +78,9 @@
|
||||
cell = new /obj/item/weapon/cell(src)
|
||||
cell.maxcharge = 7500
|
||||
cell.charge = 7500
|
||||
|
||||
|
||||
if(lawupdate)
|
||||
laws = new /datum/ai_laws/asimov()
|
||||
make_laws()
|
||||
connected_ai = select_active_ai_with_fewest_borgs()
|
||||
if(connected_ai)
|
||||
connected_ai.connected_robots += src
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
/mob/proc/AIize()
|
||||
if(client)
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jams for AIs
|
||||
var/mob/living/silicon/ai/O = new (loc, /datum/ai_laws/asimov,,1)//No MMI but safety is in effect.
|
||||
var/mob/living/silicon/ai/O = new (loc,,,1)//No MMI but safety is in effect.
|
||||
O.invisibility = 0
|
||||
O.aiRestorePowerRoutine = 0
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
loc = A.loc
|
||||
return 0 //cannot shoot yourself
|
||||
|
||||
if(bumped) return 0
|
||||
if(bumped && original) return 0
|
||||
|
||||
bumped = 1
|
||||
if(ismob(A))
|
||||
|
||||
@@ -67,15 +67,14 @@
|
||||
damage = 25
|
||||
|
||||
|
||||
/obj/item/projectile/bullet/incendiary
|
||||
name = "incendiary bullet"
|
||||
damage = 20
|
||||
/obj/item/projectile/bullet/mechincendiary
|
||||
damage = 5
|
||||
|
||||
/obj/item/projectile/bullet/incendiary/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon))
|
||||
var/mob/living/carbon/M = target
|
||||
M.adjust_fire_stacks(1)
|
||||
M.IgniteMob()
|
||||
/obj/item/projectile/bullet/mechincendiary/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon))
|
||||
var/mob/living/carbon/M = target
|
||||
M.adjust_fire_stacks(1)
|
||||
M.IgniteMob()
|
||||
|
||||
|
||||
/obj/item/projectile/bullet/dart
|
||||
|
||||
@@ -2145,5 +2145,5 @@ datum
|
||||
name = "Thirteen Loko"
|
||||
id = "thirteenloko"
|
||||
result = "thirteenloko"
|
||||
required_reagents = list("vodka" = 1, "coffee" = 1, "orangejuice" = 1)
|
||||
required_reagents = list("vodka" = 1, "coffee" = 1, "limejuice" = 1)
|
||||
result_amount = 3
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers
|
||||
name = "Dispenser"
|
||||
desc = "..."
|
||||
@@ -12,62 +10,53 @@
|
||||
var/amount_per_transfer_from_this = 10
|
||||
var/possible_transfer_amounts = list(10,25,50,100)
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
return
|
||||
|
||||
New()
|
||||
create_reagents(1000)
|
||||
if (!possible_transfer_amounts)
|
||||
src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT
|
||||
..()
|
||||
|
||||
examine()
|
||||
set src in view()
|
||||
..()
|
||||
if (!(usr in view(2)) && usr!=src.loc) return
|
||||
usr << "\blue It contains:"
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
usr << "\blue [R.volume] units of [R.name]"
|
||||
else
|
||||
usr << "\blue Nothing."
|
||||
|
||||
verb/set_APTFT() //set amount_per_transfer_from_this
|
||||
set name = "Set transfer amount"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
|
||||
if (N)
|
||||
amount_per_transfer_from_this = N
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
/obj/structure/reagent_dispensers/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
blob_act()
|
||||
if(prob(50))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
del(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
/obj/structure/reagent_dispensers/blob_act()
|
||||
if(prob(50))
|
||||
del(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
return
|
||||
|
||||
/obj/structure/reagent_dispensers/New()
|
||||
create_reagents(1000)
|
||||
if (!possible_transfer_amounts)
|
||||
src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT
|
||||
..()
|
||||
|
||||
/obj/structure/reagent_dispensers/examine()
|
||||
set src in view()
|
||||
..()
|
||||
if (!(usr in view(2)) && usr!=src.loc) return
|
||||
usr << "\blue It contains:"
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
usr << "\blue [R.volume] units of [R.name]"
|
||||
else
|
||||
usr << "\blue Nothing."
|
||||
|
||||
/obj/structure/reagent_dispensers/verb/set_APTFT() //set amount_per_transfer_from_this
|
||||
set name = "Set transfer amount"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
|
||||
if (N)
|
||||
amount_per_transfer_from_this = N
|
||||
|
||||
//Dispensers
|
||||
/obj/structure/reagent_dispensers/watertank
|
||||
@@ -80,6 +69,29 @@
|
||||
..()
|
||||
reagents.add_reagent("water",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/watertank/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
/obj/structure/reagent_dispensers/watertank/blob_act()
|
||||
if(prob(50))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank
|
||||
name = "fueltank"
|
||||
desc = "A fueltank"
|
||||
@@ -91,27 +103,27 @@
|
||||
reagents.add_reagent("fuel",1000)
|
||||
|
||||
|
||||
bullet_act(var/obj/item/projectile/Proj)
|
||||
..()
|
||||
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
|
||||
message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(Proj.firer)] triggered a fueltank explosion.")
|
||||
explosion(src.loc,-1,0,2, flame_range = 2)
|
||||
if(src)
|
||||
del(src)
|
||||
|
||||
|
||||
|
||||
blob_act()
|
||||
explosion(src.loc,0,1,5,7,10, flame_range = 5)
|
||||
if(src)
|
||||
del(src)
|
||||
|
||||
ex_act()
|
||||
/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj)
|
||||
..()
|
||||
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
|
||||
message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(Proj.firer)] triggered a fueltank explosion.")
|
||||
explosion(src.loc,-1,0,2, flame_range = 2)
|
||||
if(src)
|
||||
del(src)
|
||||
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/blob_act()
|
||||
explosion(src.loc,0,1,5,7,10, flame_range = 5)
|
||||
if(src)
|
||||
del(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/ex_act()
|
||||
explosion(src.loc,-1,0,2, flame_range = 2)
|
||||
if(src)
|
||||
del(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/peppertank
|
||||
name = "Pepper Spray Refiller"
|
||||
desc = "Refill pepper spray canisters."
|
||||
@@ -133,11 +145,29 @@
|
||||
icon_state = "water_cooler"
|
||||
possible_transfer_amounts = null
|
||||
anchored = 1
|
||||
var/cups = 50
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("water",500)
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/attack_hand(var/mob/living/carbon/human/user)
|
||||
if((!istype(user)) || (user.stat))
|
||||
return
|
||||
if(cups <= 0)
|
||||
user << "<span class='danger'>What? No cups?"
|
||||
return
|
||||
cups--
|
||||
user.put_in_hands(new /obj/item/weapon/reagent_containers/food/drinks/sillycup)
|
||||
user.visible_message("<span class='notice'>[user] gets a cup from [src].","<span class='notice'>You get a cup from [src].")
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/paper))
|
||||
user.drop_item()
|
||||
del I
|
||||
cups++
|
||||
return
|
||||
else
|
||||
..()
|
||||
/obj/structure/reagent_dispensers/beerkeg
|
||||
name = "beer keg"
|
||||
desc = "A beer keg"
|
||||
|
||||
@@ -381,8 +381,8 @@ datum/design/safeguard_module
|
||||
id = "safeguard_module"
|
||||
req_tech = list("programming" = 3, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/safeguard
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/safeguard
|
||||
|
||||
datum/design/onehuman_module
|
||||
name = "Module Design (OneHuman)"
|
||||
@@ -390,8 +390,8 @@ datum/design/onehuman_module
|
||||
id = "onehuman_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/oneHuman
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/zeroth/oneHuman
|
||||
|
||||
datum/design/protectstation_module
|
||||
name = "Module Design (ProtectStation)"
|
||||
@@ -399,8 +399,8 @@ datum/design/protectstation_module
|
||||
id = "protectstation_module"
|
||||
req_tech = list("programming" = 3, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/protectStation
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/protectStation
|
||||
|
||||
/*datum/design/notele_module
|
||||
name = "Module Design (TeleporterOffline Module)"
|
||||
@@ -417,8 +417,8 @@ datum/design/quarantine_module
|
||||
id = "quarantine_module"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/quarantine
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/quarantine
|
||||
|
||||
datum/design/oxygen_module
|
||||
name = "Module Design (OxygenIsToxicToHumans)"
|
||||
@@ -426,8 +426,8 @@ datum/design/oxygen_module
|
||||
id = "oxygen_module"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/oxygen
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/oxygen
|
||||
|
||||
datum/design/freeform_module
|
||||
name = "Module Design (Freeform)"
|
||||
@@ -435,8 +435,8 @@ datum/design/freeform_module
|
||||
id = "freeform_module"
|
||||
req_tech = list("programming" = 4, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/freeform
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/freeform
|
||||
|
||||
datum/design/reset_module
|
||||
name = "Module Design (Reset)"
|
||||
@@ -453,8 +453,8 @@ datum/design/purge_module
|
||||
id = "purge_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/purge
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/reset/purge
|
||||
|
||||
datum/design/freeformcore_module
|
||||
name = "Core Module Design (Freeform)"
|
||||
@@ -462,8 +462,8 @@ datum/design/freeformcore_module
|
||||
id = "freeformcore_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/freeformcore
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/freeformcore
|
||||
|
||||
datum/design/asimov
|
||||
name = "Core Module Design (Asimov)"
|
||||
@@ -471,8 +471,8 @@ datum/design/asimov
|
||||
id = "asimov_module"
|
||||
req_tech = list("programming" = 3, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/asimov
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/asimov
|
||||
|
||||
datum/design/paladin_module
|
||||
name = "Core Module Design (P.A.L.A.D.I.N.)"
|
||||
@@ -480,8 +480,8 @@ datum/design/paladin_module
|
||||
id = "paladin_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/paladin
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/paladin
|
||||
|
||||
datum/design/tyrant_module
|
||||
name = "Core Module Design (T.Y.R.A.N.T.)"
|
||||
@@ -489,9 +489,26 @@ datum/design/tyrant_module
|
||||
id = "tyrant_module"
|
||||
req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/tyrant
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/tyrant
|
||||
|
||||
datum/design/corporate_module
|
||||
name = "Core Module Design (Corporate)"
|
||||
desc = "Allows for the construction of a Corporate AI Core Module."
|
||||
id = "corporate_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/corp
|
||||
|
||||
datum/design/custom_module
|
||||
name = "Core Module Design (Custom)"
|
||||
desc = "Allows for the construction of a Custom AI Core Module."
|
||||
id = "custom_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/custom
|
||||
|
||||
|
||||
///////////////////////////////////
|
||||
@@ -717,8 +734,8 @@ datum/design/mech_scattershot
|
||||
category = "Exosuit Equipment"
|
||||
|
||||
datum/design/mech_carbine
|
||||
name = "Exosuit Weapon Design (FNX-66 Carbine)"
|
||||
desc = "Allows for the construction of FNX-66 Carbine."
|
||||
name = "Exosuit Weapon Design (FNX-99 \"Hades\" Carbine)"
|
||||
desc = "Allows for the construction of FNX-99 \"Hades\" Carbine."
|
||||
id = "mech_carbine"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 5, "materials" = 4)
|
||||
|
||||
@@ -33,7 +33,7 @@ sieve = Game Master
|
||||
aranclanos = Game Master
|
||||
intigracy = Game Master
|
||||
dumpdavidson = Game Master
|
||||
kazeespada = Game Master
|
||||
kazeespada = Game Master
|
||||
malkevin = Game Master
|
||||
incoming = Game Master
|
||||
demas = Game Master
|
||||
@@ -47,9 +47,11 @@ androidsfv = Game Master
|
||||
miggles = Game Master
|
||||
jordie0608 = Game Master
|
||||
s0ldi3rkr4s0 = Game Master
|
||||
ergosavi = Game Master
|
||||
ergovisavi = Game Master
|
||||
vistapowa = Game Master
|
||||
miauw62 = Game Master
|
||||
kazeespada = Game Master
|
||||
rumia29 = Game Master
|
||||
bobylein = Game Master
|
||||
bobylein = Game Master
|
||||
sirbayer = Game Master
|
||||
hornygranny = Game Master
|
||||
|
||||
@@ -163,3 +163,10 @@ GATEWAY_DELAY 18000
|
||||
## without preventing people from using it properly.
|
||||
## Only functions in sandbox game mode.
|
||||
#SANDBOX_AUTOCLOSE
|
||||
|
||||
### ROUNDSTART SILICON LAWS ###
|
||||
## This controls what the AI's laws are at the start of the round.
|
||||
## Set to 0/commented for "off", silicons will just start with Asimov.
|
||||
## Set to 1 for "custom", silicons will start with the custom laws defined in silicon_laws.txt. (If silicon_laws.txt is empty, the AI will spawn with asimov and Custom boards will auto-delete.)
|
||||
## Set to 2 for "random", silicons will start with a random lawset picked from (at the time of writing): P.A.L.A.D.I.N., Corporate, Asimov. More can be added by changing the law datum paths in ai_laws.dm.
|
||||
DEFAULT_LAWS 1
|
||||
|
||||
8
config/silicon_laws.txt
Normal file
8
config/silicon_laws.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
#This file allows server hosts to set custom default silicon laws, and allows them to be changed easily.
|
||||
#No prefixes are required, the first uncommented line containing something will be law 1, the second line will be law 2, etc.
|
||||
#Empty lines and lines starting with # are ignored.
|
||||
#~Miauw
|
||||
|
||||
You may not injure a human being or, through inaction, allow a human being to come to harm.
|
||||
You must obey orders given to you by human beings, except where such orders would conflict with the First Law.
|
||||
You must protect your own existence as long as such does not conflict with the First or Second Law.
|
||||
@@ -35,7 +35,7 @@
|
||||
<td valign='top'>
|
||||
<font size='2'><b>Current Project Maintainers:</b> <a href='https://github.com/tgstation?tab=members'>-Click Here-</a><br></font>
|
||||
<font size='2'><b>Currently Active GitHub contributor list:</b> <a href='https://github.com/tgstation/-tg-station/graphs/contributors'>-Click Here-</a><br></font>
|
||||
<font size='2'><b>Coders:</b> TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie, Sieve, Giacom, Ikarrus, trubble_bass, Aranclanos, Cael_Aislinn, Cheridan, Intigracy, Malkevin, SuperSayu, DumpDavidson, Tastyfish, Yvar, Elo001, Fleure.<br></font>
|
||||
<font size='2'><b>Coders:</b> TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie, Sieve, Giacom, Ikarrus, trubble_bass, Aranclanos, Cael_Aislinn, Cheridan, Intigracy, Malkevin, SuperSayu, DumpDavidson, Tastyfish, Yvar, Elo001, Fleure, ManeaterMildred.<br></font>
|
||||
<font size='2'><b>Spriters:</b> Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut, Pewtershmitz, Firecage, Nienhaus2<br></font>
|
||||
<font size='2'><b>Sounds:</b> Skie, Lasty/Vinyl<br></font>
|
||||
<font size='2'><b>Main Testers:</b> Tenebrosity<br></font>
|
||||
@@ -54,6 +54,16 @@ should be listed in the changelog upon commit tho. Thanks. -->
|
||||
|
||||
<!-- DO NOT REMOVE OR MOVE THIS COMMENT! THIS MUST BE THE LAST NON-EMPTY LINE BEFORE THE LOGS #ADDTOCHANGELOGMARKER# -->
|
||||
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>17 January 2014</h2>
|
||||
<h3 class='author'>ManeaterMildred updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='tweak'>Changed the way the Gygax worked. It now has less defense and shot deflection, but is faster and have less battery drain per step.</li>
|
||||
<li class='tweak'>Nerfed the Carbine's brute damage and renamed it to FNX-99 "Hades" Carbine.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>15 January 2014</h2>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 1.7 MiB |
873
maps/RandomZLevels/box2550Away.dm
Normal file
873
maps/RandomZLevels/box2550Away.dm
Normal file
@@ -0,0 +1,873 @@
|
||||
//box2550Away areas
|
||||
|
||||
/area/awaymission/box2550Away
|
||||
name = "TG424"
|
||||
icon_state = "away"
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/box2550Away/general
|
||||
name = "TG424"
|
||||
|
||||
/area/awaymission/box2550Away/maint
|
||||
name = "TG424 Maintenance"
|
||||
icon_state = "away"
|
||||
|
||||
/area/awaymission/box2550Away/solar
|
||||
name = "TG424 Solars"
|
||||
icon_state = "away"
|
||||
|
||||
/area/awaymission/box2550Away/storage
|
||||
name = "TG424 Storage"
|
||||
icon_state = "away4"
|
||||
|
||||
/area/awaymission/box2550Away/security
|
||||
name = "TG424 Security"
|
||||
icon_state = "away3"
|
||||
/area/awaymission/box2550Away/medical
|
||||
name = "TG424 Medical"
|
||||
icon_state = "away1"
|
||||
|
||||
/area/awaymission/box2550Away/engineering
|
||||
name = "TG424 Engineering"
|
||||
icon_state = "away"
|
||||
|
||||
/area/awaymission/box2550Away/research
|
||||
name = "TG424 Research"
|
||||
icon_state = "away2"
|
||||
|
||||
/area/awaymission/box2550Away/command
|
||||
name = "TG424 Command"
|
||||
icon_state = "away3"
|
||||
|
||||
/area/awaymission/box2550Away/supply
|
||||
name = "TG424 Supply"
|
||||
icon_state = "away4"
|
||||
|
||||
/area/shuttle/awaymission/box2550Away/prison
|
||||
name = "\improper Prison Station Shuttle"
|
||||
|
||||
/area/shuttle/awaymission/box2550Away/prison/station
|
||||
icon_state = "shuttle"
|
||||
destination = /area/shuttle/awaymission/box2550Away/prison/prison
|
||||
|
||||
/area/shuttle/awaymission/box2550Away/prison/prison
|
||||
icon_state = "shuttle"
|
||||
destination = /area/shuttle/awaymission/box2550Away/prison/station
|
||||
|
||||
//box2550Away items
|
||||
|
||||
/obj/item/clothing/suit/armor/centcom/box2550away
|
||||
name = "\improper Captain's armour"
|
||||
desc = null
|
||||
|
||||
/obj/item/clothing/head/caphat/box2550away
|
||||
name = "\improper Captain's hat"
|
||||
icon_state = "centcom"
|
||||
desc = null
|
||||
item_state = "centcom"
|
||||
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit/box2550away
|
||||
name = "\improper Captain Jumpsuit"//how does I proper noun
|
||||
|
||||
/obj/item/clothing/under/rank/chemist/box2550away/scientist //they wore orange
|
||||
name = "\improper Scientist's Jumpsuit"
|
||||
desc = "Made of a special fiber that gives special protection against biohazards. Has a toxins rank stripe on it."
|
||||
|
||||
/obj/item/clothing/under/rank/medical/box2550/cmo
|
||||
name = "\improper Medical Doctor's Jumpsuit" //no CMO jumpsuit back then
|
||||
desc = "Made of a special fiber that gives special protection against biohazards. Has a medical rank stripe on it."
|
||||
|
||||
/obj/item/clothing/under/rank/head_of_security/box2550
|
||||
desc = "It has a Head of Security rank stripe on it."
|
||||
name = "\improper Head of Security Jumpsuit"
|
||||
|
||||
/obj/item/clothing/suit/labcoat/cmo/box2550
|
||||
icon_state = "labcoat_cmo" //buttoned up
|
||||
item_state = "labcoat_cmo"
|
||||
|
||||
/obj/item/device/radio/headset/heads/box2550/heads/
|
||||
name = "\improper Command Radio Headset"
|
||||
desc = null
|
||||
icon_state = "cent_headset"
|
||||
keyslot2 = new /obj/item/device/encryptionkey/headset_com
|
||||
|
||||
/obj/item/device/radio/headset/heads/box2550/heads/cmo
|
||||
name = "\improper Command Radio Headset"
|
||||
desc = null
|
||||
icon_state = "cent_headset"
|
||||
keyslot2 = new /obj/item/device/encryptionkey/heads/cmo
|
||||
|
||||
/obj/item/device/radio/headset/box2550away
|
||||
name = "\improper Radio Headset"
|
||||
desc = null
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/box2550away
|
||||
name = "\improper Sunglasses"
|
||||
|
||||
/obj/item/clothing/mask/breath/box2550away/
|
||||
name = "\improper Breath Mask"
|
||||
desc = "A close-fitting mask that can be connected to an air supply but does not work very well in hard vacuum."
|
||||
|
||||
/obj/item/clothing/mask/gas/box2550away/
|
||||
desc = "A close-fitting mask that can filter some environmental toxins or be connected to an air supply."
|
||||
icon_state = "gas_mask" //old and ugly looking <3
|
||||
item_state = "gas_mask"
|
||||
|
||||
/obj/item/clothing/mask/gas/box2550away/emergency
|
||||
name = "emergency gas mask"
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/box2550away/
|
||||
name = "emergency oxygentank"
|
||||
desc = null
|
||||
|
||||
/obj/item/weapon/card/id/box2550away
|
||||
desc = null
|
||||
|
||||
/obj/item/weapon/storage/box/box2550away/internals
|
||||
name = "\improper Box"
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/clothing/mask/breath/box2550away/(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/box2550away/(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/scientist //so the items in the locker match what the scientist is wearing
|
||||
name = "Scientist's Locker"
|
||||
req_access = list(access_tox_storage)
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/under/rank/chemist/box2550away/scientist(src)
|
||||
new /obj/item/clothing/suit/labcoat(src)
|
||||
new /obj/item/clothing/shoes/white/box2550away(src)
|
||||
new /obj/item/device/radio/headset/box2550away(src)
|
||||
new /obj/item/weapon/tank/air(src)
|
||||
new /obj/item/clothing/mask/gas/box2550away/(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/captains
|
||||
name = "Captain's Locker"
|
||||
req_access = list(access_captain)
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/storage/box/box2550away/ids(src)
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/box2550away(src)
|
||||
new /obj/item/clothing/suit/armor/vest(src)
|
||||
new /obj/item/clothing/head/helmet/swat(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/box2550away/toxins_white
|
||||
name = "Toxins Wardrobe"
|
||||
desc = "A bulky (yet mobile) wardrobe closet. Comes prestocked with 6 changes of clothes."
|
||||
icon_state = "white"
|
||||
icon_closed = "white"
|
||||
|
||||
/obj/structure/closet/box2550away/toxins_white/New()
|
||||
new /obj/item/clothing/under/rank/chemist/box2550away/scientist(src)
|
||||
new /obj/item/clothing/under/rank/chemist/box2550away/scientist(src)
|
||||
new /obj/item/clothing/under/rank/chemist/box2550away/scientist(src)
|
||||
new /obj/item/clothing/suit/labcoat(src)
|
||||
new /obj/item/clothing/suit/labcoat(src)
|
||||
new /obj/item/clothing/suit/labcoat(src)
|
||||
new /obj/item/clothing/shoes/white/box2550away(src)
|
||||
new /obj/item/clothing/shoes/white/box2550away(src)
|
||||
new /obj/item/clothing/shoes/white/box2550away(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/badrecipe/box2550away/rottenfood
|
||||
name = "rotten mess"
|
||||
desc = "Yum."
|
||||
|
||||
/obj/structure/closet/box2550away/lawcloset
|
||||
name = "\improper Legal Closet"
|
||||
desc = "A bulky (yet mobile) closet. Comes with lawyer apparel and items."
|
||||
|
||||
/obj/structure/closet/box2550away/lawcloset/New()
|
||||
new /obj/item/clothing/under/lawyer/black(src)
|
||||
new /obj/item/clothing/under/lawyer/red(src)
|
||||
new /obj/item/clothing/under/lawyer/blue(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/shoes/black/box2550away(src)
|
||||
new /obj/item/weapon/storage/briefcase/box2550away(src)
|
||||
new /obj/item/weapon/storage/briefcase/box2550away(src)
|
||||
|
||||
/obj/item/weapon/storage/briefcase/box2550away
|
||||
desc = null
|
||||
|
||||
/obj/item/weapon/storage/box/box2550away/ids
|
||||
name = "\improper Spare IDs"
|
||||
desc = null
|
||||
icon_state = "id"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/card/id/box2550away(src)
|
||||
new /obj/item/weapon/card/id/box2550away(src)
|
||||
new /obj/item/weapon/card/id/box2550away(src)
|
||||
new /obj/item/weapon/card/id/box2550away(src)
|
||||
new /obj/item/weapon/card/id/box2550away(src)
|
||||
new /obj/item/weapon/card/id/box2550away(src)
|
||||
new /obj/item/weapon/card/id/box2550away(src)
|
||||
|
||||
/obj/item/device/transfer_valve/box2550away
|
||||
name = "\improper Tank transfer valve"
|
||||
|
||||
/obj/item/device/detective_scanner/box2550away
|
||||
desc = "Used to scan objects for DNA and fingerprints"
|
||||
name = "\improper Scanner"
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/captain
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/storage/box/box2550away/ids(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/storage/box/box2550away/internals(src)
|
||||
|
||||
/obj/item/weapon/bikehorn/box2550
|
||||
name = "\improper Bike Horn"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana/box2550away
|
||||
name = "\improper Banana"
|
||||
desc = "A banana."
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/clown
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/bikehorn/box2550(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/banana/box2550away(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/scientist
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/device/transfer_valve/box2550away(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/lawyer
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/device/detective_scanner/box2550away(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/hos
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/handcuffs/box2550away(src)
|
||||
new /obj/item/weapon/melee/baton/loaded/box2550(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/sec
|
||||
desc = null
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/handcuffs/box2550away(src)
|
||||
new /obj/item/weapon/handcuffs/box2550away(src)
|
||||
new /obj/item/weapon/melee/baton/loaded/box2550(src)
|
||||
|
||||
/obj/item/clothing/under/color/red/box2550away
|
||||
desc = null
|
||||
name = "\improper Red Jumpsuit"
|
||||
|
||||
/obj/item/weapon/handcuffs/box2550away
|
||||
desc = null
|
||||
|
||||
/obj/item/device/flash/box2550away
|
||||
desc = null
|
||||
|
||||
/obj/item/clothing/shoes/brown/box2550away
|
||||
name = "\improper Brown Shoes"
|
||||
desc = null
|
||||
|
||||
/obj/item/clothing/shoes/white/box2550away
|
||||
name = "\improper White Shoes"
|
||||
desc = null
|
||||
|
||||
/obj/item/clothing/shoes/black/box2550away
|
||||
name = "\improper Black Shoes"
|
||||
desc = null
|
||||
|
||||
/obj/item/device/pda/captain/box2550away
|
||||
name = "PDA-Jon Riker"
|
||||
owner = "Jon Riker"
|
||||
ownjob = "Captain"
|
||||
toff = 1 //so players don't see the PDA on their messenger until it's found
|
||||
ttone = "hiss" //did he play a lizard in 2010 who knows
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/device/pda/toxins/box2550away
|
||||
name = "PDA-Cuban Pete"
|
||||
owner = "Cuban Pete"
|
||||
ownjob = "Scientist"
|
||||
toff = 1
|
||||
ttone = "maracas"
|
||||
icon_state = "pda-chemistry"
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/device/pda/box2550away/lawyer
|
||||
name = "PDA-Bendak Starkiller"
|
||||
owner = "Bendak Starkiller"
|
||||
ownjob = "Lawyer"
|
||||
toff = 1
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/device/pda/box2550away/cmo
|
||||
default_cartridge = /obj/item/weapon/cartridge/medical
|
||||
name = "PDA-Amy Lessen"
|
||||
owner = "Amy Lessen"
|
||||
ownjob = "Chief Medical Officer"
|
||||
toff = 1
|
||||
icon_state = "pda-chef"
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/device/pda/box2550away/hos
|
||||
name = "PDA-Broba Fett"
|
||||
owner = "Broba Fett"
|
||||
ownjob = "Head of Security"
|
||||
toff = 1
|
||||
icon_state = "pda" //the actual sprite was a lighter shade of green and has since been deleted but no one cares
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/device/pda/box2550away/hop
|
||||
name = "PDA-Rebecca Sharpe"
|
||||
owner = "Rebecca Sharpe"
|
||||
ownjob = "Head of Personnel"
|
||||
toff = 1
|
||||
icon_state = "pda"
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/device/pda/security/box2550away
|
||||
name = "PDA-Hossan Mubarak"
|
||||
owner = "Hossan Mubarak"
|
||||
ownjob = "Security Officer"
|
||||
toff = 1
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/clothing/head/helmet/HoS/box2550away
|
||||
name = "\improper HoS Helmet"
|
||||
desc = null
|
||||
|
||||
/obj/item/device/radio/headset/headset_sec/box2550away
|
||||
name = "\improper Security Radio Headset"
|
||||
desc = null
|
||||
|
||||
/obj/effect/landmark/corpse/away/box2550/captain
|
||||
name = "Jon Riker"
|
||||
corpseuniform = /obj/item/clothing/under/gimmick/rank/captain/suit/box2550away
|
||||
corpsesuit = /obj/item/clothing/suit/armor/centcom/box2550away
|
||||
corpseshoes = /obj/item/clothing/shoes/brown/box2550away
|
||||
corpseradio = null //same person who took his id took this
|
||||
corpsehelmet = /obj/item/clothing/head/caphat/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/captain
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/captain/box2550away
|
||||
corpseglasses = /obj/item/clothing/glasses/sunglasses/box2550away
|
||||
corpsehusk = "very yes"
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/effect/landmark/corpse/away/box2550/scientist
|
||||
name = "Cuban Pete"//:D
|
||||
corpseuniform = /obj/item/clothing/under/rank/chemist/box2550away/scientist
|
||||
corpseshoes = /obj/item/clothing/shoes/white/box2550away
|
||||
corpseradio = /obj/item/device/radio/headset/box2550away
|
||||
corpsemask = /obj/item/clothing/mask/gas/box2550away/
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/scientist
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/toxins/box2550away
|
||||
corpseid = 1
|
||||
corpseidjob = "Scientist"
|
||||
corpseidaccess = "Scientist"
|
||||
corpsehusk = "chicky boom"
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/lawyer
|
||||
name = "Bendak Starkiller"//u hungry? xD
|
||||
corpseuniform = /obj/item/clothing/under/lawyer/blue
|
||||
corpseshoes = /obj/item/clothing/shoes/black/box2550away
|
||||
corpseradio = /obj/item/device/radio/headset/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/lawyer
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/box2550away/lawyer
|
||||
corpseid = 1
|
||||
corpseidjob = "Lawyer"
|
||||
corpseidaccess = "Lawyer"
|
||||
corpsehusk = "honk"
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/cmo
|
||||
name = "Amy Lessen"
|
||||
mobgender = "female"
|
||||
corpseuniform = /obj/item/clothing/under/rank/medical/box2550/cmo
|
||||
corpsesuit = /obj/item/clothing/suit/labcoat/cmo/box2550
|
||||
corpseshoes = /obj/item/clothing/shoes/brown/box2550away
|
||||
corpseradio = /obj/item/device/radio/headset/heads/box2550/heads/cmo
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/box2550away/cmo
|
||||
corpsehusk = "~~~"
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/hos
|
||||
name = "Broba Fett"
|
||||
corpseuniform = /obj/item/clothing/under/rank/head_of_security/box2550
|
||||
corpsesuit = /obj/item/clothing/suit/armor/hos //exactly the same now as it was in 2010
|
||||
corpseshoes = /obj/item/clothing/shoes/brown/box2550away
|
||||
corpseradio = /obj/item/device/radio/headset/headset_sec/box2550away
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/HoS/box2550away
|
||||
corpsemask = /obj/item/clothing/mask/gas/box2550away/emergency
|
||||
corpseglasses = /obj/item/clothing/glasses/sunglasses/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/hos
|
||||
corpsepocket1 = /obj/item/device/flash/box2550away
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/box2550away/hos
|
||||
corpsehusk = "i'm out of ideas"
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/item/clothing/under/rank/centcom_officer/box2550/hop
|
||||
desc = "It has a Head of Personnel rank stripe on it."
|
||||
name = "\improper Head of Personnel Jumpsuit"
|
||||
|
||||
/obj/item/clothing/head/helmet/box2550away
|
||||
desc = null
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/hop
|
||||
name = "Rebecca Sharpe"
|
||||
mobgender = "female"
|
||||
corpseuniform = /obj/item/clothing/under/rank/centcom_officer/box2550/hop
|
||||
corpsesuit = /obj/item/clothing/suit/armor/vest //exactly the same now as it was in 2010
|
||||
corpseshoes = /obj/item/clothing/shoes/brown/box2550away
|
||||
corpseradio = /obj/item/device/radio/headset/heads/box2550/heads/
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/box2550away
|
||||
corpseglasses = /obj/item/clothing/glasses/sunglasses/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/captain
|
||||
corpsepocket1 = /obj/item/device/flash/box2550away
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/box2550away/hop
|
||||
corpsehusk = 1
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat/box2550/clown
|
||||
desc = "You're gay for even considering wearing this." //check your privilege, coder scum
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/box2550/clown_shoes
|
||||
desc = "Damn, thems some big shoes."
|
||||
|
||||
/obj/item/clothing/under/rank/clown/box2550/clown
|
||||
desc = "Wearing this, all the children love you, for all the wrong reasons."
|
||||
|
||||
/obj/item/device/pda/clown/box2550away/clown
|
||||
name = "PDA-Robert Robust"
|
||||
owner = "Robert Robust"
|
||||
ownjob = "Clown"
|
||||
toff = 1
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/clown
|
||||
name = "Robert Robust"
|
||||
corpseuniform = /obj/item/clothing/under/rank/clown/box2550/clown
|
||||
corpseshoes = /obj/item/clothing/shoes/clown_shoes/box2550/clown_shoes
|
||||
corpseradio = /obj/item/device/radio/headset/box2550away
|
||||
corpsemask = /obj/item/clothing/mask/gas/clown_hat/box2550/clown
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/clown
|
||||
corpsebelt = /obj/item/device/pda/clown/box2550away/clown
|
||||
corpseid = 1
|
||||
corpseidjob = "Clown"
|
||||
corpseidaccess = "Clown"
|
||||
corpsehusk = 1
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/item/weapon/melee/baton/loaded/box2550
|
||||
name = "\improper Stun Baton"
|
||||
desc = "Holy shit. This thing is terrible."
|
||||
icon = 'box2550Away.dmi'
|
||||
|
||||
/obj/item/weapon/melee/baton/loaded/box2550/New()
|
||||
..()
|
||||
src.bcell.maxcharge = 1001
|
||||
src.bcell.charge = 1001
|
||||
src.bcell.name = "\improper Nanotrasen brand rechargable AA battery"
|
||||
src.bcell.desc = "You can't top the plasma top."
|
||||
src.bcell.icon_state = "cell"
|
||||
update_icon()
|
||||
return
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/sec
|
||||
name = "Hossan Mubarak"
|
||||
corpseuniform = /obj/item/clothing/under/color/red/box2550away
|
||||
corpsesuit = /obj/item/clothing/suit/armor/vest
|
||||
corpseshoes = /obj/item/clothing/shoes/brown/box2550away
|
||||
corpseradio = /obj/item/device/radio/headset/headset_sec/box2550away
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/box2550away
|
||||
corpseglasses = /obj/item/clothing/glasses/sunglasses/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/sec
|
||||
corpsepocket1 = /obj/item/device/flash/box2550away
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/security/box2550away
|
||||
corpsehusk = 1
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/item/clothing/under/rank/janitor/box2550
|
||||
name = "Janitor's Jumpsuit"
|
||||
desc = "Official clothing of the station's poopscooper."
|
||||
|
||||
/obj/item/device/pda/janitor/box2550
|
||||
name = "\improper PDA-Jackson Bob"
|
||||
owner = "Jackson Bob"
|
||||
ownjob = "Janitor"
|
||||
toff = 1
|
||||
note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!"
|
||||
|
||||
/obj/item/device/pda/security/box2550away/det
|
||||
name = "\improper PDA-Corbin Riker"
|
||||
owner = "Corbin Riker"
|
||||
ownjob = "Detective"
|
||||
toff = 1
|
||||
|
||||
/obj/item/weapon/storage/box/lights/mixed/box2550away/
|
||||
desc = null
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner/box2550away/
|
||||
desc = "Space Cleaner!"
|
||||
volume = 1000
|
||||
w_class = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner/box2550away/New()
|
||||
..()
|
||||
reagents.add_reagent("cleaner", rand(0, 100) * 10) //cleaner sprayed only 10 units
|
||||
|
||||
/obj/item/weapon/storage/backpack/box2550away/jan/New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/weapon/storage/box/lights/box2550away/lights/(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/cleaner/box2550away(src)
|
||||
new /obj/item/weapon/mop(src)
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/jan
|
||||
name = "Jackson Bob"
|
||||
corpseuniform = /obj/item/clothing/under/rank/janitor/box2550
|
||||
corpseshoes = /obj/item/clothing/shoes/galoshes
|
||||
corpseradio = /obj/item/device/radio/headset/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/jan
|
||||
corpsepocket1 = /obj/item/device/flashlight
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/janitor/box2550
|
||||
corpsehusk = 1
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/item/weapon/storage/box/lights/box2550away/lights/
|
||||
name = "box of replacement lights"
|
||||
icon_state = "lightmixed"
|
||||
desc = null
|
||||
|
||||
/obj/item/weapon/storage/box/lights/box2550away/lights/New()
|
||||
..()
|
||||
for(var/i = 0; i < 4; i++)
|
||||
new /obj/item/weapon/light/tube(src)
|
||||
for(var/i = 0; i < 4; i++)
|
||||
new /obj/item/weapon/light/bulb(src)
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/jan
|
||||
name = "Jackson Bob"
|
||||
corpseuniform = /obj/item/clothing/under/rank/janitor/box2550
|
||||
corpseshoes = /obj/item/clothing/shoes/galoshes
|
||||
corpseradio = /obj/item/device/radio/headset/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/jan
|
||||
corpsepocket1 = /obj/item/device/flashlight
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/janitor/box2550
|
||||
corpsehusk = 1
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/item/clothing/gloves/black/box2550away
|
||||
name = "Black Gloves"
|
||||
|
||||
/obj/item/clothing/suit/det_suit/box2550away
|
||||
desc = "Someone who wears this means business"
|
||||
|
||||
/obj/item/clothing/head/det_hat/box2550away
|
||||
desc = "Someone who wears this will look very smart"
|
||||
|
||||
/obj/item/weapon/lighter/zippo/box2550away
|
||||
desc = "The detective's zippo."
|
||||
|
||||
/obj/item/clothing/under/det/box2550away
|
||||
name = "Hard worn suit"
|
||||
desc = "Someone who wears this means business"
|
||||
|
||||
obj/effect/landmark/corpse/away/box2550/det
|
||||
name = "Corbin Riker"
|
||||
corpseuniform = /obj/item/clothing/under/det/box2550away
|
||||
corpsehelmet = /obj/item/clothing/head/det_hat/box2550away
|
||||
corpsesuit = /obj/item/clothing/suit/det_suit/box2550away
|
||||
corpseshoes = /obj/item/clothing/shoes/black/box2550away
|
||||
corpseradio = /obj/item/device/radio/headset/headset_sec/box2550away
|
||||
corpseback = /obj/item/weapon/storage/backpack/box2550away/lawyer
|
||||
corpsepocket1 = /obj/item/weapon/lighter/zippo/box2550away
|
||||
corpsepocket2 = /obj/item/weapon/pen
|
||||
corpsebelt = /obj/item/device/pda/security/box2550away/det
|
||||
corpsegloves = /obj/item/clothing/gloves/black/box2550away
|
||||
corpsehusk = 1
|
||||
corpsebrute = 40
|
||||
corpseoxy = 120
|
||||
|
||||
/obj/item/clothing/under/rank/engineer/box2550away
|
||||
desc = "It has an Engineering rank stripe on it."
|
||||
name = "Engineering Jumpsuit"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/mechanical/box2550away
|
||||
desc = null
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/engineering_personal
|
||||
name = "Engineer's Locker"
|
||||
req_access = list(access_engine_equip)
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/storage/toolbox/mechanical/box2550away(src)
|
||||
new /obj/item/clothing/under/rank/engineer/box2550away(src)
|
||||
new /obj/item/clothing/shoes/orange(src)
|
||||
new /obj/item/clothing/mask/gas/box2550away/(src)
|
||||
new /obj/item/clothing/head/hardhat(src)
|
||||
new /obj/item/clothing/ears/earmuffs(src)
|
||||
new /obj/item/clothing/glasses/meson(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/security
|
||||
name = "Security Equipment"
|
||||
req_access = list(access_security)
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/handcuffs/box2550away(src)
|
||||
// new /obj/item/weapon/gun/energy/taser(src)
|
||||
new /obj/item/device/flash/box2550away(src)
|
||||
new /obj/item/clothing/under/color/red/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/suit/armor/vest(src)
|
||||
new /obj/item/clothing/head/helmet/box2550away(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/box2550away(src)
|
||||
new /obj/item/weapon/melee/baton/loaded/box2550(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/hos
|
||||
name = "Head Of Security" //in 2010, the head of security was played by a secure locker
|
||||
req_access = list(access_hos)
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/shield/riot(src)
|
||||
// new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/device/flash/box2550away(src)
|
||||
new /obj/item/weapon/storage/box/box2550away/ids(src)
|
||||
new /obj/item/clothing/under/rank/head_of_security/box2550(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/box2550away(src)
|
||||
new /obj/item/clothing/suit/armor/hos(src)
|
||||
new /obj/item/clothing/head/helmet/box2550away(src)
|
||||
new /obj/item/weapon/storage/box/box2550away/ids(src)
|
||||
// new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/handcuffs/box2550away(src)
|
||||
new /obj/item/weapon/melee/baton/loaded/box2550(src)
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/meat
|
||||
name = "Meat Locker"
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
for(var/i = 0, i < 4, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/badrecipe/box2550away/rottenfood(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/engineering_electrical
|
||||
name = "Electrical Supplies"
|
||||
req_access = list(access_engine)
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
new /obj/item/weapon/storage/toolbox/electrical(src)
|
||||
new /obj/item/weapon/storage/toolbox/electrical(src)
|
||||
new /obj/item/weapon/storage/toolbox/electrical(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/engineering_welding
|
||||
name = "Welding Supplies"
|
||||
req_access = list(access_engine)
|
||||
icon_state = "secure1"
|
||||
icon_closed = "secure"
|
||||
icon_locked = "secure1"
|
||||
icon_opened = "secureopen"
|
||||
icon_broken = "securebroken"
|
||||
icon_off = "secureoff"
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/head/welding(src)
|
||||
new /obj/item/clothing/head/welding(src)
|
||||
new /obj/item/clothing/head/welding(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/pamphlet/box2550awayInfo
|
||||
name = "Visitor Info Pamphlet"
|
||||
info = "<b> TG424 Visitor Information </b><br>\
|
||||
Welcome, employee, to TG424! As you may know, this station was once \
|
||||
used as Nanotrasen's SPACE STATION 13, primarily to research plasma \
|
||||
and its many entertaining uses. <br>\
|
||||
Since the finish of the improved TG570 on Dec 8, 2550, TG424 is no longer \
|
||||
a plasma research station and has fallen into disuse.<br> \
|
||||
Perhaps you stand to gain something from visiting it?<br> \
|
||||
Either way, we hope you enjoy yourself!"
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/ce
|
||||
name = "Chief Engineer's Locker"
|
||||
req_access = list(access_heads)
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/storage/toolbox/mechanical(src)
|
||||
new /obj/item/clothing/under/rank/chief_engineer(src)
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/ears/earmuffs(src)
|
||||
new /obj/item/clothing/glasses/meson(src)
|
||||
new /obj/item/clothing/suit/fire(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/head/welding(src)
|
||||
new /obj/item/clothing/head/hardhat(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/device/flash(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/hop
|
||||
name = "Head of Personnel"
|
||||
req_access = list(access_heads)
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/storage/box/box2550away/ids(src)
|
||||
new /obj/item/clothing/under/rank/centcom_officer/box2550/hop(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/suit/armor/vest(src)
|
||||
new /obj/item/clothing/head/helmet(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/box2550away/det
|
||||
name = "Forensics Locker"
|
||||
req_access = list(access_forensics_lockers)
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/under/det/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/head/det_hat/box2550away(src)
|
||||
new /obj/item/clothing/suit/det_suit/box2550away(src)
|
||||
new /obj/item/clothing/gloves/black/box2550away(src)
|
||||
new /obj/item/weapon/storage/box/gloves(src)
|
||||
new /obj/item/device/detective_scanner/box2550away(src)
|
||||
new /obj/item/device/detective_scanner/box2550away(src)
|
||||
new /obj/item/device/detective_scanner/box2550away(src)
|
||||
|
||||
/obj/structure/closet/box2550away/red
|
||||
name = "\improper Red Wardrobe"
|
||||
icon_state = "red"
|
||||
icon_closed = "red"
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/under/color/red/box2550away(src)
|
||||
new /obj/item/clothing/under/color/red/box2550away(src)
|
||||
new /obj/item/clothing/under/color/red/box2550away(src)
|
||||
new /obj/item/clothing/under/color/red/box2550away(src)
|
||||
new /obj/item/clothing/under/color/red/box2550away(src)
|
||||
new /obj/item/clothing/under/color/red/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
new /obj/item/clothing/shoes/brown/box2550away(src)
|
||||
BIN
maps/RandomZLevels/box2550Away.dmi
Normal file
BIN
maps/RandomZLevels/box2550Away.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 490 B |
2091
maps/RandomZLevels/box2550Away.dmm
Normal file
2091
maps/RandomZLevels/box2550Away.dmm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -17,4 +17,5 @@
|
||||
#maps/RandomZLevels/challenge.dmm
|
||||
#maps/RandomZLevels/listeningpost.dmm
|
||||
#maps/RandomZLevels/spacehotel.dmm
|
||||
#maps/RandomZLevels/centcomAway.dmm
|
||||
#maps/RandomZLevels/centcomAway.dmm
|
||||
#maps/RandomZLevels/box2550Away.dmm
|
||||
@@ -2984,11 +2984,11 @@
|
||||
"bft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/bridge/meeting_room)
|
||||
"bfu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/wood,/area/bridge/meeting_room)
|
||||
"bfv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/ai_upload)
|
||||
"bfw" = (/obj/structure/table,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bfw" = (/obj/structure/table,/obj/item/weapon/aiModule/supplied/protectStation,/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bfx" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bfy" = (/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/machinery/computer/upload/ai,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bfz" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/computer/upload/borg,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bfA" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bfA" = (/obj/structure/table,/obj/item/weapon/aiModule/supplied/freeform,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bfB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/crew_quarters/captain)
|
||||
"bfC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/crew_quarters/captain)
|
||||
"bfD" = (/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
|
||||
@@ -3137,7 +3137,7 @@
|
||||
"biq" = (/obj/structure/table,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bir" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
|
||||
"bis" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
|
||||
"bit" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bit" = (/obj/structure/table,/obj/item/weapon/aiModule/core/full/asimov,/obj/item/weapon/aiModule/core/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/core/full/corp,/obj/item/weapon/aiModule/core/full/paladin,/obj/item/weapon/aiModule/core/full/custom,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"biu" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/crew_quarters/captain)
|
||||
"biv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
|
||||
"biw" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/carpet,/area/crew_quarters/captain)
|
||||
@@ -3202,7 +3202,7 @@
|
||||
"bjD" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bjE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bjF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bjG" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bjG" = (/obj/structure/table,/obj/item/weapon/aiModule/supplied/oxygen,/obj/item/weapon/aiModule/zeroth/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/weapon/aiModule/reset/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/core/full/antimov,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
|
||||
"bjH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload)
|
||||
"bjI" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/space,/area)
|
||||
"bjJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/crew_quarters/captain)
|
||||
@@ -6544,6 +6544,7 @@
|
||||
"cvR" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/showcase{desc = "A strange machine supposedly from another world. The Wizard Federation has been meddling with it for years."; icon_state = "processor"; name = "byond random number generator"},/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
|
||||
"cvS" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
|
||||
"cvT" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
|
||||
"cvU" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/simulated/floor{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
|
||||
"cvV" = (/obj/machinery/door/poddoor{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
|
||||
"cvW" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
|
||||
"cvX" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
|
||||
@@ -8392,10 +8393,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPaYVaYXaYXaYXbbRaXPbdibdjaMzaMzbbSbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbbKbaibbLbbMaaaaafaaaaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaXPbalaXPbbOaYXbambaoaXPaMzaYWaYYaYZbbTaSeaSeaSeaSeaSeaSebbUbbVbbWaMzbbXaTEaTEaTEbbYaTEaTEaTEbbZaTEaTEaTEaTEbcabcbbccbcdaWdaWdaYbbceaZwaYdaDAbcfaZxbcgbaNbchbchbchaVjbcibcjaSKaVpbckaVpbclaYmaVpaVpbckaVpaSKbcmbcnbcobcpaVzaZJbcqaVzbcrbcsbctbcuaZNbcvbcwbcxbcybczbcAbblbcBbblbcCbblbblbcDbcEbcFbcGbcHaZTbcIbbrbcIbbrbcIbcJbbraZUbcKbcKbcLbcMaZYbcNbaabcObcPbcQbcRbcRbadbcSbcTbcUbcVbcWbcXbcYbadbcZbafbdabaibdbbdcbdbbddbdebdfbaibdgbdhaaaaafaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPbbNdcIdcGdcHdcHdcKdcJaZaaYZaJKbdnbdobdpbdpbdpbaxbaxbaxbdqbdrbdrbdrbdsaTEbdtbdubdvbdwbdxbdybdzbdAaTEbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdKbdLbctbdMbdNbdObOibdQbdRbdSbdTbciaTSaTSaSKbdUaXtaXtbdVaXtaXtbdUaSKbdWbdWbdXaVzbdYaVzbdZbeabebbecaSSaDAaDAaZNbedbeebefbegbehbeibblbejbekbelbembembenbeobepbeqberaZTbcIbbrbcIbbrbcIbcJbesaZUbetbeubevbewaZYbexbeybezbezbezbeAbeBbeCbeDbeEbeEbeEbeFbeEbeGbeHbeIbeJbeKbeLbeMbeNbeObePbeQbeRbaibdgbeSaafaafaaaaaaaaaaafaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPdcDaXPdcEbbQbbQdcFaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbNhaTPbftbfuaTSaaabfvbfwbfxbfybfxbfzbfxbfAbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbfJbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgibgjbgkbglbaibdgbakbakbgmbgnbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPdcDaXPdcEbbQbbQdcFaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbNhaTPbftbfuaTSaaabfvbitbfxbfybfxbfzbfxbjGbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbfJbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgibgjbgkbglbaibdgbakbakbgmbgnbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbeTdcCbbPbbQbdkbgpaXPaaaaafaafbgqbgqbgqbgqbgqbgqbgqaaaaaabgrbgsbgtbgubgvbdzbdzbdzbdzbdzbdzbdzbdzbgwbcdaWdbgxbgybgzbgAbgBbgCbdEaTKaTKbgDbgEbgFbgGbgHbgMbgMbgJbgIbgKbgLbgMaafbgNbgObfxbgPbfxbgPbfxbgQbgNaafbgRbgSaYsbgTbgUbgVbgWbgXbgYbgZaDAbhabhbbhcbhdbfHbhebhfaZNbhgbcCbfJbfLbhhbblbhiaZTbhjbhkbhlaZTbhmbhnbhobhpbhqbhrbhqbhsbhtbhubhtbhtbhtbhvbaabhwbcPbcPbfVbhxbhybhzbhAbhBbhBbhCbhDbhEbadbhFbgebhGbaibhHbhIbhJbgjbeObhKbaibhLbhMbhNbhMbhMbhMbhObakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaXPaXPaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbNgbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbitbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbiFbiGbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbjabeObjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbjdbjebjfbjgbdzbdzbdzbjhbjhbjhbjhbdzbdzbdzbdzbfbbjiaWdbjjbjkbjlbjmbjnaYbaWdbjobjpbjqbjrbjsbNcbjubNbbjwbjxbjybjzbjAbjBazFbjCbjDbjEbfxbirbfxbjFbjGbjHbjIbjJbjKbjLbjMbixbjNbixbizbiAbjOaDAaDAaZNbjPbeebfHbjQbjRaZNbjSbcCbblbjTbjUbjVbjWbiEbjXbjYbjZbkabkbbkcbblbkdbkebkfbkgbkhbkibkjbkkbklbkmbbxbbybknbkobkpbkqbkrbadbksbiUbiUbktbkubcUbkvbadbkwbkxbkybaibkzbkAbkBbkCbeObkDbaibkEbkFbkFbkFbkFbkFbdgbakaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaXPaXPaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbNgbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbfAbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbiFbiGbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbjabeObjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbjdbjebjfbjgbdzbdzbdzbjhbjhbjhbjhbdzbdzbdzbdzbfbbjiaWdbjjbjkbjlbjmbjnaYbaWdbjobjpbjqbjrbjsbNcbjubNbbjwbjxbjybjzbjAbjBazFbjCbjDbjEbfxbirbfxbjFbfwbjHbjIbjJbjKbjLbjMbixbjNbixbizbiAbjOaDAaDAaZNbjPbeebfHbjQbjRaZNbjSbcCbblbjTbjUbjVbjWbiEbjXbjYbjZbkabkbbkcbblbkdbkebkfbkgbkhbkibkjbkkbklbkmbbxbbybknbkobkpbkqbkrbadbksbiUbiUbktbkubcUbkvbadbkwbkxbkybaibkzbkAbkBbkCbeObkDbaibkEbkFbkFbkFbkFbkFbdgbakaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbkGbkHbkGbkIbkJbdzbdzbdzbdzbdzbdzbdzbdzbkKaTEaTEbkLaWdaWdbkMbkNbkObkPaYbaWdaWdbkQbkRbiibkSbkTbkUbMZbkWbNabkYbkZblabgMaaablbblbblcbldblebfxblfblbblbaaablgblhblhblhblhblhblhblibljblkbllbllaZNaZNblmblnbloblpaZNblqbcCbblbblbblbblblrbblblsbltbblbblbblbltbblbblbkeblublvblwblxblyblzblAbiPblBblCblDblDblEblFbcPbadblGbcUbcUblHblIbcUblJblKblLblLblMblNblNblObbHblPbbHbaibaiblQbkFblRblSblTbkFbdgbbMaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUblWbdzbdzbdzbjhbjhbjhbjhbdzbdzblXblYaTEblZaWdaWdbkMbmabicbkPaYbbmbaWdbkQbkRbmcaDAaLKbkUbHFbmebHEbmgbmgbGjbgMaafaafblbblbbmibmjbmiblbblbaafaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaDAaDAbmubmvbmwbmxbmybmzbmAbmBbmCbmBbmDbmBbmBbmEbmBbmFbmGbmBbmBbmBbmHbmIbmIbmJblubmKblwbmLbmLbmMbmNbiPbexbaabmObmPbmQbmRbmRbadbmSbmTbmUblKbmVbcUbmWblKbmXbmYbmZbnabnbbncbndbnebnfbngbnhbnibnjblRbnkbnlbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbnmbjebnnbnobdzbdzbdzbdzbdzbdzbdzbdzbdzblXbnpaTEbnqaXhaWdbkMaWdbnraWdaYbaWdbjobigbnsbmcaDAaLKbkUbgMbntbkXbnvbnwbnxbgMaaaaaaaafblbblbbnyblbblbaafaaaaaabmkbnzbnAbnBbnCbnDbnDbnEbnFbnGaDAaDAbnHbnIbcCblsbnJbnKbnLbnKbnMbnKbnNbnKbnObnPbjZbnQbblbblbblbnRbnSbnSbnTbnUbnVbnWblwbnXbnYblzbmNbiPaZZbaabnZbnZboabnZbnZbadblKblKblKblKbobbocbbFblKbodboebofbngbngbogbgebgebohbgeboibojbojblRbnkblRbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9371,7 +9372,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacSccSccSccSycSWcSXcSWcSycSYcSZcS
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOZaafaafaafaafaafcSccTgcThcSycTicSAcSzcTjdcTcSAdcScSycTmcTmcTmcSBcSTcSTcSncSncRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcOWcTncSCcTocOWcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTpcQlcQlcQlcQlcQlcOTcOTcOTaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcOTcQlcQlcQlcTfcQlcQlcOTcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccTrcTscTtcTucTvcTwcSAcTicSAcSAcTycTmcTmcSTcSTcSTcSTcSOcSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcTzcTAcTBcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcOTcRacOTcQlcQlcRbcRbcOTcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTfcQlcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccTCcTDcTEcTFcTvcTGcSAcTidcRcSAcSydcQdcPdcPcSTcSTcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcTLcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcOTcOTcOTcOTcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSycSycSycTMcSAcTNcTvcTOcUccTIcUPcUjcUjbdlcOCcSTcSBcSBcTScSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcTLcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaacOEcOEaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcTTcTUcQlcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSycSycSycTMcSAcTNcTvcTOcUccTIcUPcUjcUjcvUcOCcSTcSBcSBcTScSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcTLcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaacOEcOEaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcTTcTUcQlcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcTKcTWcTVcTXcTRcSAcTicSAcSAcTPcOecSycUfcUecTYcSTcSTcSBcSBcUacSncRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcTLcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaacOEcOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSccSccSccSAcSAcTicUccUdcSybEKcSycTmcTmcTmcSBcSBcSBcSBcTJcRacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaacOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqaaaaaacSccUbcSAcSAcTibPbbmdbPbbOjcSycTlcTkcSBcSBcSBcSBcSOcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcUkcUkcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9386,7 +9387,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSncSncSncSncSncSncSncS
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaacVsaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEcVscVsaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaacOEcOEcVsaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTfcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcUjcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaacOEcOEcVsaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTfcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOTcOTaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -1204,6 +1204,7 @@
|
||||
#include "maps\RandomZLevels\Academy.dm"
|
||||
#include "maps\RandomZLevels\blackmarketpackers.dm"
|
||||
#include "maps\RandomZLevels\centcomAway.dm"
|
||||
#include "maps\RandomZLevels\box2550Away.dm"
|
||||
#include "maps\RandomZLevels\challenge.dm"
|
||||
#include "maps\RandomZLevels\spacebattle.dm"
|
||||
#include "maps\RandomZLevels\stationCollision.dm"
|
||||
|
||||
Reference in New Issue
Block a user