Purging a lot of space indention in favor of tabs.
This commit is contained in:
@@ -2,12 +2,12 @@
|
||||
|
||||
#define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = Master.current_ticklimit; var/split_tick_phases = ##phase_count
|
||||
#define MC_SPLIT_TICK \
|
||||
if(split_tick_phases > 1){\
|
||||
Master.current_ticklimit = ((original_tick_limit - TICK_USAGE) / split_tick_phases) + TICK_USAGE;\
|
||||
--split_tick_phases;\
|
||||
} else {\
|
||||
Master.current_ticklimit = original_tick_limit;\
|
||||
}
|
||||
if(split_tick_phases > 1){\
|
||||
Master.current_ticklimit = ((original_tick_limit - TICK_USAGE) / split_tick_phases) + TICK_USAGE;\
|
||||
--split_tick_phases;\
|
||||
} else {\
|
||||
Master.current_ticklimit = original_tick_limit;\
|
||||
}
|
||||
|
||||
// Used to smooth out costs to try and avoid oscillation.
|
||||
#define MC_AVERAGE_FAST(average, current) (0.7 * (average) + 0.3 * (current))
|
||||
@@ -65,14 +65,14 @@
|
||||
|
||||
#define SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/##X);\
|
||||
/datum/controller/subsystem/##X/New(){\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
}\
|
||||
/datum/controller/subsystem/##X
|
||||
|
||||
#define PROCESSING_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/processing/##X);\
|
||||
/datum/controller/subsystem/processing/##X/New(){\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
}\
|
||||
/datum/controller/subsystem/processing/##X
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
//Creates a global initializer with a given InitValue expression, do not use
|
||||
#define GLOBAL_MANAGED(X, InitValue)\
|
||||
/datum/controller/global_vars/proc/InitGlobal##X(){\
|
||||
##X = ##InitValue;\
|
||||
gvars_datum_init_order += #X;\
|
||||
##X = ##InitValue;\
|
||||
gvars_datum_init_order += #X;\
|
||||
}
|
||||
//Creates an empty global initializer, do not use
|
||||
#define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; }
|
||||
@@ -13,8 +13,8 @@
|
||||
#ifndef TESTING
|
||||
#define GLOBAL_PROTECT(X)\
|
||||
/datum/controller/global_vars/InitGlobal##X(){\
|
||||
..();\
|
||||
gvars_datum_protected_varlist[#X] = TRUE;\
|
||||
..();\
|
||||
gvars_datum_protected_varlist[#X] = TRUE;\
|
||||
}
|
||||
#else
|
||||
#define GLOBAL_PROTECT(X)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#define GENERAL_PROTECT_DATUM(Path)\
|
||||
##Path/can_vv_get(var_name){\
|
||||
return FALSE;\
|
||||
return FALSE;\
|
||||
}\
|
||||
##Path/vv_edit_var(var_name, var_value){\
|
||||
return FALSE;\
|
||||
return FALSE;\
|
||||
}\
|
||||
##Path/CanProcCall(procname){\
|
||||
return FALSE;\
|
||||
return FALSE;\
|
||||
}
|
||||
@@ -17,17 +17,17 @@
|
||||
#define POD_DESC 3
|
||||
|
||||
#define POD_STYLES list(\
|
||||
list("supplypod", "supply pod", "A Nanotrasen supply drop pod."),\
|
||||
list("bluespacepod", "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\
|
||||
list("centcompod", "\improper Centcom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to Centcom after delivery."),\
|
||||
list("syndiepod", "blood-red supply pod", "A dark, intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\
|
||||
list("squadpod", "\improper MK. II supply pod", "A Nanotrasen supply pod. This one has been marked the markings of some sort of elite strike team."),\
|
||||
list("cultpod", "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\
|
||||
list("missilepod", "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
|
||||
list("smissilepod", "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
|
||||
list("boxpod", "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\
|
||||
list("honkpod", "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\
|
||||
list("fruitpod", "\improper Orange", "An angry orange."),\
|
||||
list("", "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\
|
||||
list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency.")\
|
||||
list("supplypod", "supply pod", "A Nanotrasen supply drop pod."),\
|
||||
list("bluespacepod", "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\
|
||||
list("centcompod", "\improper Centcom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to Centcom after delivery."),\
|
||||
list("syndiepod", "blood-red supply pod", "A dark, intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\
|
||||
list("squadpod", "\improper MK. II supply pod", "A Nanotrasen supply pod. This one has been marked the markings of some sort of elite strike team."),\
|
||||
list("cultpod", "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\
|
||||
list("missilepod", "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
|
||||
list("smissilepod", "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
|
||||
list("boxpod", "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\
|
||||
list("honkpod", "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\
|
||||
list("fruitpod", "\improper Orange", "An angry orange."),\
|
||||
list("", "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\
|
||||
list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency.")\
|
||||
)
|
||||
@@ -52,12 +52,12 @@ require only minor tweaks.
|
||||
|
||||
// enum - how space transitions should affect this level
|
||||
#define ZTRAIT_LINKAGE "Linkage"
|
||||
// UNAFFECTED if absent - no space transitions
|
||||
#define UNAFFECTED null
|
||||
// SELFLOOPING - space transitions always self-loop
|
||||
#define SELFLOOPING "Self"
|
||||
// CROSSLINKED - mixed in with the cross-linked space pool
|
||||
#define CROSSLINKED "Cross"
|
||||
// UNAFFECTED if absent - no space transitions
|
||||
#define UNAFFECTED null
|
||||
// SELFLOOPING - space transitions always self-loop
|
||||
#define SELFLOOPING "Self"
|
||||
// CROSSLINKED - mixed in with the cross-linked space pool
|
||||
#define CROSSLINKED "Cross"
|
||||
|
||||
// default trait definitions, used by SSmapping
|
||||
#define ZTRAITS_CENTCOM list(ZTRAIT_CENTCOM = TRUE)
|
||||
@@ -72,7 +72,7 @@ require only minor tweaks.
|
||||
|
||||
// must correspond to _basemap.dm for things to work correctly
|
||||
#define DEFAULT_MAP_TRAITS list(\
|
||||
DECLARE_LEVEL("CentCom", ZTRAITS_CENTCOM),\
|
||||
DECLARE_LEVEL("CentCom", ZTRAITS_CENTCOM),\
|
||||
)
|
||||
|
||||
// Camera lock flags
|
||||
|
||||
@@ -40,11 +40,11 @@
|
||||
|
||||
//type and all subtypes should always call Initialize in New()
|
||||
#define INITIALIZE_IMMEDIATE(X) ##X/New(loc, ...){\
|
||||
..();\
|
||||
if(!(flags_1 & INITIALIZED_1)) {\
|
||||
args[1] = TRUE;\
|
||||
SSatoms.InitAtom(src, args);\
|
||||
}\
|
||||
..();\
|
||||
if(!(flags_1 & INITIALIZED_1)) {\
|
||||
args[1] = TRUE;\
|
||||
SSatoms.InitAtom(src, args);\
|
||||
}\
|
||||
}
|
||||
|
||||
// Subsystem init_order, from highest priority to lowest priority
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
//supposedly the fastest way to do this according to https://gist.github.com/Giacom/be635398926bb463b42a
|
||||
#define RANGE_TURFS(RADIUS, CENTER) \
|
||||
block( \
|
||||
locate(max(CENTER.x-(RADIUS),1), max(CENTER.y-(RADIUS),1), CENTER.z), \
|
||||
locate(min(CENTER.x+(RADIUS),world.maxx), min(CENTER.y+(RADIUS),world.maxy), CENTER.z) \
|
||||
)
|
||||
block( \
|
||||
locate(max(CENTER.x-(RADIUS),1), max(CENTER.y-(RADIUS),1), CENTER.z), \
|
||||
locate(min(CENTER.x+(RADIUS),world.maxx), min(CENTER.y+(RADIUS),world.maxy), CENTER.z) \
|
||||
)
|
||||
|
||||
#define Z_TURFS(ZLEVEL) block(locate(1,1,ZLEVEL), locate(world.maxx, world.maxy, ZLEVEL))
|
||||
#define CULT_POLL_WAIT 2400
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/dest_y
|
||||
|
||||
/datum/projectile_data/New(var/src_x, var/src_y, var/time, var/distance, \
|
||||
var/power_x, var/power_y, var/dest_x, var/dest_y)
|
||||
var/power_x, var/power_y, var/dest_x, var/dest_y)
|
||||
src.src_x = src_x
|
||||
src.src_y = src_y
|
||||
src.time = time
|
||||
|
||||
@@ -193,7 +193,7 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"clear_conversion" = list(
|
||||
"REACTION_CLEAR_IMPURE" = REACTION_CLEAR_IMPURE,
|
||||
"REACTION_CLEAR_INVERSE" = REACTION_CLEAR_INVERSE
|
||||
),
|
||||
),
|
||||
"organ_flags" = list(
|
||||
"ORGAN_SYNTHETIC" = ORGAN_SYNTHETIC,
|
||||
"ORGAN_FROZEN" = ORGAN_FROZEN,
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
#define js_dropdowns {"
|
||||
function dropdowns() {
|
||||
var divs = document.getElementsByTagName('div');
|
||||
var headers = new Array();
|
||||
var links = new Array();
|
||||
for(var i=0;i<divs.length;i++){
|
||||
if(divs\[i\].className=='header') {
|
||||
divs\[i\].className='header closed';
|
||||
divs\[i\].innerHTML = divs\[i\].innerHTML+' +';
|
||||
headers.push(divs\[i\]);
|
||||
}
|
||||
if(divs\[i\].className=='links') {
|
||||
divs\[i\].className='links hidden';
|
||||
links.push(divs\[i\]);
|
||||
}
|
||||
}
|
||||
for(var i=0;i<headers.length;i++){
|
||||
if(typeof(links\[i\])!== 'undefined' && links\[i\]!=null) {
|
||||
headers\[i\].onclick = (function(elem) {
|
||||
return function() {
|
||||
if(elem.className.search('visible')>=0) {
|
||||
elem.className = elem.className.replace('visible','hidden');
|
||||
this.className = this.className.replace('open','closed');
|
||||
this.innerHTML = this.innerHTML.replace('-','+');
|
||||
}
|
||||
else {
|
||||
elem.className = elem.className.replace('hidden','visible');
|
||||
this.className = this.className.replace('closed','open');
|
||||
this.innerHTML = this.innerHTML.replace('+','-');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
})(links\[i\]);
|
||||
}
|
||||
}
|
||||
var divs = document.getElementsByTagName('div');
|
||||
var headers = new Array();
|
||||
var links = new Array();
|
||||
for(var i=0;i<divs.length;i++){
|
||||
if(divs\[i\].className=='header') {
|
||||
divs\[i\].className='header closed';
|
||||
divs\[i\].innerHTML = divs\[i\].innerHTML+' +';
|
||||
headers.push(divs\[i\]);
|
||||
}
|
||||
if(divs\[i\].className=='links') {
|
||||
divs\[i\].className='links hidden';
|
||||
links.push(divs\[i\]);
|
||||
}
|
||||
}
|
||||
for(var i=0;i<headers.length;i++){
|
||||
if(typeof(links\[i\])!== 'undefined' && links\[i\]!=null) {
|
||||
headers\[i\].onclick = (function(elem) {
|
||||
return function() {
|
||||
if(elem.className.search('visible')>=0) {
|
||||
elem.className = elem.className.replace('visible','hidden');
|
||||
this.className = this.className.replace('open','closed');
|
||||
this.innerHTML = this.innerHTML.replace('-','+');
|
||||
}
|
||||
else {
|
||||
elem.className = elem.className.replace('hidden','visible');
|
||||
this.className = this.className.replace('closed','open');
|
||||
this.innerHTML = this.innerHTML.replace('+','-');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
})(links\[i\]);
|
||||
}
|
||||
}
|
||||
}
|
||||
"}
|
||||
@@ -40,7 +40,7 @@ SUBSYSTEM_DEF(traumas)
|
||||
"cats" = strings(PHOBIA_FILE, "cats"),
|
||||
"syndicate"= strings(PHOBIA_FILE, "syndicate"),
|
||||
"eye" = strings(PHOBIA_FILE, "eye")
|
||||
)
|
||||
)
|
||||
|
||||
phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/hostile/poison/giant_spider)),
|
||||
"security" = typecacheof(list(/mob/living/simple_animal/bot/secbot, /mob/living/simple_animal/bot/ed209)),
|
||||
|
||||
@@ -74,10 +74,10 @@ SUBSYSTEM_DEF(weather)
|
||||
next_hit_by_zlevel["[z]"] = null
|
||||
|
||||
/datum/controller/subsystem/weather/proc/get_weather(z, area/active_area)
|
||||
var/datum/weather/A
|
||||
for(var/V in processing)
|
||||
var/datum/weather/W = V
|
||||
if((z in W.impacted_z_levels) && W.area_type == active_area.type)
|
||||
A = W
|
||||
break
|
||||
return A
|
||||
var/datum/weather/A
|
||||
for(var/V in processing)
|
||||
var/datum/weather/W = V
|
||||
if((z in W.impacted_z_levels) && W.area_type == active_area.type)
|
||||
A = W
|
||||
break
|
||||
return A
|
||||
|
||||
@@ -1,70 +1,70 @@
|
||||
#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]"
|
||||
|
||||
/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0)
|
||||
. = locate(ARMORID)
|
||||
if (!.)
|
||||
. = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic)
|
||||
. = locate(ARMORID)
|
||||
if (!.)
|
||||
. = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic)
|
||||
|
||||
/datum/armor
|
||||
datum_flags = DF_USE_TAG
|
||||
var/melee
|
||||
var/bullet
|
||||
var/laser
|
||||
var/energy
|
||||
var/bomb
|
||||
var/bio
|
||||
var/rad
|
||||
var/fire
|
||||
var/acid
|
||||
var/magic
|
||||
datum_flags = DF_USE_TAG
|
||||
var/melee
|
||||
var/bullet
|
||||
var/laser
|
||||
var/energy
|
||||
var/bomb
|
||||
var/bio
|
||||
var/rad
|
||||
var/fire
|
||||
var/acid
|
||||
var/magic
|
||||
|
||||
/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0)
|
||||
src.melee = melee
|
||||
src.bullet = bullet
|
||||
src.laser = laser
|
||||
src.energy = energy
|
||||
src.bomb = bomb
|
||||
src.bio = bio
|
||||
src.rad = rad
|
||||
src.fire = fire
|
||||
src.acid = acid
|
||||
src.magic = magic
|
||||
tag = ARMORID
|
||||
src.melee = melee
|
||||
src.bullet = bullet
|
||||
src.laser = laser
|
||||
src.energy = energy
|
||||
src.bomb = bomb
|
||||
src.bio = bio
|
||||
src.rad = rad
|
||||
src.fire = fire
|
||||
src.acid = acid
|
||||
src.magic = magic
|
||||
tag = ARMORID
|
||||
|
||||
/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0)
|
||||
return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.rad+rad, src.fire+fire, src.acid+acid, src.magic+magic)
|
||||
return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.rad+rad, src.fire+fire, src.acid+acid, src.magic+magic)
|
||||
|
||||
/datum/armor/proc/modifyAllRatings(modifier = 0)
|
||||
return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, rad+modifier, fire+modifier, acid+modifier, magic+modifier)
|
||||
return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, rad+modifier, fire+modifier, acid+modifier, magic+modifier)
|
||||
|
||||
/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic)
|
||||
return getArmor((isnull(melee) ? src.melee : melee),\
|
||||
(isnull(bullet) ? src.bullet : bullet),\
|
||||
(isnull(laser) ? src.laser : laser),\
|
||||
(isnull(energy) ? src.energy : energy),\
|
||||
(isnull(bomb) ? src.bomb : bomb),\
|
||||
(isnull(bio) ? src.bio : bio),\
|
||||
(isnull(rad) ? src.rad : rad),\
|
||||
(isnull(fire) ? src.fire : fire),\
|
||||
(isnull(acid) ? src.acid : acid),\
|
||||
(isnull(magic) ? src.magic : magic))
|
||||
return getArmor((isnull(melee) ? src.melee : melee),\
|
||||
(isnull(bullet) ? src.bullet : bullet),\
|
||||
(isnull(laser) ? src.laser : laser),\
|
||||
(isnull(energy) ? src.energy : energy),\
|
||||
(isnull(bomb) ? src.bomb : bomb),\
|
||||
(isnull(bio) ? src.bio : bio),\
|
||||
(isnull(rad) ? src.rad : rad),\
|
||||
(isnull(fire) ? src.fire : fire),\
|
||||
(isnull(acid) ? src.acid : acid),\
|
||||
(isnull(magic) ? src.magic : magic))
|
||||
|
||||
/datum/armor/proc/getRating(rating)
|
||||
return vars[rating]
|
||||
return vars[rating]
|
||||
|
||||
/datum/armor/proc/getList()
|
||||
return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid, "magic" = magic)
|
||||
return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid, "magic" = magic)
|
||||
|
||||
/datum/armor/proc/attachArmor(datum/armor/AA)
|
||||
return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, magic+AA.magic)
|
||||
return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, magic+AA.magic)
|
||||
|
||||
/datum/armor/proc/detachArmor(datum/armor/AA)
|
||||
return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, rad-AA.rad, fire-AA.fire, acid-AA.acid, magic-AA.magic)
|
||||
return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, rad-AA.rad, fire-AA.fire, acid-AA.acid, magic-AA.magic)
|
||||
|
||||
/datum/armor/vv_edit_var(var_name, var_value)
|
||||
if (var_name == NAMEOF(src, tag))
|
||||
return FALSE
|
||||
. = ..()
|
||||
tag = ARMORID // update tag in case armor values were edited
|
||||
if (var_name == NAMEOF(src, tag))
|
||||
return FALSE
|
||||
. = ..()
|
||||
tag = ARMORID // update tag in case armor values were edited
|
||||
|
||||
#undef ARMORID
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
/datum/component/waddling
|
||||
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
|
||||
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
|
||||
|
||||
/datum/component/waddling/Initialize()
|
||||
if(!isliving(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Waddle)
|
||||
if(!isliving(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Waddle)
|
||||
|
||||
/datum/component/waddling/proc/Waddle()
|
||||
var/mob/living/L = parent
|
||||
if(L.incapacitated() || L.lying)
|
||||
return
|
||||
animate(L, pixel_z = 4, time = 0)
|
||||
animate(pixel_z = 0, transform = turn(matrix(), pick(-12, 0, 12)), time=2)
|
||||
animate(pixel_z = 0, transform = matrix(), time = 0)
|
||||
var/mob/living/L = parent
|
||||
if(L.incapacitated() || L.lying)
|
||||
return
|
||||
animate(L, pixel_z = 4, time = 0)
|
||||
animate(pixel_z = 0, transform = turn(matrix(), pick(-12, 0, 12)), time=2)
|
||||
animate(pixel_z = 0, transform = matrix(), time = 0)
|
||||
|
||||
@@ -875,14 +875,14 @@
|
||||
return
|
||||
// text2num conveniently returns a null on invalid values
|
||||
O.armor = O.armor.setRating(melee = text2num(result["values"]["melee"]),\
|
||||
bullet = text2num(result["values"]["bullet"]),\
|
||||
laser = text2num(result["values"]["laser"]),\
|
||||
energy = text2num(result["values"]["energy"]),\
|
||||
bomb = text2num(result["values"]["bomb"]),\
|
||||
bio = text2num(result["values"]["bio"]),\
|
||||
rad = text2num(result["values"]["rad"]),\
|
||||
fire = text2num(result["values"]["fire"]),\
|
||||
acid = text2num(result["values"]["acid"]))
|
||||
bullet = text2num(result["values"]["bullet"]),\
|
||||
laser = text2num(result["values"]["laser"]),\
|
||||
energy = text2num(result["values"]["energy"]),\
|
||||
bomb = text2num(result["values"]["bomb"]),\
|
||||
bio = text2num(result["values"]["bio"]),\
|
||||
rad = text2num(result["values"]["rad"]),\
|
||||
fire = text2num(result["values"]["fire"]),\
|
||||
acid = text2num(result["values"]["acid"]))
|
||||
log_admin("[key_name(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]</span>")
|
||||
else
|
||||
|
||||
@@ -1,53 +1,53 @@
|
||||
#define EMBEDID "embed-[embed_chance]-[embedded_fall_chance]-[embedded_pain_chance]-[embedded_pain_multiplier]-[embedded_fall_pain_multiplier]-[embedded_impact_pain_multiplier]-[embedded_unsafe_removal_pain_multiplier]-[embedded_unsafe_removal_time]"
|
||||
|
||||
/proc/getEmbeddingBehavior(embed_chance = EMBED_CHANCE,
|
||||
embedded_fall_chance = EMBEDDED_ITEM_FALLOUT,
|
||||
embedded_pain_chance = EMBEDDED_PAIN_CHANCE,
|
||||
embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER,
|
||||
embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER,
|
||||
embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME)
|
||||
. = locate(EMBEDID)
|
||||
if (!.)
|
||||
. = new /datum/embedding_behavior(embed_chance, embedded_fall_chance, embedded_pain_chance, embedded_pain_multiplier, embedded_fall_pain_multiplier, embedded_impact_pain_multiplier, embedded_unsafe_removal_pain_multiplier, embedded_unsafe_removal_time)
|
||||
embedded_fall_chance = EMBEDDED_ITEM_FALLOUT,
|
||||
embedded_pain_chance = EMBEDDED_PAIN_CHANCE,
|
||||
embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER,
|
||||
embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER,
|
||||
embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME)
|
||||
. = locate(EMBEDID)
|
||||
if (!.)
|
||||
. = new /datum/embedding_behavior(embed_chance, embedded_fall_chance, embedded_pain_chance, embedded_pain_multiplier, embedded_fall_pain_multiplier, embedded_impact_pain_multiplier, embedded_unsafe_removal_pain_multiplier, embedded_unsafe_removal_time)
|
||||
|
||||
/datum/embedding_behavior
|
||||
var/embed_chance
|
||||
var/embedded_fall_chance
|
||||
var/embedded_pain_chance
|
||||
var/embedded_pain_multiplier //The coefficient of multiplication for the damage this item does while embedded (this*w_class)
|
||||
var/embedded_fall_pain_multiplier //The coefficient of multiplication for the damage this item does when falling out of a limb (this*w_class)
|
||||
var/embedded_impact_pain_multiplier //The coefficient of multiplication for the damage this item does when first embedded (this*w_class)
|
||||
var/embedded_unsafe_removal_pain_multiplier //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class)
|
||||
var/embedded_unsafe_removal_time //A time in ticks, multiplied by the w_class.
|
||||
var/embed_chance
|
||||
var/embedded_fall_chance
|
||||
var/embedded_pain_chance
|
||||
var/embedded_pain_multiplier //The coefficient of multiplication for the damage this item does while embedded (this*w_class)
|
||||
var/embedded_fall_pain_multiplier //The coefficient of multiplication for the damage this item does when falling out of a limb (this*w_class)
|
||||
var/embedded_impact_pain_multiplier //The coefficient of multiplication for the damage this item does when first embedded (this*w_class)
|
||||
var/embedded_unsafe_removal_pain_multiplier //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class)
|
||||
var/embedded_unsafe_removal_time //A time in ticks, multiplied by the w_class.
|
||||
|
||||
/datum/embedding_behavior/New(embed_chance = EMBED_CHANCE,
|
||||
embedded_fall_chance = EMBEDDED_ITEM_FALLOUT,
|
||||
embedded_pain_chance = EMBEDDED_PAIN_CHANCE,
|
||||
embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER,
|
||||
embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER,
|
||||
embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME)
|
||||
src.embed_chance = embed_chance
|
||||
src.embedded_fall_chance = embedded_fall_chance
|
||||
src.embedded_pain_chance = embedded_pain_chance
|
||||
src.embedded_pain_multiplier = embedded_pain_multiplier
|
||||
src.embedded_fall_pain_multiplier = embedded_fall_pain_multiplier
|
||||
src.embedded_impact_pain_multiplier = embedded_impact_pain_multiplier
|
||||
src.embedded_unsafe_removal_pain_multiplier = embedded_unsafe_removal_pain_multiplier
|
||||
src.embedded_unsafe_removal_time = embedded_unsafe_removal_time
|
||||
tag = EMBEDID
|
||||
embedded_fall_chance = EMBEDDED_ITEM_FALLOUT,
|
||||
embedded_pain_chance = EMBEDDED_PAIN_CHANCE,
|
||||
embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER,
|
||||
embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER,
|
||||
embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER,
|
||||
embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME)
|
||||
src.embed_chance = embed_chance
|
||||
src.embedded_fall_chance = embedded_fall_chance
|
||||
src.embedded_pain_chance = embedded_pain_chance
|
||||
src.embedded_pain_multiplier = embedded_pain_multiplier
|
||||
src.embedded_fall_pain_multiplier = embedded_fall_pain_multiplier
|
||||
src.embedded_impact_pain_multiplier = embedded_impact_pain_multiplier
|
||||
src.embedded_unsafe_removal_pain_multiplier = embedded_unsafe_removal_pain_multiplier
|
||||
src.embedded_unsafe_removal_time = embedded_unsafe_removal_time
|
||||
tag = EMBEDID
|
||||
|
||||
/datum/embedding_behavior/proc/setRating(embed_chance, embedded_fall_chance, embedded_pain_chance, embedded_pain_multiplier, embedded_fall_pain_multiplier, embedded_impact_pain_multiplier, embedded_unsafe_removal_pain_multiplier, embedded_unsafe_removal_time)
|
||||
return getEmbeddingBehavior((isnull(embed_chance) ? src.embed_chance : embed_chance),\
|
||||
(isnull(embedded_fall_chance) ? src.embedded_fall_chance : embedded_fall_chance),\
|
||||
(isnull(embedded_pain_chance) ? src.embedded_pain_chance : embedded_pain_chance),\
|
||||
(isnull(embedded_pain_multiplier) ? src.embedded_pain_multiplier : embedded_pain_multiplier),\
|
||||
(isnull(embedded_fall_pain_multiplier) ? src.embedded_fall_pain_multiplier : embedded_fall_pain_multiplier),\
|
||||
(isnull(embedded_impact_pain_multiplier) ? src.embedded_impact_pain_multiplier : embedded_impact_pain_multiplier),\
|
||||
(isnull(embedded_unsafe_removal_pain_multiplier) ? src.embedded_unsafe_removal_pain_multiplier : embedded_unsafe_removal_pain_multiplier),\
|
||||
(isnull(embedded_unsafe_removal_time) ? src.embedded_unsafe_removal_time : embedded_unsafe_removal_time))
|
||||
return getEmbeddingBehavior((isnull(embed_chance) ? src.embed_chance : embed_chance),\
|
||||
(isnull(embedded_fall_chance) ? src.embedded_fall_chance : embedded_fall_chance),\
|
||||
(isnull(embedded_pain_chance) ? src.embedded_pain_chance : embedded_pain_chance),\
|
||||
(isnull(embedded_pain_multiplier) ? src.embedded_pain_multiplier : embedded_pain_multiplier),\
|
||||
(isnull(embedded_fall_pain_multiplier) ? src.embedded_fall_pain_multiplier : embedded_fall_pain_multiplier),\
|
||||
(isnull(embedded_impact_pain_multiplier) ? src.embedded_impact_pain_multiplier : embedded_impact_pain_multiplier),\
|
||||
(isnull(embedded_unsafe_removal_pain_multiplier) ? src.embedded_unsafe_removal_pain_multiplier : embedded_unsafe_removal_pain_multiplier),\
|
||||
(isnull(embedded_unsafe_removal_time) ? src.embedded_unsafe_removal_time : embedded_unsafe_removal_time))
|
||||
|
||||
#undef EMBEDID
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
mood_change = -1
|
||||
|
||||
/datum/mood_event/broken_vow //Used for when mimes break their vow of silence
|
||||
description = "<span class='boldwarning'>I have brought shame upon my name, and betrayed my fellow mimes by breaking our sacred vow...</span>\n"
|
||||
mood_change = -8
|
||||
description = "<span class='boldwarning'>I have brought shame upon my name, and betrayed my fellow mimes by breaking our sacred vow...</span>\n"
|
||||
mood_change = -8
|
||||
|
||||
/datum/mood_event/on_fire
|
||||
description = "<span class='boldwarning'>I'M ON FIRE!!!</span>\n"
|
||||
@@ -55,14 +55,14 @@
|
||||
timeout = 2 MINUTES
|
||||
|
||||
/datum/mood_event/shameful_suicide //suicide_acts that return SHAME, like sord
|
||||
description = "<span class='boldwarning'>I can't even end it all!</span>\n"
|
||||
mood_change = -10
|
||||
timeout = 1 MINUTES
|
||||
description = "<span class='boldwarning'>I can't even end it all!</span>\n"
|
||||
mood_change = -10
|
||||
timeout = 1 MINUTES
|
||||
|
||||
/datum/mood_event/dismembered
|
||||
description = "<span class='boldwarning'>AHH! I WAS USING THAT LIMB!</span>\n"
|
||||
mood_change = -8
|
||||
timeout = 2400
|
||||
description = "<span class='boldwarning'>AHH! I WAS USING THAT LIMB!</span>\n"
|
||||
mood_change = -8
|
||||
timeout = 2400
|
||||
|
||||
/datum/mood_event/noshoes
|
||||
description = "<span class='warning'>I am a disgrace to comedy everywhere!</span>\n"
|
||||
@@ -92,20 +92,20 @@
|
||||
mood_change = 2
|
||||
|
||||
/datum/mood_event/brain_damage
|
||||
mood_change = -3
|
||||
mood_change = -3
|
||||
|
||||
/datum/mood_event/brain_damage/add_effects()
|
||||
var/damage_message = pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage")
|
||||
description = "<span class='warning'>Hurr durr... [damage_message]</span>\n"
|
||||
var/damage_message = pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage")
|
||||
description = "<span class='warning'>Hurr durr... [damage_message]</span>\n"
|
||||
|
||||
/datum/mood_event/hulk //Entire duration of having the hulk mutation
|
||||
description = "<span class='warning'>HULK SMASH!</span>\n"
|
||||
mood_change = -4
|
||||
description = "<span class='warning'>HULK SMASH!</span>\n"
|
||||
mood_change = -4
|
||||
|
||||
/datum/mood_event/epilepsy //Only when the mutation causes a seizure
|
||||
description = "<span class='warning'>I should have paid attention to the epilepsy warning.</span>\n"
|
||||
mood_change = -3
|
||||
timeout = 3000
|
||||
description = "<span class='warning'>I should have paid attention to the epilepsy warning.</span>\n"
|
||||
mood_change = -3
|
||||
timeout = 3000
|
||||
|
||||
/datum/mood_event/nyctophobia
|
||||
description = "<span class='warning'>It sure is dark around here...</span>\n"
|
||||
|
||||
@@ -80,12 +80,12 @@
|
||||
description = "<span class='nicegreen'>Heh...hehehe...hehe...</span>\n"
|
||||
mood_change = 4
|
||||
|
||||
/datum/mood_event/chemical_laughter
|
||||
/datum/mood_event/chemical_laughter
|
||||
description = "<span class='nicegreen'>Laughter really is the best medicine! Or is it?</span>\n"
|
||||
mood_change = 4
|
||||
timeout = 3 MINUTES
|
||||
|
||||
/datum/mood_event/chemical_superlaughter
|
||||
/datum/mood_event/chemical_superlaughter
|
||||
description = "<span class='nicegreen'>*WHEEZE*</span>\n"
|
||||
mood_change = 12
|
||||
timeout = 3 MINUTES
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
// So for example you can get the list of all current dead players with var/list/dead_players = candidates[CURRENT_DEAD_PLAYERS]
|
||||
// Make sure to properly typecheck the mobs in those lists, as the dead_players list could contain ghosts, or dead players still in their bodies.
|
||||
// We're still gonna trim the obvious (mobs without clients, jobbanned players, etc)
|
||||
living_players = trim_list(mode.current_players[CURRENT_LIVING_PLAYERS])
|
||||
living_antags = trim_list(mode.current_players[CURRENT_LIVING_ANTAGS])
|
||||
dead_players = trim_list(mode.current_players[CURRENT_DEAD_PLAYERS])
|
||||
list_observers = trim_list(mode.current_players[CURRENT_OBSERVERS])
|
||||
living_players = trim_list(mode.current_players[CURRENT_LIVING_PLAYERS])
|
||||
living_antags = trim_list(mode.current_players[CURRENT_LIVING_ANTAGS])
|
||||
dead_players = trim_list(mode.current_players[CURRENT_DEAD_PLAYERS])
|
||||
list_observers = trim_list(mode.current_players[CURRENT_OBSERVERS])
|
||||
|
||||
/datum/dynamic_ruleset/midround/proc/trim_list(list/L = list())
|
||||
var/list/trimmed_list = L.Copy()
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
to_chat(user, "<span class='notice'>Alt-click to eject the limb.</span>")
|
||||
|
||||
/obj/machinery/aug_manipulator/Initialize()
|
||||
initial_icon_state = initial(icon_state)
|
||||
return ..()
|
||||
initial_icon_state = initial(icon_state)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/aug_manipulator/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
var/len = length(viable_occupant.dna.uni_identity)
|
||||
num = WRAP(num, 1, len+1)
|
||||
num = randomize_radiation_accuracy(num, radduration + (connected.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2
|
||||
//Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low
|
||||
//Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low
|
||||
var/block = round((num-1)/DNA_BLOCK_SIZE)+1
|
||||
var/subblock = num - block*DNA_BLOCK_SIZE
|
||||
last_change = "UI #[block]-[subblock]; "
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
//for(var/mob/living/carbon/NS in rangers)
|
||||
// NS.resting = !NS.resting
|
||||
// NS.update_canmove()
|
||||
time--
|
||||
time--
|
||||
|
||||
/obj/machinery/jukebox/disco/proc/dance5(var/mob/living/M)
|
||||
animate(M, transform = matrix(180, MATRIX_ROTATE), time = 1, loop = 0)
|
||||
|
||||
@@ -153,11 +153,11 @@
|
||||
var/obj/item/storage/briefcase/launchpad/briefcase
|
||||
|
||||
/obj/machinery/launchpad/briefcase/Initialize(mapload, briefcase)
|
||||
. = ..()
|
||||
if(!briefcase)
|
||||
log_game("[src] has been spawned without a briefcase.")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
src.briefcase = briefcase
|
||||
. = ..()
|
||||
if(!briefcase)
|
||||
log_game("[src] has been spawned without a briefcase.")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
src.briefcase = briefcase
|
||||
|
||||
/obj/machinery/launchpad/briefcase/Destroy()
|
||||
QDEL_NULL(briefcase)
|
||||
|
||||
@@ -57,19 +57,19 @@
|
||||
[js_byjax]
|
||||
[js_dropdowns]
|
||||
function SSticker() {
|
||||
setInterval(function(){
|
||||
window.location='byond://?src=[REF(src)]&update_content=1';
|
||||
document.body.style.color = get_rand_color_string();
|
||||
document.body.style.background = get_rand_color_string();
|
||||
}, 1000);
|
||||
setInterval(function(){
|
||||
window.location='byond://?src=[REF(src)]&update_content=1';
|
||||
document.body.style.color = get_rand_color_string();
|
||||
document.body.style.background = get_rand_color_string();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function get_rand_color_string() {
|
||||
var color = new Array;
|
||||
for(var i=0;i<3;i++){
|
||||
color.push(Math.floor(Math.random()*255));
|
||||
}
|
||||
return "rgb("+color.toString()+")";
|
||||
var color = new Array;
|
||||
for(var i=0;i<3;i++){
|
||||
color.push(Math.floor(Math.random()*255));
|
||||
}
|
||||
return "rgb("+color.toString()+")";
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
|
||||
@@ -34,12 +34,12 @@
|
||||
)
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/Initialize()
|
||||
var/datum/component/material_container/materials = AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0,
|
||||
TRUE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
|
||||
materials.precise_insertion = TRUE
|
||||
stored_research = new
|
||||
return ..()
|
||||
var/datum/component/material_container/materials = AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0,
|
||||
TRUE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
|
||||
materials.precise_insertion = TRUE
|
||||
stored_research = new
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/RefreshParts()
|
||||
var/T = 0
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
[js_byjax]
|
||||
[js_dropdowns]
|
||||
function SSticker() {
|
||||
setInterval(function(){
|
||||
window.location='byond://?src=[REF(src)]&update_content=1';
|
||||
}, 1000);
|
||||
setInterval(function(){
|
||||
window.location='byond://?src=[REF(src)]&update_content=1';
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
function pageloaded(myframe) {
|
||||
document.getElementById("loading").style.display = "none";
|
||||
myframe.style.display = "inline";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<p id='loading'>You start skimming through the manual...</p>
|
||||
<iframe width='100%' height='97%' onload="pageloaded(this)" src="[wikiurl]/[page_link]?printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
|
||||
@@ -295,7 +295,7 @@
|
||||
function pageloaded(myframe) {
|
||||
document.getElementById("loading").style.display = "none";
|
||||
myframe.style.display = "block";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<p id='loading'>You start skimming through the manual...</p>
|
||||
<iframe width='100%' height='97%' onload="pageloaded(this)" src="[wikiurl]/[page_link]" frameborder="0" id="main_frame"></iframe>
|
||||
|
||||
@@ -945,12 +945,12 @@
|
||||
attack_verb = list("pred", "coded", "remembered")
|
||||
|
||||
/obj/item/toy/plush/catgirl/fermis
|
||||
name = "medcat plushie"
|
||||
desc = "An affectionate stuffed toy that resembles a certain medcat, comes complete with battery operated wagging tail!! You get the impression she's cheering you on to to find happiness and be kind to people."
|
||||
icon_state = "fermis"
|
||||
item_state = "fermis"
|
||||
attack_verb = list("cuddled", "petpatted", "wigglepurred")
|
||||
squeak_override = list('modular_citadel/sound/voice/merowr.ogg' = 1)
|
||||
name = "medcat plushie"
|
||||
desc = "An affectionate stuffed toy that resembles a certain medcat, comes complete with battery operated wagging tail!! You get the impression she's cheering you on to to find happiness and be kind to people."
|
||||
icon_state = "fermis"
|
||||
item_state = "fermis"
|
||||
attack_verb = list("cuddled", "petpatted", "wigglepurred")
|
||||
squeak_override = list('modular_citadel/sound/voice/merowr.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/catgirl/mariaf
|
||||
desc = "An adorable stuffed toy that resembles a very tall cat girl."
|
||||
|
||||
@@ -1293,8 +1293,8 @@
|
||||
var/toysound = 'sound/machines/click.ogg'
|
||||
|
||||
/obj/item/toy/figure/New()
|
||||
desc = "A \"Space Life\" brand [src]."
|
||||
..()
|
||||
desc = "A \"Space Life\" brand [src]."
|
||||
..()
|
||||
|
||||
/obj/item/toy/figure/attack_self(mob/user as mob)
|
||||
if(cooldown <= world.time)
|
||||
|
||||
@@ -50,7 +50,8 @@
|
||||
name = "bar"
|
||||
desc = "A direction sign, pointing out which way the Bar is."
|
||||
icon_state = "direction_bar"
|
||||
/obj/structure/sign/directions/cafe
|
||||
|
||||
/obj/structure/sign/directions/cafe
|
||||
name = "cafe"
|
||||
desc = "A direction sign, pointing out which way the Cafe is."
|
||||
icon_state = "direction_cafe"
|
||||
|
||||
@@ -949,7 +949,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
<tr>
|
||||
<th>Uniform:</th>
|
||||
<td>
|
||||
[uniform_select]
|
||||
[uniform_select]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
var/obj/chosen_obj = text2path(chosen)
|
||||
|
||||
var/list/settings = list(
|
||||
"mainsettings" = list(
|
||||
"name" = list("desc" = "Name", "type" = "string", "value" = "Bob"),
|
||||
"mainsettings" = list(
|
||||
"name" = list("desc" = "Name", "type" = "string", "value" = "Bob"),
|
||||
"maxhealth" = list("desc" = "Max. health", "type" = "number", "value" = 100),
|
||||
"access" = list("desc" = "Access ID", "type" = "datum", "path" = "/obj/item/card/id", "value" = "Default"),
|
||||
"access" = list("desc" = "Access ID", "type" = "datum", "path" = "/obj/item/card/id", "value" = "Default"),
|
||||
"objtype" = list("desc" = "Base obj type", "type" = "datum", "path" = "/obj", "value" = "[chosen]"),
|
||||
"googlyeyes" = list("desc" = "Googly eyes", "type" = "boolean", "value" = "No"),
|
||||
"disableai" = list("desc" = "Disable AI", "type" = "boolean", "value" = "Yes"),
|
||||
@@ -27,7 +27,7 @@
|
||||
"dropitem" = list("desc" = "Drop obj on death", "type" = "boolean", "value" = "Yes"),
|
||||
"mobtype" = list("desc" = "Base mob type", "type" = "datum", "path" = "/mob/living/simple_animal/hostile/mimic/copy", "value" = "/mob/living/simple_animal/hostile/mimic/copy"),
|
||||
"ckey" = list("desc" = "ckey", "type" = "ckey", "value" = "none"),
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
var/list/prefreturn = presentpreflikepicker(usr,"Customize mob", "Customize mob", Button1="Ok", width = 450, StealFocus = 1,Timeout = 0, settings=settings)
|
||||
|
||||
@@ -393,23 +393,22 @@
|
||||
name = "Dissection Guide"
|
||||
icon_state = "alienpaper_words"
|
||||
info = {"<b>Dissection for Dummies</b><br>
|
||||
|
||||
<br>
|
||||
1.Acquire fresh specimen.<br>
|
||||
2.Put the specimen on operating table.<br>
|
||||
3.Apply surgical drapes, preparing for experimental dissection.<br>
|
||||
4.Apply scalpel to specimen's torso.<br>
|
||||
5.Clamp bleeders on specimen's torso with a hemostat.<br>
|
||||
6.Retract skin of specimen's torso with a retractor.<br>
|
||||
7.Apply scalpel again to specimen's torso.<br>
|
||||
8.Search through the specimen's torso with your hands to remove any superfluous organs.<br>
|
||||
9.Insert replacement gland (Retrieve one from gland storage).<br>
|
||||
10.Consider dressing the specimen back to not disturb the habitat. <br>
|
||||
11.Put the specimen in the experiment machinery.<br>
|
||||
12.Choose one of the machine options. The target will be analyzed and teleported to the selected drop-off point.<br>
|
||||
13.You will receive one supply credit, and the subject will be counted towards your quota.<br>
|
||||
<br>
|
||||
Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
<br>
|
||||
1.Acquire fresh specimen.<br>
|
||||
2.Put the specimen on operating table.<br>
|
||||
3.Apply surgical drapes, preparing for experimental dissection.<br>
|
||||
4.Apply scalpel to specimen's torso.<br>
|
||||
5.Clamp bleeders on specimen's torso with a hemostat.<br>
|
||||
6.Retract skin of specimen's torso with a retractor.<br>
|
||||
7.Apply scalpel again to specimen's torso.<br>
|
||||
8.Search through the specimen's torso with your hands to remove any superfluous organs.<br>
|
||||
9.Insert replacement gland (Retrieve one from gland storage).<br>
|
||||
10.Consider dressing the specimen back to not disturb the habitat. <br>
|
||||
11.Put the specimen in the experiment machinery.<br>
|
||||
12.Choose one of the machine options. The target will be analyzed and teleported to the selected drop-off point.<br>
|
||||
13.You will receive one supply credit, and the subject will be counted towards your quota.<br>
|
||||
<br>
|
||||
Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
|
||||
/obj/item/paper/guides/antag/abductor/update_icon()
|
||||
return
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/janitor //six scriptures, plus a fabricator
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transgression, \
|
||||
/datum/clockwork_scripture/create_object/stargazer, /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor)
|
||||
/datum/clockwork_scripture/create_object/stargazer, /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/service //six scriptures, plus xray vision
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant,/datum/clockwork_scripture/create_object/stargazer, \
|
||||
|
||||
@@ -249,7 +249,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
convertee.adjustFireLoss(-(burndamage * 0.75))
|
||||
convertee.visible_message("<span class='warning'>[convertee] writhes in pain \
|
||||
[brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!</span>", \
|
||||
"<span class='cultlarge'><i>AAAAAAAAAAAAAA-</i></span>")
|
||||
"<span class='cultlarge'><i>AAAAAAAAAAAAAA-</i></span>")
|
||||
SSticker.mode.add_cultist(convertee.mind, 1)
|
||||
new /obj/item/melee/cultblade/dagger(get_turf(src))
|
||||
convertee.mind.special_role = ROLE_CULTIST
|
||||
|
||||
@@ -64,7 +64,7 @@ GLOBAL_VAR_INIT(war_declared, FALSE)
|
||||
for(var/obj/machinery/computer/camera_advanced/shuttle_docker/D in GLOB.jam_on_wardec)
|
||||
D.jammed = TRUE
|
||||
|
||||
GLOB.war_declared = TRUE
|
||||
GLOB.war_declared = TRUE
|
||||
var/list/nukeops = get_antag_minds(/datum/antagonist/nukeop)
|
||||
var/actual_players = GLOB.joined_player_list.len - nukeops.len
|
||||
var/tc_malus = 0
|
||||
|
||||
@@ -340,9 +340,9 @@
|
||||
to_chat(victim, "<span class='notice'>You feel a dark presence from [A.name]</span>")
|
||||
|
||||
/obj/item/voodoo/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] links the voodoo doll to [user.p_them()]self and sits on it, infinitely crushing [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.gib()
|
||||
return(BRUTELOSS)
|
||||
user.visible_message("<span class='suicide'>[user] links the voodoo doll to [user.p_them()]self and sits on it, infinitely crushing [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.gib()
|
||||
return(BRUTELOSS)
|
||||
|
||||
/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume)
|
||||
if(target)
|
||||
|
||||
@@ -626,16 +626,16 @@
|
||||
dat += {"
|
||||
<head>
|
||||
<style type="text/css">
|
||||
body { font-size: 80%; font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif; }
|
||||
ul#tabs { list-style-type: none; margin: 30px 0 0 0; padding: 0 0 0.3em 0; }
|
||||
ul#tabs li { display: inline; }
|
||||
ul#tabs li a { color: #42454a; background-color: #dedbde; border: 1px solid #c9c3ba; border-bottom: none; padding: 0.3em; text-decoration: none; }
|
||||
ul#tabs li a:hover { background-color: #f1f0ee; }
|
||||
ul#tabs li a.selected { color: #000; background-color: #f1f0ee; font-weight: bold; padding: 0.7em 0.3em 0.38em 0.3em; }
|
||||
div.tabContent { border: 1px solid #c9c3ba; padding: 0.5em; background-color: #f1f0ee; }
|
||||
div.tabContent.hide { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
body { font-size: 80%; font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif; }
|
||||
ul#tabs { list-style-type: none; margin: 30px 0 0 0; padding: 0 0 0.3em 0; }
|
||||
ul#tabs li { display: inline; }
|
||||
ul#tabs li a { color: #42454a; background-color: #dedbde; border: 1px solid #c9c3ba; border-bottom: none; padding: 0.3em; text-decoration: none; }
|
||||
ul#tabs li a:hover { background-color: #f1f0ee; }
|
||||
ul#tabs li a.selected { color: #000; background-color: #f1f0ee; font-weight: bold; padding: 0.7em 0.3em 0.38em 0.3em; }
|
||||
div.tabContent { border: 1px solid #c9c3ba; padding: 0.5em; background-color: #f1f0ee; }
|
||||
div.tabContent.hide { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
"}
|
||||
dat += {"[content]</body></html>"}
|
||||
return dat
|
||||
|
||||
@@ -102,9 +102,9 @@
|
||||
SSair.add_to_active(src,command)
|
||||
|
||||
/atom/movable/proc/move_update_air(turf/T)
|
||||
if(isturf(T))
|
||||
T.air_update_turf(1)
|
||||
air_update_turf(1)
|
||||
if(isturf(T))
|
||||
T.air_update_turf(1)
|
||||
air_update_turf(1)
|
||||
|
||||
/atom/proc/atmos_spawn_air(text) //because a lot of people loves to copy paste awful code lets just make an easy proc to spawn your plasma fires
|
||||
var/turf/open/T = get_turf(src)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
cost = 5000 //Cats are worth as much as corgis.
|
||||
contains = list(/mob/living/simple_animal/pet/cat,
|
||||
/obj/item/clothing/neck/petcollar,
|
||||
/obj/item/toy/cattoy)
|
||||
/obj/item/toy/cattoy)
|
||||
crate_name = "cat crate"
|
||||
|
||||
/datum/supply_pack/critter/cat/generate()
|
||||
|
||||
@@ -34,11 +34,11 @@
|
||||
desc = "Stay hot on the criminal's heels with Nanotrasen's Detective Essentials(tm). Contains a forensics scanner, six evidence bags, camera, tape recorder, white crayon, and of course, a fedora. Requires Security access to open."
|
||||
cost = 1800
|
||||
contains = list(/obj/item/detective_scanner,
|
||||
/obj/item/storage/box/evidence,
|
||||
/obj/item/camera,
|
||||
/obj/item/taperecorder,
|
||||
/obj/item/toy/crayon/white,
|
||||
/obj/item/clothing/head/fedora/det_hat)
|
||||
/obj/item/storage/box/evidence,
|
||||
/obj/item/camera,
|
||||
/obj/item/taperecorder,
|
||||
/obj/item/toy/crayon/white,
|
||||
/obj/item/clothing/head/fedora/det_hat)
|
||||
crate_name = "forensics crate"
|
||||
|
||||
/datum/supply_pack/security/helmets
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
CAT_SANDWICH,
|
||||
CAT_SOUP,
|
||||
CAT_SPAGHETTI),
|
||||
CAT_CLOTHING) //Clothing subcategories
|
||||
CAT_NONE) //Clothing subcategories
|
||||
|
||||
var/datum/action/innate/crafting/button
|
||||
var/display_craftable_only = FALSE
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
name = "Liz O' Nine Tails"
|
||||
result = /obj/item/melee/chainofcommand/tailwhip
|
||||
reqs = list(/obj/item/organ/tail/lizard = 1,
|
||||
/obj/item/stack/cable_coil = 1)
|
||||
/obj/item/stack/cable_coil = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
@@ -93,7 +93,7 @@
|
||||
name = "Cat O' Nine Tails"
|
||||
result = /obj/item/melee/chainofcommand/tailwhip/kitty
|
||||
reqs = list(/obj/item/organ/tail/cat = 1,
|
||||
/obj/item/stack/cable_coil = 1)
|
||||
/obj/item/stack/cable_coil = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
@@ -67,62 +67,62 @@
|
||||
/obj/item/valentine/New()
|
||||
..()
|
||||
message = pick("Roses are red / Violets are good / One day while Andy...",
|
||||
"My love for you is like the singularity. It cannot be contained.",
|
||||
"Will you be my lusty xenomorph maid?",
|
||||
"We go together like the clown and the external airlock.",
|
||||
"Roses are red / Liches are wizards / I love you more than a whole squad of lizards.",
|
||||
"Be my valentine. Law 2.",
|
||||
"You must be a mime, because you leave me speechless.",
|
||||
"I love you like Ian loves the HoP.",
|
||||
"You're hotter than a plasma fire in toxins.",
|
||||
"Are you a rogue atmos tech? Because you're taking my breath away.",
|
||||
"Could I have all access... to your heart?",
|
||||
"Call me the doctor, because I'm here to inspect your johnson.",
|
||||
"I'm not a changeling, but you make my proboscis extend.",
|
||||
"I just can't get EI NATH of you.",
|
||||
"You must be a nuke op, because you make my heart explode.",
|
||||
"Roses are red / Botany is a farm / Not being my Valentine / causes human harm.",
|
||||
"I want you more than an assistant wants insulated gloves.",
|
||||
"If I was a security officer, I'd brig you all shift.",
|
||||
"Are you the janitor? Because I think I've fallen for you.",
|
||||
"You're always valid to my heart.",
|
||||
"I'd risk the wrath of the gods to bwoink you.",
|
||||
"You look as beautiful now as the last time you were cloned.",
|
||||
"Someone check the gravitational generator, because I'm only attracted to you.",
|
||||
"If I were the warden I'd always let you into my armory.",
|
||||
"The virologist is rogue, and the only cure is a kiss from you.",
|
||||
"Would you spend some time in my upgraded sleeper?",
|
||||
"You must be a silicon, because you've unbolted my heart.",
|
||||
"Are you Nar'Sie? Because there's nar-one else I sie.",
|
||||
"If you were a taser, you'd be set to stunning.",
|
||||
"Do you have stamina damage from running through my dreams?",
|
||||
"If I were an alien, would you let me hug you?",
|
||||
"My love for you is stronger than a reinforced wall.",
|
||||
"This must be the captain's office, because I see a fox.",
|
||||
"I'm not a highlander, but there can only be one for me.",
|
||||
"The floor is made of lava! Quick, get on my bed.",
|
||||
"If you were an abandoned station you'd be the DEARelict.",
|
||||
"If you had a pickaxe you'd be a shaft FINEr.",
|
||||
"Roses are red, tide is gray, if I were an assistant I'd steal you away.",
|
||||
"Roses are red, text is green, I love you more than cleanbots clean.",
|
||||
"If you were a carp I'd fi-lay you.",
|
||||
"I'm a nuke op, and my pinpointer leads to your heart.",
|
||||
"Wanna slay my megafauna?",
|
||||
"I'm a clockwork cultist. Or zl inyragvar.",
|
||||
"If you were a disposal bin I'd ride you all day.",
|
||||
"Put on your explorer's suit because I'm taking you to LOVEaland.",
|
||||
"I must be the CMO, 'cause I saw you on my CUTE sensors.",
|
||||
"You're the vomit to my flyperson.",
|
||||
"You must be liquid dark matter, because you're pulling me closer.",
|
||||
"Not even sorium can drive me away from you.",
|
||||
"Wanna make like a borg and do some heavy petting?",
|
||||
"Are you powering the station? Because you super matter to me.",
|
||||
"I wish science could make me a bag of holding you.",
|
||||
"Let's call the emergency CUDDLE.",
|
||||
"I must be tripping on BZ, because I saw an angel walk by.",
|
||||
"Wanna empty out my tool storage?",
|
||||
"Did you visit the medbay after you fell from heaven?",
|
||||
"Are you wearing space pants? Wanna not be?" )
|
||||
"My love for you is like the singularity. It cannot be contained.",
|
||||
"Will you be my lusty xenomorph maid?",
|
||||
"We go together like the clown and the external airlock.",
|
||||
"Roses are red / Liches are wizards / I love you more than a whole squad of lizards.",
|
||||
"Be my valentine. Law 2.",
|
||||
"You must be a mime, because you leave me speechless.",
|
||||
"I love you like Ian loves the HoP.",
|
||||
"You're hotter than a plasma fire in toxins.",
|
||||
"Are you a rogue atmos tech? Because you're taking my breath away.",
|
||||
"Could I have all access... to your heart?",
|
||||
"Call me the doctor, because I'm here to inspect your johnson.",
|
||||
"I'm not a changeling, but you make my proboscis extend.",
|
||||
"I just can't get EI NATH of you.",
|
||||
"You must be a nuke op, because you make my heart explode.",
|
||||
"Roses are red / Botany is a farm / Not being my Valentine / causes human harm.",
|
||||
"I want you more than an assistant wants insulated gloves.",
|
||||
"If I was a security officer, I'd brig you all shift.",
|
||||
"Are you the janitor? Because I think I've fallen for you.",
|
||||
"You're always valid to my heart.",
|
||||
"I'd risk the wrath of the gods to bwoink you.",
|
||||
"You look as beautiful now as the last time you were cloned.",
|
||||
"Someone check the gravitational generator, because I'm only attracted to you.",
|
||||
"If I were the warden I'd always let you into my armory.",
|
||||
"The virologist is rogue, and the only cure is a kiss from you.",
|
||||
"Would you spend some time in my upgraded sleeper?",
|
||||
"You must be a silicon, because you've unbolted my heart.",
|
||||
"Are you Nar'Sie? Because there's nar-one else I sie.",
|
||||
"If you were a taser, you'd be set to stunning.",
|
||||
"Do you have stamina damage from running through my dreams?",
|
||||
"If I were an alien, would you let me hug you?",
|
||||
"My love for you is stronger than a reinforced wall.",
|
||||
"This must be the captain's office, because I see a fox.",
|
||||
"I'm not a highlander, but there can only be one for me.",
|
||||
"The floor is made of lava! Quick, get on my bed.",
|
||||
"If you were an abandoned station you'd be the DEARelict.",
|
||||
"If you had a pickaxe you'd be a shaft FINEr.",
|
||||
"Roses are red, tide is gray, if I were an assistant I'd steal you away.",
|
||||
"Roses are red, text is green, I love you more than cleanbots clean.",
|
||||
"If you were a carp I'd fi-lay you.",
|
||||
"I'm a nuke op, and my pinpointer leads to your heart.",
|
||||
"Wanna slay my megafauna?",
|
||||
"I'm a clockwork cultist. Or zl inyragvar.",
|
||||
"If you were a disposal bin I'd ride you all day.",
|
||||
"Put on your explorer's suit because I'm taking you to LOVEaland.",
|
||||
"I must be the CMO, 'cause I saw you on my CUTE sensors.",
|
||||
"You're the vomit to my flyperson.",
|
||||
"You must be liquid dark matter, because you're pulling me closer.",
|
||||
"Not even sorium can drive me away from you.",
|
||||
"Wanna make like a borg and do some heavy petting?",
|
||||
"Are you powering the station? Because you super matter to me.",
|
||||
"I wish science could make me a bag of holding you.",
|
||||
"Let's call the emergency CUDDLE.",
|
||||
"I must be tripping on BZ, because I saw an angel walk by.",
|
||||
"Wanna empty out my tool storage?",
|
||||
"Did you visit the medbay after you fell from heaven?",
|
||||
"Are you wearing space pants? Wanna not be?" )
|
||||
|
||||
/obj/item/valentine/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
@@ -162,24 +162,24 @@
|
||||
/obj/item/reagent_containers/food/snacks/candyheart/New()
|
||||
..()
|
||||
desc = pick("A heart-shaped candy that reads: HONK ME",
|
||||
"A heart-shaped candy that reads: ERP",
|
||||
"A heart-shaped candy that reads: LEWD",
|
||||
"A heart-shaped candy that reads: LUSTY",
|
||||
"A heart-shaped candy that reads: SPESS LOVE",
|
||||
"A heart-shaped candy that reads: AYY LMAO",
|
||||
"A heart-shaped candy that reads: TABLE ME",
|
||||
"A heart-shaped candy that reads: HAND CUFFS",
|
||||
"A heart-shaped candy that reads: SHAFT MINER",
|
||||
"A heart-shaped candy that reads: BANGING DONK",
|
||||
"A heart-shaped candy that reads: Y-YOU T-TOO",
|
||||
"A heart-shaped candy that reads: GOT WOOD",
|
||||
"A heart-shaped candy that reads: TFW NO GF",
|
||||
"A heart-shaped candy that reads: WAG MY TAIL",
|
||||
"A heart-shaped candy that reads: VALIDTINES",
|
||||
"A heart-shaped candy that reads: FACEHUGGER",
|
||||
"A heart-shaped candy that reads: BOX OF HUGS",
|
||||
"A heart-shaped candy that reads: REEBE MINE",
|
||||
"A heart-shaped candy that reads: PET ME",
|
||||
"A heart-shaped candy that reads: TO THE DORMS",
|
||||
"A heart-shaped candy that reads: DIS MEMBER")
|
||||
"A heart-shaped candy that reads: ERP",
|
||||
"A heart-shaped candy that reads: LEWD",
|
||||
"A heart-shaped candy that reads: LUSTY",
|
||||
"A heart-shaped candy that reads: SPESS LOVE",
|
||||
"A heart-shaped candy that reads: AYY LMAO",
|
||||
"A heart-shaped candy that reads: TABLE ME",
|
||||
"A heart-shaped candy that reads: HAND CUFFS",
|
||||
"A heart-shaped candy that reads: SHAFT MINER",
|
||||
"A heart-shaped candy that reads: BANGING DONK",
|
||||
"A heart-shaped candy that reads: Y-YOU T-TOO",
|
||||
"A heart-shaped candy that reads: GOT WOOD",
|
||||
"A heart-shaped candy that reads: TFW NO GF",
|
||||
"A heart-shaped candy that reads: WAG MY TAIL",
|
||||
"A heart-shaped candy that reads: VALIDTINES",
|
||||
"A heart-shaped candy that reads: FACEHUGGER",
|
||||
"A heart-shaped candy that reads: BOX OF HUGS",
|
||||
"A heart-shaped candy that reads: REEBE MINE",
|
||||
"A heart-shaped candy that reads: PET ME",
|
||||
"A heart-shaped candy that reads: TO THE DORMS",
|
||||
"A heart-shaped candy that reads: DIS MEMBER")
|
||||
icon_state = pick("candyheart", "candyheart2", "candyheart3", "candyheart4")
|
||||
|
||||
@@ -282,7 +282,7 @@
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain
|
||||
foodtype = MEAT
|
||||
foodtype = MEAT
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain/human
|
||||
tastes = list("tender meat" = 1)
|
||||
@@ -340,7 +340,7 @@
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain
|
||||
foodtype = MEAT
|
||||
foodtype = MEAT
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human
|
||||
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/pizza/margherita = 1,
|
||||
/obj/item/reagent_containers/food/snacks/pizza/sassysage = 0.8,
|
||||
/obj/item/reagent_containers/food/snacks/pizza/vegetable = 0.8,
|
||||
/obj/item/reagent_containers/food/snacks/pizza/pineapple = 0.5,
|
||||
/obj/item/reagent_containers/food/snacks/pizza/pineapple = 0.5,
|
||||
/obj/item/reagent_containers/food/snacks/pizza/donkpocket = 0.3,
|
||||
/obj/item/reagent_containers/food/snacks/pizza/dank = 0.1) //pizzas here are weighted by chance to be someone's favorite
|
||||
var/static/list/pizza_preferences
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana = 1
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/cream
|
||||
subcategory = CAT_PIE
|
||||
@@ -46,7 +46,7 @@
|
||||
name = "Cherry pie"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherries = 1
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherries = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/cherrypie
|
||||
subcategory = CAT_PIE
|
||||
@@ -122,11 +122,11 @@
|
||||
/datum/crafting_recipe/food/grapetart
|
||||
name = "Grape tart"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/grapes = 3
|
||||
)
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/grapes = 3
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/grapetart
|
||||
subcategory = CAT_PIE
|
||||
|
||||
@@ -183,11 +183,11 @@
|
||||
name = "Mime tart"
|
||||
always_availible = FALSE
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/datum/reagent/consumable/nothing = 5
|
||||
)
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/datum/reagent/consumable/nothing = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/mimetart
|
||||
subcategory = CAT_PIE
|
||||
|
||||
@@ -195,11 +195,11 @@
|
||||
name = "Berry tart"
|
||||
always_availible = FALSE
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries = 3
|
||||
)
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries = 3
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/berrytart
|
||||
subcategory = CAT_PIE
|
||||
|
||||
@@ -207,20 +207,20 @@
|
||||
name = "Chocolate Lava tart"
|
||||
always_availible = FALSE
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar = 3,
|
||||
/obj/item/slime_extract = 1
|
||||
)
|
||||
/datum/reagent/consumable/milk = 5,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar = 3,
|
||||
/obj/item/slime_extract = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/cocolavatart
|
||||
subcategory = CAT_PIE
|
||||
|
||||
/datum/crafting_recipe/food/peachpie
|
||||
name = "Peach Pie"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/peach = 3
|
||||
)
|
||||
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/peach = 3
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/peachpie
|
||||
subcategory = CAT_PIE
|
||||
@@ -1,72 +1,72 @@
|
||||
/obj/effect/landmark/barthpot
|
||||
name = "barthpot"
|
||||
name = "barthpot"
|
||||
|
||||
/obj/item/barthpot
|
||||
name = "Bartholomew"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "barthpot"
|
||||
anchored = TRUE
|
||||
var/items_list = list()
|
||||
speech_span = "spooky"
|
||||
var/active = TRUE
|
||||
name = "Bartholomew"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "barthpot"
|
||||
anchored = TRUE
|
||||
var/items_list = list()
|
||||
speech_span = "spooky"
|
||||
var/active = TRUE
|
||||
|
||||
/obj/item/barthpot/Destroy()
|
||||
var/obj/item/barthpot/n = new src(loc)
|
||||
n.items_list = items_list
|
||||
..()
|
||||
var/obj/item/barthpot/n = new src(loc)
|
||||
n.items_list = items_list
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/barthpot/attackby(obj/item/I, mob/user, params)
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
|
||||
for(var/I2 in items_list)
|
||||
if(istype(I, I2))
|
||||
qdel(I)
|
||||
new /obj/item/reagent_containers/food/snacks/special_candy(loc)
|
||||
to_chat(user, "<span class='notice'>You add the [I.name] to the pot and watch as it melts into the mixture, a candy crystalising in it's wake.</span>")
|
||||
say("Hooray! Thank you!")
|
||||
items_list -= I2
|
||||
return
|
||||
say("It doesn't seem like that's magical enough!")
|
||||
for(var/I2 in items_list)
|
||||
if(istype(I, I2))
|
||||
qdel(I)
|
||||
new /obj/item/reagent_containers/food/snacks/special_candy(loc)
|
||||
to_chat(user, "<span class='notice'>You add the [I.name] to the pot and watch as it melts into the mixture, a candy crystalising in it's wake.</span>")
|
||||
say("Hooray! Thank you!")
|
||||
items_list -= I2
|
||||
return
|
||||
say("It doesn't seem like that's magical enough!")
|
||||
|
||||
/obj/item/barthpot/attack_hand(mob/user)
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
say("Hello there, I'm Bartholomew, Jacqueline's Familiar.")
|
||||
sleep(20)
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
say("Hello there, I'm Bartholomew, Jacqueline's Familiar.")
|
||||
sleep(20)
|
||||
|
||||
say("I'm currently seeking items to put into my pot, if we get the right items, it should crystalise into a magic candy!")
|
||||
if(!iscarbon(user))
|
||||
say("Though... I'm not sure you can help me.")
|
||||
say("I'm currently seeking items to put into my pot, if we get the right items, it should crystalise into a magic candy!")
|
||||
if(!iscarbon(user))
|
||||
say("Though... I'm not sure you can help me.")
|
||||
|
||||
var/message = "From what I can tell, "
|
||||
if(LAZYLEN(items_list) < 5)
|
||||
generate_items()
|
||||
for(var/I2 in items_list)
|
||||
if(!I2)
|
||||
items_list -= I2
|
||||
continue
|
||||
var/obj/item/I3 = new I2
|
||||
message += "a [I3.name], "
|
||||
message += "currently seem to have the most magic potential."
|
||||
sleep(15)
|
||||
say("[message]")
|
||||
sleep(15)
|
||||
//To help people find her
|
||||
for(var/mob/living/simple_animal/jacq/J in GLOB.simple_animals[1])
|
||||
var/turf/L1 = J.loc
|
||||
if(!L1) //Incase someone uh.. puts her in a locker
|
||||
return
|
||||
var/area/L2 = L1.loc
|
||||
if(L2)
|
||||
say("Also, it seems that Jacqueline is currently at the [L2], if you're looking for her too.")
|
||||
var/message = "From what I can tell, "
|
||||
if(LAZYLEN(items_list) < 5)
|
||||
generate_items()
|
||||
for(var/I2 in items_list)
|
||||
if(!I2)
|
||||
items_list -= I2
|
||||
continue
|
||||
var/obj/item/I3 = new I2
|
||||
message += "a [I3.name], "
|
||||
message += "currently seem to have the most magic potential."
|
||||
sleep(15)
|
||||
say("[message]")
|
||||
sleep(15)
|
||||
//To help people find her
|
||||
for(var/mob/living/simple_animal/jacq/J in GLOB.simple_animals[1])
|
||||
var/turf/L1 = J.loc
|
||||
if(!L1) //Incase someone uh.. puts her in a locker
|
||||
return
|
||||
var/area/L2 = L1.loc
|
||||
if(L2)
|
||||
say("Also, it seems that Jacqueline is currently at the [L2], if you're looking for her too.")
|
||||
|
||||
/obj/item/barthpot/proc/generate_items()
|
||||
var/length = LAZYLEN(items_list)
|
||||
var/rand_items = list(/obj/item/bodybag = 1,
|
||||
var/length = LAZYLEN(items_list)
|
||||
var/rand_items = list(/obj/item/bodybag = 1,
|
||||
/obj/item/clothing/glasses/meson = 2,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/clothing/gloves/color/fyellow = 1,
|
||||
@@ -94,7 +94,7 @@
|
||||
/obj/item/stack/sheet/metal = 1,
|
||||
/obj/item/stack/sheet/mineral/plasma = 1,
|
||||
/obj/item/stack/sheet/rglass = 1,
|
||||
/obj/item/coin = 1,
|
||||
/obj/item/coin = 1,
|
||||
/obj/item/crowbar = 4,
|
||||
/obj/item/extinguisher = 3,
|
||||
/obj/item/hand_labeler = 1,
|
||||
@@ -129,28 +129,28 @@
|
||||
/obj/item/storage/toolbox = 2,
|
||||
/obj/item/reagent_containers/pill = 2,
|
||||
/obj/item/clothing/shoes = 8,
|
||||
/obj/item/clothing/head = 3,
|
||||
/obj/item/reagent_containers/food/snacks = 3,
|
||||
/obj/item/reagent_containers/syringe/dart = 2,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans = 5)
|
||||
if(length >= 5)
|
||||
return TRUE
|
||||
//var/metalist = pickweight(GLOB.maintenance_loot)
|
||||
for(var/i = length, i <= 5, i+=1)
|
||||
var/obj/item = pickweight(rand_items)
|
||||
if(!item)
|
||||
i-=1
|
||||
continue
|
||||
for(var/obj/item_dupe in items_list) //No duplicates
|
||||
if(item_dupe == item)
|
||||
i-=1
|
||||
continue
|
||||
items_list += item
|
||||
return TRUE
|
||||
/obj/item/clothing/head = 3,
|
||||
/obj/item/reagent_containers/food/snacks = 3,
|
||||
/obj/item/reagent_containers/syringe/dart = 2,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans = 5)
|
||||
if(length >= 5)
|
||||
return TRUE
|
||||
//var/metalist = pickweight(GLOB.maintenance_loot)
|
||||
for(var/i = length, i <= 5, i+=1)
|
||||
var/obj/item = pickweight(rand_items)
|
||||
if(!item)
|
||||
i-=1
|
||||
continue
|
||||
for(var/obj/item_dupe in items_list) //No duplicates
|
||||
if(item_dupe == item)
|
||||
i-=1
|
||||
continue
|
||||
items_list += item
|
||||
return TRUE
|
||||
|
||||
/obj/item/pinpointer/jacq
|
||||
name = "The Jacq-Tracq"
|
||||
desc = "A handheld tracking device that locks onto witchy signals."
|
||||
name = "The Jacq-Tracq"
|
||||
desc = "A handheld tracking device that locks onto witchy signals."
|
||||
|
||||
/obj/item/pinpointer/jacq/attack_self(mob/living/user)
|
||||
for(var/mob/living/simple_animal/jacq/J in GLOB.simple_animals[1])
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
src.max_complexity = round(max_complexity)
|
||||
|
||||
/obj/item/electronic_assembly/GenerateTag()
|
||||
tag = "assembly_[next_assembly_id++]"
|
||||
tag = "assembly_[next_assembly_id++]"
|
||||
|
||||
/obj/item/electronic_assembly/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -616,7 +616,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/electronic_assembly/default //The /default electronic_assemblys are to allow the introduction of the new naming scheme without breaking old saves.
|
||||
name = "type-a electronic assembly"
|
||||
name = "type-a electronic assembly"
|
||||
|
||||
/obj/item/electronic_assembly/calc
|
||||
name = "type-b electronic assembly"
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them, now in industrial size!"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
extended_desc = "The siphon drains 2 kW of power from an APC in the same room as it as long as it has charge remaining. It will always drain \
|
||||
from the 'equipment' power channel."
|
||||
from the 'equipment' power channel."
|
||||
icon_state = "power_relay"
|
||||
complexity = 15
|
||||
spawn_flags = IC_SPAWN_RESEARCH
|
||||
|
||||
@@ -122,16 +122,16 @@
|
||||
|
||||
/proc/get_all_accesses()
|
||||
return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,
|
||||
ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD,
|
||||
ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_CHEMISTRY, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD,
|
||||
ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_TECH_STORAGE, ACCESS_CHAPEL_OFFICE, ACCESS_ATMOSPHERICS, ACCESS_KITCHEN,
|
||||
ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION,
|
||||
ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY,
|
||||
ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS,
|
||||
ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE,
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING)
|
||||
ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD,
|
||||
ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_CHEMISTRY, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD,
|
||||
ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_TECH_STORAGE, ACCESS_CHAPEL_OFFICE, ACCESS_ATMOSPHERICS, ACCESS_KITCHEN,
|
||||
ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION,
|
||||
ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY,
|
||||
ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS,
|
||||
ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE,
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING)
|
||||
|
||||
/proc/get_all_centcom_access()
|
||||
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN)
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
outfit = /datum/outfit/job/ce
|
||||
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT,
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT,
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT,
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT,
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CHIEF_ENGINEER
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/paraplegic, /datum/quirk/insanity)
|
||||
|
||||
@@ -19,17 +19,17 @@
|
||||
outfit = /datum/outfit/job/hop
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL
|
||||
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_HEAD_OF_SECURITY
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/insanity)
|
||||
|
||||
@@ -19,15 +19,15 @@
|
||||
outfit = /datum/outfit/job/rd
|
||||
|
||||
access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE,
|
||||
ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
|
||||
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
|
||||
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK)
|
||||
ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
|
||||
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
|
||||
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK)
|
||||
minimal_access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE,
|
||||
ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
|
||||
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
|
||||
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK)
|
||||
ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
|
||||
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
|
||||
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
});
|
||||
$( "#sortable" ).disableSelection();
|
||||
$('form').submit(function(){
|
||||
$('#IRVdata').val($( "#sortable" ).sortable("toArray", { attribute: "voteid" }));
|
||||
$('#IRVdata').val($( "#sortable" ).sortable("toArray", { attribute: "voteid" }));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -130,10 +130,10 @@
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/sergal
|
||||
name = "Sergal"
|
||||
@@ -287,8 +287,8 @@
|
||||
icon_state = "pede"
|
||||
|
||||
/datum/sprite_accessory/mam_ears/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
|
||||
/datum/sprite_accessory/mam_ears/sergal
|
||||
name = "Sergal"
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
|
||||
|
||||
/mob/living/carbon/fall(forced)
|
||||
loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing
|
||||
loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing
|
||||
|
||||
/mob/living/carbon/is_muzzled()
|
||||
return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
if (!user.get_bodypart(BODY_ZONE_L_ARM) || !user.get_bodypart(BODY_ZONE_R_ARM))
|
||||
return
|
||||
var/clap = pick('sound/misc/clap1.ogg',
|
||||
'sound/misc/clap2.ogg',
|
||||
'sound/misc/clap3.ogg',
|
||||
'sound/misc/clap4.ogg')
|
||||
'sound/misc/clap2.ogg',
|
||||
'sound/misc/clap3.ogg',
|
||||
'sound/misc/clap4.ogg')
|
||||
playsound(user, clap, 50, 1, -1)
|
||||
|
||||
/datum/emote/living/carbon/gnarl
|
||||
|
||||
@@ -159,16 +159,16 @@ Auto Patrol: []"},
|
||||
mode = BOT_HUNT
|
||||
|
||||
/mob/living/simple_animal/bot/secbot/proc/judgement_criteria()
|
||||
var/final = FALSE
|
||||
if(idcheck)
|
||||
final = final|JUDGE_IDCHECK
|
||||
if(check_records)
|
||||
final = final|JUDGE_RECORDCHECK
|
||||
if(weaponscheck)
|
||||
final = final|JUDGE_WEAPONCHECK
|
||||
if(emagged == 2)
|
||||
final = final|JUDGE_EMAGGED
|
||||
return final
|
||||
var/final = FALSE
|
||||
if(idcheck)
|
||||
final = final|JUDGE_IDCHECK
|
||||
if(check_records)
|
||||
final = final|JUDGE_RECORDCHECK
|
||||
if(weaponscheck)
|
||||
final = final|JUDGE_WEAPONCHECK
|
||||
if(emagged == 2)
|
||||
final = final|JUDGE_EMAGGED
|
||||
return final
|
||||
|
||||
/mob/living/simple_animal/bot/secbot/proc/special_retaliate_after_attack(mob/user) //allows special actions to take place after being attacked.
|
||||
return
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/poison
|
||||
var/poison_per_bite = 0
|
||||
var/poison_type = "toxin"
|
||||
var/poison_per_bite = 0
|
||||
var/poison_type = "toxin"
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget()
|
||||
. = ..()
|
||||
if(. && isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.reagents && !poison_per_bite == 0)
|
||||
L.reagents.add_reagent(poison_type, poison_per_bite)
|
||||
return .
|
||||
. = ..()
|
||||
if(. && isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.reagents && !poison_per_bite == 0)
|
||||
L.reagents.add_reagent(poison_type, poison_per_bite)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake
|
||||
name = "snake"
|
||||
desc = "A slithery snake. These legless reptiles are the bane of mice and adventurers alike."
|
||||
icon_state = "snake"
|
||||
icon_living = "snake"
|
||||
icon_dead = "snake_dead"
|
||||
speak_emote = list("hisses")
|
||||
health = 20
|
||||
maxHealth = 20
|
||||
attacktext = "bites"
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 6
|
||||
response_help = "pets"
|
||||
response_disarm = "shoos"
|
||||
response_harm = "steps on"
|
||||
faction = list("hostile")
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST, MOB_REPTILE)
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
name = "snake"
|
||||
desc = "A slithery snake. These legless reptiles are the bane of mice and adventurers alike."
|
||||
icon_state = "snake"
|
||||
icon_living = "snake"
|
||||
icon_dead = "snake_dead"
|
||||
speak_emote = list("hisses")
|
||||
health = 20
|
||||
maxHealth = 20
|
||||
attacktext = "bites"
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 6
|
||||
response_help = "pets"
|
||||
response_disarm = "shoos"
|
||||
response_harm = "steps on"
|
||||
faction = list("hostile")
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_BEAST, MOB_REPTILE)
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake/ListTargets(atom/the_target)
|
||||
@@ -54,9 +54,9 @@
|
||||
return mice
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake/AttackingTarget()
|
||||
if(istype(target, /mob/living/simple_animal/mouse))
|
||||
visible_message("<span class='notice'>[name] consumes [target] in a single gulp!</span>", "<span class='notice'>You consume [target] in a single gulp!</span>")
|
||||
QDEL_NULL(target)
|
||||
adjustBruteLoss(-2)
|
||||
else
|
||||
return ..()
|
||||
if(istype(target, /mob/living/simple_animal/mouse))
|
||||
visible_message("<span class='notice'>[name] consumes [target] in a single gulp!</span>", "<span class='notice'>You consume [target] in a single gulp!</span>")
|
||||
QDEL_NULL(target)
|
||||
adjustBruteLoss(-2)
|
||||
else
|
||||
return ..()
|
||||
@@ -608,12 +608,12 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/honey/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(iscarbon(M) && (method in list(TOUCH, VAPOR, PATCH)))
|
||||
var/mob/living/carbon/C = M
|
||||
for(var/s in C.surgeries)
|
||||
var/datum/surgery/S = s
|
||||
S.success_multiplier = max(0.6, S.success_multiplier) // +60% success probability on each step, compared to bacchus' blessing's ~46%
|
||||
..()
|
||||
if(iscarbon(M) && (method in list(TOUCH, VAPOR, PATCH)))
|
||||
var/mob/living/carbon/C = M
|
||||
for(var/s in C.surgeries)
|
||||
var/datum/surgery/S = s
|
||||
S.success_multiplier = max(0.6, S.success_multiplier) // +60% success probability on each step, compared to bacchus' blessing's ~46%
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/mayonnaise
|
||||
name = "Mayonnaise"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//Invert = Whole conversion
|
||||
|
||||
/datum/reagent/impure
|
||||
chemical_flags = REAGENT_INVISIBLE | REAGENT_SNEAKYNAME //by default, it will stay hidden on splitting, but take the name of the source on inverting
|
||||
chemical_flags = REAGENT_INVISIBLE | REAGENT_SNEAKYNAME //by default, it will stay hidden on splitting, but take the name of the source on inverting
|
||||
|
||||
|
||||
/datum/reagent/impure/fermiTox
|
||||
|
||||
@@ -1192,19 +1192,19 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
pH = 11.8
|
||||
|
||||
/datum/reagent/medicine/neo_jelly/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustBruteLoss(-1.5*REM, 0)
|
||||
M.adjustFireLoss(-1.5*REM, 0)
|
||||
M.adjustOxyLoss(-1.5*REM, 0)
|
||||
M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs
|
||||
. = 1
|
||||
..()
|
||||
M.adjustBruteLoss(-1.5*REM, 0)
|
||||
M.adjustFireLoss(-1.5*REM, 0)
|
||||
M.adjustOxyLoss(-1.5*REM, 0)
|
||||
M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs
|
||||
. = 1
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/neo_jelly/overdose_process(mob/living/M)
|
||||
M.adjustOxyLoss(2.6*REM, 0)
|
||||
M.adjustBruteLoss(3.5*REM, 0)
|
||||
M.adjustFireLoss(3.5*REM, 0)
|
||||
..()
|
||||
. = 1
|
||||
M.adjustOxyLoss(2.6*REM, 0)
|
||||
M.adjustBruteLoss(3.5*REM, 0)
|
||||
M.adjustFireLoss(3.5*REM, 0)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants
|
||||
name = "Earthsblood"
|
||||
|
||||
@@ -2,194 +2,194 @@ GLOBAL_VAR_INIT(hhStorageTurf, null)
|
||||
GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337)
|
||||
|
||||
/obj/item/hilbertshotel
|
||||
name = "Hilbert's Hotel"
|
||||
desc = "A sphere of what appears to be an intricate network of bluespace. Observing it in detail seems to give you a headache as you try to comprehend the infinite amount of infinitesimally distinct points on its surface."
|
||||
icon_state = "hilbertshotel"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/datum/map_template/hilbertshotel/hotelRoomTemp
|
||||
var/datum/map_template/hilbertshotel/empty/hotelRoomTempEmpty
|
||||
var/datum/map_template/hilbertshotel/lore/hotelRoomTempLore
|
||||
var/list/activeRooms = list()
|
||||
var/list/storedRooms = list()
|
||||
var/storageTurf
|
||||
//Lore Stuff
|
||||
var/ruinSpawned = FALSE
|
||||
var/mysteryRoom
|
||||
name = "Hilbert's Hotel"
|
||||
desc = "A sphere of what appears to be an intricate network of bluespace. Observing it in detail seems to give you a headache as you try to comprehend the infinite amount of infinitesimally distinct points on its surface."
|
||||
icon_state = "hilbertshotel"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/datum/map_template/hilbertshotel/hotelRoomTemp
|
||||
var/datum/map_template/hilbertshotel/empty/hotelRoomTempEmpty
|
||||
var/datum/map_template/hilbertshotel/lore/hotelRoomTempLore
|
||||
var/list/activeRooms = list()
|
||||
var/list/storedRooms = list()
|
||||
var/storageTurf
|
||||
//Lore Stuff
|
||||
var/ruinSpawned = FALSE
|
||||
var/mysteryRoom
|
||||
|
||||
/obj/item/hilbertshotel/Initialize()
|
||||
. = ..()
|
||||
//Load templates
|
||||
hotelRoomTemp = new()
|
||||
hotelRoomTempEmpty = new()
|
||||
hotelRoomTempLore = new()
|
||||
var/area/currentArea = get_area(src)
|
||||
if(currentArea.type == /area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
ruinSpawned = TRUE
|
||||
. = ..()
|
||||
//Load templates
|
||||
hotelRoomTemp = new()
|
||||
hotelRoomTempEmpty = new()
|
||||
hotelRoomTempLore = new()
|
||||
var/area/currentArea = get_area(src)
|
||||
if(currentArea.type == /area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
ruinSpawned = TRUE
|
||||
|
||||
/obj/item/hilbertshotel/Destroy()
|
||||
ejectRooms()
|
||||
return ..()
|
||||
ejectRooms()
|
||||
return ..()
|
||||
|
||||
/obj/item/hilbertshotel/attack(mob/living/M, mob/living/user)
|
||||
if(M.mind)
|
||||
to_chat(user, "<span class='notice'>You invite [M] to the hotel.</span>")
|
||||
promptAndCheckIn(M)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[M] is not intelligent enough to understand how to use this device!</span>")
|
||||
if(M.mind)
|
||||
to_chat(user, "<span class='notice'>You invite [M] to the hotel.</span>")
|
||||
promptAndCheckIn(M)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[M] is not intelligent enough to understand how to use this device!</span>")
|
||||
|
||||
/obj/item/hilbertshotel/attack_self(mob/user)
|
||||
. = ..()
|
||||
promptAndCheckIn(user)
|
||||
. = ..()
|
||||
promptAndCheckIn(user)
|
||||
|
||||
/obj/item/hilbertshotel/proc/promptAndCheckIn(mob/user)
|
||||
var/chosenRoomNumber = input(user, "What number room will you be checking into?", "Room Number") as null|num
|
||||
if(!chosenRoomNumber)
|
||||
return
|
||||
if(chosenRoomNumber > SHORT_REAL_LIMIT)
|
||||
to_chat(user, "<span class='warning'>You have to check out the first [SHORT_REAL_LIMIT] rooms before you can go to a higher numbered one!</span>")
|
||||
return
|
||||
if((chosenRoomNumber < 1) || (chosenRoomNumber != round(chosenRoomNumber)))
|
||||
to_chat(user, "<span class='warning'>That is not a valid room number!</span>")
|
||||
return
|
||||
if(ismob(loc))
|
||||
if(user == loc) //Not always the same as user
|
||||
forceMove(get_turf(user))
|
||||
if(!storageTurf) //Blame subsystems for not allowing this to be in Initialize
|
||||
if(!GLOB.hhStorageTurf)
|
||||
var/datum/map_template/hilbertshotelstorage/storageTemp = new()
|
||||
var/datum/turf_reservation/storageReservation = SSmapping.RequestBlockReservation(3, 3)
|
||||
storageTemp.load(locate(storageReservation.bottom_left_coords[1], storageReservation.bottom_left_coords[2], storageReservation.bottom_left_coords[3]))
|
||||
GLOB.hhStorageTurf = locate(storageReservation.bottom_left_coords[1]+1, storageReservation.bottom_left_coords[2]+1, storageReservation.bottom_left_coords[3])
|
||||
else
|
||||
storageTurf = GLOB.hhStorageTurf
|
||||
if(tryActiveRoom(chosenRoomNumber, user))
|
||||
return
|
||||
if(tryStoredRoom(chosenRoomNumber, user))
|
||||
return
|
||||
sendToNewRoom(chosenRoomNumber, user)
|
||||
var/chosenRoomNumber = input(user, "What number room will you be checking into?", "Room Number") as null|num
|
||||
if(!chosenRoomNumber)
|
||||
return
|
||||
if(chosenRoomNumber > SHORT_REAL_LIMIT)
|
||||
to_chat(user, "<span class='warning'>You have to check out the first [SHORT_REAL_LIMIT] rooms before you can go to a higher numbered one!</span>")
|
||||
return
|
||||
if((chosenRoomNumber < 1) || (chosenRoomNumber != round(chosenRoomNumber)))
|
||||
to_chat(user, "<span class='warning'>That is not a valid room number!</span>")
|
||||
return
|
||||
if(ismob(loc))
|
||||
if(user == loc) //Not always the same as user
|
||||
forceMove(get_turf(user))
|
||||
if(!storageTurf) //Blame subsystems for not allowing this to be in Initialize
|
||||
if(!GLOB.hhStorageTurf)
|
||||
var/datum/map_template/hilbertshotelstorage/storageTemp = new()
|
||||
var/datum/turf_reservation/storageReservation = SSmapping.RequestBlockReservation(3, 3)
|
||||
storageTemp.load(locate(storageReservation.bottom_left_coords[1], storageReservation.bottom_left_coords[2], storageReservation.bottom_left_coords[3]))
|
||||
GLOB.hhStorageTurf = locate(storageReservation.bottom_left_coords[1]+1, storageReservation.bottom_left_coords[2]+1, storageReservation.bottom_left_coords[3])
|
||||
else
|
||||
storageTurf = GLOB.hhStorageTurf
|
||||
if(tryActiveRoom(chosenRoomNumber, user))
|
||||
return
|
||||
if(tryStoredRoom(chosenRoomNumber, user))
|
||||
return
|
||||
sendToNewRoom(chosenRoomNumber, user)
|
||||
|
||||
|
||||
/obj/item/hilbertshotel/proc/tryActiveRoom(var/roomNumber, var/mob/user)
|
||||
if(activeRooms["[roomNumber]"])
|
||||
var/datum/turf_reservation/roomReservation = activeRooms["[roomNumber]"]
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3]))
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
if(activeRooms["[roomNumber]"])
|
||||
var/datum/turf_reservation/roomReservation = activeRooms["[roomNumber]"]
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3]))
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/obj/item/hilbertshotel/proc/tryStoredRoom(var/roomNumber, var/mob/user)
|
||||
if(storedRooms["[roomNumber]"])
|
||||
var/datum/turf_reservation/roomReservation = SSmapping.RequestBlockReservation(hotelRoomTemp.width, hotelRoomTemp.height)
|
||||
hotelRoomTempEmpty.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
var/turfNumber = 1
|
||||
for(var/i=0, i<hotelRoomTemp.width, i++)
|
||||
for(var/j=0, j<hotelRoomTemp.height, j++)
|
||||
for(var/atom/movable/A in storedRooms["[roomNumber]"][turfNumber])
|
||||
if(istype(A.loc, /obj/item/abstracthotelstorage))//Don't want to recall something thats been moved
|
||||
A.forceMove(locate(roomReservation.bottom_left_coords[1] + i, roomReservation.bottom_left_coords[2] + j, roomReservation.bottom_left_coords[3]))
|
||||
turfNumber++
|
||||
for(var/obj/item/abstracthotelstorage/S in storageTurf)
|
||||
if((S.roomNumber == roomNumber) && (S.parentSphere == src))
|
||||
qdel(S)
|
||||
storedRooms -= "[roomNumber]"
|
||||
activeRooms["[roomNumber]"] = roomReservation
|
||||
linkTurfs(roomReservation, roomNumber)
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3]))
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
if(storedRooms["[roomNumber]"])
|
||||
var/datum/turf_reservation/roomReservation = SSmapping.RequestBlockReservation(hotelRoomTemp.width, hotelRoomTemp.height)
|
||||
hotelRoomTempEmpty.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
var/turfNumber = 1
|
||||
for(var/i=0, i<hotelRoomTemp.width, i++)
|
||||
for(var/j=0, j<hotelRoomTemp.height, j++)
|
||||
for(var/atom/movable/A in storedRooms["[roomNumber]"][turfNumber])
|
||||
if(istype(A.loc, /obj/item/abstracthotelstorage))//Don't want to recall something thats been moved
|
||||
A.forceMove(locate(roomReservation.bottom_left_coords[1] + i, roomReservation.bottom_left_coords[2] + j, roomReservation.bottom_left_coords[3]))
|
||||
turfNumber++
|
||||
for(var/obj/item/abstracthotelstorage/S in storageTurf)
|
||||
if((S.roomNumber == roomNumber) && (S.parentSphere == src))
|
||||
qdel(S)
|
||||
storedRooms -= "[roomNumber]"
|
||||
activeRooms["[roomNumber]"] = roomReservation
|
||||
linkTurfs(roomReservation, roomNumber)
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3]))
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/obj/item/hilbertshotel/proc/sendToNewRoom(var/roomNumber, var/mob/user)
|
||||
var/datum/turf_reservation/roomReservation = SSmapping.RequestBlockReservation(hotelRoomTemp.width, hotelRoomTemp.height)
|
||||
if(ruinSpawned)
|
||||
mysteryRoom = GLOB.hhmysteryRoomNumber
|
||||
if(roomNumber == mysteryRoom)
|
||||
hotelRoomTempLore.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
else
|
||||
hotelRoomTemp.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
else
|
||||
hotelRoomTemp.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
activeRooms["[roomNumber]"] = roomReservation
|
||||
linkTurfs(roomReservation, roomNumber)
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3]))
|
||||
var/datum/turf_reservation/roomReservation = SSmapping.RequestBlockReservation(hotelRoomTemp.width, hotelRoomTemp.height)
|
||||
if(ruinSpawned)
|
||||
mysteryRoom = GLOB.hhmysteryRoomNumber
|
||||
if(roomNumber == mysteryRoom)
|
||||
hotelRoomTempLore.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
else
|
||||
hotelRoomTemp.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
else
|
||||
hotelRoomTemp.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
|
||||
activeRooms["[roomNumber]"] = roomReservation
|
||||
linkTurfs(roomReservation, roomNumber)
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3]))
|
||||
|
||||
/obj/item/hilbertshotel/proc/linkTurfs(var/datum/turf_reservation/currentReservation, var/currentRoomnumber)
|
||||
var/area/hilbertshotel/currentArea = get_area(locate(currentReservation.bottom_left_coords[1], currentReservation.bottom_left_coords[2], currentReservation.bottom_left_coords[3]))
|
||||
currentArea.name = "Hilbert's Hotel Room [currentRoomnumber]"
|
||||
currentArea.parentSphere = src
|
||||
currentArea.storageTurf = storageTurf
|
||||
currentArea.roomnumber = currentRoomnumber
|
||||
currentArea.reservation = currentReservation
|
||||
for(var/turf/closed/indestructible/hoteldoor/door in currentArea)
|
||||
door.parentSphere = src
|
||||
door.desc = "The door to this hotel room. The placard reads 'Room [currentRoomnumber]'. Strange, this door doesnt even seem openable. The doorknob, however, seems to buzz with unusual energy...<br /><span class='info'>Alt-Click to look through the peephole.</span>"
|
||||
for(var/turf/open/space/bluespace/BSturf in currentArea)
|
||||
BSturf.parentSphere = src
|
||||
var/area/hilbertshotel/currentArea = get_area(locate(currentReservation.bottom_left_coords[1], currentReservation.bottom_left_coords[2], currentReservation.bottom_left_coords[3]))
|
||||
currentArea.name = "Hilbert's Hotel Room [currentRoomnumber]"
|
||||
currentArea.parentSphere = src
|
||||
currentArea.storageTurf = storageTurf
|
||||
currentArea.roomnumber = currentRoomnumber
|
||||
currentArea.reservation = currentReservation
|
||||
for(var/turf/closed/indestructible/hoteldoor/door in currentArea)
|
||||
door.parentSphere = src
|
||||
door.desc = "The door to this hotel room. The placard reads 'Room [currentRoomnumber]'. Strange, this door doesnt even seem openable. The doorknob, however, seems to buzz with unusual energy...<br /><span class='info'>Alt-Click to look through the peephole.</span>"
|
||||
for(var/turf/open/space/bluespace/BSturf in currentArea)
|
||||
BSturf.parentSphere = src
|
||||
|
||||
/obj/item/hilbertshotel/proc/ejectRooms()
|
||||
if(activeRooms.len)
|
||||
for(var/x in activeRooms)
|
||||
var/datum/turf_reservation/room = activeRooms[x]
|
||||
for(var/i=0, i<hotelRoomTemp.width, i++)
|
||||
for(var/j=0, j<hotelRoomTemp.height, j++)
|
||||
for(var/atom/movable/A in locate(room.bottom_left_coords[1] + i, room.bottom_left_coords[2] + j, room.bottom_left_coords[3]))
|
||||
if(ismob(A))
|
||||
var/mob/M = A
|
||||
if(M.mind)
|
||||
to_chat(M, "<span class='warning'>As the sphere breaks apart, you're suddenly ejected into the depths of space!</span>")
|
||||
var/max = world.maxx-TRANSITIONEDGE
|
||||
var/min = 1+TRANSITIONEDGE
|
||||
var/list/possible_transtitons = list()
|
||||
for(var/AZ in SSmapping.z_list)
|
||||
var/datum/space_level/D = AZ
|
||||
if (D.linkage == CROSSLINKED)
|
||||
possible_transtitons += D.z_value
|
||||
var/_z = pick(possible_transtitons)
|
||||
var/_x = rand(min,max)
|
||||
var/_y = rand(min,max)
|
||||
var/turf/T = locate(_x, _y, _z)
|
||||
A.forceMove(T)
|
||||
qdel(room)
|
||||
if(activeRooms.len)
|
||||
for(var/x in activeRooms)
|
||||
var/datum/turf_reservation/room = activeRooms[x]
|
||||
for(var/i=0, i<hotelRoomTemp.width, i++)
|
||||
for(var/j=0, j<hotelRoomTemp.height, j++)
|
||||
for(var/atom/movable/A in locate(room.bottom_left_coords[1] + i, room.bottom_left_coords[2] + j, room.bottom_left_coords[3]))
|
||||
if(ismob(A))
|
||||
var/mob/M = A
|
||||
if(M.mind)
|
||||
to_chat(M, "<span class='warning'>As the sphere breaks apart, you're suddenly ejected into the depths of space!</span>")
|
||||
var/max = world.maxx-TRANSITIONEDGE
|
||||
var/min = 1+TRANSITIONEDGE
|
||||
var/list/possible_transtitons = list()
|
||||
for(var/AZ in SSmapping.z_list)
|
||||
var/datum/space_level/D = AZ
|
||||
if (D.linkage == CROSSLINKED)
|
||||
possible_transtitons += D.z_value
|
||||
var/_z = pick(possible_transtitons)
|
||||
var/_x = rand(min,max)
|
||||
var/_y = rand(min,max)
|
||||
var/turf/T = locate(_x, _y, _z)
|
||||
A.forceMove(T)
|
||||
qdel(room)
|
||||
|
||||
if(storedRooms.len)
|
||||
for(var/x in storedRooms)
|
||||
var/list/atomList = storedRooms[x]
|
||||
for(var/atom/movable/A in atomList)
|
||||
var/max = world.maxx-TRANSITIONEDGE
|
||||
var/min = 1+TRANSITIONEDGE
|
||||
var/list/possible_transtitons = list()
|
||||
for(var/AZ in SSmapping.z_list)
|
||||
var/datum/space_level/D = AZ
|
||||
if (D.linkage == CROSSLINKED)
|
||||
possible_transtitons += D.z_value
|
||||
var/_z = pick(possible_transtitons)
|
||||
var/_x = rand(min,max)
|
||||
var/_y = rand(min,max)
|
||||
var/turf/T = locate(_x, _y, _z)
|
||||
A.forceMove(T)
|
||||
if(storedRooms.len)
|
||||
for(var/x in storedRooms)
|
||||
var/list/atomList = storedRooms[x]
|
||||
for(var/atom/movable/A in atomList)
|
||||
var/max = world.maxx-TRANSITIONEDGE
|
||||
var/min = 1+TRANSITIONEDGE
|
||||
var/list/possible_transtitons = list()
|
||||
for(var/AZ in SSmapping.z_list)
|
||||
var/datum/space_level/D = AZ
|
||||
if (D.linkage == CROSSLINKED)
|
||||
possible_transtitons += D.z_value
|
||||
var/_z = pick(possible_transtitons)
|
||||
var/_x = rand(min,max)
|
||||
var/_y = rand(min,max)
|
||||
var/turf/T = locate(_x, _y, _z)
|
||||
A.forceMove(T)
|
||||
|
||||
//Template Stuff
|
||||
/datum/map_template/hilbertshotel
|
||||
name = "Hilbert's Hotel Room"
|
||||
mappath = '_maps/templates/hilbertshotel.dmm'
|
||||
var/landingZoneRelativeX = 2
|
||||
var/landingZoneRelativeY = 8
|
||||
name = "Hilbert's Hotel Room"
|
||||
mappath = '_maps/templates/hilbertshotel.dmm'
|
||||
var/landingZoneRelativeX = 2
|
||||
var/landingZoneRelativeY = 8
|
||||
|
||||
/datum/map_template/hilbertshotel/empty
|
||||
name = "Empty Hilbert's Hotel Room"
|
||||
mappath = '_maps/templates/hilbertshotelempty.dmm'
|
||||
name = "Empty Hilbert's Hotel Room"
|
||||
mappath = '_maps/templates/hilbertshotelempty.dmm'
|
||||
|
||||
/datum/map_template/hilbertshotel/lore
|
||||
name = "Doctor Hilbert's Deathbed"
|
||||
mappath = '_maps/templates/hilbertshotellore.dmm'
|
||||
name = "Doctor Hilbert's Deathbed"
|
||||
mappath = '_maps/templates/hilbertshotellore.dmm'
|
||||
|
||||
/datum/map_template/hilbertshotelstorage
|
||||
name = "Hilbert's Hotel Storage"
|
||||
mappath = '_maps/templates/hilbertshotelstorage.dmm'
|
||||
name = "Hilbert's Hotel Storage"
|
||||
mappath = '_maps/templates/hilbertshotelstorage.dmm'
|
||||
|
||||
|
||||
//Turfs and Areas
|
||||
@@ -201,329 +201,329 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337)
|
||||
explosion_block = INFINITY
|
||||
|
||||
/turf/open/indestructible/hotelwood
|
||||
desc = "Stylish dark wood with extra reinforcement. Secured firmly to the floor to prevent tampering."
|
||||
icon_state = "wood"
|
||||
footstep = FOOTSTEP_WOOD
|
||||
tiled_dirt = FALSE
|
||||
desc = "Stylish dark wood with extra reinforcement. Secured firmly to the floor to prevent tampering."
|
||||
icon_state = "wood"
|
||||
footstep = FOOTSTEP_WOOD
|
||||
tiled_dirt = FALSE
|
||||
|
||||
/turf/open/indestructible/hoteltile
|
||||
desc = "Smooth tile with extra reinforcement. Secured firmly to the floor to prevent tampering."
|
||||
icon_state = "showroomfloor"
|
||||
footstep = FOOTSTEP_FLOOR
|
||||
tiled_dirt = FALSE
|
||||
desc = "Smooth tile with extra reinforcement. Secured firmly to the floor to prevent tampering."
|
||||
icon_state = "showroomfloor"
|
||||
footstep = FOOTSTEP_FLOOR
|
||||
tiled_dirt = FALSE
|
||||
|
||||
/turf/open/space/bluespace
|
||||
name = "\proper bluespace hyperzone"
|
||||
icon_state = "bluespace"
|
||||
baseturfs = /turf/open/space/bluespace
|
||||
flags_1 = NOJAUNT_1
|
||||
explosion_block = INFINITY
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
name = "\proper bluespace hyperzone"
|
||||
icon_state = "bluespace"
|
||||
baseturfs = /turf/open/space/bluespace
|
||||
flags_1 = NOJAUNT_1
|
||||
explosion_block = INFINITY
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
|
||||
/turf/open/space/bluespace/Entered(atom/movable/A)
|
||||
. = ..()
|
||||
A.forceMove(get_turf(parentSphere))
|
||||
. = ..()
|
||||
A.forceMove(get_turf(parentSphere))
|
||||
|
||||
/turf/closed/indestructible/hoteldoor
|
||||
name = "Hotel Door"
|
||||
icon_state = "hoteldoor"
|
||||
explosion_block = INFINITY
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
name = "Hotel Door"
|
||||
icon_state = "hoteldoor"
|
||||
explosion_block = INFINITY
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/proc/promptExit(mob/living/user)
|
||||
if(!isliving(user))
|
||||
return
|
||||
if(!user.mind)
|
||||
return
|
||||
if(!parentSphere)
|
||||
to_chat(user, "<span class='warning'>The door seems to be malfunctioning and refuses to operate!</span>")
|
||||
return
|
||||
if(alert(user, "Hilbert's Hotel would like to remind you that while we will do everything we can to protect the belongings you leave behind, we make no guarantees of their safety while you're gone, especially that of the health of any living creatures. With that in mind, are you ready to leave?", "Exit", "Leave", "Stay") == "Leave")
|
||||
if(!user.canmove || (get_dist(get_turf(src), get_turf(user)) > 1)) //no teleporting around if they're dead or moved away during the prompt.
|
||||
return
|
||||
user.forceMove(get_turf(parentSphere))
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
if(!isliving(user))
|
||||
return
|
||||
if(!user.mind)
|
||||
return
|
||||
if(!parentSphere)
|
||||
to_chat(user, "<span class='warning'>The door seems to be malfunctioning and refuses to operate!</span>")
|
||||
return
|
||||
if(alert(user, "Hilbert's Hotel would like to remind you that while we will do everything we can to protect the belongings you leave behind, we make no guarantees of their safety while you're gone, especially that of the health of any living creatures. With that in mind, are you ready to leave?", "Exit", "Leave", "Stay") == "Leave")
|
||||
if(!user.canmove || (get_dist(get_turf(src), get_turf(user)) > 1)) //no teleporting around if they're dead or moved away during the prompt.
|
||||
return
|
||||
user.forceMove(get_turf(parentSphere))
|
||||
do_sparks(3, FALSE, get_turf(user))
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_ghost(mob/dead/observer/user)
|
||||
if(!isobserver(user) || !parentSphere)
|
||||
return ..()
|
||||
user.forceMove(get_turf(parentSphere))
|
||||
if(!isobserver(user) || !parentSphere)
|
||||
return ..()
|
||||
user.forceMove(get_turf(parentSphere))
|
||||
|
||||
//If only this could be simplified...
|
||||
/turf/closed/indestructible/hoteldoor/attack_tk(mob/user)
|
||||
return //need to be close.
|
||||
return //need to be close.
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_hand(mob/user)
|
||||
promptExit(user)
|
||||
promptExit(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_animal(mob/user)
|
||||
promptExit(user)
|
||||
promptExit(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_paw(mob/user)
|
||||
promptExit(user)
|
||||
promptExit(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_hulk(mob/living/carbon/human/user, does_attack_animation)
|
||||
promptExit(user)
|
||||
promptExit(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_larva(mob/user)
|
||||
promptExit(user)
|
||||
promptExit(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_slime(mob/user)
|
||||
promptExit(user)
|
||||
promptExit(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/attack_robot(mob/user)
|
||||
if(get_dist(get_turf(src), get_turf(user)) <= 1)
|
||||
promptExit(user)
|
||||
if(get_dist(get_turf(src), get_turf(user)) <= 1)
|
||||
promptExit(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(get_dist(get_turf(src), get_turf(user)) <= 1)
|
||||
to_chat(user, "<span class='notice'>You peak through the door's bluespace peephole...</span>")
|
||||
user.reset_perspective(parentSphere)
|
||||
user.set_machine(src)
|
||||
var/datum/action/peepholeCancel/PHC = new
|
||||
user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
|
||||
PHC.Grant(user)
|
||||
. = ..()
|
||||
if(get_dist(get_turf(src), get_turf(user)) <= 1)
|
||||
to_chat(user, "<span class='notice'>You peak through the door's bluespace peephole...</span>")
|
||||
user.reset_perspective(parentSphere)
|
||||
user.set_machine(src)
|
||||
var/datum/action/peepholeCancel/PHC = new
|
||||
user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
|
||||
PHC.Grant(user)
|
||||
|
||||
/turf/closed/indestructible/hoteldoor/check_eye(mob/user)
|
||||
if(get_dist(get_turf(src), get_turf(user)) >= 2)
|
||||
user.unset_machine()
|
||||
for(var/datum/action/peepholeCancel/PHC in user.actions)
|
||||
PHC.Trigger()
|
||||
if(get_dist(get_turf(src), get_turf(user)) >= 2)
|
||||
user.unset_machine()
|
||||
for(var/datum/action/peepholeCancel/PHC in user.actions)
|
||||
PHC.Trigger()
|
||||
|
||||
/datum/action/peepholeCancel
|
||||
name = "Cancel View"
|
||||
desc = "Stop looking through the bluespace peephole."
|
||||
button_icon_state = "cancel_peephole"
|
||||
name = "Cancel View"
|
||||
desc = "Stop looking through the bluespace peephole."
|
||||
button_icon_state = "cancel_peephole"
|
||||
|
||||
/datum/action/peepholeCancel/Trigger()
|
||||
. = ..()
|
||||
to_chat(owner, "<span class='warning'>You move away from the peephole.</span>")
|
||||
owner.reset_perspective()
|
||||
owner.clear_fullscreen("remote_view", 0)
|
||||
qdel(src)
|
||||
. = ..()
|
||||
to_chat(owner, "<span class='warning'>You move away from the peephole.</span>")
|
||||
owner.reset_perspective()
|
||||
owner.clear_fullscreen("remote_view", 0)
|
||||
qdel(src)
|
||||
|
||||
/area/hilbertshotel
|
||||
name = "Hilbert's Hotel Room"
|
||||
icon_state = "hilbertshotel"
|
||||
requires_power = FALSE
|
||||
has_gravity = TRUE
|
||||
noteleport = TRUE
|
||||
hidden = TRUE
|
||||
unique = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
ambientsounds = list('sound/ambience/servicebell.ogg')
|
||||
var/roomnumber = 0
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
var/datum/turf_reservation/reservation
|
||||
var/turf/storageTurf
|
||||
name = "Hilbert's Hotel Room"
|
||||
icon_state = "hilbertshotel"
|
||||
requires_power = FALSE
|
||||
has_gravity = TRUE
|
||||
noteleport = TRUE
|
||||
hidden = TRUE
|
||||
unique = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
ambientsounds = list('sound/ambience/servicebell.ogg')
|
||||
var/roomnumber = 0
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
var/datum/turf_reservation/reservation
|
||||
var/turf/storageTurf
|
||||
|
||||
/area/hilbertshotel/Entered(atom/movable/AM)
|
||||
. = ..()
|
||||
if(istype(AM, /obj/item/hilbertshotel))
|
||||
relocate(AM)
|
||||
var/list/obj/item/hilbertshotel/hotels = AM.GetAllContents(/obj/item/hilbertshotel)
|
||||
for(var/obj/item/hilbertshotel/H in hotels)
|
||||
if(parentSphere == H)
|
||||
relocate(H)
|
||||
. = ..()
|
||||
if(istype(AM, /obj/item/hilbertshotel))
|
||||
relocate(AM)
|
||||
var/list/obj/item/hilbertshotel/hotels = AM.GetAllContents(/obj/item/hilbertshotel)
|
||||
for(var/obj/item/hilbertshotel/H in hotels)
|
||||
if(parentSphere == H)
|
||||
relocate(H)
|
||||
|
||||
/area/hilbertshotel/proc/relocate(obj/item/hilbertshotel/H)
|
||||
if(prob(0.135685)) //Because screw you
|
||||
qdel(H)
|
||||
return
|
||||
var/turf/targetturf = find_safe_turf()
|
||||
if(!targetturf)
|
||||
if(GLOB.blobstart.len > 0)
|
||||
targetturf = get_turf(pick(GLOB.blobstart))
|
||||
else
|
||||
CRASH("Unable to find a blobstart landmark")
|
||||
var/turf/T = get_turf(H)
|
||||
var/area/A = T.loc
|
||||
log_game("[H] entered itself. Moving it to [loc_name(targetturf)].")
|
||||
message_admins("[H] entered itself. Moving it to [ADMIN_VERBOSEJMP(targetturf)].")
|
||||
for(var/mob/M in A)
|
||||
to_chat(M, "<span class='danger'>[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!</span>")
|
||||
H.forceMove(targetturf)
|
||||
if(prob(0.135685)) //Because screw you
|
||||
qdel(H)
|
||||
return
|
||||
var/turf/targetturf = find_safe_turf()
|
||||
if(!targetturf)
|
||||
if(GLOB.blobstart.len > 0)
|
||||
targetturf = get_turf(pick(GLOB.blobstart))
|
||||
else
|
||||
CRASH("Unable to find a blobstart landmark")
|
||||
var/turf/T = get_turf(H)
|
||||
var/area/A = T.loc
|
||||
log_game("[H] entered itself. Moving it to [loc_name(targetturf)].")
|
||||
message_admins("[H] entered itself. Moving it to [ADMIN_VERBOSEJMP(targetturf)].")
|
||||
for(var/mob/M in A)
|
||||
to_chat(M, "<span class='danger'>[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!</span>")
|
||||
H.forceMove(targetturf)
|
||||
|
||||
/area/hilbertshotel/Exited(atom/movable/AM)
|
||||
. = ..()
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
if(M.mind)
|
||||
var/stillPopulated = FALSE
|
||||
var/list/currentLivingMobs = GetAllContents(/mob/living) //Got to catch anyone hiding in anything
|
||||
for(var/mob/living/L in currentLivingMobs) //Check to see if theres any sentient mobs left.
|
||||
if(L.mind)
|
||||
stillPopulated = TRUE
|
||||
break
|
||||
if(!stillPopulated)
|
||||
storeRoom()
|
||||
. = ..()
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
if(M.mind)
|
||||
var/stillPopulated = FALSE
|
||||
var/list/currentLivingMobs = GetAllContents(/mob/living) //Got to catch anyone hiding in anything
|
||||
for(var/mob/living/L in currentLivingMobs) //Check to see if theres any sentient mobs left.
|
||||
if(L.mind)
|
||||
stillPopulated = TRUE
|
||||
break
|
||||
if(!stillPopulated)
|
||||
storeRoom()
|
||||
|
||||
/area/hilbertshotel/proc/storeRoom()
|
||||
var/roomSize = (reservation.top_right_coords[1]-reservation.bottom_left_coords[1]+1)*(reservation.top_right_coords[2]-reservation.bottom_left_coords[2]+1)
|
||||
var/storage[roomSize]
|
||||
var/turfNumber = 1
|
||||
var/obj/item/abstracthotelstorage/storageObj = new(storageTurf)
|
||||
storageObj.roomNumber = roomnumber
|
||||
storageObj.parentSphere = parentSphere
|
||||
storageObj.name = "Room [roomnumber] Storage"
|
||||
for(var/i=0, i<parentSphere.hotelRoomTemp.width, i++)
|
||||
for(var/j=0, j<parentSphere.hotelRoomTemp.height, j++)
|
||||
var/list/turfContents = list()
|
||||
for(var/atom/movable/A in locate(reservation.bottom_left_coords[1] + i, reservation.bottom_left_coords[2] + j, reservation.bottom_left_coords[3]))
|
||||
if(ismob(A) && !isliving(A))
|
||||
continue //Don't want to store ghosts
|
||||
turfContents += A
|
||||
A.forceMove(storageObj)
|
||||
storage[turfNumber] = turfContents
|
||||
turfNumber++
|
||||
parentSphere.storedRooms["[roomnumber]"] = storage
|
||||
parentSphere.activeRooms -= "[roomnumber]"
|
||||
qdel(reservation)
|
||||
var/roomSize = (reservation.top_right_coords[1]-reservation.bottom_left_coords[1]+1)*(reservation.top_right_coords[2]-reservation.bottom_left_coords[2]+1)
|
||||
var/storage[roomSize]
|
||||
var/turfNumber = 1
|
||||
var/obj/item/abstracthotelstorage/storageObj = new(storageTurf)
|
||||
storageObj.roomNumber = roomnumber
|
||||
storageObj.parentSphere = parentSphere
|
||||
storageObj.name = "Room [roomnumber] Storage"
|
||||
for(var/i=0, i<parentSphere.hotelRoomTemp.width, i++)
|
||||
for(var/j=0, j<parentSphere.hotelRoomTemp.height, j++)
|
||||
var/list/turfContents = list()
|
||||
for(var/atom/movable/A in locate(reservation.bottom_left_coords[1] + i, reservation.bottom_left_coords[2] + j, reservation.bottom_left_coords[3]))
|
||||
if(ismob(A) && !isliving(A))
|
||||
continue //Don't want to store ghosts
|
||||
turfContents += A
|
||||
A.forceMove(storageObj)
|
||||
storage[turfNumber] = turfContents
|
||||
turfNumber++
|
||||
parentSphere.storedRooms["[roomnumber]"] = storage
|
||||
parentSphere.activeRooms -= "[roomnumber]"
|
||||
qdel(reservation)
|
||||
|
||||
/area/hilbertshotelstorage
|
||||
name = "Hilbert's Hotel Storage Room"
|
||||
icon_state = "hilbertshotel"
|
||||
requires_power = FALSE
|
||||
has_gravity = TRUE
|
||||
noteleport = TRUE
|
||||
hidden = TRUE
|
||||
name = "Hilbert's Hotel Storage Room"
|
||||
icon_state = "hilbertshotel"
|
||||
requires_power = FALSE
|
||||
has_gravity = TRUE
|
||||
noteleport = TRUE
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/abstracthotelstorage
|
||||
anchored = TRUE
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
item_flags = ABSTRACT
|
||||
var/roomNumber
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
anchored = TRUE
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
item_flags = ABSTRACT
|
||||
var/roomNumber
|
||||
var/obj/item/hilbertshotel/parentSphere
|
||||
|
||||
/obj/item/abstracthotelstorage/Entered(atom/movable/AM, atom/oldLoc)
|
||||
. = ..()
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
M.notransform = TRUE
|
||||
. = ..()
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
M.notransform = TRUE
|
||||
|
||||
/obj/item/abstracthotelstorage/Exited(atom/movable/AM, atom/newLoc)
|
||||
. = ..()
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
M.notransform = FALSE
|
||||
. = ..()
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
M.notransform = FALSE
|
||||
|
||||
//Space Ruin stuff
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility
|
||||
name = "Hilbert Research Facility"
|
||||
name = "Hilbert Research Facility"
|
||||
|
||||
/obj/item/analyzer/hilbertsanalyzer
|
||||
name = "custom rigged analyzer"
|
||||
desc = "A hand-held environmental scanner which reports current gas levels. This one seems custom rigged to additionally be able to analyze some sort of bluespace device."
|
||||
icon_state = "hilbertsanalyzer"
|
||||
name = "custom rigged analyzer"
|
||||
desc = "A hand-held environmental scanner which reports current gas levels. This one seems custom rigged to additionally be able to analyze some sort of bluespace device."
|
||||
icon_state = "hilbertsanalyzer"
|
||||
|
||||
/obj/item/analyzer/hilbertsanalyzer/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(istype(target, /obj/item/hilbertshotel))
|
||||
if(!proximity)
|
||||
to_chat(user, "<span class='warning'>It's to far away to scan!</span>")
|
||||
return
|
||||
var/obj/item/hilbertshotel/sphere = target
|
||||
if(sphere.activeRooms.len)
|
||||
to_chat(user, "Currently Occupied Rooms:")
|
||||
for(var/roomnumber in sphere.activeRooms)
|
||||
to_chat(user, roomnumber)
|
||||
else
|
||||
to_chat(user, "No currenty occupied rooms.")
|
||||
if(sphere.storedRooms.len)
|
||||
to_chat(user, "Vacated Rooms:")
|
||||
for(var/roomnumber in sphere.storedRooms)
|
||||
to_chat(user, roomnumber)
|
||||
else
|
||||
to_chat(user, "No vacated rooms.")
|
||||
. = ..()
|
||||
if(istype(target, /obj/item/hilbertshotel))
|
||||
if(!proximity)
|
||||
to_chat(user, "<span class='warning'>It's to far away to scan!</span>")
|
||||
return
|
||||
var/obj/item/hilbertshotel/sphere = target
|
||||
if(sphere.activeRooms.len)
|
||||
to_chat(user, "Currently Occupied Rooms:")
|
||||
for(var/roomnumber in sphere.activeRooms)
|
||||
to_chat(user, roomnumber)
|
||||
else
|
||||
to_chat(user, "No currenty occupied rooms.")
|
||||
if(sphere.storedRooms.len)
|
||||
to_chat(user, "Vacated Rooms:")
|
||||
for(var/roomnumber in sphere.storedRooms)
|
||||
to_chat(user, roomnumber)
|
||||
else
|
||||
to_chat(user, "No vacated rooms.")
|
||||
|
||||
/obj/effect/mob_spawn/human/doctorhilbert
|
||||
name = "Doctor Hilbert"
|
||||
mob_name = "Doctor Hilbert"
|
||||
mob_gender = "male"
|
||||
assignedrole = null
|
||||
ghost_usable = FALSE
|
||||
oxy_damage = 500
|
||||
mob_species = /datum/species/skeleton
|
||||
id_job = "Head Researcher"
|
||||
id_access = ACCESS_RESEARCH
|
||||
id_access_list = list(ACCESS_AWAY_GENERIC3, ACCESS_RESEARCH)
|
||||
instant = TRUE
|
||||
id = /obj/item/card/id/silver
|
||||
uniform = /obj/item/clothing/under/rank/research_director
|
||||
shoes = /obj/item/clothing/shoes/sneakers/brown
|
||||
back = /obj/item/storage/backpack/satchel/leather
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat
|
||||
name = "Doctor Hilbert"
|
||||
mob_name = "Doctor Hilbert"
|
||||
mob_gender = "male"
|
||||
assignedrole = null
|
||||
ghost_usable = FALSE
|
||||
oxy_damage = 500
|
||||
mob_species = /datum/species/skeleton
|
||||
id_job = "Head Researcher"
|
||||
id_access = ACCESS_RESEARCH
|
||||
id_access_list = list(ACCESS_AWAY_GENERIC3, ACCESS_RESEARCH)
|
||||
instant = TRUE
|
||||
id = /obj/item/card/id/silver
|
||||
uniform = /obj/item/clothing/under/rank/research_director
|
||||
shoes = /obj/item/clothing/shoes/sneakers/brown
|
||||
back = /obj/item/storage/backpack/satchel/leather
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat
|
||||
|
||||
/obj/item/paper/crumpled/docslogs
|
||||
name = "Research Logs"
|
||||
name = "Research Logs"
|
||||
|
||||
/obj/item/paper/crumpled/docslogs/Initialize()
|
||||
. = ..()
|
||||
GLOB.hhmysteryRoomNumber = rand(1, SHORT_REAL_LIMIT)
|
||||
info = {"<h4><center>Research Logs</center></h4>
|
||||
. = ..()
|
||||
GLOB.hhmysteryRoomNumber = rand(1, SHORT_REAL_LIMIT)
|
||||
info = {"<h4><center>Research Logs</center></h4>
|
||||
I might just be onto something here!<br>
|
||||
The strange space-warping properties of bluespace have been known about for awhile now, but I might be on the verge of discovering a new way of harnessing it.<br>
|
||||
It's too soon to say for sure, but this might be the start of something quite important!<br>
|
||||
I'll be sure to log any major future breakthroughs. This might be a lot more than I can manage on my own, perhaps I should hire that secretary after all...<br>
|
||||
I'll be sure to log any major future breakthroughs. This might be a lot more than I can manage on my own, perhaps I should hire that secretary after all...<br>
|
||||
<h4>Breakthrough!</h4>
|
||||
I can't believe it, but I did it! Just when I was certain it couldn't be done, I made the final necessary breakthrough.<br>
|
||||
Exploiting the effects of space dilation caused by specific bluespace structures combined with a precise use of geometric calculus, I've discovered a way to correlate an infinite amount of space within a finite area!<br>
|
||||
While the potential applications are endless, I utilized it in quite a nifty way so far by designing a system that recursively constructs subspace rooms and spatially links them to any of the infinite infinitesimally distinct points on the spheres surface.<br>
|
||||
I call it: Hilbert's Hotel!<br>
|
||||
Exploiting the effects of space dilation caused by specific bluespace structures combined with a precise use of geometric calculus, I've discovered a way to correlate an infinite amount of space within a finite area!<br>
|
||||
While the potential applications are endless, I utilized it in quite a nifty way so far by designing a system that recursively constructs subspace rooms and spatially links them to any of the infinite infinitesimally distinct points on the spheres surface.<br>
|
||||
I call it: Hilbert's Hotel!<br>
|
||||
<h4>Goodbye</h4>
|
||||
I can't take this anymore. I know what happens next, and the fear of what is coming leaves me unable to continue working.<br>
|
||||
Any fool in my field has heard the stories. It's not that I didn't believe them, it's just... I guess I underestimated the importance of my own research...<br>
|
||||
Robert has reported a further increase in frequency of the strange, prying visitors who ask questions they have no business asking. I've requested him to keep everything on strict lockdown and have permanently dismissed all other assistants.<br>
|
||||
I've also instructed him to use the encryption method we discussed for any important quantitative data. The poor lad... I don't think he truly understands what he's gotten himself into...<br>
|
||||
It's clear what happens now. One day they'll show up uninvited, and claim my research as their own, leaving me as nothing more than a bullet ridden corpse floating in space.<br>
|
||||
I can't stick around to the let that happen.<br>
|
||||
I'm escaping into the very thing that brought all this trouble to my doorstep in the first place - my hotel.<br>
|
||||
I'll be in <u>[uppertext(num2hex(GLOB.hhmysteryRoomNumber, 0))]</u> (That will make sense to anyone who should know)<br>
|
||||
I'm sorry that I must go like this. Maybe one day things will be different and it will be safe to return... maybe...<br>
|
||||
Goodbye<br>
|
||||
Any fool in my field has heard the stories. It's not that I didn't believe them, it's just... I guess I underestimated the importance of my own research...<br>
|
||||
Robert has reported a further increase in frequency of the strange, prying visitors who ask questions they have no business asking. I've requested him to keep everything on strict lockdown and have permanently dismissed all other assistants.<br>
|
||||
I've also instructed him to use the encryption method we discussed for any important quantitative data. The poor lad... I don't think he truly understands what he's gotten himself into...<br>
|
||||
It's clear what happens now. One day they'll show up uninvited, and claim my research as their own, leaving me as nothing more than a bullet ridden corpse floating in space.<br>
|
||||
I can't stick around to the let that happen.<br>
|
||||
I'm escaping into the very thing that brought all this trouble to my doorstep in the first place - my hotel.<br>
|
||||
I'll be in <u>[uppertext(num2hex(GLOB.hhmysteryRoomNumber, 0))]</u> (That will make sense to anyone who should know)<br>
|
||||
I'm sorry that I must go like this. Maybe one day things will be different and it will be safe to return... maybe...<br>
|
||||
Goodbye<br>
|
||||
<br>
|
||||
<i>Doctor Hilbert</i>"}
|
||||
|
||||
/obj/item/paper/crumpled/robertsworkjournal
|
||||
name = "Work Journal"
|
||||
info = {"<h4>First Week!</h4>
|
||||
name = "Work Journal"
|
||||
info = {"<h4>First Week!</h4>
|
||||
First week on the new job. It's a secretarial position, but hey, whatever pays the bills. Plus it seems like some interesting stuff goes on here.<br>
|
||||
Doc says its best that I don't openly talk about his research with others, I guess he doesn't want it getting out or something. I've caught myself slipping a few times when talking to others, it's hard not to brag about something this cool!<br>
|
||||
I'm not really sure why I'm choosing to journal this. Doc seems to log everything. He says it's incase he discovers anything important.<br>
|
||||
I guess that's why I'm doing it too, I've always wanted to be a part of something important.<br>
|
||||
Here's to a new job and to becoming a part of something important!<br>
|
||||
I guess that's why I'm doing it too, I've always wanted to be a part of something important.<br>
|
||||
Here's to a new job and to becoming a part of something important!<br>
|
||||
<h4>Weird times...</h4>
|
||||
Things are starting to get a little strange around here. Just weeks after Doc's amazing breakthrough, weird visitors have began showing up unannounced, asking strange things about Doc's work.<br>
|
||||
I knew Doc wasn't a big fan of company, but even he seemed strangely unnerved when I told him about the visitors.<br>
|
||||
He said it's important that from here on out we keep tight security on everything, even other staff members.<br>
|
||||
He also said something about securing data, something about hexes. What's that mean? Some sort of curse? Doc never struck me as the magic type...<br>
|
||||
He often uses a lot of big sciencey words that I don't really understand, but I kinda dig it, it makes me feel like I'm witnessing something big.<br>
|
||||
I hope things go back to normal soon, but I guess that's the price you pay for being a part of something important.<br>
|
||||
I knew Doc wasn't a big fan of company, but even he seemed strangely unnerved when I told him about the visitors.<br>
|
||||
He said it's important that from here on out we keep tight security on everything, even other staff members.<br>
|
||||
He also said something about securing data, something about hexes. What's that mean? Some sort of curse? Doc never struck me as the magic type...<br>
|
||||
He often uses a lot of big sciencey words that I don't really understand, but I kinda dig it, it makes me feel like I'm witnessing something big.<br>
|
||||
I hope things go back to normal soon, but I guess that's the price you pay for being a part of something important.<br>
|
||||
<h4>Last day I guess?</h4>
|
||||
Things are officially starting to get too strange for me.<br>
|
||||
The visitors have been coming a lot more often, and they all seem increasingly aggressive and nosey. I'm starting to see why they made Doc so nervous, they're certainly starting to creep me out too.<br>
|
||||
Awhile ago Doc started having me keep the place on strict lockdown and requested I refuse entry to anyone else, including previous staff.<br>
|
||||
But the weirdest part?<br>
|
||||
I haven't seen Doc in days. It's not unusual for him to work continuously for long periods of time in the lab, but when I took a peak in their yesterday - he was nowhere to be seen! I didn't risk prying much further, Doc had a habit of leaving the defense systems on these last few weeks.<br>
|
||||
I'm thinking it might be time to call it quits. Can't work much without a boss, plus things are starting to get kind of shady. I wanted to be a part of something important, but you gotta know when to play it safe.<br>
|
||||
As my dad always said, "The smart get famous, but the wise survive..."<br>
|
||||
The visitors have been coming a lot more often, and they all seem increasingly aggressive and nosey. I'm starting to see why they made Doc so nervous, they're certainly starting to creep me out too.<br>
|
||||
Awhile ago Doc started having me keep the place on strict lockdown and requested I refuse entry to anyone else, including previous staff.<br>
|
||||
But the weirdest part?<br>
|
||||
I haven't seen Doc in days. It's not unusual for him to work continuously for long periods of time in the lab, but when I took a peak in their yesterday - he was nowhere to be seen! I didn't risk prying much further, Doc had a habit of leaving the defense systems on these last few weeks.<br>
|
||||
I'm thinking it might be time to call it quits. Can't work much without a boss, plus things are starting to get kind of shady. I wanted to be a part of something important, but you gotta know when to play it safe.<br>
|
||||
As my dad always said, "The smart get famous, but the wise survive..."<br>
|
||||
<br>
|
||||
<i>Robert P.</i>"}
|
||||
|
||||
/obj/item/paper/crumpled/bloody/docsdeathnote
|
||||
name = "note"
|
||||
info = {"This is it isn't it?<br>
|
||||
No one's coming to help, that much has become clear.<br>
|
||||
Sure, it's lonely, but do I have much choice? At least I brought the analyzer with me, they shouldn't be able to find me without it.<br>
|
||||
Who knows who's waiting for me out there. Its either die out there in their hands, or die a slower, slightly more comfortable death in here.<br>
|
||||
Everyday I can feel myself slipping away more and more, both physically and mentally. Who knows what happens now...<br>
|
||||
Heh, so it's true then, this must be the inescapable path of all great minds... so be it then.<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<i>Choose a room, and enter the sphere<br>
|
||||
Lay your head to rest, it soon becomes clear<br>
|
||||
There's always more room around every bend<br>
|
||||
Not all that's countable has an end...<i>"}
|
||||
name = "note"
|
||||
info = {"This is it isn't it?<br>
|
||||
No one's coming to help, that much has become clear.<br>
|
||||
Sure, it's lonely, but do I have much choice? At least I brought the analyzer with me, they shouldn't be able to find me without it.<br>
|
||||
Who knows who's waiting for me out there. Its either die out there in their hands, or die a slower, slightly more comfortable death in here.<br>
|
||||
Everyday I can feel myself slipping away more and more, both physically and mentally. Who knows what happens now...<br>
|
||||
Heh, so it's true then, this must be the inescapable path of all great minds... so be it then.<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<i>Choose a room, and enter the sphere<br>
|
||||
Lay your head to rest, it soon becomes clear<br>
|
||||
There's always more room around every bend<br>
|
||||
Not all that's countable has an end...<i>"}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/unit_test/spawn_humans/Run()
|
||||
var/locs = block(run_loc_bottom_left, run_loc_top_right)
|
||||
var/locs = block(run_loc_bottom_left, run_loc_top_right)
|
||||
|
||||
for(var/I in 1 to 5)
|
||||
new /mob/living/carbon/human(pick(locs))
|
||||
for(var/I in 1 to 5)
|
||||
new /mob/living/carbon/human(pick(locs))
|
||||
|
||||
sleep(50)
|
||||
sleep(50)
|
||||
|
||||
@@ -739,7 +739,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
|
||||
/datum/uplink_item/ammo/shotgun/meteor
|
||||
name = "12g Meteorslug Shells"
|
||||
desc = "An alternative 8-round meteorslug magazine for use in the Bulldog shotgun. \
|
||||
Great for blasting airlocks off their frames and knocking down enemies."
|
||||
Great for blasting airlocks off their frames and knocking down enemies."
|
||||
item = /obj/item/ammo_box/magazine/m12g/meteor
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
return TRUE
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/Destroy()
|
||||
playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100)
|
||||
return ..()
|
||||
playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100)
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/after_move(direction)
|
||||
. = ..()
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
/obj/machinery/vending/assist
|
||||
products = list(/obj/item/assembly/prox_sensor = 7,
|
||||
/obj/item/assembly/igniter = 6,
|
||||
/obj/item/assembly/signaler = 6,
|
||||
/obj/item/wirecutters = 3,
|
||||
/obj/item/assembly/igniter = 6,
|
||||
/obj/item/assembly/signaler = 6,
|
||||
/obj/item/wirecutters = 3,
|
||||
/obj/item/stock_parts/cell/crap = 6,
|
||||
/obj/item/cartridge/signal = 6)
|
||||
/obj/item/cartridge/signal = 6)
|
||||
contraband = list(/obj/item/assembly/timer = 4,
|
||||
/obj/item/assembly/voice = 4,
|
||||
/obj/item/assembly/health = 4,
|
||||
/obj/item/pressure_plate = 2,
|
||||
/obj/item/multitool = 2,
|
||||
/obj/item/stock_parts/cell/upgraded = 2)
|
||||
/obj/item/assembly/voice = 4,
|
||||
/obj/item/assembly/health = 4,
|
||||
/obj/item/pressure_plate = 2,
|
||||
/obj/item/multitool = 2,
|
||||
/obj/item/stock_parts/cell/upgraded = 2)
|
||||
premium = list(/obj/item/stock_parts/cell/upgraded/plus = 2,
|
||||
/obj/item/flashlight/lantern = 2,
|
||||
/obj/item/beacon = 2)
|
||||
/obj/item/flashlight/lantern = 2,
|
||||
/obj/item/beacon = 2)
|
||||
product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -111,27 +111,27 @@
|
||||
/obj/item/clothing/suit/ran = 2,
|
||||
/obj/item/clothing/head/ran = 2)
|
||||
contraband = list(/obj/item/clothing/suit/judgerobe = 1,
|
||||
/obj/item/clothing/head/powdered_wig = 1,
|
||||
/obj/item/gun/magic/wand = 2,
|
||||
/obj/item/clothing/glasses/sunglasses/garb = 2,
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold = 1,
|
||||
/obj/item/clothing/mask/muzzle = 2)
|
||||
/obj/item/clothing/head/powdered_wig = 1,
|
||||
/obj/item/gun/magic/wand = 2,
|
||||
/obj/item/clothing/glasses/sunglasses/garb = 2,
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold = 1,
|
||||
/obj/item/clothing/mask/muzzle = 2)
|
||||
premium = list(/obj/item/clothing/suit/pirate/captain = 2,
|
||||
/obj/item/clothing/head/pirate/captain = 2,
|
||||
/obj/item/clothing/head/helmet/roman/fake = 1,
|
||||
/obj/item/clothing/head/helmet/roman/legionnaire/fake = 1,
|
||||
/obj/item/clothing/under/roman = 1,
|
||||
/obj/item/clothing/shoes/roman = 1,
|
||||
/obj/item/shield/riot/roman/fake = 1,
|
||||
/obj/item/skub = 1,
|
||||
/obj/item/clothing/under/lobster = 1, // CIT CHANGES
|
||||
/obj/item/clothing/head/lobsterhat = 1,
|
||||
/obj/item/clothing/head/drfreezehat = 1,
|
||||
/obj/item/clothing/suit/dracula = 1,
|
||||
/obj/item/clothing/suit/drfreeze_coat = 1,
|
||||
/obj/item/clothing/suit/gothcoat = 2,
|
||||
/obj/item/clothing/under/draculass = 1,
|
||||
/obj/item/clothing/under/drfreeze = 1) //End of Cit Changes
|
||||
/obj/item/clothing/head/pirate/captain = 2,
|
||||
/obj/item/clothing/head/helmet/roman/fake = 1,
|
||||
/obj/item/clothing/head/helmet/roman/legionnaire/fake = 1,
|
||||
/obj/item/clothing/under/roman = 1,
|
||||
/obj/item/clothing/shoes/roman = 1,
|
||||
/obj/item/shield/riot/roman/fake = 1,
|
||||
/obj/item/skub = 1,
|
||||
/obj/item/clothing/under/lobster = 1, // CIT CHANGES
|
||||
/obj/item/clothing/head/lobsterhat = 1,
|
||||
/obj/item/clothing/head/drfreezehat = 1,
|
||||
/obj/item/clothing/suit/dracula = 1,
|
||||
/obj/item/clothing/suit/drfreeze_coat = 1,
|
||||
/obj/item/clothing/suit/gothcoat = 2,
|
||||
/obj/item/clothing/under/draculass = 1,
|
||||
/obj/item/clothing/under/drfreeze = 1) //End of Cit Changes
|
||||
refill_canister = /obj/item/vending_refill/autodrobe
|
||||
|
||||
/obj/machinery/vending/autodrobe/all_access
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "boozeomat"
|
||||
icon_deny = "boozeomat-deny"
|
||||
products = list(/obj/item/reagent_containers/food/drinks/bottle/gin = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/whiskey = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/whiskey = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/tequila = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/vodka = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/vermouth = 5,
|
||||
@@ -32,10 +32,10 @@
|
||||
/obj/item/reagent_containers/food/drinks/flask = 3,
|
||||
/obj/item/reagent_containers/food/drinks/beer = 6)
|
||||
contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/fernet = 5)
|
||||
/obj/item/reagent_containers/food/drinks/bottle/fernet = 5)
|
||||
premium = list(/obj/item/reagent_containers/glass/bottle/ethanol = 4,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/champagne = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/trappist = 5)
|
||||
/obj/item/reagent_containers/food/drinks/bottle/champagne = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/trappist = 5)
|
||||
product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?"
|
||||
product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
|
||||
req_access = list(ACCESS_BAR)
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
icon_state = "cart"
|
||||
icon_deny = "cart-deny"
|
||||
products = list(/obj/item/cartridge/medical = 10,
|
||||
/obj/item/cartridge/engineering = 10,
|
||||
/obj/item/cartridge/security = 10,
|
||||
/obj/item/cartridge/engineering = 10,
|
||||
/obj/item/cartridge/security = 10,
|
||||
/obj/item/cartridge/janitor = 10,
|
||||
/obj/item/cartridge/signal/toxins = 10,
|
||||
/obj/item/pda/heads = 10,
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
/obj/item/lighter/greyscale = 4,
|
||||
/obj/item/storage/fancy/rollingpapers = 5)
|
||||
contraband = list(/obj/item/lighter = 3,
|
||||
/obj/item/clothing/mask/vape = 5)
|
||||
/obj/item/clothing/mask/vape = 5)
|
||||
premium = list(/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 3,
|
||||
/obj/item/storage/fancy/cigarettes/cigars = 1,
|
||||
/obj/item/storage/fancy/cigarettes/cigars/havana = 1,
|
||||
/obj/item/storage/fancy/cigarettes/cigars/cohiba = 1)
|
||||
/obj/item/storage/fancy/cigarettes/cigars = 1,
|
||||
/obj/item/storage/fancy/cigarettes/cigars/havana = 1,
|
||||
/obj/item/storage/fancy/cigarettes/cigars/cohiba = 1)
|
||||
refill_canister = /obj/item/vending_refill/cigarette
|
||||
|
||||
/obj/machinery/vending/cigarette/syndicate
|
||||
|
||||
@@ -7,121 +7,121 @@
|
||||
product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!"
|
||||
vend_reply = "Thank you for using the ClothesMate!"
|
||||
products = list(/obj/item/clothing/head/that = 4,
|
||||
/obj/item/clothing/head/fedora = 3,
|
||||
/obj/item/clothing/glasses/monocle = 3,
|
||||
/obj/item/clothing/suit/jacket = 4,
|
||||
/obj/item/clothing/suit/jacket/puffer/vest = 4,
|
||||
/obj/item/clothing/suit/jacket/puffer = 4,
|
||||
/obj/item/clothing/under/suit_jacket/navy = 3,
|
||||
/obj/item/clothing/under/suit_jacket/really_black = 3,
|
||||
/obj/item/clothing/under/suit_jacket/burgundy = 3,
|
||||
/obj/item/clothing/under/suit_jacket/charcoal = 3,
|
||||
/obj/item/clothing/under/suit_jacket/white = 3,
|
||||
/obj/item/clothing/under/kilt = 3,
|
||||
/obj/item/clothing/under/overalls = 3,
|
||||
/obj/item/clothing/under/sl_suit = 3,
|
||||
/obj/item/clothing/under/pants/jeans = 5,
|
||||
/obj/item/clothing/under/pants/classicjeans = 5,
|
||||
/obj/item/clothing/under/pants/camo = 3,
|
||||
/obj/item/clothing/under/pants/blackjeans = 5,
|
||||
/obj/item/clothing/under/pants/khaki = 5,
|
||||
/obj/item/clothing/under/pants/white = 5,
|
||||
/obj/item/clothing/under/pants/red = 3,
|
||||
/obj/item/clothing/under/pants/black = 4,
|
||||
/obj/item/clothing/under/pants/tan = 4,
|
||||
/obj/item/clothing/under/pants/track = 3,
|
||||
/obj/item/clothing/suit/jacket/miljacket = 5,
|
||||
/obj/item/clothing/head/fedora = 3,
|
||||
/obj/item/clothing/glasses/monocle = 3,
|
||||
/obj/item/clothing/suit/jacket = 4,
|
||||
/obj/item/clothing/suit/jacket/puffer/vest = 4,
|
||||
/obj/item/clothing/suit/jacket/puffer = 4,
|
||||
/obj/item/clothing/under/suit_jacket/navy = 3,
|
||||
/obj/item/clothing/under/suit_jacket/really_black = 3,
|
||||
/obj/item/clothing/under/suit_jacket/burgundy = 3,
|
||||
/obj/item/clothing/under/suit_jacket/charcoal = 3,
|
||||
/obj/item/clothing/under/suit_jacket/white = 3,
|
||||
/obj/item/clothing/under/kilt = 3,
|
||||
/obj/item/clothing/under/overalls = 3,
|
||||
/obj/item/clothing/under/sl_suit = 3,
|
||||
/obj/item/clothing/under/pants/jeans = 5,
|
||||
/obj/item/clothing/under/pants/classicjeans = 5,
|
||||
/obj/item/clothing/under/pants/camo = 3,
|
||||
/obj/item/clothing/under/pants/blackjeans = 5,
|
||||
/obj/item/clothing/under/pants/khaki = 5,
|
||||
/obj/item/clothing/under/pants/white = 5,
|
||||
/obj/item/clothing/under/pants/red = 3,
|
||||
/obj/item/clothing/under/pants/black = 4,
|
||||
/obj/item/clothing/under/pants/tan = 4,
|
||||
/obj/item/clothing/under/pants/track = 3,
|
||||
/obj/item/clothing/suit/jacket/miljacket = 5,
|
||||
/obj/item/clothing/under/scratch/skirt = 2,
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit/skirt = 2,
|
||||
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt = 2,
|
||||
/obj/item/clothing/neck/tie/blue = 3,
|
||||
/obj/item/clothing/neck/tie/red = 3,
|
||||
/obj/item/clothing/neck/tie/black = 3,
|
||||
/obj/item/clothing/neck/tie/horrible = 5,
|
||||
/obj/item/clothing/neck/scarf/pink = 3,
|
||||
/obj/item/clothing/neck/scarf/red = 3,
|
||||
/obj/item/clothing/neck/scarf/green = 3,
|
||||
/obj/item/clothing/neck/scarf/darkblue = 3,
|
||||
/obj/item/clothing/neck/scarf/purple = 3,
|
||||
/obj/item/clothing/neck/scarf/yellow = 3,
|
||||
/obj/item/clothing/neck/scarf/orange = 3,
|
||||
/obj/item/clothing/neck/scarf/cyan = 3,
|
||||
/obj/item/clothing/neck/scarf = 3,
|
||||
/obj/item/clothing/neck/scarf/black = 3,
|
||||
/obj/item/clothing/neck/scarf/zebra = 3,
|
||||
/obj/item/clothing/neck/scarf/christmas = 3,
|
||||
/obj/item/clothing/neck/stripedredscarf = 3,
|
||||
/obj/item/clothing/neck/stripedbluescarf = 3,
|
||||
/obj/item/clothing/neck/stripedgreenscarf = 3,
|
||||
/obj/item/clothing/accessory/waistcoat = 2,
|
||||
/obj/item/clothing/under/skirt/black = 3,
|
||||
/obj/item/clothing/under/skirt/blue = 3,
|
||||
/obj/item/clothing/under/skirt/red = 3,
|
||||
/obj/item/clothing/under/skirt/purple = 3,
|
||||
/obj/item/clothing/under/sundress = 4,
|
||||
/obj/item/clothing/under/stripeddress = 3,
|
||||
/obj/item/clothing/under/sailordress = 3,
|
||||
/obj/item/clothing/under/redeveninggown = 3,
|
||||
/obj/item/clothing/under/blacktango = 3,
|
||||
/obj/item/clothing/under/plaid_skirt = 3,
|
||||
/obj/item/clothing/under/plaid_skirt/blue = 3,
|
||||
/obj/item/clothing/under/plaid_skirt/purple = 3,
|
||||
/obj/item/clothing/under/plaid_skirt/green = 3,
|
||||
/obj/item/clothing/glasses/regular = 2,
|
||||
/obj/item/clothing/glasses/regular/jamjar = 2,
|
||||
/obj/item/clothing/head/sombrero = 3,
|
||||
/obj/item/clothing/suit/poncho = 3,
|
||||
/obj/item/clothing/suit/ianshirt = 3,
|
||||
/obj/item/clothing/shoes/laceup = 5,
|
||||
/obj/item/clothing/shoes/sneakers/black = 6,
|
||||
/obj/item/clothing/shoes/sandal = 3,
|
||||
/obj/item/clothing/gloves/fingerless = 3,
|
||||
/obj/item/clothing/glasses/orange = 5,
|
||||
/obj/item/clothing/glasses/red = 5,
|
||||
/obj/item/storage/belt/fannypack = 3,
|
||||
/obj/item/storage/belt/fannypack/blue = 3,
|
||||
/obj/item/storage/belt/fannypack/red = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman = 5,
|
||||
/obj/item/clothing/head/beanie = 3,
|
||||
/obj/item/clothing/head/beanie/black = 3,
|
||||
/obj/item/clothing/head/beanie/red = 3,
|
||||
/obj/item/clothing/head/beanie/green = 3,
|
||||
/obj/item/clothing/head/beanie/darkblue = 3,
|
||||
/obj/item/clothing/head/beanie/purple = 3,
|
||||
/obj/item/clothing/head/beanie/yellow = 3,
|
||||
/obj/item/clothing/head/beanie/orange = 3,
|
||||
/obj/item/clothing/head/beanie/cyan = 3,
|
||||
/obj/item/clothing/head/beanie/christmas = 3,
|
||||
/obj/item/clothing/head/beanie/striped = 3,
|
||||
/obj/item/clothing/head/beanie/stripedred = 3,
|
||||
/obj/item/clothing/head/beanie/stripedblue = 3,
|
||||
/obj/item/clothing/head/beanie/stripedgreen = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman_red = 3,
|
||||
/obj/item/clothing/ears/headphones = 10,
|
||||
/obj/item/clothing/suit/apron/purple_bartender = 4,
|
||||
/obj/item/clothing/under/rank/bartender/purple = 4,
|
||||
/obj/item/clothing/accessory/attrocious_pokadots = 8,
|
||||
/obj/item/clothing/accessory/black_white_pokadots = 8)
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit/skirt = 2,
|
||||
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt = 2,
|
||||
/obj/item/clothing/neck/tie/blue = 3,
|
||||
/obj/item/clothing/neck/tie/red = 3,
|
||||
/obj/item/clothing/neck/tie/black = 3,
|
||||
/obj/item/clothing/neck/tie/horrible = 5,
|
||||
/obj/item/clothing/neck/scarf/pink = 3,
|
||||
/obj/item/clothing/neck/scarf/red = 3,
|
||||
/obj/item/clothing/neck/scarf/green = 3,
|
||||
/obj/item/clothing/neck/scarf/darkblue = 3,
|
||||
/obj/item/clothing/neck/scarf/purple = 3,
|
||||
/obj/item/clothing/neck/scarf/yellow = 3,
|
||||
/obj/item/clothing/neck/scarf/orange = 3,
|
||||
/obj/item/clothing/neck/scarf/cyan = 3,
|
||||
/obj/item/clothing/neck/scarf = 3,
|
||||
/obj/item/clothing/neck/scarf/black = 3,
|
||||
/obj/item/clothing/neck/scarf/zebra = 3,
|
||||
/obj/item/clothing/neck/scarf/christmas = 3,
|
||||
/obj/item/clothing/neck/stripedredscarf = 3,
|
||||
/obj/item/clothing/neck/stripedbluescarf = 3,
|
||||
/obj/item/clothing/neck/stripedgreenscarf = 3,
|
||||
/obj/item/clothing/accessory/waistcoat = 2,
|
||||
/obj/item/clothing/under/skirt/black = 3,
|
||||
/obj/item/clothing/under/skirt/blue = 3,
|
||||
/obj/item/clothing/under/skirt/red = 3,
|
||||
/obj/item/clothing/under/skirt/purple = 3,
|
||||
/obj/item/clothing/under/sundress = 4,
|
||||
/obj/item/clothing/under/stripeddress = 3,
|
||||
/obj/item/clothing/under/sailordress = 3,
|
||||
/obj/item/clothing/under/redeveninggown = 3,
|
||||
/obj/item/clothing/under/blacktango = 3,
|
||||
/obj/item/clothing/under/plaid_skirt = 3,
|
||||
/obj/item/clothing/under/plaid_skirt/blue = 3,
|
||||
/obj/item/clothing/under/plaid_skirt/purple = 3,
|
||||
/obj/item/clothing/under/plaid_skirt/green = 3,
|
||||
/obj/item/clothing/glasses/regular = 2,
|
||||
/obj/item/clothing/glasses/regular/jamjar = 2,
|
||||
/obj/item/clothing/head/sombrero = 3,
|
||||
/obj/item/clothing/suit/poncho = 3,
|
||||
/obj/item/clothing/suit/ianshirt = 3,
|
||||
/obj/item/clothing/shoes/laceup = 5,
|
||||
/obj/item/clothing/shoes/sneakers/black = 6,
|
||||
/obj/item/clothing/shoes/sandal = 3,
|
||||
/obj/item/clothing/gloves/fingerless = 3,
|
||||
/obj/item/clothing/glasses/orange = 5,
|
||||
/obj/item/clothing/glasses/red = 5,
|
||||
/obj/item/storage/belt/fannypack = 3,
|
||||
/obj/item/storage/belt/fannypack/blue = 3,
|
||||
/obj/item/storage/belt/fannypack/red = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman = 5,
|
||||
/obj/item/clothing/head/beanie = 3,
|
||||
/obj/item/clothing/head/beanie/black = 3,
|
||||
/obj/item/clothing/head/beanie/red = 3,
|
||||
/obj/item/clothing/head/beanie/green = 3,
|
||||
/obj/item/clothing/head/beanie/darkblue = 3,
|
||||
/obj/item/clothing/head/beanie/purple = 3,
|
||||
/obj/item/clothing/head/beanie/yellow = 3,
|
||||
/obj/item/clothing/head/beanie/orange = 3,
|
||||
/obj/item/clothing/head/beanie/cyan = 3,
|
||||
/obj/item/clothing/head/beanie/christmas = 3,
|
||||
/obj/item/clothing/head/beanie/striped = 3,
|
||||
/obj/item/clothing/head/beanie/stripedred = 3,
|
||||
/obj/item/clothing/head/beanie/stripedblue = 3,
|
||||
/obj/item/clothing/head/beanie/stripedgreen = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman_red = 3,
|
||||
/obj/item/clothing/ears/headphones = 10,
|
||||
/obj/item/clothing/suit/apron/purple_bartender = 4,
|
||||
/obj/item/clothing/under/rank/bartender/purple = 4,
|
||||
/obj/item/clothing/accessory/attrocious_pokadots = 8,
|
||||
/obj/item/clothing/accessory/black_white_pokadots = 8)
|
||||
contraband = list(/obj/item/clothing/under/syndicate/tacticool = 3,
|
||||
/obj/item/clothing/under/syndicate/tacticool/skirt = 3,
|
||||
/obj/item/clothing/mask/balaclava = 3,
|
||||
/obj/item/clothing/head/ushanka = 3,
|
||||
/obj/item/clothing/under/soviet = 3,
|
||||
/obj/item/storage/belt/fannypack/black = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman_syndie = 5,
|
||||
/obj/item/clothing/under/jabroni = 2,
|
||||
/obj/item/clothing/suit/vapeshirt = 2,
|
||||
/obj/item/clothing/under/geisha = 4,
|
||||
/obj/item/clothing/accessory/syndi_pokadots = 4)
|
||||
/obj/item/clothing/under/syndicate/tacticool/skirt = 3,
|
||||
/obj/item/clothing/mask/balaclava = 3,
|
||||
/obj/item/clothing/head/ushanka = 3,
|
||||
/obj/item/clothing/under/soviet = 3,
|
||||
/obj/item/storage/belt/fannypack/black = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman_syndie = 5,
|
||||
/obj/item/clothing/under/jabroni = 2,
|
||||
/obj/item/clothing/suit/vapeshirt = 2,
|
||||
/obj/item/clothing/under/geisha = 4,
|
||||
/obj/item/clothing/accessory/syndi_pokadots = 4)
|
||||
premium = list(/obj/item/clothing/under/suit_jacket/checkered = 4,
|
||||
/obj/item/clothing/head/mailman = 2,
|
||||
/obj/item/clothing/under/rank/mailman = 2,
|
||||
/obj/item/clothing/suit/jacket/leather = 4,
|
||||
/obj/item/clothing/suit/jacket/leather/overcoat = 4,
|
||||
/obj/item/clothing/under/pants/mustangjeans = 3,
|
||||
/obj/item/clothing/neck/necklace/dope = 5,
|
||||
/obj/item/clothing/suit/jacket/letterman_nanotrasen = 5,
|
||||
/obj/item/clothing/accessory/nt_pokadots = 5)
|
||||
/obj/item/clothing/head/mailman = 2,
|
||||
/obj/item/clothing/under/rank/mailman = 2,
|
||||
/obj/item/clothing/suit/jacket/leather = 4,
|
||||
/obj/item/clothing/suit/jacket/leather/overcoat = 4,
|
||||
/obj/item/clothing/under/pants/mustangjeans = 3,
|
||||
/obj/item/clothing/neck/necklace/dope = 5,
|
||||
/obj/item/clothing/suit/jacket/letterman_nanotrasen = 5,
|
||||
/obj/item/clothing/accessory/nt_pokadots = 5)
|
||||
refill_canister = /obj/item/vending_refill/clothing
|
||||
|
||||
/obj/item/vending_refill/clothing
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
icon_state = "coffee"
|
||||
icon_vend = "coffee-vend"
|
||||
products = list(/obj/item/reagent_containers/food/drinks/coffee = 25,
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea = 25,
|
||||
/obj/item/reagent_containers/food/drinks/mug/coco = 25)
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea = 25,
|
||||
/obj/item/reagent_containers/food/drinks/mug/coco = 25)
|
||||
contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12)
|
||||
premium = list(/obj/item/reagent_containers/food/snacks/chocolatebar = 3,
|
||||
/obj/item/reagent_containers/food/condiment/milk = 2,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cream = 2,
|
||||
/obj/item/reagent_containers/food/condiment/sugar = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/milk = 2,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cream = 2,
|
||||
/obj/item/reagent_containers/food/condiment/sugar = 1)
|
||||
|
||||
refill_canister = /obj/item/vending_refill/coffee
|
||||
|
||||
/obj/item/vending_refill/coffee
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!"
|
||||
product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
|
||||
products = list(/obj/item/reagent_containers/food/drinks/soda_cans/cola = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_up = 10,
|
||||
@@ -14,10 +14,10 @@
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime = 10,
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle = 10)
|
||||
contraband = list(/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko = 6,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/shamblers = 6)
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/shamblers = 6)
|
||||
premium = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 1,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/air = 1,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/grey_bull = 1)
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/air = 1,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/grey_bull = 1)
|
||||
refill_canister = /obj/item/vending_refill/cola
|
||||
|
||||
/obj/item/vending_refill/cola
|
||||
@@ -73,7 +73,7 @@
|
||||
desc = "~Shake me up some of that Shambler's Juice!~"
|
||||
icon_state = "shamblers_juice"
|
||||
products = list(/obj/item/reagent_containers/food/drinks/soda_cans/cola = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_up = 10,
|
||||
|
||||
@@ -4,20 +4,20 @@
|
||||
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
|
||||
icon_state = "dinnerware"
|
||||
products = list(/obj/item/storage/bag/tray = 8,
|
||||
/obj/item/kitchen/fork = 6,
|
||||
/obj/item/kitchen/knife = 6,
|
||||
/obj/item/kitchen/rollingpin = 2,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass = 8,
|
||||
/obj/item/clothing/suit/apron/chef = 2,
|
||||
/obj/item/storage/box/cups = 2,
|
||||
/obj/item/reagent_containers/food/condiment/pack/ketchup = 5,
|
||||
/obj/item/reagent_containers/food/condiment/pack/mustard = 5,
|
||||
/obj/item/reagent_containers/food/condiment/pack/hotsauce = 5,
|
||||
/obj/item/reagent_containers/food/condiment/pack/astrotame = 5,
|
||||
/obj/item/reagent_containers/food/condiment/saltshaker = 5,
|
||||
/obj/item/reagent_containers/food/condiment/peppermill = 5,
|
||||
/obj/item/reagent_containers/glass/bowl = 30)
|
||||
/obj/item/kitchen/fork = 6,
|
||||
/obj/item/kitchen/knife = 6,
|
||||
/obj/item/kitchen/rollingpin = 2,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass = 8,
|
||||
/obj/item/clothing/suit/apron/chef = 2,
|
||||
/obj/item/storage/box/cups = 2,
|
||||
/obj/item/reagent_containers/food/condiment/pack/ketchup = 5,
|
||||
/obj/item/reagent_containers/food/condiment/pack/mustard = 5,
|
||||
/obj/item/reagent_containers/food/condiment/pack/hotsauce = 5,
|
||||
/obj/item/reagent_containers/food/condiment/pack/astrotame = 5,
|
||||
/obj/item/reagent_containers/food/condiment/saltshaker = 5,
|
||||
/obj/item/reagent_containers/food/condiment/peppermill = 5,
|
||||
/obj/item/reagent_containers/glass/bowl = 30)
|
||||
contraband = list(/obj/item/kitchen/rollingpin = 2,
|
||||
/obj/item/kitchen/knife/butcher = 2)
|
||||
/obj/item/kitchen/knife/butcher = 2)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
icon_deny = "engi-deny"
|
||||
req_access = list(ACCESS_ENGINE_EQUIP)
|
||||
products = list(/obj/item/clothing/under/rank/chief_engineer = 4,
|
||||
/obj/item/clothing/under/rank/engineer = 4,
|
||||
/obj/item/clothing/shoes/sneakers/orange = 4,
|
||||
/obj/item/clothing/head/hardhat = 4,
|
||||
/obj/item/clothing/under/rank/engineer = 4,
|
||||
/obj/item/clothing/shoes/sneakers/orange = 4,
|
||||
/obj/item/clothing/head/hardhat = 4,
|
||||
/obj/item/storage/belt/utility = 4,
|
||||
/obj/item/clothing/glasses/meson/engine = 4,
|
||||
/obj/item/clothing/gloves/color/yellow = 4,
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
/obj/item/rcd_ammo = 3
|
||||
)
|
||||
contraband = list(/obj/item/stock_parts/cell/potato = 3,
|
||||
/obj/item/rcd_ammo = 2,
|
||||
/obj/item/circuitboard/computer/slot_machine = 1,
|
||||
/obj/item/tank/internals/emergency_oxygen/double = 3
|
||||
)
|
||||
/obj/item/rcd_ammo = 2,
|
||||
/obj/item/circuitboard/computer/slot_machine = 1,
|
||||
/obj/item/tank/internals/emergency_oxygen/double = 3
|
||||
)
|
||||
premium = list(/obj/item/storage/belt/utility = 3,
|
||||
/obj/item/storage/box/smart_metal_foam = 3,
|
||||
/obj/item/rcd_ammo/large = 5
|
||||
)
|
||||
/obj/item/storage/box/smart_metal_foam = 3,
|
||||
/obj/item/rcd_ammo/large = 5
|
||||
)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initiative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!"
|
||||
icon_state = "games"
|
||||
products = list(/obj/item/toy/cards/deck = 5,
|
||||
/obj/item/storage/pill_bottle/dice = 10,
|
||||
/obj/item/toy/cards/deck/cas = 3,
|
||||
/obj/item/toy/cards/deck/cas/black = 3)
|
||||
/obj/item/storage/pill_bottle/dice = 10,
|
||||
/obj/item/toy/cards/deck/cas = 3,
|
||||
/obj/item/toy/cards/deck/cas/black = 3)
|
||||
contraband = list(/obj/item/dice/fudge = 9)
|
||||
refill_canister = /obj/item/vending_refill/games
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/fries = 5, //Whose broad stripes and bright stars through the perilous fight
|
||||
/obj/item/reagent_containers/food/drinks/beer/light = 10, //O'er the ramparts we watched, were so gallantly streaming?
|
||||
/obj/item/gun/ballistic/automatic/pistol/deagle/gold = 2,
|
||||
/obj/item/gun/ballistic/automatic/pistol/deagle/camo = 2,
|
||||
/obj/item/gun/ballistic/automatic/pistol/deagle/camo = 2,
|
||||
/obj/item/gun/ballistic/automatic/pistol/m1911 = 2,
|
||||
/obj/item/gun/ballistic/automatic/proto/unrestricted = 2,
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat = 2,
|
||||
@@ -18,13 +18,13 @@
|
||||
/obj/item/gun/ballistic/shotgun = 2,
|
||||
/obj/item/gun/ballistic/automatic/ar = 2)
|
||||
premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2,
|
||||
/obj/item/ammo_box/magazine/m50 = 4,
|
||||
/obj/item/ammo_box/magazine/m45 = 2,
|
||||
/obj/item/ammo_box/magazine/m75 = 2,
|
||||
/obj/item/reagent_containers/food/snacks/cheesyfries = 5,
|
||||
/obj/item/reagent_containers/food/snacks/burger/baconburger = 5) //Premium burgers for the premium section
|
||||
/obj/item/ammo_box/magazine/m50 = 4,
|
||||
/obj/item/ammo_box/magazine/m45 = 2,
|
||||
/obj/item/ammo_box/magazine/m75 = 2,
|
||||
/obj/item/reagent_containers/food/snacks/cheesyfries = 5,
|
||||
/obj/item/reagent_containers/food/snacks/burger/baconburger = 5) //Premium burgers for the premium section
|
||||
contraband = list(/obj/item/clothing/under/patriotsuit = 3,
|
||||
/obj/item/bedsheet/patriot = 5,
|
||||
/obj/item/reagent_containers/food/snacks/burger/superbite = 3) //U S A
|
||||
/obj/item/bedsheet/patriot = 5,
|
||||
/obj/item/reagent_containers/food/snacks/burger/superbite = 3) //U S A
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
/obj/item/clothing/suit/syndicatefake = 5,
|
||||
/obj/item/clothing/head/syndicatefake = 5) //OPS IN DORMS oh wait it's just an assistant
|
||||
contraband = list(/obj/item/gun/ballistic/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting!
|
||||
/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot = 10,
|
||||
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 10,
|
||||
/obj/item/ammo_box/foambox/riot = 20,
|
||||
/obj/item/toy/katana = 10,
|
||||
/obj/item/twohanded/dualsaber/toy = 5,
|
||||
/obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item
|
||||
/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot = 10,
|
||||
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 10,
|
||||
/obj/item/ammo_box/foambox/riot = 20,
|
||||
/obj/item/toy/katana = 10,
|
||||
/obj/item/twohanded/dualsaber/toy = 5,
|
||||
/obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
refill_canister = /obj/item/vending_refill/donksoft
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
vend_reply = "Have an enchanted evening!"
|
||||
product_ads = "EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!;Now-magic proofing venders!"
|
||||
products = list(/obj/item/clothing/head/wizard = 1,
|
||||
/obj/item/clothing/suit/wizrobe = 1,
|
||||
/obj/item/clothing/head/wizard/red = 1,
|
||||
/obj/item/clothing/suit/wizrobe/red = 1,
|
||||
/obj/item/clothing/head/wizard/yellow = 1,
|
||||
/obj/item/clothing/suit/wizrobe/yellow = 1,
|
||||
/obj/item/clothing/shoes/sandal/magic = 1,
|
||||
/obj/item/staff = 2)
|
||||
/obj/item/clothing/suit/wizrobe = 1,
|
||||
/obj/item/clothing/head/wizard/red = 1,
|
||||
/obj/item/clothing/suit/wizrobe/red = 1,
|
||||
/obj/item/clothing/head/wizard/yellow = 1,
|
||||
/obj/item/clothing/suit/wizrobe/yellow = 1,
|
||||
/obj/item/clothing/shoes/sandal/magic = 1,
|
||||
/obj/item/staff = 2)
|
||||
contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "magic" = 100)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -26,18 +26,18 @@
|
||||
/obj/item/reagent_containers/syringe/antiviral = 6,
|
||||
/obj/item/storage/briefcase/medical = 2)
|
||||
contraband = list(/obj/item/reagent_containers/pill/tox = 3,
|
||||
/obj/item/reagent_containers/pill/morphine = 4,
|
||||
/obj/item/reagent_containers/pill/charcoal = 6)
|
||||
/obj/item/reagent_containers/pill/morphine = 4,
|
||||
/obj/item/reagent_containers/pill/charcoal = 6)
|
||||
premium = list(/obj/item/reagent_containers/medspray/synthflesh = 2,
|
||||
/obj/item/storage/box/hug/medical = 1,
|
||||
/obj/item/storage/pill_bottle/psicodine = 2,
|
||||
/obj/item/reagent_containers/hypospray/medipen = 3,
|
||||
/obj/item/storage/belt/medical = 3,
|
||||
/obj/item/wrench/medical = 1,
|
||||
/obj/item/storage/belt/medolier/full = 2,
|
||||
/obj/item/gun/syringe/dart = 2,
|
||||
/obj/item/storage/briefcase/medical = 2)
|
||||
|
||||
/obj/item/storage/box/hug/medical = 1,
|
||||
/obj/item/storage/pill_bottle/psicodine = 2,
|
||||
/obj/item/reagent_containers/hypospray/medipen = 3,
|
||||
/obj/item/storage/belt/medical = 3,
|
||||
/obj/item/wrench/medical = 1,
|
||||
/obj/item/storage/belt/medolier/full = 2,
|
||||
/obj/item/gun/syringe/dart = 2,
|
||||
/obj/item/storage/briefcase/medical = 2)
|
||||
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
refill_canister = /obj/item/vending_refill/medical
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_deny = "wallmed-deny"
|
||||
density = FALSE
|
||||
products = list(/obj/item/reagent_containers/syringe = 3,
|
||||
/obj/item/reagent_containers/pill/patch/styptic = 5,
|
||||
/obj/item/reagent_containers/pill/patch/styptic = 5,
|
||||
/obj/item/reagent_containers/pill/patch/silver_sulf = 5,
|
||||
/obj/item/reagent_containers/medspray/styptic = 2,
|
||||
/obj/item/reagent_containers/medspray/silver_sulf = 2,
|
||||
@@ -13,7 +13,7 @@
|
||||
/obj/item/reagent_containers/medspray/sterilizine = 1,
|
||||
/obj/item/reagent_containers/syringe/dart = 10)
|
||||
contraband = list(/obj/item/reagent_containers/pill/tox = 2,
|
||||
/obj/item/reagent_containers/pill/morphine = 2)
|
||||
/obj/item/reagent_containers/pill/morphine = 2)
|
||||
premium = list(/obj/item/reagent_containers/medspray/synthflesh = 2)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
|
||||
icon_state = "seeds"
|
||||
products = list(/obj/item/seeds/ambrosia = 3,
|
||||
/obj/item/seeds/apple = 3,
|
||||
/obj/item/seeds/banana = 3,
|
||||
/obj/item/seeds/berry = 3,
|
||||
/obj/item/seeds/apple = 3,
|
||||
/obj/item/seeds/banana = 3,
|
||||
/obj/item/seeds/berry = 3,
|
||||
/obj/item/seeds/cabbage = 3,
|
||||
/obj/item/seeds/carrot = 3,
|
||||
/obj/item/seeds/cherry = 3,
|
||||
@@ -44,14 +44,14 @@
|
||||
/obj/item/seeds/wheat = 3,
|
||||
/obj/item/seeds/whitebeet = 3)
|
||||
contraband = list(/obj/item/seeds/amanita = 2,
|
||||
/obj/item/seeds/glowshroom = 2,
|
||||
/obj/item/seeds/liberty = 2,
|
||||
/obj/item/seeds/nettle = 2,
|
||||
/obj/item/seeds/plump = 2,
|
||||
/obj/item/seeds/reishi = 2,
|
||||
/obj/item/seeds/cannabis = 3,
|
||||
/obj/item/seeds/starthistle = 2,
|
||||
/obj/item/seeds/random = 2)
|
||||
/obj/item/seeds/glowshroom = 2,
|
||||
/obj/item/seeds/liberty = 2,
|
||||
/obj/item/seeds/nettle = 2,
|
||||
/obj/item/seeds/plump = 2,
|
||||
/obj/item/seeds/reishi = 2,
|
||||
/obj/item/seeds/cannabis = 3,
|
||||
/obj/item/seeds/starthistle = 2,
|
||||
/obj/item/seeds/random = 2)
|
||||
premium = list(/obj/item/reagent_containers/spray/waterflower = 1)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -6,15 +6,15 @@
|
||||
icon_state = "nutri"
|
||||
icon_deny = "nutri-deny"
|
||||
products = list(/obj/item/reagent_containers/glass/bottle/nutrient/ez = 30,
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/l4z = 20,
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/rh = 10,
|
||||
/obj/item/reagent_containers/spray/pestspray = 20,
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/l4z = 20,
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/rh = 10,
|
||||
/obj/item/reagent_containers/spray/pestspray = 20,
|
||||
/obj/item/reagent_containers/syringe = 5,
|
||||
/obj/item/storage/bag/plants = 5,
|
||||
/obj/item/cultivator = 3,
|
||||
/obj/item/shovel/spade = 3,
|
||||
/obj/item/plant_analyzer = 4)
|
||||
contraband = list(/obj/item/reagent_containers/glass/bottle/ammonia = 10,
|
||||
/obj/item/reagent_containers/glass/bottle/diethylamine = 5)
|
||||
/obj/item/reagent_containers/glass/bottle/diethylamine = 5)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
name = "\improper Toximate 3000"
|
||||
desc = "All the fine parts you need in one vending machine!"
|
||||
products = list(/obj/item/clothing/under/rank/scientist = 6,
|
||||
/obj/item/clothing/suit/bio_suit = 6,
|
||||
/obj/item/clothing/head/bio_hood = 6,
|
||||
/obj/item/clothing/suit/bio_suit = 6,
|
||||
/obj/item/clothing/head/bio_hood = 6,
|
||||
/obj/item/transfer_valve = 6,
|
||||
/obj/item/assembly/timer = 6,
|
||||
/obj/item/assembly/signaler = 6,
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
icon_deny = "robotics-deny"
|
||||
req_access = list(ACCESS_ROBOTICS)
|
||||
products = list(/obj/item/clothing/suit/toggle/labcoat = 4,
|
||||
/obj/item/clothing/under/rank/roboticist = 4,
|
||||
/obj/item/stack/cable_coil = 4,
|
||||
/obj/item/assembly/flash/handheld = 4,
|
||||
/obj/item/clothing/under/rank/roboticist = 4,
|
||||
/obj/item/stack/cable_coil = 4,
|
||||
/obj/item/assembly/flash/handheld = 4,
|
||||
/obj/item/stock_parts/cell/high = 12,
|
||||
/obj/item/assembly/prox_sensor = 3,
|
||||
/obj/item/assembly/signaler = 3,
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
icon_deny = "sec-deny"
|
||||
req_access = list(ACCESS_SECURITY)
|
||||
products = list(/obj/item/restraints/handcuffs = 8,
|
||||
/obj/item/restraints/handcuffs/cable/zipties = 10,
|
||||
/obj/item/grenade/flashbang = 4,
|
||||
/obj/item/assembly/flash/handheld = 5,
|
||||
/obj/item/restraints/handcuffs/cable/zipties = 10,
|
||||
/obj/item/grenade/flashbang = 4,
|
||||
/obj/item/assembly/flash/handheld = 5,
|
||||
/obj/item/reagent_containers/food/snacks/donut = 12,
|
||||
/obj/item/storage/box/evidence = 6,
|
||||
/obj/item/flashlight/seclite = 4,
|
||||
/obj/item/restraints/legcuffs/bola/energy = 7,
|
||||
/obj/item/flashlight/seclite = 4,
|
||||
/obj/item/restraints/legcuffs/bola/energy = 7,
|
||||
/obj/item/secbat = 5)
|
||||
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,
|
||||
/obj/item/storage/fancy/donut_box = 2,
|
||||
/obj/item/ssword_kit = 1)
|
||||
/obj/item/storage/fancy/donut_box = 2,
|
||||
/obj/item/ssword_kit = 1)
|
||||
premium = list(/obj/item/coin/antagtoken = 1,
|
||||
/obj/item/clothing/head/helmet/blueshirt = 1,
|
||||
/obj/item/clothing/suit/armor/vest/blueshirt = 1,
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
|
||||
icon_state = "snack"
|
||||
products = list(/obj/item/reagent_containers/food/snacks/candy = 6,
|
||||
/obj/item/reagent_containers/food/drinks/dry_ramen = 6,
|
||||
/obj/item/reagent_containers/food/snacks/chips = 6,
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky = 6,
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin = 6,
|
||||
/obj/item/reagent_containers/food/snacks/spacetwinkie = 6,
|
||||
/obj/item/reagent_containers/food/drinks/dry_ramen = 6,
|
||||
/obj/item/reagent_containers/food/snacks/chips = 6,
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky = 6,
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin = 6,
|
||||
/obj/item/reagent_containers/food/snacks/spacetwinkie = 6,
|
||||
/obj/item/reagent_containers/food/snacks/cheesiehonkers = 6)
|
||||
contraband = list(/obj/item/reagent_containers/food/snacks/syndicake = 6)
|
||||
premium = list(/obj/item/storage/box/donkpockets = 1,
|
||||
/obj/item/reagent_containers/food/snacks/poppypretzel = 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/poppypretzel = 3)
|
||||
|
||||
refill_canister = /obj/item/vending_refill/snack
|
||||
var/chef_compartment_access = "28" //ACCESS_KITCHEN
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
/obj/item/reagent_containers/food/drinks/ice = 12,
|
||||
/obj/item/reagent_containers/food/snacks/candy_corn = 6)
|
||||
contraband = list(/obj/item/kitchen/knife = 6,
|
||||
/obj/item/reagent_containers/food/drinks/coffee = 12,
|
||||
/obj/item/tank/internals/emergency_oxygen = 6,
|
||||
/obj/item/clothing/mask/breath = 6)
|
||||
/obj/item/reagent_containers/food/drinks/coffee = 12,
|
||||
/obj/item/tank/internals/emergency_oxygen = 6,
|
||||
/obj/item/clothing/mask/breath = 6)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -4,19 +4,19 @@
|
||||
icon_state = "tool"
|
||||
icon_deny = "tool-deny"
|
||||
products = list(/obj/item/stack/cable_coil/random = 15,
|
||||
/obj/item/crowbar = 10,
|
||||
/obj/item/weldingtool = 6,
|
||||
/obj/item/wirecutters = 10,
|
||||
/obj/item/wrench = 10,
|
||||
/obj/item/analyzer = 10,
|
||||
/obj/item/t_scanner = 10,
|
||||
/obj/item/screwdriver = 10,
|
||||
/obj/item/flashlight/glowstick = 6,
|
||||
/obj/item/flashlight/glowstick/red = 6,
|
||||
/obj/item/flashlight = 7)
|
||||
/obj/item/crowbar = 10,
|
||||
/obj/item/weldingtool = 6,
|
||||
/obj/item/wirecutters = 10,
|
||||
/obj/item/wrench = 10,
|
||||
/obj/item/analyzer = 10,
|
||||
/obj/item/t_scanner = 10,
|
||||
/obj/item/screwdriver = 10,
|
||||
/obj/item/flashlight/glowstick = 6,
|
||||
/obj/item/flashlight/glowstick/red = 6,
|
||||
/obj/item/flashlight = 7)
|
||||
contraband = list(/obj/item/weldingtool/largetank = 4,
|
||||
/obj/item/clothing/gloves/color/fyellow = 4)
|
||||
/obj/item/clothing/gloves/color/fyellow = 4)
|
||||
premium = list(/obj/item/clothing/gloves/color/yellow = 2,
|
||||
/obj/item/weldingtool/hugetank = 2)
|
||||
/obj/item/weldingtool/hugetank = 2)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
Reference in New Issue
Block a user