Merge branch 'master' of https://github.com/tgstation/tgstation into TiredOfTheInconsistency
@@ -2493,7 +2493,8 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/door/airlock/maintenance_hatch{
|
||||
name = "Maintenance Hatch";
|
||||
req_access_txt = "12"
|
||||
req_access_txt = "0";
|
||||
req_one_access_txt = "32;47;48"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 2
|
||||
@@ -9688,7 +9689,7 @@
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/clothing/suit/suspenders,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/turf/open/floor/plasteel/redblue,
|
||||
/area/maintenance/fpmaint2/fore_port_maintenance)
|
||||
"atx" = (
|
||||
@@ -32058,7 +32059,7 @@
|
||||
/area/space)
|
||||
"bjo" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
name = "2maintenance loot spawner"
|
||||
@@ -38443,10 +38444,13 @@
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/engine/break_room)
|
||||
"bvt" = (
|
||||
/obj/machinery/computer/atmos_control,
|
||||
/obj/machinery/status_display{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/obj/machinery/modular_computer/console/preset/engineering,
|
||||
/turf/open/floor/plasteel/caution{
|
||||
dir = 8
|
||||
},
|
||||
@@ -38466,6 +38470,9 @@
|
||||
name = "Atmospheric Technician"
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
"bvw" = (
|
||||
@@ -57270,9 +57277,6 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"cde" = (
|
||||
/obj/machinery/computer/monitor{
|
||||
name = "Engineering Power Monitoring Console"
|
||||
},
|
||||
/obj/machinery/firealarm{
|
||||
dir = 8;
|
||||
pixel_x = -24;
|
||||
@@ -57289,6 +57293,7 @@
|
||||
dir = 1;
|
||||
name = "engineering camera"
|
||||
},
|
||||
/obj/machinery/modular_computer/console/preset/engineering,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/engine/engineering)
|
||||
"cdf" = (
|
||||
@@ -97079,8 +97084,8 @@
|
||||
})
|
||||
"dAG" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/item/clothing/neck/tie/black,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/neutral/side{
|
||||
@@ -97796,8 +97801,8 @@
|
||||
"dBY" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/rack,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/neutral/side{
|
||||
@@ -98551,7 +98556,7 @@
|
||||
})
|
||||
"dDp" = (
|
||||
/obj/structure/closet/crate,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plating,
|
||||
@@ -103451,7 +103456,7 @@
|
||||
/area/maintenance/fpmaint2/aft_port_maintenance)
|
||||
"dMJ" = (
|
||||
/obj/structure/closet,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -111346,7 +111351,7 @@
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/clothing/shoes/jackboots,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/structure/sign/poster/contraband/random{
|
||||
pixel_y = -32
|
||||
},
|
||||
@@ -112886,6 +112891,15 @@
|
||||
/area/engine/gravity_generator{
|
||||
name = "Atmospherics Engine"
|
||||
})
|
||||
"ehz" = (
|
||||
/obj/structure/chair/office/dark{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
/area/atmos)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaa
|
||||
@@ -139729,7 +139743,7 @@ bqf
|
||||
brq
|
||||
bsD
|
||||
aZq
|
||||
bvu
|
||||
ehz
|
||||
bvu
|
||||
byX
|
||||
aIZ
|
||||
|
||||
@@ -9905,7 +9905,7 @@
|
||||
/area/maintenance/starboard)
|
||||
"arI" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
@@ -23791,9 +23791,6 @@
|
||||
d2 = 4;
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/obj/machinery/computer/monitor{
|
||||
name = "Engineering Power Monitoring Console"
|
||||
},
|
||||
/obj/machinery/status_display{
|
||||
density = 0;
|
||||
layer = 4;
|
||||
@@ -23805,6 +23802,7 @@
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
},
|
||||
/obj/machinery/modular_computer/console/preset/engineering,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/engine/engineering)
|
||||
"aPX" = (
|
||||
@@ -24416,8 +24414,8 @@
|
||||
/area/crew_quarters/locker)
|
||||
"aRa" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/item/clothing/mask/balaclava,
|
||||
/obj/machinery/airalarm{
|
||||
dir = 8;
|
||||
@@ -51223,8 +51221,8 @@
|
||||
dir = 8;
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fpmaint2{
|
||||
name = "Port Maintenance"
|
||||
@@ -51235,8 +51233,8 @@
|
||||
dir = 8;
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fpmaint2{
|
||||
name = "Port Maintenance"
|
||||
@@ -81754,7 +81752,7 @@
|
||||
})
|
||||
"cJY" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/landmark/costume,
|
||||
/obj/effect/spawner/lootdrop/costume,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
name = "2maintenance loot spawner"
|
||||
|
||||
@@ -776,9 +776,10 @@
|
||||
tag = "icon-0-2";
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/turf/open/floor/plating,
|
||||
/obj/machinery/modular_computer/console/preset/command,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
/area/bridge)
|
||||
"abo" = (
|
||||
/turf/open/floor/plasteel/vault{
|
||||
@@ -21889,12 +21890,12 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"aIx" = (
|
||||
/obj/machinery/computer/monitor{
|
||||
name = "Engineering Power Monitoring Console"
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = 38;
|
||||
pixel_y = 24
|
||||
@@ -21907,6 +21908,7 @@
|
||||
req_access_txt = "10"
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/machinery/modular_computer/console/preset/engineering,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"aIy" = (
|
||||
@@ -41983,6 +41985,16 @@
|
||||
},
|
||||
/turf/open/floor/circuit/green,
|
||||
/area/engine/engineering)
|
||||
"buW" = (
|
||||
/obj/structure/cable/white{
|
||||
tag = "icon-0-2";
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/obj/machinery/modular_computer/console/preset/research,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
/area/bridge)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaa
|
||||
@@ -84210,7 +84222,7 @@ aav
|
||||
aaH
|
||||
aaQ
|
||||
abb
|
||||
abn
|
||||
buW
|
||||
abF
|
||||
ack
|
||||
adc
|
||||
|
||||
@@ -45713,13 +45713,11 @@
|
||||
},
|
||||
/area/engine/engineering)
|
||||
"bME" = (
|
||||
/obj/machinery/computer/monitor{
|
||||
name = "Engineering Power Monitoring Console"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2";
|
||||
d2 = 2
|
||||
},
|
||||
/obj/machinery/modular_computer/console/preset/engineering,
|
||||
/turf/open/floor/plasteel/yellow/side{
|
||||
dir = 1
|
||||
},
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
|
||||
//These are all the different status effects. Use the paths for each effect in the defines.
|
||||
|
||||
#define STATUS_EFFECT_MULTIPLE 0 //if it allows multiple instances of the effect
|
||||
|
||||
#define STATUS_EFFECT_UNIQUE 1 //if it allows only one, preventing new instances
|
||||
|
||||
#define STATUS_EFFECT_REPLACE 2 //if it allows only one, but new instances replace
|
||||
|
||||
#define BASIC_STATUS_EFFECT /datum/status_effect //Has no effect.
|
||||
|
||||
///////////
|
||||
|
||||
@@ -214,7 +214,7 @@ Proc for attack log creation, because really why not
|
||||
stoplag()
|
||||
if (progress)
|
||||
progbar.update(world.time - starttime)
|
||||
if(!user || !target)
|
||||
if(QDELETED(user) || QDELETED(target))
|
||||
. = 0
|
||||
break
|
||||
if(uninterruptible)
|
||||
@@ -266,11 +266,11 @@ Proc for attack log creation, because really why not
|
||||
drifting = 0
|
||||
Uloc = user.loc
|
||||
|
||||
if(!user || user.stat || user.weakened || user.stunned || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke()))
|
||||
if(QDELETED(user) || user.stat || user.weakened || user.stunned || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke()))
|
||||
. = 0
|
||||
break
|
||||
|
||||
if(Tloc && (!target || Tloc != target.loc))
|
||||
if(!QDELETED(Tloc) && (QDELETED(target) || Tloc != target.loc))
|
||||
if((Uloc != Tloc || Tloc != user) && !drifting)
|
||||
. = 0
|
||||
break
|
||||
@@ -316,7 +316,7 @@ Proc for attack log creation, because really why not
|
||||
sleep(1)
|
||||
if(progress)
|
||||
progbar.update(world.time - starttime)
|
||||
if(!user || !targets)
|
||||
if(QDELETED(user) || !targets)
|
||||
. = 0
|
||||
break
|
||||
if(uninterruptible)
|
||||
@@ -327,7 +327,7 @@ Proc for attack log creation, because really why not
|
||||
user_loc = user.loc
|
||||
|
||||
for(var/atom/target in targets)
|
||||
if((!drifting && user_loc != user.loc) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
|
||||
if((!drifting && user_loc != user.loc) || QDELETED(target) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
|
||||
. = 0
|
||||
break mainloop
|
||||
if(progbar)
|
||||
|
||||
@@ -81,12 +81,25 @@ SUBSYSTEM_DEF(persistence)
|
||||
var/saved_messages = json_decode(saved_json)
|
||||
|
||||
for(var/item in saved_messages)
|
||||
var/turf/T = locate(item["x"], item["y"], ZLEVEL_STATION)
|
||||
if(!islist(item))
|
||||
continue
|
||||
|
||||
var/xvar = item["x"]
|
||||
var/yvar = item["y"]
|
||||
var/zvar = item["z"]
|
||||
|
||||
if(!xvar || !yvar || !zvar)
|
||||
continue
|
||||
|
||||
var/turf/T = locate(xvar, yvar, zvar)
|
||||
if(!isturf(T))
|
||||
continue
|
||||
|
||||
if(locate(/obj/structure/chisel_message) in T)
|
||||
continue
|
||||
|
||||
var/obj/structure/chisel_message/M = new(T)
|
||||
|
||||
M.unpack(item)
|
||||
if(!M.loc)
|
||||
M.persists = FALSE
|
||||
|
||||
@@ -333,6 +333,10 @@
|
||||
/datum/action/item_action/hands_free/shift_nerves
|
||||
name = "Shift Nerves"
|
||||
|
||||
/datum/action/item_action/explosive_implant
|
||||
check_flags = 0
|
||||
name = "Activate Explosive Implant"
|
||||
|
||||
/datum/action/item_action/toggle_research_scanner
|
||||
name = "Toggle Research Scanner"
|
||||
button_icon_state = "scan_mode"
|
||||
@@ -467,4 +471,4 @@
|
||||
/datum/action/item_action/bhop
|
||||
name = "Activate Jump Boots"
|
||||
desc = "Activates the jump boot's internal propulsion system, allowing the user to dash over 4-wide gaps."
|
||||
button_icon_state = "jetboot"
|
||||
button_icon_state = "jetboot"
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
id = "vanguard"
|
||||
duration = 200
|
||||
tick_interval = 0 //tick as fast as possible
|
||||
status_type = STATUS_EFFECT_REPLACE
|
||||
alert_type = /obj/screen/alert/status_effect/vanguard
|
||||
var/datum/progressbar/progbar
|
||||
|
||||
@@ -58,7 +59,8 @@
|
||||
if(istype(L)) //this is probably more safety than actually needed
|
||||
var/vanguard = L.stun_absorption["vanguard"]
|
||||
desc = initial(desc)
|
||||
desc += "<br><b>[vanguard["stuns_absorbed"] * 2]</b> seconds of stuns held back.<br><b>[round(min(vanguard["stuns_absorbed"] * 0.25, 20)) * 2]</b> seconds of stun will affect you."
|
||||
desc += "<br><b>[vanguard["stuns_absorbed"] * 2]</b> seconds of stuns held back.\
|
||||
[ratvar_awakens ? "":"<br><b>[round(min(vanguard["stuns_absorbed"] * 0.25, 20)) * 2]</b> seconds of stun will affect you."]"
|
||||
..()
|
||||
|
||||
/datum/status_effect/vanguard_shield/Destroy()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/status_effect/freon
|
||||
id = "frozen"
|
||||
duration = 100
|
||||
unique = TRUE
|
||||
status_type = STATUS_EFFECT_UNIQUE
|
||||
alert_type = /obj/screen/alert/status_effect/freon
|
||||
var/icon/cube
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f
|
||||
var/duration = -1 //How long the status effect lasts in DECISECONDS. Enter -1 for an effect that never ends unless removed through some means.
|
||||
var/tick_interval = 10 //How many deciseconds between ticks, approximately. Leave at 10 for every second.
|
||||
var/mob/living/owner //The mob affected by the status effect.
|
||||
var/unique = TRUE //If there can be multiple status effects of this type on one mob.
|
||||
var/status_type = STATUS_EFFECT_UNIQUE //How many of the effect can be on one mob, and what happens when you try to add another
|
||||
var/alert_type = /obj/screen/alert/status_effect //the alert thrown by the status effect, contains name and description
|
||||
|
||||
/datum/status_effect/New(mob/living/new_owner)
|
||||
@@ -57,6 +57,11 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f
|
||||
/datum/status_effect/proc/on_apply() //Called whenever the buff is applied.
|
||||
/datum/status_effect/proc/tick() //Called every tick.
|
||||
/datum/status_effect/proc/on_remove() //Called whenever the buff expires or is removed.
|
||||
/datum/status_effect/proc/be_replaced() //Called instead of on_remove when a status effect is replaced by itself
|
||||
owner.clear_alert(id)
|
||||
LAZYREMOVE(owner.status_effects, src)
|
||||
owner = null
|
||||
qdel(src)
|
||||
|
||||
////////////////
|
||||
// ALERT HOOK //
|
||||
@@ -76,8 +81,11 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f
|
||||
var/datum/status_effect/S1 = effect
|
||||
LAZYINITLIST(status_effects)
|
||||
for(var/datum/status_effect/S in status_effects)
|
||||
if(S.id == initial(S1.id) && initial(S1.unique))
|
||||
return
|
||||
if(S.id == initial(S1.id) && S.status_type)
|
||||
if(S.status_type == STATUS_EFFECT_REPLACE)
|
||||
S.be_replaced()
|
||||
else
|
||||
return
|
||||
S1 = new effect(src)
|
||||
. = S1
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/Bumped(atom/A)
|
||||
..()
|
||||
if(isliving(A) || istype(A, /obj/item))
|
||||
if(A && !QDELETED(A))
|
||||
pass_through_gateway(A)
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/proc/pass_through_gateway(atom/movable/A, no_cost)
|
||||
|
||||
@@ -17,11 +17,20 @@
|
||||
timeout_time = 50
|
||||
|
||||
/datum/clockwork_scripture/ranged_ability/linked_vanguard/check_special_requirements()
|
||||
if(islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time)
|
||||
if(!ratvar_awakens && islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time)
|
||||
to_chat(invoker, "<span class='warning'>You are already shielded by a Vanguard!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/clockwork_scripture/ranged_ability/linked_vanguard/scripture_effects()
|
||||
if(ratvar_awakens) //hey, ratvar's up! give everybody stun immunity.
|
||||
for(var/mob/living/L in view(7, get_turf(invoker)))
|
||||
if(L.stat != DEAD && is_servant_of_ratvar(L))
|
||||
L.apply_status_effect(STATUS_EFFECT_VANGUARD)
|
||||
CHECK_TICK
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
//Judicial Marker: places a judicial marker at a target location
|
||||
/datum/clockwork_scripture/ranged_ability/judicial_marker
|
||||
name = "Judicial Marker"
|
||||
|
||||
@@ -74,13 +74,19 @@
|
||||
quickbind_desc = "Allows you to temporarily absorb stuns. All stuns absorbed will affect you when disabled."
|
||||
|
||||
/datum/clockwork_scripture/vanguard/check_special_requirements()
|
||||
if(islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time)
|
||||
if(!ratvar_awakens && islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time)
|
||||
to_chat(invoker, "<span class='warning'>You are already shielded by a Vanguard!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/clockwork_scripture/vanguard/scripture_effects()
|
||||
invoker.apply_status_effect(STATUS_EFFECT_VANGUARD)
|
||||
if(ratvar_awakens)
|
||||
for(var/mob/living/L in view(7, get_turf(invoker)))
|
||||
if(L.stat != DEAD && is_servant_of_ratvar(L))
|
||||
L.apply_status_effect(STATUS_EFFECT_VANGUARD)
|
||||
CHECK_TICK
|
||||
else
|
||||
invoker.apply_status_effect(STATUS_EFFECT_VANGUARD)
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
active_apc.update_icon()
|
||||
active_apc = null
|
||||
|
||||
/obj/machinery/computer/apc_control/attack_ai(mob/living/AI) //You already have APC access, cheater!
|
||||
AI << "<span class='warning'>[src] does not support AI control.</span>"
|
||||
return
|
||||
/obj/machinery/computer/apc_control/attack_ai(mob/living/AI)
|
||||
if(!IsAdminGhost(src))
|
||||
to_chat(AI,"<span class='warning'>[src] does not support AI control.</span>") //You already have APC access, cheater!
|
||||
return
|
||||
..(AI)
|
||||
|
||||
/obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC)
|
||||
return APC.z == z && !APC.malfhack && !APC.aidisabled && !APC.emagged && !APC.stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
/obj/item/toy/redbutton = 2,
|
||||
/obj/item/toy/talking/owl = 2,
|
||||
/obj/item/toy/talking/griffin = 2,
|
||||
/obj/item/toy/talking/skeleton = 2,
|
||||
/obj/item/weapon/coin/antagtoken = 2,
|
||||
/obj/item/stack/tile/fakespace/loaded = 2,
|
||||
/obj/item/stack/tile/fakepit/loaded = 2,
|
||||
|
||||
@@ -12,7 +12,7 @@ var/const/SAFETY_COOLDOWN = 100
|
||||
var/icon_name = "grinder-o"
|
||||
var/blood = 0
|
||||
var/eat_dir = WEST
|
||||
var/amount_produced = 1
|
||||
var/amount_produced = 50
|
||||
var/datum/material_container/materials
|
||||
var/crush_damage = 1000
|
||||
var/eat_victim_items = TRUE
|
||||
@@ -40,9 +40,9 @@ var/const/SAFETY_COOLDOWN = 100
|
||||
mat_mod = 2 * B.rating
|
||||
mat_mod *= 50000
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
|
||||
amt_made = 25 * M.rating //% of materials salvaged
|
||||
amt_made = 12.5 * M.rating //% of materials salvaged
|
||||
materials.max_amount = mat_mod
|
||||
amount_produced = min(100, amt_made)
|
||||
amount_produced = min(50, amt_made) + 50
|
||||
|
||||
/obj/machinery/recycler/examine(mob/user)
|
||||
..()
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
light_color = LIGHT_COLOR_BROWN
|
||||
|
||||
/obj/machinery/computer/slot_machine/New()
|
||||
/obj/machinery/computer/slot_machine/Initialize()
|
||||
..()
|
||||
jackpots = rand(1, 4) //false hope
|
||||
plays = rand(75, 200)
|
||||
@@ -47,9 +47,8 @@
|
||||
toggle_reel_spin(0)
|
||||
|
||||
for(var/cointype in typesof(/obj/item/weapon/coin))
|
||||
var/obj/item/weapon/coin/C = new cointype(src)
|
||||
coinvalues["[cointype]"] = C.value
|
||||
qdel(C)
|
||||
var/obj/item/weapon/coin/C = cointype
|
||||
coinvalues["[cointype]"] = initial(C.value)
|
||||
|
||||
/obj/machinery/computer/slot_machine/Destroy()
|
||||
if(balance)
|
||||
|
||||
@@ -528,6 +528,7 @@
|
||||
if(icon_vend) //Show the vending animation if needed
|
||||
flick(icon_vend,src)
|
||||
new R.product_path(get_turf(src))
|
||||
feedback_add_details("vending_machine_usage","[R.product_path]|[src.type]")
|
||||
vend_ready = 1
|
||||
return
|
||||
|
||||
|
||||
@@ -84,153 +84,6 @@
|
||||
start_landmarks_list -= src
|
||||
return ..()
|
||||
|
||||
//Costume spawner landmarks
|
||||
|
||||
/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
|
||||
|
||||
var/list/options = typesof(/obj/effect/landmark/costume)
|
||||
var/PICK= options[rand(1,options.len)]
|
||||
new PICK(src.loc)
|
||||
qdel(src)
|
||||
|
||||
//SUBCLASSES. Spawn a bunch of items and disappear likewise
|
||||
/obj/effect/landmark/costume/chicken/New()
|
||||
new /obj/item/clothing/suit/chickensuit(src.loc)
|
||||
new /obj/item/clothing/head/chicken(src.loc)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/egg(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/gladiator/New()
|
||||
new /obj/item/clothing/under/gladiator(src.loc)
|
||||
new /obj/item/clothing/head/helmet/gladiator(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/madscientist/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/suit/toggle/labcoat/mad(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/elpresidente/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc)
|
||||
new /obj/item/clothing/shoes/jackboots(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/nyangirl/New()
|
||||
new /obj/item/clothing/under/schoolgirl(src.loc)
|
||||
new /obj/item/clothing/head/kitty(src.loc)
|
||||
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/maid/New()
|
||||
new /obj/item/clothing/under/skirt/black(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/butler/New()
|
||||
new /obj/item/clothing/tie/waistcoat(src.loc)
|
||||
new /obj/item/clothing/under/suit_jacket(src.loc)
|
||||
new /obj/item/clothing/head/that(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/highlander/New()
|
||||
new /obj/item/clothing/under/kilt(src.loc)
|
||||
new /obj/item/clothing/head/beret(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/prig/New()
|
||||
new /obj/item/clothing/tie/waistcoat(src.loc)
|
||||
new /obj/item/clothing/glasses/monocle(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/shoes/sneakers/black(src.loc)
|
||||
new /obj/item/weapon/cane(src.loc)
|
||||
new /obj/item/clothing/under/sl_suit(src.loc)
|
||||
new /obj/item/clothing/mask/fakemoustache(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/plaguedoctor/New()
|
||||
new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
|
||||
new /obj/item/clothing/head/plaguedoctorhat(src.loc)
|
||||
new /obj/item/clothing/mask/gas/plaguedoctor(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/nightowl/New()
|
||||
new /obj/item/clothing/suit/toggle/owlwings(src.loc)
|
||||
new /obj/item/clothing/under/owl(src.loc)
|
||||
new /obj/item/clothing/mask/gas/owl_mask(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/thegriffin/New()
|
||||
new /obj/item/clothing/suit/toggle/owlwings/griffinwings(src.loc)
|
||||
new /obj/item/clothing/shoes/griffin(src.loc)
|
||||
new /obj/item/clothing/under/griffin(src.loc)
|
||||
new /obj/item/clothing/head/griffin(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/waiter/New()
|
||||
new /obj/item/clothing/under/waiter(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/suit/apron(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/pirate/New()
|
||||
new /obj/item/clothing/under/pirate(src.loc)
|
||||
new /obj/item/clothing/suit/pirate(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/eyepatch(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/commie/New()
|
||||
new /obj/item/clothing/under/soviet(src.loc)
|
||||
new /obj/item/clothing/head/ushanka(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/imperium_monk/New()
|
||||
new /obj/item/clothing/suit/imperium_monk(src.loc)
|
||||
if (prob(25))
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/holiday_priest/New()
|
||||
new /obj/item/clothing/suit/holidaypriest(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/marisawizard/fake/New()
|
||||
new /obj/item/clothing/shoes/sandal/marisa(src.loc)
|
||||
new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/cutewitch/New()
|
||||
new /obj/item/clothing/under/sundress(src.loc)
|
||||
new /obj/item/clothing/head/witchwig(src.loc)
|
||||
new /obj/item/weapon/staff/broom(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/fakewizard/New()
|
||||
new /obj/item/clothing/shoes/sandal(src.loc)
|
||||
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
|
||||
new /obj/item/clothing/head/wizard/fake(src.loc)
|
||||
new /obj/item/weapon/staff/(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexyclown/New()
|
||||
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
|
||||
new /obj/item/clothing/under/rank/clown/sexy(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexymime/New()
|
||||
new /obj/item/clothing/mask/gas/sexymime(src.loc)
|
||||
new /obj/item/clothing/under/sexymime(src.loc)
|
||||
qdel(src)
|
||||
|
||||
//Department Security spawns
|
||||
|
||||
/obj/effect/landmark/start/depsec
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
/obj/effect/spawner/bundle
|
||||
name = "bundle spawner"
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "x2"
|
||||
color = "#00FF00"
|
||||
|
||||
var/list/items
|
||||
|
||||
/obj/effect/spawner/bundle/Initialize(mapload)
|
||||
..()
|
||||
if(items && items.len)
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/path in items)
|
||||
new path(T)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/chicken
|
||||
name = "chicken costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/chickensuit,
|
||||
/obj/item/clothing/head/chicken,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/gladiator
|
||||
name = "gladitator costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/gladiator,
|
||||
/obj/item/clothing/head/helmet/gladiator)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/madscientist
|
||||
name = "mad scientist costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit,
|
||||
/obj/item/clothing/head/flatcap,
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/elpresidente
|
||||
name = "el presidente costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit,
|
||||
/obj/item/clothing/head/flatcap,
|
||||
/obj/item/clothing/mask/cigarette/cigar/havana,
|
||||
/obj/item/clothing/shoes/jackboots)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/nyangirl
|
||||
name = "nyangirl costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/schoolgirl,
|
||||
/obj/item/clothing/head/kitty,
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/maid
|
||||
name = "maid costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/skirt/black,
|
||||
/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears,
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold)
|
||||
|
||||
|
||||
/obj/effect/spawner/bundle/costume/butler
|
||||
name = "butler costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/tie/waistcoat,
|
||||
/obj/item/clothing/under/suit_jacket,
|
||||
/obj/item/clothing/head/that)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/highlander
|
||||
name = "highlander costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/kilt,
|
||||
/obj/item/clothing/head/beret)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/prig
|
||||
name = "prig costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/tie/waistcoat,
|
||||
/obj/item/clothing/glasses/monocle,
|
||||
/obj/effect/spawner/lootdrop/minor/bowler_or_that,
|
||||
/obj/item/clothing/shoes/sneakers/black,
|
||||
/obj/item/weapon/cane,
|
||||
/obj/item/clothing/under/sl_suit,
|
||||
/obj/item/clothing/mask/fakemoustache)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/plaguedoctor
|
||||
name = "plague doctor costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit,
|
||||
/obj/item/clothing/head/plaguedoctorhat,
|
||||
/obj/item/clothing/mask/gas/plaguedoctor)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/nightowl
|
||||
name = "night owl costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/toggle/owlwings,
|
||||
/obj/item/clothing/under/owl,
|
||||
/obj/item/clothing/mask/gas/owl_mask)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/griffin
|
||||
name = "griffin costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/toggle/owlwings/griffinwings,
|
||||
/obj/item/clothing/shoes/griffin,
|
||||
/obj/item/clothing/under/griffin,
|
||||
/obj/item/clothing/head/griffin)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/waiter
|
||||
name = "waiter costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/waiter,
|
||||
/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears,
|
||||
/obj/item/clothing/suit/apron)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/pirate
|
||||
name = "pirate costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/pirate,
|
||||
/obj/item/clothing/suit/pirate,
|
||||
/obj/effect/spawner/lootdrop/minor/pirate_or_bandana,
|
||||
/obj/item/clothing/glasses/eyepatch)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/commie
|
||||
name = "commie costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/soviet,
|
||||
/obj/item/clothing/head/ushanka)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/imperium_monk
|
||||
name = "imperium monk costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/imperium_monk,
|
||||
/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/holiday_priest
|
||||
name = "holiday priest costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/holidaypriest)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/marisawizard
|
||||
name = "marisa wizard costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/shoes/sandal/marisa,
|
||||
/obj/item/clothing/head/wizard/marisa/fake,
|
||||
/obj/item/clothing/suit/wizrobe/marisa/fake)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/cutewitch
|
||||
name = "cute witch costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/sundress,
|
||||
/obj/item/clothing/head/witchwig,
|
||||
/obj/item/weapon/staff/broom)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/wizard
|
||||
name = "wizard costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/suit/wizrobe/fake,
|
||||
/obj/item/clothing/head/wizard/fake,
|
||||
/obj/item/weapon/staff)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/sexyclown
|
||||
name = "sexy clown costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/mask/gas/sexyclown,
|
||||
/obj/item/clothing/under/rank/clown/sexy)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/sexymime
|
||||
name = "sexy mime costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/mask/gas/sexymime,
|
||||
/obj/item/clothing/under/sexymime)
|
||||
@@ -3,24 +3,27 @@
|
||||
icon_state = "x2"
|
||||
color = "#00FF00"
|
||||
var/lootcount = 1 //how many items will be spawned
|
||||
var/lootdoubles = 1 //if the same item can be spawned twice
|
||||
var/lootdoubles = TRUE //if the same item can be spawned twice
|
||||
var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect)
|
||||
|
||||
/obj/effect/spawner/lootdrop/New()
|
||||
/obj/effect/spawner/lootdrop/Initialize(mapload)
|
||||
..()
|
||||
|
||||
if(loot && loot.len)
|
||||
for(var/i = lootcount, i > 0, i--)
|
||||
if(!loot.len) break
|
||||
var/turf/T = get_turf(src)
|
||||
while(lootcount && loot.len)
|
||||
var/lootspawn = pickweight(loot)
|
||||
if(!lootdoubles)
|
||||
loot.Remove(lootspawn)
|
||||
|
||||
if(lootspawn)
|
||||
new lootspawn(get_turf(src))
|
||||
new lootspawn(T)
|
||||
lootcount--
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/lootdrop/armory_contraband
|
||||
name = "armory contraband gun spawner"
|
||||
lootdoubles = 0
|
||||
lootdoubles = FALSE
|
||||
|
||||
loot = list(
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol = 8,
|
||||
@@ -144,7 +147,7 @@
|
||||
/obj/item/weapon/wirecutters = 1,
|
||||
/obj/item/weapon/wrench = 4,
|
||||
/obj/item/weapon/relic = 3,
|
||||
/obj/item/weaponcrafting/reciever = 2,
|
||||
/obj/item/weaponcrafting/receiver = 2,
|
||||
/obj/item/clothing/head/cone = 2,
|
||||
/obj/item/weapon/grenade/smokebomb = 2,
|
||||
/obj/item/device/geiger_counter = 3,
|
||||
@@ -165,7 +168,7 @@
|
||||
|
||||
/obj/effect/spawner/lootdrop/crate_spawner
|
||||
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
|
||||
lootdoubles = 0
|
||||
lootdoubles = FALSE
|
||||
|
||||
loot = list(
|
||||
/obj/structure/closet/crate/secure/loot = 20,
|
||||
@@ -194,3 +197,44 @@
|
||||
loot = list(
|
||||
/obj/effect/decal/remains/xeno = 49,
|
||||
/obj/effect/spawner/xeno_egg_delivery = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/costume
|
||||
name = "random costume spawner"
|
||||
|
||||
/obj/effect/spawner/lootdrop/costume/Initialize()
|
||||
loot = list()
|
||||
for(var/path in subtypesof(/obj/effect/spawner/bundle/costume))
|
||||
loot[path] = TRUE
|
||||
..()
|
||||
|
||||
// Minor lootdrops follow
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears
|
||||
name = "beret or rabbit ears spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/beret = 1,
|
||||
/obj/item/clothing/head/rabbitears = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/bowler_or_that
|
||||
name = "bowler or top hat spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/bowler = 1,
|
||||
/obj/item/clothing/head/that = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears
|
||||
name = "kitty ears or rabbit ears spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/kitty = 1,
|
||||
/obj/item/clothing/head/rabbitears = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/pirate_or_bandana
|
||||
name = "pirate hat or bandana spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/pirate = 1,
|
||||
/obj/item/clothing/head/bandana = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask
|
||||
name = "25% cyborg mask spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/mask/gas/cyborg = 25,
|
||||
"" = 75)
|
||||
|
||||
@@ -721,7 +721,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/mob/M = loc
|
||||
M.put_in_hands(inserted_item)
|
||||
else
|
||||
inserted_item.forceMove(loc)
|
||||
inserted_item.forceMove(get_turf(src))
|
||||
to_chat(usr, "<span class='notice'>You remove \the [inserted_item] from \the [src].</span>")
|
||||
inserted_item = null
|
||||
update_icon()
|
||||
|
||||
@@ -300,7 +300,9 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/radio/headset/AltClick(mob/user)
|
||||
/obj/item/device/radio/headset/AltClick(mob/living/user)
|
||||
if(!istype(user) || !Adjacent(user) || user.incapacitated())
|
||||
return
|
||||
if (command)
|
||||
use_command = !use_command
|
||||
to_chat(user, "<span class='notice'>You toggle high-volume mode.</span>")
|
||||
to_chat(user, "<span class='notice'>You toggle high-volume mode [use_command ? "on" : "off"].</span>")
|
||||
@@ -554,81 +554,6 @@
|
||||
chattering = TRUE
|
||||
phomeme = "griffin"
|
||||
|
||||
/obj/item/toy/talking/skeleton
|
||||
name = "skeleton action figure"
|
||||
desc = "An action figure modeled after 'Oh-cee', the original content \
|
||||
skeleton.\nNot suitable for infants or assistants under 36 months \
|
||||
of age."
|
||||
icon_state = "skeletonprize"
|
||||
attack_verb = list("boned", "dunked on", "worked down to the bone")
|
||||
chattering = TRUE
|
||||
|
||||
var/list/regular_messages = list(
|
||||
"Why was the skeleton such a bad liar? \
|
||||
Because you can see right through him!",
|
||||
"When does a skeleton laugh? When something tickles his funny bone!",
|
||||
"Why couldn't the skeleton win the beauty contest? \
|
||||
Because he had no body!",
|
||||
"What do you call a skeleton in the winter? A numbskull!",
|
||||
"What did the skeleton say before eating? Bone appetit!",
|
||||
"What type of art do skeletons like? Skulltures!",
|
||||
"What instrument do skeletons play? The trom-bone!",
|
||||
"Why are skeletons always so calm? \
|
||||
Because nothing gets under their skin!",
|
||||
"How did the skeleton know it was going to rain? \
|
||||
He could feel it in his bones.",
|
||||
"Why did the skeleton go to the hospital? \
|
||||
To get his ghoul stones removed.",
|
||||
"Why can't skeletons play music in churches? \
|
||||
Because they have no organs.",
|
||||
"There's a skeleton inside everyone! Except slime people I guess...",
|
||||
"The birds are too busy to notice me acting in the shadows!",
|
||||
"Giraffes have the same number of bones in their necks as humans. \
|
||||
You should never trust a giraffe.",
|
||||
"When I meet a dog in the street, I always offer it a bone!",
|
||||
"In corsetry, a bone is one of the rigid parts of a corset that \
|
||||
forms its frame and gives it rigidity.",
|
||||
"A person who plays the trombone is called a trombonist or \
|
||||
trombone player.",
|
||||
"Remember, compromise is for those without backbones!",
|
||||
"If you go up to the captain and say the word 'bone' repeatedly, \
|
||||
eventually he'll brig you.",
|
||||
"Yo ho ho, shiver me bones!",
|
||||
"So what you're saying is, you only love me for my legs?",
|
||||
"You will never again find socks that match!",
|
||||
"BONES! BONES! BONES!",
|
||||
"Bones absorb x-rays, which is why radiation gives you superpowers.",
|
||||
"Oh-cee! The ORIGINAL CONTENT SKELETON. Suitable for ages 36 months \
|
||||
and up.",
|
||||
"I just don't have the heart to judge you.",
|
||||
"I don't have the stomach for this.",
|
||||
"I'm a fighter, not a liver.",
|
||||
"How can I see without eyeballs?",
|
||||
"Ask your parents about 'boning', before you get pregnant.",
|
||||
"Remember, a dog is for life, not just for christmas.")
|
||||
|
||||
/obj/item/toy/talking/skeleton/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is trying to commit suicide with [src].</span>")
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.set_species(/datum/species/skeleton)
|
||||
|
||||
toy_talk(user, "RATTLE ME BONES")
|
||||
|
||||
user.Stun(5)
|
||||
sleep(20)
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/toy/talking/skeleton/generate_messages()
|
||||
return list(pick(regular_messages))
|
||||
|
||||
/obj/item/toy/talking/skeleton/toy_talk(user, message)
|
||||
phomeme = pick("sans", "papyrus")
|
||||
|
||||
span = "danger [phomeme]"
|
||||
..()
|
||||
|
||||
/*
|
||||
|| A Deck of Cards for playing various games of chance ||
|
||||
*/
|
||||
|
||||
@@ -3,10 +3,13 @@
|
||||
desc = "And boom goes the weasel."
|
||||
icon_state = "explosive"
|
||||
origin_tech = "materials=2;combat=3;biotech=4;syndicate=4"
|
||||
actions_types = list(/datum/action/item_action/explosive_implant)
|
||||
// Explosive implant action is always availible.
|
||||
var/weak = 2
|
||||
var/medium = 0.8
|
||||
var/heavy = 0.4
|
||||
var/delay = 7
|
||||
var/popup = FALSE // is the DOUWANNABLOWUP window open?
|
||||
|
||||
/obj/item/weapon/implant/explosive/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
@@ -27,8 +30,12 @@
|
||||
/obj/item/weapon/implant/explosive/activate(cause)
|
||||
if(!cause || !imp_in)
|
||||
return 0
|
||||
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to explode!", "[name] Confirmation", "Yes", "No") != "Yes")
|
||||
return 0
|
||||
if(cause == "action_button" || !popup)
|
||||
popup = TRUE
|
||||
var/response = alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to explode!", "[name] Confirmation", "Yes", "No")
|
||||
popup = FALSE
|
||||
if(response == "No")
|
||||
return 0
|
||||
heavy = round(heavy)
|
||||
medium = round(medium)
|
||||
weak = round(weak)
|
||||
|
||||
@@ -81,7 +81,11 @@
|
||||
|
||||
/obj/structure/flora/tree/jungle
|
||||
name = "tree"
|
||||
icon_state = "tree"
|
||||
desc = "It's seriously hampering your view of the jungle."
|
||||
icon = 'icons/obj/flora/jungletrees.dmi'
|
||||
pixel_x = -48
|
||||
pixel_y = -20
|
||||
|
||||
/obj/structure/flora/tree/jungle/Initialize()
|
||||
icon_state = "[icon_state][rand(1, 3)]"
|
||||
@@ -335,12 +339,13 @@
|
||||
/obj/structure/flora/rock/jungle
|
||||
icon_state = "pile of rocks"
|
||||
desc = "A pile of rocks."
|
||||
icon_state = "rocks"
|
||||
icon = 'icons/obj/flora/jungleflora.dmi'
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/flora/rock/jungle/Initialize()
|
||||
..()
|
||||
icon_state = "[icon_state][rand(1,5)]"
|
||||
icon_state = "[initial(icon_state)][rand(1,5)]"
|
||||
|
||||
|
||||
//Jungle bushes
|
||||
@@ -364,9 +369,17 @@
|
||||
icon_state = "bush"
|
||||
icon = 'icons/obj/flora/largejungleflora.dmi'
|
||||
pixel_x = -16
|
||||
pixel_y = -12
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
|
||||
/obj/structure/flora/rock/pile/largejungle
|
||||
name = "rocks"
|
||||
icon_state = "rocks"
|
||||
icon = 'icons/obj/flora/largejungleflora.dmi'
|
||||
density = FALSE
|
||||
pixel_x = -16
|
||||
pixel_y = -16
|
||||
|
||||
/obj/structure/flora/rock/jungle/Initialize()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
@@ -9,7 +9,7 @@
|
||||
obj_integrity = 50
|
||||
max_integrity = 50
|
||||
layer = LATTICE_LAYER //under pipes
|
||||
var/obj/item/stack/rods/stored
|
||||
var/number_of_rods = 1
|
||||
canSmoothWith = list(/obj/structure/lattice,
|
||||
/turf/open/floor,
|
||||
/turf/closed/wall,
|
||||
@@ -17,26 +17,20 @@
|
||||
smooth = SMOOTH_MORE
|
||||
// flags = CONDUCT
|
||||
|
||||
/obj/structure/lattice/New()
|
||||
/obj/structure/lattice/Initialize(mapload)
|
||||
..()
|
||||
for(var/obj/structure/lattice/LAT in src.loc)
|
||||
for(var/obj/structure/lattice/LAT in loc)
|
||||
if(LAT != src)
|
||||
qdel(LAT)
|
||||
stored = new/obj/item/stack/rods(src)
|
||||
|
||||
/obj/structure/lattice/Destroy()
|
||||
qdel(stored)
|
||||
stored = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/lattice/blob_act(obj/structure/blob/B)
|
||||
return
|
||||
|
||||
/obj/structure/lattice/ratvar_act()
|
||||
if(IsEven(x + y))
|
||||
new/obj/structure/lattice/clockwork(loc)
|
||||
new /obj/structure/lattice/clockwork(loc)
|
||||
else
|
||||
new/obj/structure/lattice/clockwork/large(loc)
|
||||
new /obj/structure/lattice/clockwork/large(loc)
|
||||
|
||||
/obj/structure/lattice/attackby(obj/item/C, mob/user, params)
|
||||
if(istype(C, /obj/item/weapon/wirecutters))
|
||||
@@ -48,8 +42,7 @@
|
||||
|
||||
/obj/structure/lattice/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
stored.forceMove(get_turf(src))
|
||||
stored = null
|
||||
new /obj/item/stack/rods(get_turf(src), amount=number_of_rods)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/lattice/singularity_pull(S, current_size)
|
||||
@@ -61,15 +54,15 @@
|
||||
desc = "A lightweight support lattice. These hold the Justicar's station together."
|
||||
icon = 'icons/obj/smooth_structures/lattice_clockwork.dmi'
|
||||
|
||||
/obj/structure/lattice/clockwork/New()
|
||||
/obj/structure/lattice/clockwork/Initialize(mapload)
|
||||
..()
|
||||
ratvar_act()
|
||||
|
||||
/obj/structure/lattice/clockwork/ratvar_act()
|
||||
if(IsOdd(x+y))
|
||||
new/obj/structure/lattice/clockwork/large(loc)
|
||||
new /obj/structure/lattice/clockwork/large(loc) // deletes old one
|
||||
|
||||
/obj/structure/lattice/clockwork/large/New()
|
||||
/obj/structure/lattice/clockwork/large/Initialize(mapload)
|
||||
..()
|
||||
icon = 'icons/obj/smooth_structures/lattice_clockwork_large.dmi'
|
||||
pixel_x = -9
|
||||
@@ -77,7 +70,7 @@
|
||||
|
||||
/obj/structure/lattice/clockwork/large/ratvar_act()
|
||||
if(IsEven(x + y))
|
||||
new/obj/structure/lattice/clockwork(loc)
|
||||
new /obj/structure/lattice/clockwork(loc)
|
||||
|
||||
/obj/structure/lattice/catwalk
|
||||
name = "catwalk"
|
||||
@@ -87,13 +80,12 @@
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = null
|
||||
|
||||
/obj/structure/lattice/catwalk/New()
|
||||
/obj/structure/lattice/catwalk/Initialize(mapload)
|
||||
..()
|
||||
stored.amount++
|
||||
stored.update_icon()
|
||||
number_of_rods++
|
||||
|
||||
/obj/structure/lattice/catwalk/ratvar_act()
|
||||
new/obj/structure/lattice/catwalk/clockwork(loc)
|
||||
new /obj/structure/lattice/catwalk/clockwork(loc)
|
||||
|
||||
/obj/structure/lattice/catwalk/Move()
|
||||
var/turf/T = loc
|
||||
@@ -111,7 +103,7 @@
|
||||
name = "clockwork catwalk"
|
||||
icon = 'icons/obj/smooth_structures/catwalk_clockwork.dmi'
|
||||
|
||||
/obj/structure/lattice/catwalk/clockwork/New()
|
||||
/obj/structure/lattice/catwalk/clockwork/Initialize(mapload)
|
||||
..()
|
||||
new /obj/effect/overlay/temp/ratvar/floor/catwalk(loc)
|
||||
new /obj/effect/overlay/temp/ratvar/beam/catwalk(loc)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/structure/trap
|
||||
name = "IT'S A TARP"
|
||||
name = "IT'S A TRAP"
|
||||
desc = "stepping on me is a guaranteed bad day"
|
||||
icon = 'icons/obj/hand_of_god_structures.dmi'
|
||||
icon_state = "trap"
|
||||
|
||||
@@ -1592,7 +1592,6 @@
|
||||
/obj/item/toy/talking/AI,
|
||||
/obj/item/toy/talking/owl,
|
||||
/obj/item/toy/talking/griffin,
|
||||
/obj/item/toy/talking/skeleton,
|
||||
/obj/item/toy/nuke,
|
||||
/obj/item/toy/minimeteor,
|
||||
/obj/item/toy/carpplushie,
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
// PARTS //
|
||||
|
||||
/obj/item/weaponcrafting/reciever
|
||||
/obj/item/weaponcrafting/receiver
|
||||
name = "modular receiver"
|
||||
desc = "A prototype modular receiver and trigger assembly for a firearm."
|
||||
icon = 'icons/obj/improvised.dmi'
|
||||
icon_state = "reciever"
|
||||
icon_state = "receiver"
|
||||
|
||||
/obj/item/weaponcrafting/stock
|
||||
name = "rifle stock"
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
/datum/crafting_recipe/ishotgun
|
||||
name = "Improvised Shotgun"
|
||||
result = /obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised
|
||||
reqs = list(/obj/item/weaponcrafting/reciever = 1,
|
||||
reqs = list(/obj/item/weaponcrafting/receiver = 1,
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/weaponcrafting/stock = 1,
|
||||
/obj/item/stack/packageWrap = 5)
|
||||
|
||||
@@ -192,10 +192,14 @@
|
||||
var/turf/T = get_turf(src)
|
||||
data["x"] = T.x
|
||||
data["y"] = T.y
|
||||
data["z"] = T.z
|
||||
data["like_keys"] = like_keys
|
||||
data["dislike_keys"] = dislike_keys
|
||||
|
||||
/obj/structure/chisel_message/proc/unpack(list/data)
|
||||
if(!islist(data))
|
||||
return
|
||||
|
||||
hidden_message = data["hidden_message"]
|
||||
creator_name = data["creator_name"]
|
||||
creator_key = data["creator_key"]
|
||||
@@ -209,8 +213,10 @@
|
||||
|
||||
var/x = data["x"]
|
||||
var/y = data["y"]
|
||||
var/turf/newloc = locate(x, y, ZLEVEL_STATION)
|
||||
forceMove(newloc)
|
||||
var/z = data["z"]
|
||||
var/turf/newloc = locate(x, y, z)
|
||||
if(isturf(newloc))
|
||||
forceMove(newloc)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/chisel_message/examine(mob/user)
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
explosion(src.loc,-1,1,3,adminlog = notify_admins)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/ore/New()
|
||||
/obj/item/weapon/ore/Initialize()
|
||||
..()
|
||||
pixel_x = rand(0,16)-8
|
||||
pixel_y = rand(0,8)-8
|
||||
@@ -297,68 +297,73 @@
|
||||
var/cooldown = 0
|
||||
var/value = 1
|
||||
|
||||
/obj/item/weapon/coin/New()
|
||||
/obj/item/weapon/coin/Initialize()
|
||||
..()
|
||||
pixel_x = rand(0,16)-8
|
||||
pixel_y = rand(0,8)-8
|
||||
|
||||
icon_state = "coin_[cmineral]_heads"
|
||||
if(cmineral)
|
||||
name = "[cmineral] coin"
|
||||
|
||||
/obj/item/weapon/coin/examine(mob/user)
|
||||
..()
|
||||
if(value)
|
||||
to_chat(user, "<span class='info'>It's worth [value] credit\s.</span>")
|
||||
|
||||
/obj/item/weapon/coin/gold
|
||||
name = "gold coin"
|
||||
cmineral = "gold"
|
||||
icon_state = "coin_gold_heads"
|
||||
value = 50
|
||||
materials = list(MAT_GOLD = MINERAL_MATERIAL_AMOUNT*0.2)
|
||||
|
||||
/obj/item/weapon/coin/silver
|
||||
name = "silver coin"
|
||||
cmineral = "silver"
|
||||
icon_state = "coin_silver_heads"
|
||||
value = 20
|
||||
materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2)
|
||||
|
||||
/obj/item/weapon/coin/diamond
|
||||
name = "diamond coin"
|
||||
cmineral = "diamond"
|
||||
icon_state = "coin_diamond_heads"
|
||||
value = 500
|
||||
materials = list(MAT_DIAMOND = MINERAL_MATERIAL_AMOUNT*0.2)
|
||||
|
||||
/obj/item/weapon/coin/iron
|
||||
name = "iron coin"
|
||||
cmineral = "iron"
|
||||
icon_state = "coin_iron_heads"
|
||||
value = 1
|
||||
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2)
|
||||
|
||||
/obj/item/weapon/coin/plasma
|
||||
name = "plasma coin"
|
||||
cmineral = "plasma"
|
||||
icon_state = "coin_plasma_heads"
|
||||
value = 100
|
||||
materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT*0.2)
|
||||
|
||||
/obj/item/weapon/coin/uranium
|
||||
name = "uranium coin"
|
||||
cmineral = "uranium"
|
||||
icon_state = "coin_uranium_heads"
|
||||
value = 80
|
||||
materials = list(MAT_URANIUM = MINERAL_MATERIAL_AMOUNT*0.2)
|
||||
|
||||
/obj/item/weapon/coin/clown
|
||||
name = "bananium coin"
|
||||
cmineral = "bananium"
|
||||
icon_state = "coin_bananium_heads"
|
||||
value = 1000 //makes the clown cry
|
||||
materials = list(MAT_BANANIUM = MINERAL_MATERIAL_AMOUNT*0.2)
|
||||
|
||||
/obj/item/weapon/coin/adamantine
|
||||
name = "adamantine coin"
|
||||
cmineral = "adamantine"
|
||||
icon_state = "coin_adamantine_heads"
|
||||
value = 1500
|
||||
|
||||
/obj/item/weapon/coin/mythril
|
||||
name = "mythril coin"
|
||||
cmineral = "mythril"
|
||||
icon_state = "coin_mythril_heads"
|
||||
value = 3000
|
||||
@@ -379,9 +384,6 @@
|
||||
sideslist = list("valid", "salad")
|
||||
value = 0
|
||||
|
||||
/obj/item/weapon/coin/antagtoken/New()
|
||||
return
|
||||
|
||||
/obj/item/weapon/coin/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/CC = W
|
||||
@@ -411,12 +413,12 @@
|
||||
else ..()
|
||||
|
||||
/obj/item/weapon/coin/attack_self(mob/user)
|
||||
if(cooldown < world.time - 15)
|
||||
if(cooldown > world.time)
|
||||
if(string_attached) //does the coin have a wire attached
|
||||
to_chat(user, "<span class='warning'>The coin won't flip very well with something attached!</span>" )
|
||||
return //do not flip the coin
|
||||
var/coinflip = pick(sideslist)
|
||||
cooldown = world.time
|
||||
cooldown = world.time + 15
|
||||
flick("coin_[cmineral]_flip", src)
|
||||
icon_state = "coin_[cmineral]_[coinflip]"
|
||||
playsound(user.loc, 'sound/items/coinflip.ogg', 50, 1)
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS)
|
||||
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs")
|
||||
mutant_organs = list(/obj/item/organ/tongue/lizard)
|
||||
coldmod = 1.5
|
||||
heatmod = 0.67
|
||||
default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs")
|
||||
attack_verb = "slash"
|
||||
attack_sound = 'sound/weapons/slash.ogg'
|
||||
@@ -38,4 +40,4 @@
|
||||
name = "Ash Walker"
|
||||
id = "ashlizard"
|
||||
limbs_id = "lizard"
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,DIGITIGRADE)
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,DIGITIGRADE)
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
M.emote("scream")
|
||||
|
||||
/datum/reagent/blob/blazing_oil/extinguish_reaction(obj/structure/blob/B)
|
||||
B.take_damage(rand(1, 3), BURN, "energy")
|
||||
B.take_damage(1.5, BURN, "energy")
|
||||
|
||||
/datum/reagent/blob/blazing_oil/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag)
|
||||
if(damage_type == BURN && damage_flag != "energy")
|
||||
|
||||
@@ -616,6 +616,14 @@
|
||||
build_path = /obj/item/weapon/restraints/handcuffs
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/receiver
|
||||
name = "Modular Receiver"
|
||||
id = "reciever"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 15000)
|
||||
build_path = /obj/item/weaponcrafting/receiver
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/shotgun_slug
|
||||
name = "Shotgun slug"
|
||||
id = "shotgun_slug"
|
||||
|
||||
@@ -177,16 +177,6 @@
|
||||
build_path = /obj/item/weapon/gun/energy/wormhole_projector
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/reciever
|
||||
name = "Modular Receiver"
|
||||
desc = "A prototype modular receiver and trigger assembly for a variety of firearms."
|
||||
id = "reciever"
|
||||
req_tech = list("combat" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6500, MAT_SILVER = 500)
|
||||
build_path = /obj/item/weaponcrafting/reciever
|
||||
category = list("Weapons")
|
||||
|
||||
//WT550 Mags
|
||||
|
||||
/datum/design/mag_oldsmg
|
||||
|
||||
@@ -66,12 +66,12 @@
|
||||
|
||||
/obj/docking_port/mobile/arrivals/check()
|
||||
. = ..()
|
||||
|
||||
|
||||
if(perma_docked)
|
||||
if(mode != SHUTTLE_CALL)
|
||||
sound_played = FALSE
|
||||
mode = SHUTTLE_IDLE
|
||||
else
|
||||
else
|
||||
SendToStation()
|
||||
return
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
if(!CheckTurfsPressure())
|
||||
damaged = FALSE
|
||||
if(console)
|
||||
console.say("Repairs complete, launching soon.")
|
||||
console.say("Repairs complete, launching soon.")
|
||||
return
|
||||
|
||||
//If this proc is high on the profiler add a cooldown to the stuff after this line
|
||||
@@ -93,7 +93,7 @@
|
||||
if(mode != SHUTTLE_CALL)
|
||||
sound_played = FALSE
|
||||
mode = SHUTTLE_IDLE
|
||||
else
|
||||
else
|
||||
SendToStation()
|
||||
return
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
var/dockTime = config.arrivals_shuttle_dock_window
|
||||
if(mode == SHUTTLE_CALL && timeLeft(1) > dockTime)
|
||||
if(console)
|
||||
console.say(damaged ? "Initiating emergency docking for repairs!" : "Now approaching: [SSmapping.config.map_name].")
|
||||
console.say(damaged ? "Initiating emergency docking for repairs!" : "Now approaching: [station_name()].")
|
||||
hyperspace_sound(HYPERSPACE_LAUNCH, areas) //for the new guy
|
||||
setTimer(dockTime)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
/obj/docking_port/mobile/arrivals/proc/RequireUndocked(mob/user)
|
||||
if(mode == SHUTTLE_CALL || damaged)
|
||||
return
|
||||
|
||||
|
||||
Launch(TRUE)
|
||||
|
||||
user << "<span class='notice'>Calling your shuttle. One moment...</span>"
|
||||
|
||||
@@ -651,10 +651,6 @@
|
||||
if("papyrus")
|
||||
. |= SPAN_PAPYRUS
|
||||
|
||||
/obj/item/organ/tongue/bone/chatter
|
||||
name = "chattering bone \"tongue\""
|
||||
chattering = TRUE
|
||||
|
||||
/obj/item/organ/tongue/robot
|
||||
name = "robotic voicebox"
|
||||
desc = "A voice synthesizer that can interface with organic lifeforms."
|
||||
|
||||
@@ -55,6 +55,48 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">24 March 2017</h2>
|
||||
<h3 class="author">BeeSting12 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Auxiliary base maintenance airlock now requires the proper access. Sorry greyshirts, no loot for you!</li>
|
||||
</ul>
|
||||
<h3 class="author">Cyberboss updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">The recycler's base reclaim rate has been buffed from 1% to 50%. Manipulator upgrades now give +12.5% per level instead of +25%</li>
|
||||
<li class="bugfix">You can now successfully remove a pen from a PDA while it's in a container</li>
|
||||
</ul>
|
||||
<h3 class="author">Fox McCloud updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Modular receiver removed from the protolathe to autolathe</li>
|
||||
<li class="tweak">Modular receiver cost is now 15,000 metal</li>
|
||||
</ul>
|
||||
<h3 class="author">Joan updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixes structures being unable to go through spatial gateways.</li>
|
||||
<li class="tweak">Blazing Oil blobs take 33% less damage from water.</li>
|
||||
</ul>
|
||||
<h3 class="author">Penguaro updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">[Meta] Replaced Power Monitoring Console in Engineering with Modular Engineering Console</li>
|
||||
<li class="rscadd">[Pubby] Replaced Power Monitoring Console in Engineering with Modular Engineering Console</li>
|
||||
<li class="rscadd">[Omega] Replaced Power Monitoring Console in Engineering with Modular Engineering Console</li>
|
||||
<li class="rscadd">[Omega] Added RD and Command Modular Consoles to Bridge</li>
|
||||
<li class="rscadd">[Delta] Replaced Power Monitoring Console in Engineering with Modular Engineering Console</li>
|
||||
<li class="rscadd">[Delta] Replaced duplicate Atmospherics Monitoring Console in Atmo with Modular Engineering Console</li>
|
||||
</ul>
|
||||
<h3 class="author">coiax updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Destroying a lich's body does not destroy the lich permanently, provided the phylactery is intact.</li>
|
||||
<li class="rscadd">A lich will respawn three minutes after its death, provided the phylactery is intact.</li>
|
||||
<li class="rscadd">The Soul Bind spell is forgotten after cast, respawn is now automatic.</li>
|
||||
<li class="rscdel">Stationloving objects like the nuke disk are not valid objects for a phylactery.</li>
|
||||
<li class="rscadd">Explosive implants can always be triggered via action button, even if unconscious.</li>
|
||||
</ul>
|
||||
<h3 class="author">rock updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">lizards are hurt slightly more by cold but less by heat. this does not mean they are more resistant to being lasered, fortunately.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">23 March 2017</h2>
|
||||
<h3 class="author">Joan updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -1841,33 +1883,6 @@
|
||||
<li class="rscadd">The Delta emergency shuttle now travels towards the south, rather than the north. This changes nothing except which direction the stars rushing past the windows are moving.</li>
|
||||
<li class="bugfix">Fixed dragging the spawn protection traps on CTF.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">20 January 2017</h2>
|
||||
<h3 class="author">CoreOverload updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Any sharp item can now be used for "incise" surgery step, with 30% success probability.</li>
|
||||
</ul>
|
||||
<h3 class="author">Joan updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Sentinel's Compromise will also convert oxygen damage into half toxin, in addition to brute and burn.</li>
|
||||
<li class="tweak">Reduced the Ark of the Clockwork Justicar's health from 600 to 500</li>
|
||||
<li class="rscadd">You can now pull objects past the Ark of the Clockwork Justicar without them being moved and or destroyed by its power.</li>
|
||||
</ul>
|
||||
<h3 class="author">MrStonedOne updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Server side timing of the parallax shuttle launch animation now runs on client time rather than byond time/server time. This will fix the odd issues it has during lag. The parallax shuttle slowdown animation will still have issues, those will be fixed in another more involved update to shuttles.</li>
|
||||
<li class="rscadd">The window will flash in the taskbar when a new round is ready and about to start.</li>
|
||||
</ul>
|
||||
<h3 class="author">Tofa01 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Moved The CentComm station 6 tiles to the left in order to prevent large shuttles such as "asteroid with engines on it" from clipping off the end of the right side of the map.</li>
|
||||
</ul>
|
||||
<h3 class="author">XDTM updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Chameleon PDAs can now morph into assistant PDAs.</li>
|
||||
<li class="bugfix">A few iconless items have been blacklisted from chameleon clothing.</li>
|
||||
<li class="tweak">Reviver implants now warn you when they're turning on or off, or when giving a heart attack due to EMP.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<b>GoonStation 13 Development Team</b>
|
||||
|
||||
@@ -10301,3 +10301,41 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- tweak: Alt-clicking a command headset toggles HIGH VOLUME mode.
|
||||
coiax:
|
||||
- bugfix: A dead AI no longer counts as an "unconverted AI" for clockcult.
|
||||
2017-03-24:
|
||||
BeeSting12:
|
||||
- bugfix: Auxiliary base maintenance airlock now requires the proper access. Sorry
|
||||
greyshirts, no loot for you!
|
||||
Cyberboss:
|
||||
- tweak: The recycler's base reclaim rate has been buffed from 1% to 50%. Manipulator
|
||||
upgrades now give +12.5% per level instead of +25%
|
||||
- bugfix: You can now successfully remove a pen from a PDA while it's in a container
|
||||
Fox McCloud:
|
||||
- rscadd: Modular receiver removed from the protolathe to autolathe
|
||||
- tweak: Modular receiver cost is now 15,000 metal
|
||||
Joan:
|
||||
- bugfix: Fixes structures being unable to go through spatial gateways.
|
||||
- tweak: Blazing Oil blobs take 33% less damage from water.
|
||||
Penguaro:
|
||||
- rscadd: '[Meta] Replaced Power Monitoring Console in Engineering with Modular
|
||||
Engineering Console'
|
||||
- rscadd: '[Pubby] Replaced Power Monitoring Console in Engineering with Modular
|
||||
Engineering Console'
|
||||
- rscadd: '[Omega] Replaced Power Monitoring Console in Engineering with Modular
|
||||
Engineering Console'
|
||||
- rscadd: '[Omega] Added RD and Command Modular Consoles to Bridge'
|
||||
- rscadd: '[Delta] Replaced Power Monitoring Console in Engineering with Modular
|
||||
Engineering Console'
|
||||
- rscadd: '[Delta] Replaced duplicate Atmospherics Monitoring Console in Atmo with
|
||||
Modular Engineering Console'
|
||||
coiax:
|
||||
- rscadd: Destroying a lich's body does not destroy the lich permanently, provided
|
||||
the phylactery is intact.
|
||||
- rscadd: A lich will respawn three minutes after its death, provided the phylactery
|
||||
is intact.
|
||||
- rscadd: The Soul Bind spell is forgotten after cast, respawn is now automatic.
|
||||
- rscdel: Stationloving objects like the nuke disk are not valid objects for a phylactery.
|
||||
- rscadd: Explosive implants can always be triggered via action button, even if
|
||||
unconscious.
|
||||
rock:
|
||||
- tweak: lizards are hurt slightly more by cold but less by heat. this does not
|
||||
mean they are more resistant to being lasered, fortunately.
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
author: "coiax"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Destroying a lich's body does not destroy the lich permanently,
|
||||
provided the phylactery is intact."
|
||||
- rscadd: "A lich will respawn three minutes after its death, provided the
|
||||
phylactery is intact."
|
||||
- rscadd: "The Soul Bind spell is forgotten after cast, respawn is now
|
||||
automatic."
|
||||
- rscdel: "Stationloving objects like the nuke disk are not valid objects for
|
||||
a phylactery."
|
||||
|
Before Width: | Height: | Size: 479 KiB |
|
Before Width: | Height: | Size: 994 KiB |
|
Before Width: | Height: | Size: 774 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 681 B After Width: | Height: | Size: 681 B |
@@ -669,6 +669,7 @@
|
||||
#include "code\game\objects\effects\effect_system\effects_sparks.dm"
|
||||
#include "code\game\objects\effects\effect_system\effects_water.dm"
|
||||
#include "code\game\objects\effects\spawners\bombspawner.dm"
|
||||
#include "code\game\objects\effects\spawners\bundle.dm"
|
||||
#include "code\game\objects\effects\spawners\gibspawner.dm"
|
||||
#include "code\game\objects\effects\spawners\lootdrop.dm"
|
||||
#include "code\game\objects\effects\spawners\structure.dm"
|
||||
|
||||