Requested Changes and Conflicts

This commit is contained in:
SkeletalElite
2018-09-27 18:18:47 -07:00
195 changed files with 1384 additions and 771 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ client/proc/one_click_antag()
if(M.stat || !M.mind || M.mind.special_role)
return FALSE
if(temp)
if(M.mind.assigned_role in temp.restricted_jobs || M.client.prefs.species in temp.protected_species)
if(M.mind.assigned_role in temp.restricted_jobs || M.mind.assigned_role in temp.protected_jobs || M.client.prefs.species in temp.protected_species)
return FALSE
if(role) // Don't even bother evaluating if there's no role
if(player_old_enough_antag(M.client,role) && (role in M.client.prefs.be_special) && (!jobban_isbanned(M, role)))
+2 -2
View File
@@ -6,7 +6,7 @@
icon_state = "clawmachine_on"
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 40
var/tokens = 0
var/freeplay = 0 //for debugging and admin kindness
@@ -111,7 +111,7 @@
if(!customer_account)
to_chat(user, "Unable to access account: incorrect credentials.")
return 0
return customer_account.charge(token_price, null, "Purchase of [name] credit", name, name)
/obj/machinery/arcade/proc/start_play(mob/user as mob)
+2 -2
View File
@@ -6,7 +6,7 @@
icon_state = "prize_counter-on"
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 40
var/tickets = 0
@@ -205,4 +205,4 @@ th.cost.toomuch {background:maroon;}
print_tickets()
else
new /obj/item/stack/tickets(get_turf(src), tickets)
tickets = 0
tickets = 0
+2 -2
View File
@@ -31,7 +31,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
/obj/machinery/gateway/centerstation
density = 1
icon_state = "offcenter"
use_power = 1
use_power = IDLE_POWER_USE
//warping vars
var/list/linked = list()
@@ -169,7 +169,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
/obj/machinery/gateway/centeraway
density = 1
icon_state = "offcenter"
use_power = 0
use_power = NO_POWER_USE
var/calibrated = 1
var/list/linked = list() //a list of the connected gateway chunks
var/ready = 0
@@ -28,10 +28,10 @@
anchored = 1
density = 1
use_power = 0
use_power = NO_POWER_USE
idle_power_usage = 0
active_power_usage = 0
active = 1
locked = 1
state = 2
state = 2
@@ -46,7 +46,7 @@
anchored = 1
density = 1
use_power = 0
use_power = NO_POWER_USE
var/chargesa = 1
var/insistinga = 0
@@ -288,4 +288,4 @@
say("How could you betray the Syndicate?")
for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in living_mob_list)
W.on_alert = TRUE
..(gibbed)
..(gibbed)
@@ -1,7 +1,11 @@
/datum/gear/lipstick
display_name = "lipstick, red"
path = /obj/item/lipstick
sort_category = "Cosmetics"
/datum/gear/lipstick/black
display_name = "lipstick, black"
path = /obj/item/lipstick/black
sort_category = "Cosmetics"
/datum/gear/lipstick/jade
display_name = "lipstick, jade"
@@ -11,9 +15,13 @@
display_name = "lipstick, purple"
path = /obj/item/lipstick/purple
/datum/gear/lipstick/red
display_name = "lipstick, red"
path = /obj/item/lipstick
/datum/gear/lipstick/blue
display_name = "lipstick, blue"
path = /obj/item/lipstick/blue
/datum/gear/lipstick/lime
display_name = "lipstick, lime"
path = /obj/item/lipstick/lime
/datum/gear/monocle
display_name = "monocle"
+13 -5
View File
@@ -103,7 +103,7 @@
item_color = "centcom"
/obj/item/clothing/under/rank/centcom/officer
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant-Commander\" and bears \"N.C.V. Fearless CV-286\" on the left shounder."
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant-Commander\" and bears \"N.C.V. Fearless CV-286\" on the left shoulder."
name = "\improper Nanotrasen Officers Uniform"
icon_state = "officer"
item_state = "g_suit"
@@ -112,7 +112,7 @@
flags_size = ONESIZEFITSALL
/obj/item/clothing/under/rank/centcom/captain
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Captain\" and bears \"N.C.V. Fearless CV-286\" on the left shounder."
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Captain\" and bears \"N.C.V. Fearless CV-286\" on the left shoulder."
name = "\improper Nanotrasen Captains Uniform"
icon_state = "centcom"
item_state = "dg_suit"
@@ -120,7 +120,7 @@
displays_id = 0
/obj/item/clothing/under/rank/centcom/blueshield
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant\" and bears \"N.S.S. Cyberiad\" on the left shounder."
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant\" and bears \"N.S.S. Cyberiad\" on the left shoulder."
name = "\improper Nanotrasen Navy Uniform"
icon_state = "officer"
item_state = "g_suit"
@@ -128,8 +128,12 @@
displays_id = 0
flags_size = ONESIZEFITSALL
/obj/item/clothing/under/rank/centcom/blueshield/New()
..()
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant\" and bears [station_name()] on the left shoulder."
/obj/item/clothing/under/rank/centcom/representative
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Ensign\" and bears \"N.S.S. Cyberiad\" on the left shounder."
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Ensign\" and bears \"N.S.S. Cyberiad\" on the left shoulder."
name = "\improper Nanotrasen Navy Uniform"
icon_state = "officer"
item_state = "g_suit"
@@ -137,6 +141,10 @@
displays_id = 0
flags_size = ONESIZEFITSALL
/obj/item/clothing/under/rank/centcom/representative/New()
..()
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Ensign\" and bears [station_name()] on the left shoulder."
/obj/item/clothing/under/rank/centcom/diplomatic
desc = "A very gaudy and official looking uniform of the Nanotrasen Diplomatic Corps."
name = "\improper Nanotrasen Diplomatic Uniform"
@@ -831,4 +839,4 @@
icon_state = "medicalgown"
item_state = "medicalgown"
item_color = "medicalgown"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
body_parts_covered = UPPER_TORSO|LOWER_TORSO
+17
View File
@@ -945,6 +945,14 @@
flags_inv = HIDEEARS
//////////// Uniforms ////////////
/obj/item/clothing/under/fluff/benjaminfallout // Benjaminfallout: Pretzel Brassheart
icon = 'icons/obj/custom_items.dmi'
name = "Pretzel's dress"
desc = "A nice looking dress"
icon_state = "fallout_dress"
item_state = "fallout_dress"
item_color = "fallout_dress"
/obj/item/clothing/under/fluff/soviet_casual_uniform // Norstead : Natalya Sokolova
icon = 'icons/obj/custom_items.dmi'
name = "Soviet Casual Uniform"
@@ -1043,6 +1051,15 @@
item_color = "aegisuniform"
displays_id = 0
/obj/item/clothing/under/fluff/elo_turtleneck // vforcebomber: E.L.O.
name = "E.L.O's Turtleneck"
desc = "This TurtleNeck belongs to the IPC E.L.O. And has her name sown into the upper left breast, a very wooly jumper."
icon = 'icons/obj/custom_items.dmi' // for the floor sprite
icon_override = 'icons/obj/custom_items.dmi' // for the mob sprite
icon_state = "eloturtleneckfloor"
item_color = "eloturtleneck"
displays_id = FALSE
//////////// Masks ////////////
/obj/item/clothing/mask/bandana/fluff/dar //sasanek12: Dar'Konr
+1 -1
View File
@@ -19,7 +19,7 @@ log transactions
icon = 'icons/obj/terminals.dmi'
icon_state = "atm"
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
var/obj/machinery/computer/account_database/linked_db
var/datum/money_account/authenticated_account
+54 -69
View File
@@ -21,7 +21,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
var/image/halbody
var/obj/halitem
var/hal_screwyhud = SCREWYHUD_NONE
var/handling_hal = 0
var/handling_hal = FALSE
/mob/living/carbon/proc/handle_hallucinations()
if(handling_hal)
@@ -34,9 +34,9 @@ Gunshots/explosions/opening doors/less rare audio (done)
//AAAAHg
var/list/major = list("fake"=20,"death"=10,"xeno"=10,"singulo"=10,"borer"=10,"delusion"=20,"koolaid"=10)
handling_hal = 1
handling_hal = TRUE
while(hallucination > 20)
sleep(rand(200, 500) / (hallucination / 25))
sleep(rand(200, 500) / (hallucination * 0.04))
if(prob(20))
continue
var/list/current = list()
@@ -48,10 +48,8 @@ Gunshots/explosions/opening doors/less rare audio (done)
if(86 to 100)
current = major
var/halpick = pickweight(current)
hallucinate(halpick)
handling_hal = 0
hallucinate(pickweight(current))
handling_hal = FALSE
/obj/effect/hallucination
@@ -70,7 +68,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
var/col_mod = null
var/image/current_image = null
var/image_layer = MOB_LAYER
var/active = 1 //qdelery
var/active = TRUE //qdelery
/obj/effect/hallucination/simple/New(loc, mob/living/carbon/T)
..()
@@ -113,7 +111,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
/obj/effect/hallucination/simple/Destroy()
if(target.client)
target.client.images.Remove(current_image)
active = 0
active = FALSE
return ..()
#define FAKE_FLOOD_EXPAND_TIME 20
@@ -198,21 +196,17 @@ Gunshots/explosions/opening doors/less rare audio (done)
pump = U
break
if(!pump)
return 0
return
xeno = new(pump.loc,target)
sleep(10)
if(!xeno)
return
xeno.update_icon("alienh_leap",'icons/mob/alienleap.dmi',-32,-32)
xeno.throw_at(target,7,1, spin = 0, diagonals_first = 1)
sleep(10)
if(!xeno)
return
xeno.update_icon("alienh_leap",'icons/mob/alienleap.dmi',-32,-32)
xeno.throw_at(pump,7,1, spin = 0, diagonals_first = 1)
sleep(10)
if(!xeno)
return
for(var/i in 0 to 2)
xeno.update_icon("alienh_leap",'icons/mob/alienleap.dmi',-32,-32)
xeno.throw_at(target,7,1, spin = 0, diagonals_first = 1)
sleep(10)
if(!xeno)
return
var/xeno_name = xeno.name
to_chat(target, "<span class='notice'>[xeno_name] begins climbing into the ventilation system...</span>")
sleep(10)
@@ -253,7 +247,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
break
if(pump)
borer = new(pump.loc,target)
for(var/i=0, i<11, i++)
for(var/i in 0 to 10)
walk_to(borer, get_step(borer, get_cardinal_dir(borer, T)))
if(borer.Adjacent(T))
to_chat(T, "<span class='userdanger'>You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.</span>")
@@ -331,10 +325,10 @@ Gunshots/explosions/opening doors/less rare audio (done)
target = T
var/turf/start = get_turf(T)
var/screen_border = pick(cardinal)
for(var/i = 0,i<11,i++)
for(var/i in 0 to 10)
start = get_step(start, screen_border)
s = new(start,target)
for(var/i = 0,i<11,i++)
for(var/i in 0 to 10)
sleep(5)
s.loc = get_step(get_turf(s), get_dir(s, target))
s.Show()
@@ -359,10 +353,10 @@ Gunshots/explosions/opening doors/less rare audio (done)
/obj/effect/hallucination/battle/New(loc, mob/living/carbon/T)
target = T
var/hits = rand(3,6)
var/hits = rand(2,5)
switch(rand(1,5))
if(1) //Laser fight
for(var/i=0,i<hits,i++)
for(var/i in 0 to hits)
target.playsound_local(null, 'sound/weapons/Laser.ogg', 25, 1)
if(prob(75))
addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/sear.ogg', 25, 1), rand(10,20))
@@ -372,13 +366,13 @@ Gunshots/explosions/opening doors/less rare audio (done)
target.playsound_local(null, get_sfx("bodyfall"), 25)
if(2) //Esword fight
target.playsound_local(null, 'sound/weapons/saberon.ogg', 15, 1)
for(var/i=0,i<hits,i++)
for(var/i in 0 to hits)
target.playsound_local(null, 'sound/weapons/blade1.ogg', 25, 1)
sleep(rand(CLICK_CD_MELEE, CLICK_CD_MELEE + 8))
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
target.playsound_local(null, 'sound/weapons/saberoff.ogg', 15, 1)
if(3) //Gun fight
for(var/i=0,i<hits,i++)
for(var/i in 0 to hits)
target.playsound_local(null, get_sfx("gunshot"), 25)
if(prob(75))
addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/pierce.ogg', 25, 1), rand(10,20))
@@ -392,7 +386,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
sleep(20)
target.playsound_local(null, 'sound/weapons/cablecuff.ogg', 15, 1)
if(5) // Tick Tock
for(var/i=0,i<hits,i++)
for(var/i in 0 to hits)
target.playsound_local(null, 'sound/items/timer.ogg', 25, 1)
sleep(15)
qdel(src)
@@ -605,27 +599,25 @@ Gunshots/explosions/opening doors/less rare audio (done)
/obj/effect/fake_attacker/New(loc, mob/living/carbon/T)
..()
my_target = T
spawn(300)
qdel(src)
addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, src), 300)
step_away(src,my_target,2)
spawn(0)
attack_loop()
INVOKE_ASYNC(src, .proc/attack_loop)
/obj/effect/fake_attacker/proc/updateimage()
// qdel(src.currentimage)
if(dir == NORTH)
qdel(src.currentimage)
currentimage = new /image(up, src)
else if(dir == SOUTH)
qdel(src.currentimage)
currentimage = new /image(down, src)
else if(dir == EAST)
qdel(src.currentimage)
currentimage = new /image(right, src)
else if(dir == WEST)
qdel(src.currentimage)
currentimage = new /image(left, src)
switch(dir)
if(NORTH)
qdel(src.currentimage)
currentimage = new /image(up, src)
if(SOUTH)
qdel(src.currentimage)
currentimage = new /image(down, src)
if(EAST)
qdel(src.currentimage)
currentimage = new /image(right, src)
if(WEST)
qdel(src.currentimage)
currentimage = new /image(left, src)
my_target << currentimage
@@ -672,8 +664,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
O.name = "blood"
var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1)
target << I
spawn(300)
qdel(O)
addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, O), 300)
return
var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_box/a357,\
@@ -815,10 +806,9 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
playsound_local(null, pick('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg'), 50, 1)
if(5)
playsound_local(null, 'sound/weapons/ring.ogg', 35)
sleep(15)
playsound_local(null, 'sound/weapons/ring.ogg', 35)
sleep(15)
playsound_local(null, 'sound/weapons/ring.ogg', 35)
for(var/i in 0 to 2)
sleep(15)
playsound_local(null, 'sound/weapons/ring.ogg', 35)
if(6)
playsound_local(null, 'sound/magic/Summon_guns.ogg', 50, 1)
if(7)
@@ -828,19 +818,17 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
if(9)
//To make it more realistic, I added two gunshots (enough to kill)
playsound_local(null, 'sound/weapons/Gunshot.ogg', 25, 1)
spawn(rand(10,30))
playsound_local(null, 'sound/weapons/Gunshot.ogg', 25, 1)
sleep(rand(5,10))
playsound_local(null, sound(get_sfx("bodyfall"), 25), 25, 1)
var/timer_pause = rand(10,30)
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound_local, null, 'sound/weapons/Gunshot.ogg', 25, 1), timer_pause)
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound_local, null, sound(get_sfx("bodyfall"), 25), 25, 1), timer_pause+rand(5,10))
if(10)
playsound_local(null, 'sound/effects/pray_chaplain.ogg', 50)
if(11)
//Same as above, but with tasers.
playsound_local(null, 'sound/weapons/Taser.ogg', 25, 1)
spawn(rand(10,30))
playsound_local(null, 'sound/weapons/Taser.ogg', 25, 1)
sleep(rand(5,10))
playsound_local(null, sound(get_sfx("bodyfall"), 25), 25, 1)
var/timer_pause = rand(10,30)
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound_local, null, 'sound/weapons/Taser.ogg', 25, 1), timer_pause)
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound_local, null, sound(get_sfx("bodyfall"), 25), 25, 1), timer_pause+rand(5,10))
//Rare audio
if(12)
//These sounds are (mostly) taken from Hidden: Source
@@ -865,7 +853,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
if(16)
playsound_local(null, 'sound/items/Screwdriver.ogg', 15, 1)
sleep(rand(10,30))
for(var/i = rand(1,3), i>0, i--)
for(var/i in 0 to rand(1,3))
playsound_local(null, 'sound/weapons/empty.ogg', 15, 1)
sleep(rand(10,30))
playsound_local(null, 'sound/machines/airlockforced.ogg', 15, 1)
@@ -877,10 +865,9 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
playsound_local(null, 'sound/AI/outbreak5.ogg')
if(19) //Tesla loose!
playsound_local(null, 'sound/magic/lightningbolt.ogg', 35, 1)
sleep(20)
playsound_local(null, 'sound/magic/lightningbolt.ogg', 65, 1)
sleep(20)
playsound_local(null, 'sound/magic/lightningbolt.ogg', 100, 1)
for(var/i in 0 to 2)
sleep(20)
playsound_local(null, 'sound/magic/lightningbolt.ogg', 65+(35*(i-1)), 1) //65%, then 100% volume.
if(20) //AI is doomsdaying!
to_chat(src, "<h1 class='alert'>Anomaly Alert</h1>")
to_chat(src, "<br><br><span class='alert'>Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.</span><br><br>")
@@ -987,8 +974,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
halitem.icon_state = "flashbang1"
halitem.name = "Flashbang"
if(client) client.screen += halitem
spawn(rand(100,250))
qdel(halitem)
addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, halitem), rand(100,250))
if("dangerflash")
//Flashes of danger
if(!halimage)
@@ -1007,8 +993,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
halimage = image('icons/turf/floors/Chasms.dmi',target,"smooth",TURF_LAYER)
if(4)
halimage = image('icons/obj/assemblies.dmi',target,"plastic-explosive2",OBJ_LAYER+0.01)
if(client)
client.images += halimage
sleep(rand(40,60)) //Only seen for a brief moment.
@@ -1054,4 +1039,4 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
spawn(rand(30,50)) //Only seen for a brief moment.
if(client)
client.images -= halbody
halbody = null
halbody = null
@@ -5,7 +5,7 @@
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "candymaker_off"
cook_verbs = list("Wonderizing", "Scrumpdiddlyumptiousification", "Miracle-coating", "Flavorifaction")
recipe_type = /datum/recipe/candy
recipe_type = RECIPE_CANDY
off_icon = "candymaker_off"
on_icon = "candymaker_on"
broken_icon = "candymaker_broke"
@@ -4,7 +4,7 @@
layer = 2.9
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
var/on = 0
var/onicon = null
@@ -20,7 +20,7 @@
var/stealthmode = FALSE
var/list/victims = list()
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 500
@@ -5,7 +5,7 @@
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "grill_off"
cook_verbs = list("Grilling", "Searing", "Frying")
recipe_type = /datum/recipe/grill
recipe_type = RECIPE_GRILL
off_icon = "grill_off"
on_icon = "grill_on"
broken_icon = "grill_broke"
@@ -7,7 +7,7 @@
anchored = 1
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "icecream_vat"
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 20
var/obj/item/reagent_containers/glass/beaker = null
var/useramount = 15 //Last used amount
@@ -6,7 +6,7 @@
layer = 2.9
density = 1
anchored = 0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 100
pass_flags = PASSTABLE
@@ -5,7 +5,7 @@
layer = 2.9
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 100
flags = OPENCONTAINER
@@ -16,10 +16,7 @@
var/list/cook_verbs = list("Cooking")
//Recipe & Item vars
var/recipe_type //Make sure to set this on the machine definition, or else you're gonna runtime on New()
var/list/datum/recipe/available_recipes // List of the recipes you can use
var/list/acceptable_items // List of the items you can put in
var/list/acceptable_reagents // List of the reagents you can put in
var/max_n_of_items = 0
var/max_n_of_items = 25
//Icon states
var/off_icon
var/on_icon
@@ -35,23 +32,28 @@
..()
create_reagents(100)
reagents.set_reacting(FALSE)
if(!available_recipes)
available_recipes = new
acceptable_items = new
acceptable_reagents = new
for(var/type in subtypesof(recipe_type))
init_lists()
/obj/machinery/kitchen_machine/proc/init_lists()
if(!GLOB.cooking_recipes[recipe_type])
GLOB.cooking_recipes[recipe_type] = list()
GLOB.cooking_ingredients[recipe_type] = list()
GLOB.cooking_reagents[recipe_type] = list()
if(!length(GLOB.cooking_recipes[recipe_type]))
for(var/type in subtypesof(GLOB.cooking_recipe_types[recipe_type]))
var/datum/recipe/recipe = new type
if(recipe in GLOB.cooking_recipes[recipe_type])
qdel(recipe)
continue
if(recipe.result) // Ignore recipe subtypes that lack a result
available_recipes += recipe
GLOB.cooking_recipes[recipe_type] += recipe
for(var/item in recipe.items)
acceptable_items |= item
GLOB.cooking_ingredients[recipe_type] |= item
for(var/reagent in recipe.reagents)
acceptable_reagents |= reagent
if(recipe.items)
max_n_of_items = max(max_n_of_items,recipe.count_n_items())
GLOB.cooking_reagents[recipe_type] |= reagent
else
qdel(recipe)
acceptable_items |= /obj/item/reagent_containers/food/snacks/grown
GLOB.cooking_ingredients[recipe_type] |= /obj/item/reagent_containers/food/snacks/grown
/*******************
* Item Adding
@@ -80,26 +82,14 @@
if(broken > 0)
if(broken == 2 && istype(O, /obj/item/screwdriver)) // If it's broken and they're using a screwdriver
user.visible_message( \
"<span class='notice'>[user] starts to fix part of \the [src].</span>", \
"<span class='notice'>You start to fix part of \the [src].</span>" \
)
user.visible_message("<span class='notice'>[user] starts to fix part of [src].</span>", "<span class='notice'>You start to fix part of [src].</span>")
if(do_after(user, 20 * O.toolspeed, target = src))
user.visible_message( \
"<span class='notice'>[user] fixes part of \the [src].</span>", \
"<span class='notice'>You have fixed part of \the [src].</span>" \
)
user.visible_message("<span class='notice'>[user] fixes part of [src].</span>", "<span class='notice'>You have fixed part of \the [src].</span>")
broken = 1 // Fix it a bit
else if(broken == 1 && istype(O, /obj/item/wrench)) // If it's broken and they're doing the wrench
user.visible_message( \
"<span class='notice'>[user] starts to fix part of \the [src].</span>", \
"<span class='notice'>You start to fix part of \the [src].</span>" \
)
user.visible_message("<span class='notice'>[user] starts to fix part of [src].</span>", "<span class='notice'>You start to fix part of [src].</span>")
if(do_after(user, 20 * O.toolspeed, target = src))
user.visible_message( \
"<span class='notice'>[user] fixes \the [src].</span>", \
"<span class='notice'>You have fixed \the [src].</span>" \
)
user.visible_message("<span class='notice'>[user] fixes [src].</span>", "<span class='notice'>You have fixed [src].</span>")
icon_state = off_icon
broken = 0 // Fix it!
dirty = 0 // just to be sure
@@ -109,15 +99,9 @@
return 1
else if(dirty==100) // The machine is all dirty so can't be used!
if(istype(O, /obj/item/reagent_containers/spray/cleaner) || istype(O, /obj/item/soap)) // If they're trying to clean it then let them
user.visible_message( \
"<span class='notice'>[user] starts to clean \the [src].</span>", \
"<span class='notice'>You start to clean \the [src].</span>" \
)
user.visible_message("<span class='notice'>[user] starts to clean [src].</span>", "<span class='notice'>You start to clean [src].</span>")
if(do_after(user, 20 * O.toolspeed, target = src))
user.visible_message( \
"<span class='notice'>[user] has cleaned \the [src].</span>", \
"<span class='notice'>You have cleaned \the [src].</span>" \
)
user.visible_message("<span class='notice'>[user] has cleaned [src].</span>", "<span class='notice'>You have cleaned [src].</span>")
dirty = 0 // It's clean!
broken = 0 // just to be sure
icon_state = off_icon
@@ -125,33 +109,25 @@
else //Otherwise bad luck!!
to_chat(user, "<span class='alert'>It's dirty!</span>")
return 1
else if(is_type_in_list(O,acceptable_items))
else if(is_type_in_list(O, GLOB.cooking_ingredients[recipe_type]) || istype(O, /obj/item/mixing_bowl))
if(contents.len>=max_n_of_items)
to_chat(user, "<span class='alert'>This [src] is full of ingredients, you cannot put more.</span>")
return 1
if(istype(O,/obj/item/stack) && O:amount>1)
new O.type (src)
O:use(1)
user.visible_message( \
"<span class='notice'>[user] has added one of [O] to \the [src].</span>", \
"<span class='notice'>You add one of [O] to \the [src].</span>")
if(istype(O,/obj/item/stack))
var/obj/item/stack/S = O
if(S.amount > 1)
var/obj/item/stack/to_add = S.split(user, 1)
to_add.forceMove(src)
user.visible_message("<span class='notice'>[user] adds one of [S] to [src].</span>", "<span class='notice'>You add one of [S] to [src].</span>")
else
add_item(S, user)
else
if(!user.drop_item())
to_chat(user, "<span class='notice'>\The [O] is stuck to your hand, you cannot put it in \the [src]</span>")
return 0
O.forceMove(src)
user.visible_message( \
"<span class='notice'>[user] has added \the [O] to \the [src].</span>", \
"<span class='notice'>You add \the [O] to \the [src].</span>")
else if(istype(O,/obj/item/reagent_containers/glass) || \
istype(O,/obj/item/reagent_containers/food/drinks) || \
istype(O,/obj/item/reagent_containers/food/condiment) \
)
add_item(O, user)
else if(is_type_in_list(O, list(/obj/item/reagent_containers/glass, /obj/item/reagent_containers/food/drinks, /obj/item/reagent_containers/food/condiment)))
if(!O.reagents)
return 1
for(var/datum/reagent/R in O.reagents.reagent_list)
if(!(R.id in acceptable_reagents))
if(!(R.id in GLOB.cooking_reagents[recipe_type]))
to_chat(user, "<span class='alert'>Your [O] contains components unsuitable for cookery.</span>")
return 1
//G.reagents.trans_to(src,G.amount_per_transfer_from_this)
@@ -162,6 +138,14 @@
return 1
updateUsrDialog()
/obj/machinery/kitchen_machine/proc/add_item(obj/item/I, mob/user)
if(!user.drop_item())
to_chat(user, "<span class='notice'>\The [I] is stuck to your hand, you cannot put it in [src]</span>")
//return 0
else
I.forceMove(src)
user.visible_message("<span class='notice'>[user] adds [I] to [src].</span>", "<span class='notice'>You add [I] to [src].</span>")
/obj/machinery/kitchen_machine/attack_ai(mob/user)
return 0
@@ -182,11 +166,11 @@
return
var/dat = ""
if(broken > 0)
dat = {"<TT>Bzzzzttttt</TT>"}
dat = {"<code>Bzzzzttttt</code>"}
else if(operating)
dat = {"<TT>[pick(cook_verbs)] in progress!<BR>Please wait...!</TT>"}
dat = {"<code>[pick(cook_verbs)] in progress!<BR>Please wait...!</code>"}
else if(dirty==100)
dat = {"<TT>This [src] is dirty!<BR>Please clean it before use!</TT>"}
dat = {"<code>This [src] is dirty!<BR>Please clean it before use!</code>"}
else
var/list/items_counts = new
var/list/items_measures = new
@@ -260,12 +244,13 @@
stop()
return
var/datum/recipe/recipe = select_recipe(available_recipes,src)
var/obj/cooked
var/obj/byproduct
if(!recipe)
var/list/recipes_to_make = choose_recipes()
if(recipes_to_make.len == 1 && recipes_to_make[1][2] == RECIPE_FAIL)
//This only runs if there is a single recipe source to be made and it is a failure (the machine was loaded with only 1 mixing bowl that results in failure OR was directly loaded with ingredients that results in failure).
//If there are multiple sources, this bit gets skipped.
dirty += 1
if(prob(max(10,dirty*5)))
if(prob(max(10,dirty*5))) //chance to get so dirty we require cleaning before next use
if(!wzhzhzh(4))
abort()
return
@@ -274,14 +259,14 @@
muck_finish()
fail()
return
else if(has_extra_item())
else if(has_extra_item()) //if extra items present, break down and require repair before next use
if(!wzhzhzh(4))
abort()
return
broke()
fail()
return
else
else //otherwise just stop without requiring cleaning/repair
if(!wzhzhzh(10))
abort()
return
@@ -289,24 +274,69 @@
fail()
return
else
var/halftime = round(recipe.time/10/2)
if(!wzhzhzh(halftime))
if(!wzhzhzh(5))
abort()
return
if(!wzhzhzh(halftime))
if(!wzhzhzh(5))
abort()
fail()
return
cooked = recipe.make_food(src)
byproduct = recipe.get_byproduct()
stop()
if(cooked)
cooked.forceMove(loc)
for(var/i=1,i<efficiency,i++)
cooked = new cooked.type(loc)
if(byproduct)
new byproduct(loc)
make_recipes(recipes_to_make)
//choose_recipes(): picks out recipes for the machine and any mixing bowls it may contain.
//builds a list of the selected recipes to be made in a later proc by associating the "source" of the ingredients (mixing bowl, machine) with the recipe for that source
/obj/machinery/kitchen_machine/proc/choose_recipes()
var/list/recipes_to_make = list()
for(var/obj/item/mixing_bowl/mb in contents) //if we have mixing bowls present, check each one for possible recipes from its respective contents. Mixing bowls act like a wrapper for recipes and ingredients, isolating them from other ingredients and mixing bowls within a machine.
var/datum/recipe/recipe = select_recipe(GLOB.cooking_recipes[recipe_type], mb)
if(recipe)
recipes_to_make.Add(list(list(mb, recipe)))
else //if the ingredients of the mixing bowl don't make a valid recipe, we return a fail recipe to generate the burned mess
recipes_to_make.Add(list(list(mb, RECIPE_FAIL)))
var/datum/recipe/recipe_src = select_recipe(GLOB.cooking_recipes[recipe_type], src, ignored_items = list(/obj/item/mixing_bowl)) //check the machine's directly-inserted ingredients for possible recipes as well, ignoring the mixing bowls when selecting recipe
if(recipe_src) //if we found a valid recipe for directly-inserted ingredients, add that to our list
recipes_to_make.Add(list(list(src, recipe_src)))
else if(!recipes_to_make.len) //if the machine has no mixing bowls to make recipes from AND also doesn't have a valid recipe of directly-inserted ingredients, return a failure so we can make a burned mess
recipes_to_make.Add(list(list(src, RECIPE_FAIL)))
return recipes_to_make
//make_recipes(recipes_to_make): cycles through the supplied list of recipes and creates each recipe associated with the "source" for that entry
/obj/machinery/kitchen_machine/proc/make_recipes(list/recipes_to_make)
if(!recipes_to_make)
return
var/datum/reagents/temp_reagents = new(500)
for(var/i=1 to recipes_to_make.len) //cycle through each entry on the recipes_to_make list for processing
var/list/L = recipes_to_make[i]
var/obj/source = L[1] //this is the source of the recipe entry (mixing bowl or the machine)
var/datum/recipe/recipe = L[2] //this is the recipe associated with the source (a valid recipe or null)
if(recipe == RECIPE_FAIL) //we have a failure and create a burned mess
//failed recipe
fail()
else //we have a valid recipe to begin making
for(var/obj/O in source.contents) //begin processing the ingredients supplied
if(istype(O, /obj/item/mixing_bowl)) //ignore mixing bowls present among the ingredients in our source (only really applies to machine sourced recipes)
continue
if(O.reagents)
O.reagents.del_reagent("nutriment")
O.reagents.update_total()
O.reagents.trans_to(temp_reagents, O.reagents.total_volume)
qdel(O)
source.reagents.clear_reagents()
for(var/e=1 to efficiency) //upgraded machine? make additional servings and split the ingredient reagents among each serving equally.
var/obj/cooked = new recipe.result()
temp_reagents.trans_to(cooked, temp_reagents.total_volume/efficiency)
cooked.forceMove(loc)
temp_reagents.clear_reagents()
var/obj/byproduct = recipe.get_byproduct() //if the recipe has a byproduct, handle returning that (such as re-usable candy moulds)
if(byproduct)
new byproduct(loc)
if(istype(source, /obj/item/mixing_bowl)) //if the recipe's source was a mixing bowl, make it a little dirtier and return that for re-use.
var/obj/item/mixing_bowl/mb = source
mb.make_dirty(5 * efficiency)
mb.forceMove(loc)
stop()
return
/obj/machinery/kitchen_machine/proc/wzhzhzh(seconds)
for(var/i=1 to seconds)
@@ -318,10 +348,7 @@
/obj/machinery/kitchen_machine/proc/has_extra_item()
for(var/obj/O in contents)
if( \
!istype(O,/obj/item/reagent_containers/food) && \
!istype(O, /obj/item/grown) \
)
if(!is_type_in_list(O, list(/obj/item/reagent_containers/food, /obj/item/grown, /obj/item/mixing_bowl)))
return 1
return 0
@@ -376,19 +403,27 @@
updateUsrDialog()
/obj/machinery/kitchen_machine/proc/fail()
var/obj/item/reagent_containers/food/snacks/badrecipe/ffuu = new(src)
var/amount = 0
for(var/obj/O in contents-ffuu)
for(var/obj/item/mixing_bowl/mb in contents) //fail and remove any mixing bowls present before making the burned mess from the machine itself (to avoid them being destroyed as part of the failure)
mb.fail(src)
mb.forceMove(get_turf(src))
for(var/obj/O in contents)
amount++
if(O.reagents)
if(O.reagents) //this is reagents in inserted objects (like chems in produce)
var/id = O.reagents.get_master_reagent_id()
if(id)
amount+=O.reagents.get_reagent_amount(id)
qdel(O)
if(reagents && reagents.total_volume) //this is directly-added reagents (like water added directly into the machine)
var/id = reagents.get_master_reagent_id()
if(id)
amount += reagents.get_reagent_amount(id)
reagents.clear_reagents()
ffuu.reagents.add_reagent("carbon", amount)
ffuu.reagents.add_reagent("????", amount/10)
ffuu.forceMove(get_turf(src))
if(amount)
var/obj/item/reagent_containers/food/snacks/badrecipe/ffuu = new(src)
ffuu.reagents.add_reagent("carbon", amount)
ffuu.reagents.add_reagent("????", amount/10)
ffuu.forceMove(get_turf(src))
/obj/machinery/kitchen_machine/Topic(href, href_list)
if(..() || panel_open)
@@ -5,7 +5,7 @@
icon = 'icons/obj/kitchen.dmi'
icon_state = "mw"
cook_verbs = list("Microwaving", "Reheating", "Heating")
recipe_type = /datum/recipe/microwave
recipe_type = RECIPE_MICROWAVE
off_icon = "mw"
on_icon = "mw1"
broken_icon = "mwb"
@@ -6,7 +6,7 @@
layer = 2.9
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 50
var/grinded = 0
@@ -102,4 +102,4 @@
to_chat(user, "<span class='notice'>The machine's display flashes that it has [grinded] monkey\s worth of material left.</span>")
else // I'm not sure if the \s macro works with a word in between; I'll play it safe
to_chat(user, "<span class='warning'>The machine needs at least [required_grind] monkey\s worth of material to compress [cube_production] monkey\s. It only has [grinded].</span>")
return
return
@@ -6,7 +6,7 @@
layer = 2.9
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
var/candy = 0
idle_power_usage = 5
var/on = FALSE //Is it making food already?
@@ -5,7 +5,7 @@
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "oven_off"
cook_verbs = list("Baking", "Roasting", "Broiling")
recipe_type = /datum/recipe/oven
recipe_type = RECIPE_OVEN
off_icon = "oven_off"
on_icon = "oven_on"
broken_icon = "oven_broke"
@@ -9,7 +9,7 @@
var/broken = 0
var/processing = 0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 50
var/rating_speed = 1
@@ -7,7 +7,7 @@
layer = 2.9
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 100
var/max_n_of_items = 1500
@@ -227,7 +227,7 @@
if(load(O, user))
user.visible_message("<span class='notice'>[user] has added \the [O] to \the [src].</span>", "<span class='notice'>You add \the [O] to \the [src].</span>")
SSnanoui.update_uis(src)
else if(istype(O, /obj/item/storage/bag))
var/obj/item/storage/bag/P = O
var/plants_loaded = 0
@@ -410,7 +410,7 @@
desc = "A wooden contraption, used to dry plant products, food and leather."
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "drying_rack_on"
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 200
icon_on = "drying_rack_on"
@@ -447,13 +447,13 @@
return 1
if(href_list["dryingOn"])
drying = TRUE
use_power = 2
use_power = ACTIVE_POWER_USE
update_icon()
return 1
if(href_list["dryingOff"])
drying = FALSE
use_power = 1
use_power = IDLE_POWER_USE
update_icon()
return 1
return 0
@@ -497,10 +497,10 @@
/obj/machinery/smartfridge/drying_rack/proc/toggle_drying(forceoff)
if(drying || forceoff)
drying = FALSE
use_power = 1
use_power = IDLE_POWER_USE
else
drying = TRUE
use_power = 2
use_power = ACTIVE_POWER_USE
update_icon()
/obj/machinery/smartfridge/drying_rack/proc/rack_dry()
@@ -552,4 +552,4 @@
to_chat(usr, "<span class='warning'>Access denied.</span>")
SSnanoui.update_uis(src)
return 0
return ..()
return ..()
+3 -3
View File
@@ -252,7 +252,7 @@
/obj/item/pack/attack_self(mob/user as mob)
user.visible_message("<span class='notice'>[name] rips open the [src]!</span>", "<span class='notice'>You rips open the [src]!</span>")
var/obj/item/cardhand/H = new()
var/obj/item/cardhand/H = new(get_turf(user))
H.cards += cards
cards.Cut()
@@ -260,7 +260,7 @@
qdel(src)
H.update_icon()
user.put_in_active_hand(H)
user.put_in_hands(H)
/obj/item/cardhand
name = "hand of cards"
@@ -370,7 +370,7 @@
var/datum/playingcard/card = pickablecards[pickedcard]
var/obj/item/cardhand/H = new(get_turf(src))
user.put_in_active_hand(H)
user.put_in_hands(H)
H.cards += card
cards -= card
H.parentdeck = parentdeck
+1 -1
View File
@@ -5,7 +5,7 @@
icon_state = "biogen-empty"
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 40
var/processing = 0
var/obj/item/reagent_containers/glass/beaker = null
+1 -1
View File
@@ -15,7 +15,7 @@
icon_dead = "soybean-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/soya/koi)
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.05)
reagents_add = list("soybeanoil" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.05)
/obj/item/reagent_containers/food/snacks/grown/soybeans
seed = /obj/item/seeds/soya
+1 -1
View File
@@ -1008,7 +1008,7 @@
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "soil"
density = 0
use_power = 0
use_power = NO_POWER_USE
wrenchable = 0
/obj/machinery/hydroponics/soil/update_icon_hoses()
+1 -2
View File
@@ -37,8 +37,7 @@
add_to_streak("G",D)
if(check_streak(A,D))
return 1
D.grabbedby(A,1)
var/obj/item/grab/G = A.get_active_hand()
var/obj/item/grab/G = D.grabbedby(A,1)
if(G)
G.state = GRAB_NECK
+1 -2
View File
@@ -53,8 +53,7 @@
A.visible_message("<span class='warning'>[A] tries to grab ahold of [D], but fails!</span>", \
"<span class='warning'>You fail to grab ahold of [D]!</span>")
return 1
D.grabbedby(A,1)
var/obj/item/grab/G = A.get_active_hand()
var/obj/item/grab/G = D.grabbedby(A,1)
if(G)
D.visible_message("<span class='danger'>[A] grabs ahold of [D] drunkenly!</span>", \
"<span class='userdanger'>[A] grabs ahold of [D] drunkenly!</span>")
+1 -2
View File
@@ -108,8 +108,7 @@
add_to_streak("G",D)
if(check_streak(A,D))
return 1
D.grabbedby(A,1)
var/obj/item/grab/G = A.get_active_hand()
var/obj/item/grab/G = D.grabbedby(A,1)
if(G)
G.state = GRAB_AGGRESSIVE //Instant aggressive grab
@@ -12,7 +12,7 @@
unacidable = 1
burn_state = LAVA_PROOF | FIRE_PROOF
pixel_y = -4
use_power = 0
use_power = NO_POWER_USE
var/memory_saved = FALSE
var/list/stored_items = list()
var/static/list/blacklist = typecacheof(list(/obj/item/spellbook))
@@ -97,7 +97,7 @@
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "anomaly_crystal"
luminosity = 8
use_power = 0
use_power = NO_POWER_USE
density = 1
burn_state = LAVA_PROOF | FIRE_PROOF
unacidable = 1
+2 -2
View File
@@ -83,7 +83,7 @@
//This is probably the main one you need to know :)
//Just puts stuff on the floor for most mobs, since all mobs have hands but putting stuff in the AI/corgi/ghost hand is VERY BAD.
/mob/proc/put_in_hands(obj/item/W)
W.forceMove(get_turf(src))
W.forceMove(drop_location())
W.layer = initial(W.layer)
W.plane = initial(W.plane)
W.dropped()
@@ -137,7 +137,7 @@
if(I)
if(client)
client.screen -= I
I.forceMove(loc)
I.forceMove(drop_location())
I.dropped(src)
if(I)
I.layer = initial(I.layer)
@@ -66,7 +66,7 @@
#define MAX_ALIEN_LEAP_DIST 7
/mob/living/carbon/alien/humanoid/hunter/proc/leap_at(var/atom/A)
if(pounce_cooldown)
if(pounce_cooldown > world.time)
to_chat(src, "<span class='alertalien'>You are too fatigued to pounce right now!</span>")
return
@@ -114,9 +114,7 @@
Weaken(2, 1, 1)
toggle_leap(0)
pounce_cooldown = !pounce_cooldown
spawn(pounce_cooldown_time) //3s by default
pounce_cooldown = !pounce_cooldown
pounce_cooldown = world.time + pounce_cooldown_time
else if(A.density && !A.CanPass(src))
visible_message("<span class ='danger'>[src] smashes into [A]!</span>", "<span class ='alertalien'>[src] smashes into [A]!</span>")
Weaken(2, 1, 1)
@@ -178,7 +178,7 @@ emp_act
/mob/living/carbon/human/grabbedby(mob/living/user)
if(w_uniform)
w_uniform.add_fingerprint(user)
..()
return ..()
//Returns 1 if the attack hit, 0 if it missed.
/mob/living/carbon/human/attacked_by(obj/item/I, mob/living/user, def_zone)
@@ -630,7 +630,7 @@
var/obj/item/reagent_containers/food/snacks/newSnack = new chosenType(get_turf(src))
TARGET = newSnack
newSnack.reagents.remove_any((newSnack.reagents.total_volume/2)-1)
newSnack.name = "Synthetic [newSnack.name]"
newSnack.name = "synthetic [newSnack.name]"
custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")] as [p_they()] vomit[p_s()] [newSnack] from [p_their()] mouth!")
catch(var/exception/e)
log_runtime(e, src, "Caught in SNPC cooking module")
@@ -83,7 +83,6 @@
if("Warden","Security Officer","Security Pod Pilot")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security
H.equip_or_collect(new /obj/item/gun/energy/gun/advtaser(H), slot_in_backpack)
if("Internal Affairs Agent")
suit=/obj/item/clothing/suit/space/eva/plasmaman/lawyer
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/lawyer
@@ -93,7 +92,6 @@
if("Head of Security")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/hos
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/hos
H.equip_or_collect(new /obj/item/gun/energy/gun(H), slot_in_backpack)
if("Captain", "Blueshield")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/captain
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/captain
+3 -1
View File
@@ -381,6 +381,7 @@ proc/get_radio_key_from_channel(var/channel)
var/eavesdropping_range = 2
var/watching_range = 5
var/italics = 1
var/adverb_added = FALSE
var/not_heard //the message displayed to people who could not hear the whispering
if(speaking)
@@ -389,6 +390,7 @@ proc/get_radio_key_from_channel(var/channel)
not_heard = "[verb] something"
else
var/adverb = pick("quietly", "softly")
adverb_added = TRUE
verb = "[speaking.speech_verb] [adverb]"
not_heard = "[speaking.speech_verb] something [adverb]"
else
@@ -404,7 +406,7 @@ proc/get_radio_key_from_channel(var/channel)
if(verb == "yells loudly")
verb = "slurs emphatically"
else if(speech_problem_flag)
else if(speech_problem_flag && !adverb_added)
var/adverb = pick("quietly", "softly")
verb = "[verb] [adverb]"
+5 -5
View File
@@ -69,7 +69,7 @@ var/list/ai_verbs_default = list(
var/control_disabled = 0 // Set to 1 to stop AI from interacting via Click() -- TLE
var/malfhacking = 0 // More or less a copy of the above var, so that malf AIs can hack and still get new cyborgs -- NeoFite
var/malf_cooldown = 0 //Cooldown var for malf modules
var/malf_cooldown = 0 //Cooldown var for malf modules, stores a worldtime + cooldown
var/obj/machinery/power/apc/malfhack = null
var/explosive = 0 //does the AI explode when it dies?
@@ -281,7 +281,7 @@ var/list/ai_verbs_default = list(
/obj/machinery/ai_powersupply
name="\improper AI power supply"
active_power_usage=1000
use_power = 2
use_power = ACTIVE_POWER_USE
power_channel = EQUIP
var/mob/living/silicon/ai/powered_ai = null
invisibility = 100
@@ -303,9 +303,9 @@ var/list/ai_verbs_default = list(
return
if(!powered_ai.anchored)
loc = powered_ai.loc
use_power = 0
use_power = NO_POWER_USE
if(powered_ai.anchored)
use_power = 2
use_power = ACTIVE_POWER_USE
/mob/living/silicon/ai/proc/pick_icon()
set category = "AI Commands"
@@ -1250,7 +1250,7 @@ var/list/ai_verbs_default = list(
else
to_chat(src, "<span class='warning'>Target is not on or near any active cameras on the station.</span>")
/mob/living/silicon/ai/handle_fire()
return
@@ -4,7 +4,7 @@
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 20
active_power_usage = 5000
@@ -20,6 +20,9 @@
contents -= O
if(module)
O.loc = module //Return item to module so it appears in its contents, so it can be taken out again.
for(var/X in O.actions) // Remove assocated actions
var/datum/action/A = X
A.Remove(src)
if(module_active == O)
module_active = null
@@ -56,6 +59,7 @@
O.plane = HUD_PLANE
O.screen_loc = inv1.screen_loc
contents += O
set_actions(O)
else if(!module_state_2)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_2 = O
@@ -63,6 +67,7 @@
O.plane = HUD_PLANE
O.screen_loc = inv2.screen_loc
contents += O
set_actions(O)
else if(!module_state_3)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_3 = O
@@ -70,10 +75,16 @@
O.plane = HUD_PLANE
O.screen_loc = inv3.screen_loc
contents += O
set_actions(O)
else
to_chat(src, "You need to disable a module first!")
update_icons()
/mob/living/silicon/robot/proc/set_actions(obj/item/I)
for(var/X in I.actions)
var/datum/action/A = X
A.Grant(src)
/mob/living/silicon/robot/proc/uneq_active()
uneq_module(module_active)
@@ -889,7 +889,7 @@ Pass a positive integer as an argument to override a bot's default speed.
// Machinery to simplify topic and access calls
/obj/machinery/bot_core
use_power = 0
use_power = NO_POWER_USE
var/mob/living/simple_animal/bot/owner = null
/obj/machinery/bot_core/New(loc)
@@ -1106,4 +1106,4 @@ Pass a positive integer as an argument to override a bot's default speed.
var/image/I = path[path[1]]
if(I)
I.icon = null
path.Cut(1, 2)
path.Cut(1, 2)
@@ -44,7 +44,7 @@
icon_state = "ed209_frame"
item_state = "ed209_frame"
var/build_step = 0
var/created_name = "ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess
var/created_name = "\improper ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess
var/lasercolor = ""
/obj/item/ed209_assembly/attackby(obj/item/W, mob/user, params)
@@ -706,10 +706,14 @@
H.apply_damage(0.5*damage, BRUTE, "r_arm", run_armor_check("r_arm", "melee"))
var/turf/T = get_turf(src)
H.add_mob_blood(H)
H.add_splatter_floor(T)
if(NO_BLOOD in H.dna.species.species_traits)//Does the run over mob have blood?
return//If it doesn't it shouldn't bleed (Though a check should be made eventually for things with liquid in them, like slime people, vox armalis, etc.)
var/turf/T = get_turf(src)//Where are we?
H.add_mob_blood(H)//Cover the victim in their own blood.
H.add_splatter_floor(T)//Put the blood where we are.
bloodiness += 4
var/list/blood_dna = H.get_blood_dna_list()
@@ -175,7 +175,7 @@ Auto Patrol: []"},
mode = BOT_HUNT
/mob/living/simple_animal/bot/secbot/attack_hand(mob/living/carbon/human/H)
if(H.a_intent == INTENT_HARM)
if(H.a_intent == INTENT_HARM || H.a_intent == INTENT_DISARM)
retaliate(H)
return ..()
+4 -2
View File
@@ -316,8 +316,7 @@
job_master.AssignRole(src, rank, 1)
var/mob/living/character = create_character() //creates the human and transfers vars and mind
character = job_master.EquipRank(character, rank, 1) //equips the human
EquipCustomItems(character)
// AIs don't need a spawnpoint, they must spawn at an empty core
if(character.mind.assigned_role == "AI")
@@ -365,6 +364,9 @@
ticker.mode.latespawn(character)
character = job_master.EquipRank(character, rank, 1) //equips the human
EquipCustomItems(character)
if(character.mind.assigned_role == "Cyborg")
AnnounceCyborg(character, rank, join_message)
callHook("latespawn", list(character))
@@ -2,7 +2,7 @@
/obj/machinery/ntnet_relay
name = "NTNet Quantum Relay"
desc = "A very complex router and transmitter capable of connecting electronic devices together. Looks fragile."
use_power = 2
use_power = ACTIVE_POWER_USE
active_power_usage = 10000 //10kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. Used to be 20 but that actually drained the smes one round
idle_power_usage = 100
icon = 'icons/obj/stationobjs.dmi'
@@ -38,9 +38,9 @@
/obj/machinery/ntnet_relay/process()
if(operable())
use_power = 2
use_power = ACTIVE_POWER_USE
else
use_power = 1
use_power = IDLE_POWER_USE
update_icon()
@@ -7,7 +7,7 @@ var/list/global_modular_computers = list()
name = "modular computer"
desc = "An advanced computer."
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
var/hardware_flag = 0 // A flag that describes this device type
var/last_power_usage = 0 // Power usage during last tick
@@ -24,7 +24,7 @@
if(!check_functionality())
return FALSE
var/obj/item/paper/P = new/obj/item/paper(get_turf(holder))
var/obj/item/paper/P = new/obj/item/paper(holder.drop_location())
// Damaged printer causes the resulting paper to be somewhat harder to read.
if(damage > damage_malfunction)
+2 -4
View File
@@ -87,8 +87,7 @@
"<span class='userdanger'>[A]\ puts you in a [hold_name]! You are unable to speak!</span>")
step_to(D,get_step(D,D.dir),1)
D.grabbedby(A, 1)
var/obj/item/grab/G = A.get_active_hand()
var/obj/item/grab/G = D.grabbedby(A, 1)
if(G)
G.state = GRAB_NECK
@@ -136,8 +135,7 @@
return A.pointed(D)
/datum/martial_art/ninja_martial_art/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) //Instant aggressive grab
D.grabbedby(A)
var/obj/item/grab/G = A.get_active_hand()
var/obj/item/grab/G = D.grabbedby(A)
if(G)
G.state = GRAB_AGGRESSIVE
+1 -1
View File
@@ -13,7 +13,7 @@ var/list/alldepartments = list()
var/long_range_enabled = 0 // Can we send messages off the station?
req_one_access = list(access_lawyer, access_heads, access_armory)
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 30
active_power_usage = 200
+1 -1
View File
@@ -7,7 +7,7 @@
var/insert_anim = "bigscanner1"
anchored = 1
density = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 30
active_power_usage = 200
power_channel = EQUIP
+1 -1
View File
@@ -47,7 +47,7 @@
desc = "A control terminal for the area electrical systems."
icon_state = "apc0"
anchored = 1
use_power = 0
use_power = NO_POWER_USE
req_access = list(access_engine_equip)
var/spooky=0
var/area/area
+2 -2
View File
@@ -4,7 +4,7 @@
icon_state = "teg"
anchored = 0
density = 1
use_power = 0
use_power = NO_POWER_USE
var/obj/machinery/atmospherics/binary/circulator/cold_circ
var/obj/machinery/atmospherics/binary/circulator/hot_circ
@@ -244,4 +244,4 @@
/obj/machinery/power/generator/power_change()
..()
update_icon()
update_icon()
+3 -3
View File
@@ -24,7 +24,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
icon = 'icons/obj/machines/gravity_generator.dmi'
anchored = 1
density = 1
use_power = 0
use_power = NO_POWER_USE
unacidable = 1
var/sprite_number = 0
@@ -101,7 +101,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
active_power_usage = 3000
power_channel = ENVIRON
sprite_number = 8
use_power = 1
use_power = IDLE_POWER_USE
interact_offline = 1
var/on = 1
var/breaker = 1
@@ -287,7 +287,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
/obj/machinery/gravity_generator/main/proc/set_state(var/new_state)
charging_state = POWER_IDLE
on = new_state
use_power = on ? 2 : 1
use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE
// Sound the alert if gravity was just enabled or disabled.
var/alert = 0
var/area/area = get_area(src)
+6 -6
View File
@@ -133,7 +133,7 @@
desc = "A lighting fixture."
anchored = 1
layer = 5 // They were appearing under mobs which is a little weird - Ostaf
use_power = 2
use_power = ACTIVE_POWER_USE
idle_power_usage = 2
active_power_usage = 20
power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list
@@ -258,10 +258,10 @@
on = 0
set_light(0)
else
use_power = 2
use_power = ACTIVE_POWER_USE
set_light(BR, PO, CO)
else
use_power = 1
use_power = IDLE_POWER_USE
set_light(0)
active_power_usage = (brightness_range * 10)
@@ -484,7 +484,7 @@
// create a light tube/bulb item and put it in the user's hand
var/obj/item/light/L = new light_type()
var/obj/item/light/L = new light_type(get_turf(user))
L.status = status
L.rigged = rigged
L.brightness_range = brightness_range
@@ -499,7 +499,7 @@
L.update()
L.add_fingerprint(user)
user.put_in_active_hand(L) //puts it in our active hand
user.put_in_hands(L) //puts it in our active hand
status = LIGHT_EMPTY
update()
@@ -576,7 +576,7 @@
/obj/machinery/light/blob_act()
if(prob(75))
broken()
qdel(src)
// timed process
+1 -1
View File
@@ -6,7 +6,7 @@
icon_state = "portgen0_0"
density = 1
anchored = 0
use_power = 0
use_power = NO_POWER_USE
var/active = 0
var/power_gen = 5000
+3 -3
View File
@@ -12,7 +12,7 @@
anchored = 1.0
on_blueprints = TRUE
var/datum/powernet/powernet = null
use_power = 0
use_power = NO_POWER_USE
idle_power_usage = 0
active_power_usage = 0
@@ -297,7 +297,7 @@
//source is an object caused electrocuting (airlock, grille, etc)
//No animations will be performed by this proc.
/proc/electrocute_mob(mob/living/carbon/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0)
if(!istype(M))
if(!istype(M))
return 0
if(istype(M.loc,/obj/mecha))
return 0 //feckin mechs are dumb
@@ -305,7 +305,7 @@
var/mob/living/carbon/human/H = M
if(H.gloves)
var/obj/item/clothing/gloves/G = H.gloves
if(G.siemens_coefficient == 0)
if(G.siemens_coefficient == 0)
return 0 //to avoid spamming with insulated glvoes on
var/area/source_area
+1 -2
View File
@@ -8,7 +8,7 @@ var/global/list/rad_collectors = list()
anchored = 0
density = 1
req_access = list(access_engine_equip)
// use_power = 0
// use_power = NO_POWER_USE
var/obj/item/tank/plasma/P = null
var/last_power = 0
var/active = 0
@@ -148,4 +148,3 @@ var/global/list/rad_collectors = list()
flick("ca_deactive", src)
update_icons()
return
@@ -6,7 +6,7 @@
anchored = 1
density = 0
unacidable = 1
use_power = 0
use_power = NO_POWER_USE
light_range = 4
layer = OBJ_LAYER + 0.1
var/obj/machinery/field/generator/FG1 = null
+2 -2
View File
@@ -7,7 +7,7 @@
density = 1
req_access = list(access_engine_equip)
use_power = 0
use_power = NO_POWER_USE
idle_power_usage = 10
active_power_usage = 300
@@ -167,7 +167,7 @@
/* if((severity == 1)&&prob(1)&&prob(1))
if(src.active)
src.active = 0
src.use_power = 1 */
src.use_power = IDLE_POWER_USE */
return 1
@@ -26,7 +26,7 @@ field_generator power level display
icon_state = "Field_Gen"
anchored = 0
density = 1
use_power = 0
use_power = NO_POWER_USE
armor = list(melee = 25, bullet = 10, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0)
var/const/num_power_levels = 6 // Total number of power level icon has
var/power_level = 0
+1 -1
View File
@@ -6,7 +6,7 @@
icon_state = "TheSingGen"
anchored = 0
density = 1
use_power = 0
use_power = NO_POWER_USE
var/energy = 0
var/creation_type = /obj/singularity
@@ -281,7 +281,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
icon_state = "none"
anchored = 0
density = 1
use_power = 0
use_power = NO_POWER_USE
idle_power_usage = 0
active_power_usage = 0
var/construction_state = 0
@@ -408,10 +408,10 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
if(construction_state < 3)//Was taken apart, update state
update_state()
if(use_power)
use_power = 0
use_power = NO_POWER_USE
construction_state = temp_state
if(construction_state >= 3)
use_power = 1
use_power = IDLE_POWER_USE
update_icon()
return 1
return 0
@@ -6,7 +6,7 @@
reference = "control_box"
anchored = 0
density = 1
use_power = 0
use_power = NO_POWER_USE
idle_power_usage = 500
active_power_usage = 10000
construction_state = 0
@@ -42,7 +42,7 @@
/obj/machinery/particle_accelerator/control_box/update_state()
if(construction_state < 3)
use_power = 0
use_power = NO_POWER_USE
assembled = 0
active = 0
for(var/obj/structure/particle_accelerator/part in connected_parts)
@@ -52,7 +52,7 @@
connected_parts = list()
return
if(!part_scan())
use_power = 1
use_power = IDLE_POWER_USE
active = 0
connected_parts = list()
@@ -147,9 +147,9 @@
..()
if(stat & NOPOWER)
active = 0
use_power = 0
use_power = NO_POWER_USE
else if(!stat && construction_state <= 3)
use_power = 1
use_power = IDLE_POWER_USE
update_icon()
if((stat & NOPOWER) || (!stat && construction_state <= 3)) //Only update the part icons if something's changed (i.e. any of the above condition sets are met).
@@ -231,13 +231,13 @@
log_game("PA Control Computer turned ON by [key_name(usr)] in ([x],[y],[z])")
use_log += text("\[[time_stamp()]\] <font color='red'>[key_name(usr)] has turned on the PA Control Computer.</font>")
if(active)
use_power = 2
use_power = ACTIVE_POWER_USE
for(var/obj/structure/particle_accelerator/part in connected_parts)
part.strength = strength
part.powered = 1
part.update_icon()
else
use_power = 1
use_power = IDLE_POWER_USE
for(var/obj/structure/particle_accelerator/part in connected_parts)
part.strength = null
part.powered = 0
@@ -276,4 +276,4 @@
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.open()
return
return
+2 -2
View File
@@ -8,7 +8,7 @@
icon_state = "sp_base"
anchored = 1
density = 1
use_power = 0
use_power = NO_POWER_USE
idle_power_usage = 0
active_power_usage = 0
var/id = 0
@@ -279,7 +279,7 @@
icon_state = "computer"
anchored = 1
density = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 250
var/icon_screen = "solar"
var/icon_keyboard = "power_key"
+2 -2
View File
@@ -10,7 +10,7 @@
icon_state = "tracker"
anchored = 1
density = 1
use_power = 0
use_power = NO_POWER_USE
var/id = 0
var/sun_angle = 0 // sun angle as set by sun datum
@@ -82,4 +82,4 @@
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
w_class = WEIGHT_CLASS_SMALL
origin_tech = "engineering=2;programming=1"
origin_tech = "engineering=2;programming=1"
+1 -1
View File
@@ -8,7 +8,7 @@
desc = "A power-generating treadmill."
layer = 2.2
anchored = 1
use_power = 0
use_power = NO_POWER_USE
var/speed = 0
var/friction = 0.15 // lose this much speed every ptick
@@ -4,7 +4,7 @@
anchored = 1
icon = 'icons/obj/chemical.dmi'
icon_state = "dispenser"
use_power = 0
use_power = NO_POWER_USE
idle_power_usage = 40
var/ui_title = "Chem Dispenser 5000"
var/energy = 100
@@ -4,7 +4,7 @@
anchored = 1
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0b"
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 40
var/obj/item/reagent_containers/beaker = null
var/desired_temp = 300
@@ -154,4 +154,4 @@
beakerContents.Add(list(list("name" = R.name, "volume" = R.volume))) // list in a list because Byond merges the first list...
data["beakerContents"] = beakerContents
return data
return data
@@ -4,7 +4,7 @@
anchored = 1
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0"
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 20
var/obj/item/reagent_containers/beaker = null
var/obj/item/storage/pill_bottle/loaded_pill_bottle = null
@@ -416,4 +416,4 @@
to_chat(user, "<span class='warning'>You can't use the [name] while it's panel is opened!</span>")
return 1
else
..()
..()
@@ -6,7 +6,7 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0"
circuit = /obj/item/circuitboard/pandemic
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 20
var/temp_html = ""
var/wait = null
@@ -294,4 +294,4 @@
..()
return
else
..()
..()
@@ -4,7 +4,7 @@
icon_state = "juicer1"
layer = 2.9
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 100
pass_flags = PASSTABLE
@@ -33,7 +33,6 @@
/obj/item/grown/novaflower = list("capsaicin" = 0, "condensedcapsaicin" = 0),
//Blender Stuff
/obj/item/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
/obj/item/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
/obj/item/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
/obj/item/reagent_containers/food/snacks/grown/oat = list("flour" = -5),
@@ -58,6 +57,7 @@
var/list/juice_items = list (
//Juicer Stuff
/obj/item/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
/obj/item/reagent_containers/food/snacks/grown/corn = list("corn_starch" = 0),
/obj/item/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0),
@@ -446,4 +446,4 @@
var/amount = O.reagents.total_volume
O.reagents.trans_to(beaker, amount)
if(!O.reagents.total_volume)
remove_object(O)
remove_object(O)
+5 -9
View File
@@ -335,7 +335,7 @@
// timed process
// charge the gas reservoir and perform flush if ready
/obj/machinery/disposal/process()
use_power = 0
use_power = NO_POWER_USE
if(stat & BROKEN) // nothing can happen if broken
return
@@ -356,13 +356,13 @@
if(stat & NOPOWER) // won't charge if no power
return
use_power = 1
use_power = IDLE_POWER_USE
if(mode != 1) // if off or ready, no need to charge
return
// otherwise charge
use_power = 2
use_power = ACTIVE_POWER_USE
var/atom/L = loc // recharging from loc turf
@@ -760,12 +760,8 @@
return
if(T.intact && istype(T,/turf/simulated/floor)) //intact floor, pop the tile
var/turf/simulated/floor/F = T
//F.health = 100
F.burnt = 1
F.intact = 0
F.levelupdate()
new /obj/item/stack/tile(H) // add to holder so it will be thrown with other stuff
F.icon_state = "Floor[F.burnt ? "1" : ""]"
new F.builtin_tile.type(H)
F.remove_tile(null,TRUE,FALSE)
if(direction) // direction is specified
if(istype(T, /turf/space)) // if ended in space, then range is unlimited
@@ -134,6 +134,7 @@
name = "package wrapper"
icon = 'icons/obj/items.dmi'
icon_state = "deliveryPaper"
singular_name = "package wrapper"
flags = NOBLUDGEON
amount = 25
max_amount = 25
+1 -1
View File
@@ -21,7 +21,7 @@
icon_state = "h_lathe"
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
var/recentlyExperimented = 0
var/mob/trackedIan
var/mob/trackedRuntime
+3 -3
View File
@@ -50,7 +50,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
name = "Messaging Server"
density = 1
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 100
@@ -199,7 +199,7 @@ var/obj/machinery/blackbox_recorder/blackbox
name = "Blackbox Recorder"
density = 1
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 100
var/list/messages = list() //Stores messages of non-standard frequencies
@@ -377,4 +377,4 @@ proc/feedback_add_details(var/variable,var/details)
if(!FV) return
FV.add_details(details)
FV.add_details(details)
+2 -2
View File
@@ -6,7 +6,7 @@
icon = 'icons/obj/machines/research.dmi'
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
var/busy = 0
var/hacked = 0
var/disabled = 0
@@ -130,4 +130,4 @@
use_power(min(1000, (amount_inserted / 100)))
overlays += "[initial(name)]_[stack_name]"
sleep(10)
overlays -= "[initial(name)]_[stack_name]"
overlays -= "[initial(name)]_[stack_name]"
@@ -17,7 +17,7 @@
var/ert_reason = "Reason for ERT"
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 6
power_channel = ENVIRON
+1 -1
View File
@@ -256,7 +256,7 @@
var/obj/machinery/bsa/full/cannon
var/notice
var/target
use_power = 0
use_power = NO_POWER_USE
circuit = /obj/item/circuitboard/computer/bsa_control
icon = 'icons/obj/machines/particle_accelerator3.dmi'
icon_state = "control_boxp"
+2 -2
View File
@@ -5,7 +5,7 @@
icon = 'icons/obj/telescience.dmi'
icon_state = "pad-idle"
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 200
active_power_usage = 5000
var/efficiency
@@ -61,7 +61,7 @@
icon = 'icons/obj/telescience.dmi'
icon_state = "pad-idle"
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 20
active_power_usage = 500
var/stage = 0