Merge pull request #9 from ZomgPonies/master

Merge from master
This commit is contained in:
Fox-McCloud
2014-02-02 00:24:24 -08:00
72 changed files with 18788 additions and 18203 deletions
+63 -6
View File
@@ -5,6 +5,64 @@
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
#define FILE_DIR "code"
#define FILE_DIR "code/TriDimension"
#define FILE_DIR "code/WorkInProgress"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
#define FILE_DIR "code/WorkInProgress/Susan"
#define FILE_DIR "html"
#define FILE_DIR "icons"
#define FILE_DIR "icons/48x48"
#define FILE_DIR "icons/ass"
#define FILE_DIR "icons/effects"
#define FILE_DIR "icons/mecha"
#define FILE_DIR "icons/misc"
#define FILE_DIR "icons/mob"
#define FILE_DIR "icons/mob/human_races"
#define FILE_DIR "icons/mob/otherHuman"
#define FILE_DIR "icons/NTOS"
#define FILE_DIR "icons/obj"
#define FILE_DIR "icons/obj/assemblies"
#define FILE_DIR "icons/obj/atmospherics"
#define FILE_DIR "icons/obj/clothing"
#define FILE_DIR "icons/obj/doors"
#define FILE_DIR "icons/obj/flora"
#define FILE_DIR "icons/obj/machines"
#define FILE_DIR "icons/obj/pipes"
#define FILE_DIR "icons/obj/power_cond"
#define FILE_DIR "icons/pda_icons"
#define FILE_DIR "icons/spideros_icons"
#define FILE_DIR "icons/stamp_icons"
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
#define FILE_DIR "icons/vending_icons"
#define FILE_DIR "nano"
#define FILE_DIR "nano/images"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/effects"
#define FILE_DIR "sound/effects/turret"
#define FILE_DIR "sound/effects/wind"
#define FILE_DIR "sound/hallucinations"
#define FILE_DIR "sound/items"
#define FILE_DIR "sound/machines"
#define FILE_DIR "sound/mecha"
#define FILE_DIR "sound/misc"
#define FILE_DIR "sound/music"
#define FILE_DIR "sound/piano"
#define FILE_DIR "sound/turntable"
#define FILE_DIR "sound/violin"
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/voice/complionator"
#define FILE_DIR "sound/voice/Serithi"
#define FILE_DIR "sound/vox"
#define FILE_DIR "sound/vox_fem"
#define FILE_DIR "sound/weapons"
// END_FILE_DIR
// BEGIN_PREFERENCES
#define DEBUG
@@ -580,7 +638,6 @@
#include "code\game\objects\items\weapons\power_cells.dm"
#include "code\game\objects\items\weapons\RCD.dm"
#include "code\game\objects\items\weapons\RCS.dm"
#include "code\game\objects\items\weapons\RPD.dm"
#include "code\game\objects\items\weapons\RSF.dm"
#include "code\game\objects\items\weapons\scrolls.dm"
#include "code\game\objects\items\weapons\shields.dm"
@@ -843,10 +900,10 @@
#include "code\modules\customitems\item_spawning.dm"
#include "code\modules\customitems\definitions\base.dm"
#include "code\modules\destilery\main.dm"
#include "code\modules\detectivework\detective_work.dm"
#include "code\modules\detectivework\evidence.dm"
#include "code\modules\detectivework\footprints_and_rag.dm"
#include "code\modules\detectivework\scanner.dm"
#include "code\modules\DetectiveWork\detective_work.dm"
#include "code\modules\DetectiveWork\evidence.dm"
#include "code\modules\DetectiveWork\footprints_and_rag.dm"
#include "code\modules\DetectiveWork\scanner.dm"
#include "code\modules\economy\Accounts.dm"
#include "code\modules\economy\Accounts_DB.dm"
#include "code\modules\economy\ATM.dm"
@@ -1103,7 +1160,6 @@
#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm"
#include "code\modules\mob\living\simple_animal\friendly\lizard.dm"
#include "code\modules\mob\living\simple_animal\friendly\mouse.dm"
#include "code\modules\mob\living\simple_animal\friendly\mushroom.dm"
#include "code\modules\mob\living\simple_animal\friendly\slime.dm"
#include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm"
#include "code\modules\mob\living\simple_animal\friendly\tomato.dm"
@@ -1118,6 +1174,7 @@
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
#include "code\modules\mob\living\simple_animal\hostile\mimic.dm"
#include "code\modules\mob\living\simple_animal\hostile\mining_mobs.dm"
#include "code\modules\mob\living\simple_animal\hostile\mushroom.dm"
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
#include "code\modules\mob\living\simple_animal\hostile\russian.dm"
#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm"
+3 -3
View File
@@ -39,8 +39,8 @@ var/global/list/facial_hair_styles_male_list = list()
var/global/list/facial_hair_styles_female_list = list()
var/global/list/skin_styles_female_list = list() //unused
//Underwear
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "Love-Hearts", "Black2", "Grey2", "Stripey", "Kinky", "None") //Curse whoever made male/female underwear diffrent colours
var/global/list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "Thong", "Babydoll", "Baby-Blue", "Green", "Pink", "Kinky", "None")
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "None") //Curse whoever made male/female underwear diffrent colours
var/global/list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "Thong", "None")
//Backpacks
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
@@ -125,4 +125,4 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al
for(var/path in typesof(prototype))
if(path == prototype) continue
L += new path()
return L
return L
+1 -13
View File
@@ -23,9 +23,6 @@
var/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour
var/allow_vote_restart = 0 // allow votes to restart
var/allow_vote_mode = 0 // allow votes to change mode
var/allow_admin_jump = 1 // allows admin jumping
var/allow_admin_spawning = 1 // allows admin item spawning
var/allow_admin_rev = 1 // allows admin revives
var/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default)
var/vote_period = 600 // length of voting period (deciseconds, default 1 minute)
var/vote_autotransfer_initial = 72000 // Length of time before the first autotransfer vote is called
@@ -258,16 +255,7 @@
if ("allow_vote_mode")
config.allow_vote_mode = 1
if ("allow_admin_jump")
config.allow_admin_jump = 1
if("allow_admin_rev")
config.allow_admin_rev = 1
if ("allow_admin_spawning")
config.allow_admin_spawning = 1
if ("no_dead_vote")
if("no_dead_vote")
config.vote_no_dead = 1
if ("default_no_vote")
+5 -4
View File
@@ -45,12 +45,13 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/food
name = "Food crate"
contains = list(/obj/item/weapon/reagent_containers/food/drinks/flour,
contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/drinks/milk,
/obj/item/weapon/reagent_containers/food/drinks/milk,
/obj/item/weapon/storage/fancy/egg_box,
/obj/item/weapon/reagent_containers/food/condiment/enzyme,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana)
cost = 10
@@ -1064,4 +1065,4 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
cost = 15
containertype = /obj/structure/closet/crate
containername = "mafia supply crate"
group = "Operations"
group = "Operations"
+17 -2
View File
@@ -526,11 +526,18 @@ proc/process_ghost_teleport_locs()
icon_state = "yellow"
requires_power = 0
/area/ninja_outpost
name = "\improper SpiderClan Outpost"
/area/ninja
name = "\improper Ninja Area Parent"
icon_state = "ninjabase"
requires_power = 0
/area/ninja/outpost
name = "\improper SpiderClan Outpost"
/area/ninja/holding
name = "\improper SpiderClan Holding Facility"
/area/vox_station/transit
name = "\improper hyperspace"
icon_state = "shuttle"
@@ -881,6 +888,14 @@ proc/process_ghost_teleport_locs()
name = "\improper Messaging Server Room"
icon_state = "server"
/area/ntrep
name = "\improper NanoTrasen Rep Office"
icon_state = "bluenew"
/area/blueshield
name = "\improper Blueshield's Office"
icon_state = "blueold"
//Crew
/area/crew_quarters
+3
View File
@@ -42,6 +42,9 @@
M.take_organ_damage(20)
/atom/proc/CheckParts()
return
/atom/proc/assume_air(datum/gas_mixture/giver)
del(giver)
return null
+3 -4
View File
@@ -104,11 +104,10 @@
var/list/deactivation_messages=list()
/datum/dna/gene/basic/can_activate(var/mob/M,var/flags)
// Probability check
if(flags & MUTCHK_FORCED || probinj(activation_prob,(flags&MUTCHK_FORCED)))
if(flags & MUTCHK_FORCED)
return 1
return 0
// Probability check
return probinj(activation_prob,(flags&MUTCHK_FORCED))
/datum/dna/gene/basic/activate(var/mob/M)
M.mutations.Add(mutation)
+1 -1
View File
@@ -54,7 +54,7 @@
if(!istype(T))
return
if(T.lighting_lumcount <= 2)
M.alpha = round(255 * 0.05)
M.alpha = 0
else
M.alpha = round(255 * 0.80)
+4
View File
@@ -71,6 +71,8 @@
block=COLDBLOCK
can_activate(var/mob/M,var/flags)
if(flags & MUTCHK_FORCED)
return !(/datum/dna/gene/basic/cold_resist in M.active_genes)
// Probability check
var/_prob = 15
if(M_RESIST_COLD in M.mutations)
@@ -90,6 +92,8 @@
block=FIREBLOCK
can_activate(var/mob/M,var/flags)
if(flags & MUTCHK_FORCED)
return !(/datum/dna/gene/basic/heat_resist in M.active_genes)
// Probability check
var/_prob=30
if(M_RESIST_HEAT in M.mutations)
+5
View File
@@ -157,6 +157,8 @@
/obj/effect/biomass/temperature_expose(null, temp, volume) //hotspots kill biomass
del src
/datum/event/biomass/start()
biomass_infestation()
/proc/biomass_infestation()
@@ -173,3 +175,6 @@
var/turf/simulated/floor/T = pick(turfs)
new/obj/effect/biomass_controller(T) //spawn a controller at turf
message_admins("\blue Event: Biomass spawned at [T.loc.loc] ([T.x],[T.y],[T.z])")
@@ -186,6 +186,7 @@ ________________________________________________________________________________
unlock_suit()
break
lock_suit(U,1)//Check for icons.
U.hud_used.human_hud('icons/mob/screen1_NinjaHUD.dmi',"#ffffff",255)
U.regenerate_icons()
U << "\blue Linking neural-net interface...\nPattern \green <B>GREEN</B>\blue, continuing operation."
if(4)
@@ -238,6 +239,8 @@ ________________________________________________________________________________
cancel_stealth()//Shutdowns stealth.
if(4)
U << "\blue Disconnecting neural-net interface...\green<B>Success</B>\blue."
U.hud_used.instantiate()
U.regenerate_icons()
if(5)
U << "\blue Disengaging neural-net interface...\green<B>Success</B>\blue."
if(6)
@@ -558,6 +561,17 @@ ________________________________________________________________________________
P.overlays.Cut()
P.overlays += image('icons/obj/pda.dmi', "pda-r")
var/mob/living/L = null
if(P.loc && isliving(P.loc))
L = P.loc
//Maybe they are a pAI!
else
L = get(P, /mob/living/silicon)
if(L)
L << "\icon[P] <b>Message from [!s_control?(A):"an unknown source"], </b>\"[t]\" (<i>Unable to Reply</i>)"
if("Inject")
if( (href_list["tag"]=="radium"? (reagents.get_reagent_amount("radium"))<=(a_boost*a_transfer) : !reagents.get_reagent_amount(href_list["tag"])) )//Special case for radium. If there are only a_boost*a_transfer radium units left.
display_to << "\red Error: the suit cannot perform this function. Out of [href_list["name"]]."
+1 -1
View File
@@ -1415,7 +1415,7 @@ datum
check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
var/captured_amount = 0
var/area/centcom/holding/A = locate()
var/area/ninja/holding/A = locate()
for(var/mob/living/carbon/human/M in A)//Humans.
if(M.stat==2)//Dead folks are worth less.
captured_amount+=0.5
+1 -1
View File
@@ -566,7 +566,7 @@ datum/objective/capture
check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
var/captured_amount = 0
var/area/centcom/holding/A = locate()
var/area/ninja/holding/A = locate()
for(var/mob/living/carbon/human/M in A)//Humans.
if(M.stat==2)//Dead folks are worth less.
captured_amount+=0.5
-5
View File
@@ -40,11 +40,6 @@
typepath = /obj/item/weapon/rcd
protected_jobs = list("Chief Engineer")
/datum/theft_objective/rpd
name = "an RPD"
typepath = /obj/item/weapon/pipe_dispenser
protected_jobs = list("Chief Engineer")
/datum/theft_objective/jetpack
name = "a jetpack"
typepath = /obj/item/weapon/tank/jetpack
+9 -10
View File
@@ -4,8 +4,8 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/stack/sheet/metal(), \
new /obj/item/stack/sheet/glass(), \
new /obj/item/stack/sheet/rglass(), \
new /obj/item/stack/rods(), \
new /obj/item/stack/sheet/fur(), \
new /obj/item/stack/rods(), \
new /obj/item/weapon/crowbar(), \
new /obj/item/weapon/screwdriver(), \
new /obj/item/weapon/weldingtool(), \
@@ -21,7 +21,6 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/weapon/airlock_electronics(), \
new /obj/item/weapon/airalarm_electronics(), \
new /obj/item/weapon/firealarm_electronics(), \
new /obj/item/weapon/rcd_ammo(), \
new /obj/item/weapon/kitchenknife(), \
new /obj/item/weapon/scalpel(), \
new /obj/item/weapon/circular_saw(), \
@@ -32,9 +31,6 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/weapon/reagent_containers/glass/beaker(), \
new /obj/item/weapon/reagent_containers/glass/beaker/large(), \
new /obj/item/weapon/reagent_containers/glass/bucket(), \
new /obj/item/weapon/storage/box/blanks(), \
new /obj/item/ammo_casing/shotgun/beanbag(), \
new /obj/item/ammo_box/c38(), \
new /obj/item/device/taperecorder(), \
new /obj/item/device/assembly/igniter(), \
new /obj/item/device/assembly/signaler(), \
@@ -46,6 +42,12 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/weapon/light/tube(), \
new /obj/item/weapon/light/bulb(), \
new /obj/item/weapon/camera_assembly(), \
new /obj/item/weapon/rcd_ammo(), \
new /obj/item/ammo_casing/shotgun/beanbag(), \
new /obj/item/weapon/storage/box/blanks(), \
new /obj/item/ammo_casing/shotgun(), \
new /obj/item/ammo_box/c38(), \
new /obj/item/ammo_box/a357(), \
new /obj/item/clothing/ears/earmuffs/tribblemuffs(), \
new /obj/item/clothing/gloves/furgloves(), \
new /obj/item/clothing/head/furcap(), \
@@ -60,12 +62,9 @@ var/global/list/autolathe_recipes_hidden = list( \
new /obj/item/device/radio/electropack(), \
new /obj/item/weapon/weldingtool/largetank(), \
new /obj/item/weapon/handcuffs(), \
new /obj/item/ammo_box/a357(), \
new /obj/item/ammo_casing/shotgun(), \
new /obj/item/ammo_casing/shotgun/dart(), \
/* new /obj/item/weapon/shield/riot(), */ \
/*new /obj/item/ammo_casing/shotgun/dart(), \
new /obj/item/weapon/shield/riot(), */ \
)
/obj/machinery/autolathe
name = "autolathe"
desc = "It produces items using metal and glass."
+9 -2
View File
@@ -53,6 +53,13 @@
input = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
output = /obj/item/weapon/reagent_containers/food/snacks/soydope
wheat
input = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat
output = /obj/item/weapon/reagent_containers/food/snacks/flour
spaghetti
input = /obj/item/weapon/reagent_containers/food/snacks/flour
output = /obj/item/weapon/reagent_containers/food/snacks/spagetti
/* mobs */
mob
@@ -143,13 +150,13 @@
src.processing = 1
user.visible_message("\blue [user] turns on \a [src].", \
"You turn on \a [src].", \
"You hear a food processor")
"You hear a food processor.")
playsound(src.loc, 'sound/machines/blender.ogg', 50, 1)
use_power(500)
sleep(P.time)
P.process(src.loc, O)
src.processing = 0
src.visible_message("\blue \the [src] finished processing.", \
"You hear food processor stops")
"You hear the food processor stopping/")
+4
View File
@@ -232,6 +232,10 @@ Class Procs:
src.add_fingerprint(user)
return 0
/obj/machinery/CheckParts()
RefreshParts()
return
/obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames.
return
return 0
+7 -7
View File
@@ -136,13 +136,13 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/syndicate
default_cartridge = /obj/item/weapon/cartridge/syndicate
icon_state = "pda-syn"
icon_state = "pda-syndi"
name = "Military PDA"
owner = "John Doe"
hidden = 1
/obj/item/device/pda/chaplain
icon_state = "pda-holy"
icon_state = "pda-chaplain"
ttone = "holy"
/obj/item/device/pda/lawyer
@@ -158,7 +158,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon_state = "pda-robot"
/obj/item/device/pda/librarian
icon_state = "pda-libb"
icon_state = "pda-library"
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader."
note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!"
silent = 1 //Quiet in the library!
@@ -172,19 +172,19 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon_state = "pda-chef"
/obj/item/device/pda/bar
icon_state = "pda-bar"
icon_state = "pda-bartender"
/obj/item/device/pda/atmos
default_cartridge = /obj/item/weapon/cartridge/atmos
icon_state = "pda-atmo"
icon_state = "pda-atmos"
/obj/item/device/pda/chemist
default_cartridge = /obj/item/weapon/cartridge/chemistry
icon_state = "pda-chem"
icon_state = "pda-chemistry"
/obj/item/device/pda/geneticist
default_cartridge = /obj/item/weapon/cartridge/medical
icon_state = "pda-gene"
icon_state = "pda-genetics"
// Special AI/pAI PDAs that cannot explode.
-426
View File
@@ -1,426 +0,0 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
/*
CONTAINS:
RPD
*/
#define PIPE_BINARY 0
#define PIPE_BENT 1
#define PIPE_TRINARY 2
#define PIPE_UNARY 3
/datum/pipe_info
var/id=-1
var/dir=SOUTH
var/dirtype=PIPE_BINARY
var/icon = 'icons/obj/pipe-item.dmi'
var/icon_state=""
var/selected=0
/datum/pipe_info/New(var/pid,var/direction,var/dt)
src.id=pid
src.icon_state=pipeID2State[pid+1]
src.dir=direction
src.dirtype=dt
/datum/pipe_info/proc/Render(var/dispenser,var/label)
return "<li><a href='?src=\ref[dispenser];makepipe=[id];dir=[dir];type=[dirtype]'>[label]</a></li>"
/datum/pipe_info/meter
icon = 'icons/obj/meter.dmi'
icon_state = "meterX"
/datum/pipe_info/meter/New()
return
/datum/pipe_info/meter/Render(var/dispenser,var/label)
return "<li><a href='?src=\ref[dispenser];makemeter=1;type=3'>[label]</a></li>"
var/global/list/disposalpipeID2State=list(
"pipe-s",
"pipe-c",
"pipe-j1",
"pipe-j2",
"pipe-y",
"pipe-t",
"condisposal",
"outlet",
"intake",
"pipe-j1s",
"pipe-j2s"
)
/datum/pipe_info/disposal
icon = 'icons/obj/pipes/disposal.dmi'
icon_state = "meterX"
/datum/pipe_info/disposal/New(var/pid,var/dt)
src.id=pid
src.icon_state=disposalpipeID2State[pid+1]
src.dir=2
src.dirtype=dt
if(pid<6 || pid>8)
icon_state = "con[icon_state]"
/datum/pipe_info/disposal/Render(var/dispenser,var/label)
return "<li><a href='?src=\ref[dispenser];dmake=[id];type=3'>[label]</a></li>"
var/global/list/RPD_recipes=list(
"Regular Pipes" = list(
"Pipe" = new /datum/pipe_info(0, 1, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info(1, 5, PIPE_BENT),
"Manifold" = new /datum/pipe_info(5, 1, PIPE_TRINARY),
"Manual Valve" = new /datum/pipe_info(8, 1, PIPE_BINARY),
"Digital Valve" = new /datum/pipe_info(18, 1, PIPE_BINARY),
"Pipe Cap" = new /datum/pipe_info(21, 1, PIPE_UNARY),
"4-Way Manifold" = new /datum/pipe_info(20,-1, PIPE_BINARY),
"Manual T-Valve" = new /datum/pipe_info(19, 2, PIPE_TRINARY),
),
"Devices"=list(
"Connector" = new /datum/pipe_info(4, 1, PIPE_UNARY),
"Unary Vent" = new /datum/pipe_info(7, 1, PIPE_UNARY),
"Gas Pump" = new /datum/pipe_info(9, 1, PIPE_UNARY),
"Passive Gate" = new /datum/pipe_info(15,1, PIPE_UNARY),
"Volume Pump" = new /datum/pipe_info(16,1, PIPE_UNARY),
"Scrubber" = new /datum/pipe_info(10,1, PIPE_UNARY),
"Meter" = new /datum/pipe_info/meter(),
"Gas Filter" = new /datum/pipe_info(13,1, PIPE_TRINARY),
"Gas Mixer" = new /datum/pipe_info(14,1, PIPE_TRINARY),
),
"Heat Exchange" = list(
"Pipe" = new /datum/pipe_info(2,1, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info(3,5, PIPE_BENT),
"Junction" = new /datum/pipe_info(6,1, PIPE_BINARY),
"Heat Exchanger" = new /datum/pipe_info(17,1, PIPE_UNARY),
),
"Insulated Pipes" = list(
"Pipe" = new /datum/pipe_info(11,1, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info(12,5, PIPE_BENT),
),
"Disposal Pipes" = list(
"Pipe" = new /datum/pipe_info/disposal(0, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info/disposal(1, PIPE_BENT),
"Junction" = new /datum/pipe_info/disposal(2, PIPE_TRINARY),
"Y-Junction" = new /datum/pipe_info/disposal(3, PIPE_TRINARY),
"Trunk" = new /datum/pipe_info/disposal(4, PIPE_TRINARY),
"Bin" = new /datum/pipe_info/disposal(5, PIPE_UNARY),
"Outlet" = new /datum/pipe_info/disposal(6, PIPE_UNARY),
"Chute" = new /datum/pipe_info/disposal(7, PIPE_UNARY),
)
)
/obj/item/weapon/pipe_dispenser
name = "Rapid Piping Device (RPD)"
desc = "A device used to rapidly pipe things."
icon = 'icons/obj/items.dmi'
icon_state = "rpd"
opacity = 0
density = 0
anchored = 0.0
flags = FPRINT | TABLEPASS| CONDUCT
force = 10.0
throwforce = 10.0
throw_speed = 1
throw_range = 5
w_class = 3.0
m_amt = 50000
origin_tech = "engineering=4;materials=2"
var/datum/effect/effect/system/spark_spread/spark_system
var/working = 0
var/p_type = 0
var/p_conntype = 0
var/p_dir = 1
var/p_class = 0
var/p_disposal = 0
/obj/item/weapon/pipe_dispenser/New()
src.spark_system = new /datum/effect/effect/system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
/obj/item/weapon/pipe_dispenser/attack_self(mob/user as mob)
show_menu(user)
/obj/item/weapon/pipe_dispenser/proc/render_dir_img(var/_dir,var/pic,var/title)
var/selected=""
if(_dir==p_dir)
selected=" class=\"selected\""
return "<a href=\"?src=\ref[src];setdir=[_dir]\" title=\"[title]\"[selected]><img src=\"[pic]\" /></a>"
/obj/item/weapon/pipe_dispenser/proc/show_menu(mob/user as mob)
if(!user || !src) return 0
var/dat = {"<h2>Type</h2>
<b>Utilities:</b>
<ul>
<li><a href='?src=\ref[src];eatpipes=1;type=-1'>Eat Pipes</a></li>
<!--<li><a href='?src=\ref[src];paintpipes=1;type=-1'>Paint Pipes</a></li>-->
</ul>"}
var/icon/preview=null
for(var/category in RPD_recipes)
dat += "<b>[category]:</b><ul>"
var/list/cat=RPD_recipes[category]
for(var/label in cat)
var/datum/pipe_info/I = cat[label]
var/found=0
if(I.id == p_type)
if(p_class==0 && I.type==/datum/pipe_info)
found=1
else if(p_class==2 && I.type==/datum/pipe_info/disposal)
found=1
if(found)
preview=new /icon(I.icon,I.icon_state)
dat += I.Render(src,label)
dat += "</ul>"
var/dirsel="<h2>Direction</h2>"
switch(p_conntype)
if(PIPE_BINARY) // Straight, N-S, W-E
if(preview)
user << browse_rsc(new /icon(preview, dir=NORTH), "vertical.png")
user << browse_rsc(new /icon(preview, dir=EAST), "horizontal.png")
dirsel += "<p>"
dirsel += render_dir_img(1,"vertical.png","Vertical")
dirsel += render_dir_img(4,"horizontal.png","Horizontal")
dirsel += "</p>"
else
dirsel+={"
<p>
<a href="?src=\ref[src];setdir=1" title="vertical">&#8597;</a>
<a href="?src=\ref[src];setdir=4" title="horizontal">&harr;</a>
</p>
"}
if(PIPE_BENT) // Bent, N-W, N-E etc
if(preview)
user << browse_rsc(new /icon(preview, dir=NORTHWEST), "nw.png")
user << browse_rsc(new /icon(preview, dir=NORTHEAST), "ne.png")
user << browse_rsc(new /icon(preview, dir=SOUTHWEST), "sw.png")
user << browse_rsc(new /icon(preview, dir=SOUTHEAST), "se.png")
dirsel += "<p>"
dirsel += render_dir_img(9,"nw.png","West to North")
dirsel += render_dir_img(5,"ne.png","North to East")
dirsel += "<br />"
dirsel += render_dir_img(10,"sw.png","South to West")
dirsel += render_dir_img(6,"se.png","East to South")
dirsel += "</p>"
else
dirsel+={"
<p>
<a href="?src=\ref[src];setdir=9" title="West to North">&#9565;</a>
<a href="?src=\ref[src];setdir=5" title="North to East">&#9562;</a>
<br />
<a href="?src=\ref[src];setdir=10" title="South to West">&#9559;</a>
<a href="?src=\ref[src];setdir=6" title="East to South">&#9556;</a>
</p>
"}
if(PIPE_TRINARY) // Manifold
if(preview)
user << browse_rsc(new /icon(preview, dir=NORTH), "s.png")
user << browse_rsc(new /icon(preview, dir=EAST), "w.png")
user << browse_rsc(new /icon(preview, dir=SOUTH), "n.png")
user << browse_rsc(new /icon(preview, dir=WEST), "e.png")
dirsel += "<p>"
dirsel += render_dir_img(1,"s.png","West South East")
dirsel += render_dir_img(4,"w.png","North West South")
dirsel += "<br />"
dirsel += render_dir_img(2,"n.png","East North West")
dirsel += render_dir_img(8,"e.png","South East North")
dirsel += "</p>"
else
dirsel+={"
<p>
<a href="?src=\ref[src];setdir=1" title="West, South, East">&#9574;</a>
<a href="?src=\ref[src];setdir=4" title="North, West, South">&#9571;</a>
<br />
<a href="?src=\ref[src];setdir=2" title="East, North, West">&#9577;</a>
<a href="?src=\ref[src];setdir=8" title="South, East, North">&#9568;</a>
</p>
"}
if(PIPE_UNARY) // Unary
if(preview)
user << browse_rsc(new /icon(preview, dir=NORTH), "n.png")
user << browse_rsc(new /icon(preview, dir=EAST), "e.png")
user << browse_rsc(new /icon(preview, dir=SOUTH), "s.png")
user << browse_rsc(new /icon(preview, dir=WEST), "w.png")
dirsel += "<p>"
dirsel += render_dir_img(NORTH,"n.png","North")
dirsel += render_dir_img(EAST, "e.png","East")
dirsel += render_dir_img(SOUTH,"s.png","South")
dirsel += render_dir_img(WEST, "w.png","West")
dirsel += "</p>"
else
dirsel+={"
<p>
<a href="?src=\ref[src];setdir=[NORTH]" title="North">&uarr;</a>
<a href="?src=\ref[src];setdir=[EAST]" title="East">&rarr;</a>
<a href="?src=\ref[src];setdir=[SOUTH]" title="South">&darr;</a>
<a href="?src=\ref[src];setdir=[WEST]" title="West">&larr;</a>
</p>
"}
dat = {"
<html>
<head>
<title>[name]</title>
<style type="text/css">
html {
font-family:sans-serif;
font-size:small;
}
a{
color:#0066cc;
text-decoration:none;
}
a img {
border:1px solid #0066cc;
}
a.selected img,
a:hover {
background: #0066cc;
color: #ffffff;
}
</style>
</head>
<body>
[dirsel][dat]
</body>
</html>
"}
user << browse(dat, "window=pipedispenser")
onclose(user, "pipedispenser")
return
/obj/item/weapon/pipe_dispenser/Topic(href, href_list)
if(usr.stat || usr.restrained())
usr << browse(null, "window=pipedispenser")
return
usr.set_machine(src)
src.add_fingerprint(usr)
if(href_list["setdir"])
p_dir= text2num(href_list["setdir"])
show_menu(usr)
if(href_list["eatpipes"])
p_class = -1
p_conntype=-1
p_dir=1
src.spark_system.start()
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
show_menu(usr)
if(href_list["makepipe"])
p_type = text2num(href_list["makepipe"])
p_dir = text2num(href_list["dir"])
p_conntype = text2num(href_list["type"])
p_class = 0
src.spark_system.start()
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
show_menu(usr)
if(href_list["makemeter"])
p_class = 1
p_conntype=-1
p_dir=1
src.spark_system.start()
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
show_menu(usr)
if(href_list["dmake"])
p_type = text2num(href_list["dmake"])
p_conntype = text2num(href_list["type"])
p_dir = 1
p_class = 2
src.spark_system.start()
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
show_menu(usr)
/obj/item/weapon/pipe_dispenser/afterattack(atom/A, mob/user)
if(!isrobot(user) && !ishuman(user))
return 0
if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
return 0
switch(p_class)
if(-1) // Eating pipes
// Must click on an actual pipe or meter.
if(istype(A,/obj/item/pipe) || istype(A,/obj/item/pipe_meter) || istype(A,/obj/structure/disposalconstruct))
user << "Destroying Pipe..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 5))
activate()
del(A)
return 1
return 0
// Avoid spewing errors about invalid mode -1 when clicking on stuff that aren't pipes.
user << "The [src]'s error light flickers. Perhaps you need to only use it on pipes and pipe meters?"
return 0
if(0)
if(!(istype(A, /turf)))
return 0
user << "Building Pipes ..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20))
activate()
var/obj/item/pipe/P = new (A, pipe_type=p_type, dir=p_dir)
P.update()
P.add_fingerprint(usr)
return 1
return 0
if(1)
if(!(istype(A, /turf)))
return 0
user << "Building Meter..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20))
activate()
new /obj/item/pipe_meter(A)
return 1
return 0
if(2)
if(!(istype(A, /turf)))
return 0
user << "Building Pipes..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20))
activate()
var/obj/structure/disposalconstruct/C = new (A)
// This may still produce runtimes, but I checked and /obj/structure/disposalconstruct
// DOES have a dir property, inherited from /obj/structure. - N3X
C.dir=p_dir
switch(p_type)
if(0)
C.ptype = 0
if(1)
C.ptype = 1
if(2)
C.ptype = 2
if(3)
C.ptype = 4
if(4)
C.ptype = 5
if(5)
C.ptype = 6
C.density = 1
if(6)
C.ptype = 7
C.density = 1
if(7)
C.ptype = 8
C.density = 1
C.add_fingerprint(usr)
C.update()
return 1
return 0
else
..()
return 0
/obj/item/weapon/pipe_dispenser/proc/activate()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
+14 -11
View File
@@ -703,7 +703,7 @@
/obj/item/weapon/book/manual/chef_recipes
name = "Chef Recipes"
icon_state = "cooked_book"
author = "Lord Frenrir Cageth"
author = "Victoria Ponsonby"
title = "Chef Recipes"
/*dat = {"<html>
<head>
@@ -720,32 +720,35 @@
<h1>Food for Dummies</h1>
Here is a guide on basic food recipes and also how to not poison your customers accidentally.
<h2>Basics:<h2>
Knead an egg and some flour to make dough. Bake that to make a bun or flatten and cut it.
<h2>Burger:<h2>
Put 1 meat and 1 flour into the microwave and turn it on. Then wait.
Put a bun and some meat into the microwave and turn it on. Then wait.
<h2>Bread:<h2>
Put 3 flour into the microwave and then wait.
Put some dough and an egg into the microwave and then wait.
<h2>Waffles:<h2>
Add 2 flour and 2 egg to the microwave and then wait.
Add two lumps of dough and 10u of sugar to the microwave and then wait.
<h2>Popcorn:<h2>
Add 1 corn to the microwave and wait.
<h2>Meat Steak:<h2>
Put 1 meat, 1 unit of salt and 1 unit of pepper into the microwave and wait.
Put a slice of meat, 1 unit of salt and 1 unit of pepper into the microwave and wait.
<h2>Meat Pie:<h2>
Put 1 meat and 2 flour into the microwave and wait.
Put a flattened piece of dough and some meat into the microwave and wait.
<h2>Boiled Spagetti:<h2>
Put 1 spagetti and 5 units of water into the microwave and wait.
<h2>Boiled Spaghetti:<h2>
Put the spaghetti (processed flour) and 5 units of water into the microwave and wait.
<h2>Donuts:<h2>
Add 1 egg and 1 flour to the microwave and wait.
Add some dough and 5 units of sugar to the microwave and wait.
<h2>Fries:<h2>
Add one potato to the processor and wait.
Add one potato to the processor, then bake them in the microwave.
</body>
@@ -1045,4 +1048,4 @@
</body>
</html>
"}
"}
+5 -2
View File
@@ -26,6 +26,10 @@
update_icon()
return
/obj/item/weapon/melee/baton/CheckParts()
bcell = locate(/obj/item/weapon/cell) in contents
update_icon()
/obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt)
if(bcell)
if(bcell.rigged)
@@ -220,5 +224,4 @@
else if(!bcell)
icon_state = "stunprod_nocell"
else
icon_state = "stunprod"
icon_state = "stunprod"
@@ -30,9 +30,11 @@
New()
..()
sleep(2)
for(var/i = 0, i < 3, i++)
new /obj/item/weapon/reagent_containers/food/drinks/flour(src)
for(var/i = 0, i < 6, i++)
new /obj/item/weapon/reagent_containers/food/snacks/flour(src)
new /obj/item/weapon/reagent_containers/food/condiment/sugar(src)
for(var/i = 0, i < 3, i++)
new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src)
return
@@ -75,7 +77,7 @@
sleep(2)
for(var/i = 0, i < 5, i++)
new /obj/item/weapon/reagent_containers/food/drinks/milk(src)
for(var/i = 0, i < 5, i++)
for(var/i = 0, i < 3, i++)
new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src)
for(var/i = 0, i < 2, i++)
new /obj/item/weapon/storage/fancy/egg_box(src)
+203 -40
View File
@@ -13,20 +13,97 @@
/datum/table_recipe
var/name = ""
var/reqs[]
var/reqs[] = list()
var/result_path
var/tools[]
var/tools[] = list()
var/time = 0
var/parts[] = list()
var/chem_catalists[] = list()
/datum/table_recipe/flame_thrower
/datum/table_recipe/IED
name = "IED"
result_path = /obj/item/weapon/grenade/iedcasing
reqs = list("/obj/item/weapon/handcuffs/cable" = 1,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/device/assembly/igniter" = 1,
"/obj/item/weapon/reagent_containers/food/drinks/cans" = 1,
"/datum/reagent/fuel" = 10)
time = 80
/datum/table_recipe/stunprod
name = "Stunprod"
result_path = /obj/item/weapon/melee/baton/cattleprod
reqs = list("/obj/item/weapon/handcuffs/cable" = 1,
"/obj/item/stack/rods" = 1,
"/obj/item/weapon/wirecutters" = 1,
"/obj/item/weapon/cell" = 1)
time = 80
parts = list("/obj/item/weapon/cell" = 1)
/datum/table_recipe/ed209
name = "ED209"
result_path = /obj/machinery/bot/ed209
reqs = list("/obj/item/robot_parts/robot_suit" = 1,
"/obj/item/clothing/head/helmet" = 1,
"/obj/item/clothing/suit/armor/vest" = 1,
"/obj/item/robot_parts/l_leg" = 1,
"/obj/item/robot_parts/r_leg" = 1,
"/obj/item/stack/sheet/metal" = 5,
"/obj/item/stack/cable_coil" = 5,
"/obj/item/weapon/gun/energy/taser" = 1,
"/obj/item/weapon/cell" = 1,
"/obj/item/device/assembly/prox_sensor" = 1,
"/obj/item/robot_parts/r_arm" = 1)
tools = list(/obj/item/weapon/weldingtool, /obj/item/weapon/screwdriver)
time = 120
/datum/table_recipe/secbot
name = "Secbot"
result_path = /obj/machinery/bot/secbot
reqs = list("/obj/item/device/assembly/signaler" = 1,
"/obj/item/clothing/head/helmet" = 1,
"/obj/item/weapon/melee/baton" = 1,
"/obj/item/device/assembly/prox_sensor" = 1,
"/obj/item/robot_parts/r_arm" = 1)
tools = list(/obj/item/weapon/weldingtool)
time = 120
/datum/table_recipe/cleanbot
name = "Cleanbot"
result_path = /obj/machinery/bot/cleanbot
reqs = list("/obj/item/weapon/reagent_containers/glass/bucket" = 1,
"/obj/item/device/assembly/prox_sensor" = 1,
"/obj/item/robot_parts/r_arm" = 1)
time = 80
/datum/table_recipe/floorbot
name = "Floorbot"
result_path = /obj/machinery/bot/floorbot
reqs = list("/obj/item/weapon/storage/toolbox/mechanical" = 1,
"/obj/item/stack/tile/plasteel" = 1,
"/obj/item/device/assembly/prox_sensor" = 1,
"/obj/item/robot_parts/r_arm" = 1)
time = 80
/datum/table_recipe/medbot
name = "Medbot"
result_path = /obj/machinery/bot/medbot
reqs = list("/obj/item/device/healthanalyzer" = 1,
"/obj/item/weapon/storage/firstaid" = 1,
"/obj/item/device/assembly/prox_sensor" = 1,
"/obj/item/robot_parts/r_arm" = 1)
time = 80
/datum/table_recipe/flamethrower
name = "Flamethrower"
result_path = /obj/item/weapon/flamethrower
reqs = list(/obj/item/weapon/weldingtool = 1,
/obj/item/device/assembly/igniter = 1,
/obj/item/stack/rods = 2)
reqs = list("/obj/item/weapon/weldingtool" = 1,
"/obj/item/device/assembly/igniter" = 1,
"/obj/item/stack/rods" = 2)
tools = list(/obj/item/weapon/screwdriver)
time = 20
/obj/structure/table
name = "table"
desc = "A square piece of metal standing on four metal legs. It can not move."
@@ -66,47 +143,77 @@
density = 0
qdel(src)
/obj/structure/table/proc/check_contents(datum/table_recipe/TR)
/obj/structure/table/MouseDrop(atom/over)
if(usr.stat || usr.lying || !Adjacent(usr) || (over != usr))
return
interact(usr)
/obj/structure/table/proc/check_contents(datum/table_recipe/R)
check_table()
var/datum/table_recipe/R = TR
var/I = R.reqs.len
var/i = R.reqs.len
for(var/A in R.reqs)
if(table_contents[A] < R.reqs[A])
break
else
i--
if(i<=0)
return 1
else
return 0
var/AP = text2path(A)
if(!ispath(AP))
for(var/B in table_contents)
if(!ispath(B))
if(table_contents[B] >= R.reqs[A])
i--
break
I--
if(i > I)
return 0
else
continue
for(var/B in table_contents)
var/BP = text2path(B)
if(ispath(BP, AP))
if(table_contents[B] >= R.reqs[A])
i--
break
I--
if(i > I)
return 0
for(var/A in R.chem_catalists)
if(table_contents[A] < R.chem_catalists[A])
return 0
return !i
/obj/structure/table/proc/check_table()
table_contents = list()
for(var/obj/item/I in loc)
if(istype(I, /obj/item/stack))
var/obj/item/stack/S = I
table_contents[I.type] += S.amount
table_contents["[I.type]"] += S.amount //(table_contents[I.type] ? (table_contents[I.type] + S.amount) : S.amount)
else
table_contents[I.type] += 1
if(istype(I, /obj/item/weapon/reagent_containers))
for(var/datum/reagent/R in I.reagents.reagent_list)
table_contents["[R.type]"] += R.volume
table_contents["[I.type]"] += 1 //(table_contents[I.type] ? (table_contents[I.type] + 1) : 1)
/obj/structure/table/proc/check_tools(mob/user, datum/table_recipe/TR)
if(!TR.tools.len)
return 1
var/list/hands_content = list()
if(user.l_hand)
hands_content.Add(user.l_hand.type)
if(user.r_hand)
hands_content.Add(user.r_hand.type)
var/list/possible_tools = list()
for(var/obj/item/I in user.contents)
if(istype(I, /obj/item/weapon/storage))
for(var/obj/item/SI in I.contents)
possible_tools += (SI.type)
else
possible_tools += (I.type)
for(var/obj/item/TI in loc)
possible_tools |= (TI.type)
var/i = TR.tools.len
var/I
for(var/A in TR.tools)
if(hands_content.Find(A))
hands_content.Remove(A)
I = possible_tools.Find(A)
if(I)
possible_tools.Cut(I, I+1)
i--
else
break
if(i>0)
return 0
return 1
return !i
/obj/structure/table/proc/construct_item(mob/user, datum/table_recipe/TR)
check_table()
@@ -114,23 +221,79 @@
if(do_after(user, TR.time))
if(!check_contents(TR) || !check_tools(user, TR))
return 0
del_reqs(TR)
var/obj/item/I = new TR.result_path
var/list/parts = del_reqs(TR)
var/atom/movable/I = new TR.result_path
for(var/A in parts)
if(istype(A, /obj/item))
var/atom/movable/B = A
B.loc = I
else
if(!I.reagents)
I.reagents = new /datum/reagents()
I.reagents.reagent_list.Add(A)
I.CheckParts()
I.loc = loc
return 1
return 0
/obj/structure/table/proc/del_reqs(datum/table_recipe/TR)
var/datum/table_recipe/R = TR
/obj/structure/table/proc/del_reqs(datum/table_recipe/R)
var/list/Deletion = list()
var/AP
var/BP
var/amt
for(var/A in R.reqs)
var/obj/item/I = locate(A) in loc
if(istype(I, /obj/item/stack))
var/obj/item/stack/S = I
S.amount -= R.reqs[A]
amt = R.reqs[A]
AP = text2path(A)
if(ispath(AP, /obj/item/stack))
var/obj/item/stack/S
stack_loop:
for(var/B in table_contents)
BP = text2path(B)
if(ispath(BP, AP))
while(amt > 0)
S = locate(BP) in loc
if(S.amount >= amt)
S.use(amt)
break stack_loop
else
amt -= S.amount
del(S)
else if(ispath(AP, /obj/item))
var/obj/item/I
item_loop:
for(var/B in table_contents)
BP = text2path(B)
if(ispath(BP, AP))
while(amt > 0)
I = locate(BP) in loc
Deletion.Add(I)
amt--
break item_loop
else
for(var/i=R.reqs[A],i>=0,i--)
I = locate(A) in loc
del(I)
var/datum/reagent/RG = new AP
reagent_loop:
for(var/B in table_contents)
BP = text2path(B)
if(ispath(BP, /obj/item/weapon/reagent_containers))
var/obj/item/RC = locate(BP) in loc
if(RC.reagents.has_reagent(RG.id, amt))
RC.reagents.remove_reagent(RG.id, amt)
RG.volume = amt
Deletion.Add(RG)
break reagent_loop
else if(RC.reagents.has_reagent(RG.id))
Deletion.Add(RG)
RG.volume += RC.reagents.get_reagent_amount(RG.id)
amt -= RC.reagents.get_reagent_amount(RG.id)
RC.reagents.del_reagent(RG.id)
for(var/A in R.parts)
AP = text2path(A)
for(var/B in Deletion)
if(!istype(B, AP))
Deletion.Remove(B)
del(B)
return Deletion
/obj/structure/table/interact(mob/user)
check_table()
@@ -402,7 +565,7 @@
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
destroy()
else
interact(user)
..()
/obj/structure/table/attack_tk() // no telehulk sorry
return
+3 -30
View File
@@ -755,30 +755,6 @@ var/global/floorIsLava = 0
log_admin("[key_name(usr)] removed the delay.")
feedback_add_details("admin_verb","DELAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/admins/proc/adjump()
set category = "Server"
set desc="Toggle admin jumping"
set name="Toggle Jump"
config.allow_admin_jump = !(config.allow_admin_jump)
message_admins("\blue Toggled admin jumping to [config.allow_admin_jump].")
feedback_add_details("admin_verb","TJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/admins/proc/adspawn()
set category = "Server"
set desc="Toggle admin spawning"
set name="Toggle Spawn"
config.allow_admin_spawning = !(config.allow_admin_spawning)
message_admins("\blue Toggled admin item spawning to [config.allow_admin_spawning].")
feedback_add_details("admin_verb","TAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/admins/proc/adrev()
set category = "Server"
set desc="Toggle admin revives"
set name="Toggle Revive"
config.allow_admin_rev = !(config.allow_admin_rev)
message_admins("\blue Toggled reviving to [config.allow_admin_rev].")
feedback_add_details("admin_verb","TAR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/admins/proc/immreboot()
set category = "Server"
set desc="Reboots the server post haste"
@@ -801,12 +777,9 @@ var/global/floorIsLava = 0
set category = "Admin"
set name = "Unprison"
if (M.z == 2)
if (config.allow_admin_jump)
M.loc = pick(latejoin)
message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]", 1)
log_admin("[key_name(usr)] has unprisoned [key_name(M)]")
else
alert("Admin jumping disabled")
M.loc = pick(latejoin)
message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]", 1)
log_admin("[key_name(usr)] has unprisoned [key_name(M)]")
else
alert("[M.name] is not prisoned.")
feedback_add_details("admin_verb","UP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-6
View File
@@ -113,9 +113,6 @@ var/list/admin_verbs_server = list(
/datum/admins/proc/toggleAI,
/client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/
/client/proc/cmd_debug_del_all,
/datum/admins/proc/adrev,
/datum/admins/proc/adspawn,
/datum/admins/proc/adjump,
/datum/admins/proc/toggle_aliens,
/datum/admins/proc/toggle_space_ninja,
/client/proc/toggle_random_events,
@@ -204,9 +201,6 @@ var/list/admin_verbs_hideable = list(
/datum/admins/proc/immreboot,
/client/proc/everyone_random,
/datum/admins/proc/toggleAI,
/datum/admins/proc/adrev,
/datum/admins/proc/adspawn,
/datum/admins/proc/adjump,
/client/proc/restart_controller,
/client/proc/cmd_admin_list_open_jobs,
/client/proc/callproc,
+3 -10
View File
@@ -1233,12 +1233,9 @@
usr << "This can only be used on instances of type /mob/living"
return
if(config.allow_admin_rev)
L.revive()
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1)
log_admin("[key_name(usr)] healed / Rrvived [key_name(L)]")
else
usr << "Admin Rejuvinates have been disabled"
L.revive()
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1)
log_admin("[key_name(usr)] healed / Revived [key_name(L)]")
else if(href_list["makeai"])
if(!check_rights(R_SPAWN)) return
@@ -1644,10 +1641,6 @@
else if(href_list["object_list"]) //this is the laggiest thing ever
if(!check_rights(R_SPAWN)) return
if(!config.allow_admin_spawning)
usr << "Spawning of items is not allowed."
return
var/atom/loc = usr.loc
var/dirty_paths
+61 -85
View File
@@ -6,14 +6,10 @@
src << "Only administrators may use this command."
return
if(config.allow_admin_jump)
usr.loc = pick(get_area_turfs(A))
log_admin("[key_name(usr)] jumped to [A]")
message_admins("[key_name_admin(usr)] jumped to [A]", 1)
feedback_add_details("admin_verb","JA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
usr.loc = pick(get_area_turfs(A))
log_admin("[key_name(usr)] jumped to [A]")
message_admins("[key_name_admin(usr)] jumped to [A]", 1)
feedback_add_details("admin_verb","JA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/jumptoturf(var/turf/T in world)
set name = "Jump to Turf"
@@ -21,13 +17,11 @@
if(!src.holder)
src << "Only administrators may use this command."
return
if(config.allow_admin_jump)
log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]", 1)
usr.loc = T
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]", 1)
usr.loc = T
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/client/proc/jumptomob(var/mob/M in mob_list)
@@ -38,19 +32,16 @@
src << "Only administrators may use this command."
return
if(config.allow_admin_jump)
log_admin("[key_name(usr)] jumped to [key_name(M)]")
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
if(src.mob)
var/mob/A = src.mob
var/turf/T = get_turf(M)
if(T && isturf(T))
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
A.loc = T
else
A << "This mob is not located in the game world."
else
alert("Admin jumping disabled")
log_admin("[key_name(usr)] jumped to [key_name(M)]")
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
if(src.mob)
var/mob/A = src.mob
var/turf/T = get_turf(M)
if(T && isturf(T))
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
A.loc = T
else
A << "This mob is not located in the game world."
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
set category = "Admin"
@@ -60,17 +51,13 @@
src << "Only administrators may use this command."
return
if (config.allow_admin_jump)
if(src.mob)
var/mob/A = src.mob
A.x = tx
A.y = ty
A.z = tz
feedback_add_details("admin_verb","JC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
else
alert("Admin jumping disabled")
if(src.mob)
var/mob/A = src.mob
A.x = tx
A.y = ty
A.z = tz
feedback_add_details("admin_verb","JC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
/client/proc/jumptokey()
set category = "Admin"
@@ -80,21 +67,18 @@
src << "Only administrators may use this command."
return
if(config.allow_admin_jump)
var/list/keys = list()
for(var/mob/M in player_list)
keys += M.client
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
if(!selection)
src << "No keys found."
return
var/mob/M = selection:mob
log_admin("[key_name(usr)] jumped to [key_name(M)]")
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
usr.loc = M.loc
feedback_add_details("admin_verb","JK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
var/list/keys = list()
for(var/mob/M in player_list)
keys += M.client
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
if(!selection)
src << "No keys found."
return
var/mob/M = selection:mob
log_admin("[key_name(usr)] jumped to [key_name(M)]")
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
usr.loc = M.loc
feedback_add_details("admin_verb","JK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/Getmob(var/mob/M in mob_list)
set category = "Admin"
@@ -103,13 +87,11 @@
if(!src.holder)
src << "Only administrators may use this command."
return
if(config.allow_admin_jump)
log_admin("[key_name(usr)] teleported [key_name(M)]")
message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)]", 1)
M.loc = get_turf(usr)
feedback_add_details("admin_verb","GM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
log_admin("[key_name(usr)] teleported [key_name(M)]")
message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)]", 1)
M.loc = get_turf(usr)
feedback_add_details("admin_verb","GM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/Getkey()
set category = "Admin"
@@ -120,24 +102,21 @@
src << "Only administrators may use this command."
return
if(config.allow_admin_jump)
var/list/keys = list()
for(var/mob/M in player_list)
keys += M.client
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
if(!selection)
return
var/mob/M = selection:mob
var/list/keys = list()
for(var/mob/M in player_list)
keys += M.client
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
if(!selection)
return
var/mob/M = selection:mob
if(!M)
return
log_admin("[key_name(usr)] teleported [key_name(M)]")
message_admins("[key_name_admin(usr)] teleported [key_name(M)]", 1)
if(M)
M.loc = get_turf(usr)
feedback_add_details("admin_verb","GK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
if(!M)
return
log_admin("[key_name(usr)] teleported [key_name(M)]")
message_admins("[key_name_admin(usr)] teleported [key_name(M)]", 1)
if(M)
M.loc = get_turf(usr)
feedback_add_details("admin_verb","GK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/sendmob(var/mob/M in sortmobs())
set category = "Admin"
@@ -147,11 +126,8 @@
return
var/area/A = input(usr, "Pick an area.", "Pick an area") in return_sorted_areas()
if(A)
if(config.allow_admin_jump)
M.loc = pick(get_area_turfs(A))
feedback_add_details("admin_verb","SMOB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
M.loc = pick(get_area_turfs(A))
feedback_add_details("admin_verb","SMOB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] teleported [key_name(M)] to [A]")
message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]", 1)
else
alert("Admin jumping disabled")
log_admin("[key_name(usr)] teleported [key_name(M)] to [A]")
message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]", 1)
+47 -3
View File
@@ -555,6 +555,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
"death commando",
"syndicate commando",
"special ops officer",
"special ops formal",
"blue wizard",
"red wizard",
"marisa wizard",
@@ -879,14 +880,24 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Special Operations Officer"
pda.icon_state = "pda-syndi"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
pda.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
pda.default_cartridge = /obj/item/weapon/cartridge/captain
M.equip_if_possible(pda, slot_wear_pda)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
@@ -896,6 +907,39 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("special ops formal")
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear)
M.equip_if_possible(new /obj/item/clothing/gloves/white(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Special Operations Officer"
pda.icon_state = "pda-syndi"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
pda.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
pda.default_cartridge = /obj/item/weapon/cartridge/captain
M.equip_if_possible(pda, slot_wear_pda)
M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
M.equip_if_possible(new /obj/item/weapon/melee/telebaton(M), slot_r_store)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "Special Operations Officer"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("blue wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
+4 -6
View File
@@ -631,13 +631,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!istype(M))
alert("Cannot revive a ghost")
return
if(config.allow_admin_rev)
M.revive()
M.revive()
log_admin("[key_name(usr)] healed / revived [key_name(M)]")
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!", 1)
else
alert("Admin revive disabled")
log_admin("[key_name(usr)] healed / revived [key_name(M)]")
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!", 1)
feedback_add_details("admin_verb","REJU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_create_centcom_report()
@@ -1020,3 +1017,4 @@ Traitors and the like can also be revived with the previous role mostly intact.
usr << "Random events disabled"
message_admins("Admin [key_name_admin(usr)] has disabled random events.", 1)
feedback_add_details("admin_verb","TRE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -6,6 +6,7 @@
allowed = list(/obj/item/weapon/cell)
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25)
siemens_coefficient = 0.2
loose = 0
/obj/item/clothing/suit/space/space_ninja
+4 -4
View File
@@ -45,10 +45,10 @@
switch(milled_item.type)
if(/obj/item/weapon/reagent_containers/food/snacks/grown/wheat) //Wheat becomes flour
var/obj/item/weapon/reagent_containers/food/drinks/flour/F = new(src)
var/obj/item/weapon/reagent_containers/food/snacks/flour/F = new(src)
output += F
if(/obj/item/weapon/reagent_containers/food/drinks/flour) //Flour is still flour
var/obj/item/weapon/reagent_containers/food/drinks/flour/F = new(src)
if(/obj/item/weapon/reagent_containers/food/snacks/flour) //Flour is still flour
var/obj/item/weapon/reagent_containers/food/snacks/flour/F = new(src)
output += F
else
error = 1
@@ -117,7 +117,7 @@
return //Not done yet.
switch(fermenting_item.type)
if(/obj/item/weapon/reagent_containers/food/drinks/flour) //Flour is still flour
if(/obj/item/weapon/reagent_containers/food/snacks/flour) //Flour is still flour
var/obj/item/weapon/reagent_containers/food/drinks/cans/beer/B = new(src)
output += B
else
+8 -7
View File
@@ -59,24 +59,25 @@ var/global/list/possibleEvents = list()
possibleEvents[/datum/event/pda_spam] = max(min(25, player_list.len) * 4, 200)
possibleEvents[/datum/event/money_lotto] = max(min(5, player_list.len), 50)
if(!account_hack_attempted)
possibleEvents[/datum/event/money_hacker] = max(min(25, player_list.len) * 4, 200)
// if(!account_hack_attempted)
// possibleEvents[/datum/event/money_hacker] = max(min(25, player_list.len) * 4, 200)
possibleEvents[/datum/event/carp_migration] = 50 + 50 * active_with_role["Engineer"]
possibleEvents[/datum/event/carp_migration] = 50 + 25 * active_with_role["Engineer"]
possibleEvents[/datum/event/spider_infestation] = 50 + 25 * active_with_role["Security"]
possibleEvents[/datum/event/dust] = 50 + 50 * active_with_role["Engineer"]
possibleEvents[/datum/event/dust/meaty] = 50 + 50 * active_with_role["Engineer"]
possibleEvents[/datum/event/brand_intelligence] = 50 + 25 * active_with_role["Engineer"]
possibleEvents[/datum/event/brand_intelligence] = 50 + 20 * active_with_role["Engineer"]
possibleEvents[/datum/event/rogue_drone] = 25 + 25 * active_with_role["Engineer"] + 25 * active_with_role["Security"]
possibleEvents[/datum/event/infestation] = 50 + 25 * active_with_role["Janitor"]
possibleEvents[/datum/event/communications_blackout] = 50 + 25 * active_with_role["AI"] + active_with_role["Scientist"] * 25
possibleEvents[/datum/event/ionstorm] = active_with_role["AI"] * 25 + active_with_role["Cyborg"] * 25 + active_with_role["Engineer"] * 10 + active_with_role["Scientist"] * 5
possibleEvents[/datum/event/communications_blackout] = 50 + 30 * active_with_role["AI"] + active_with_role["Scientist"] * 25
possibleEvents[/datum/event/ionstorm] = active_with_role["AI"] * 50 + active_with_role["Cyborg"] * 25 + active_with_role["Engineer"] * 10 + active_with_role["Scientist"] * 5
possibleEvents[/datum/event/grid_check] = 25 + 20 * active_with_role["Engineer"]
possibleEvents[/datum/event/electrical_storm] = 10 * active_with_role["Janitor"] + 5 * active_with_role["Engineer"]
possibleEvents[/datum/event/wallrot] = 30 * active_with_role["Engineer"] + 50 * active_with_role["Botanist"]
possibleEvents[/datum/event/spacevine] = 25 + 5 * active_with_role["Engineer"]
possibleEvents[/datum/event/biomass] = 25 + 5 * active_with_role["Engineer"]
if(minutes_passed >= 30) // Give engineers time to set up engine
possibleEvents[/datum/event/meteor_wave] = 10 * active_with_role["Engineer"]
@@ -100,7 +101,7 @@ var/global/list/possibleEvents = list()
possibleEvents[/datum/event/alien_infestation] = max(active_with_role["Security"], 5) + 2.5
if(!sent_ninja_to_station && toggle_space_ninja)
possibleEvents[/datum/event/space_ninja] = active_with_role["Security"] * 20
possibleEvents[/datum/event/undead] = active_with_role["Security"] * 10
possibleEvents[/datum/event/undead] = active_with_role["Security"] * 15
possibleEvents[/datum/event/ghosts] = active_with_role["Security"] * 25
possibleEvents[/datum/event/tear] = active_with_role["Security"] * 25
@@ -48,7 +48,8 @@
M.icon = upriser.icon
M.icon_state = initial(upriser.icon_state)
else
explosion(upriser.loc, 2, 4, 3, 5)
explosion(upriser.loc, 2, 2, 3, 5)
sleep(50) //return control to lessen lag
del(upriser)
kill()
+250 -155
View File
@@ -35,7 +35,7 @@
result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg
/datum/recipe/dionaroast
reagents = list("radium" = 5)
reagents = list("pacid" = 5) //It dissolves the carapace. Still poisonous, though.
items = list(
/obj/item/weapon/holder/diona,
/obj/item/weapon/reagent_containers/food/snacks/grown/apple
@@ -54,27 +54,34 @@
*/
/datum/recipe/jellydonut
reagents = list("berryjuice" = 5, "flour" = 5)
reagents = list("berryjuice" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly
/datum/recipe/jellydonut/slime
reagents = list("slimejelly" = 5, "flour" = 5)
reagents = list("slimejelly" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
/datum/recipe/jellydonut/cherry
reagents = list("cherryjelly" = 5, "flour" = 5)
reagents = list("cherryjelly" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
/datum/recipe/donut
reagents = list("flour" = 5)
reagents = list("sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
/* what is this
/datum/recipe/human
//invalid recipe
make_food(var/obj/container as obj)
@@ -94,45 +101,45 @@
HB.name = human_name+HB.name
HB.job = human_job
return HB
*/
/datum/recipe/human/burger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/meat/human
/obj/item/weapon/reagent_containers/food/snacks/meat/human,
/obj/item/weapon/reagent_containers/food/snacks/bun
)
result = /obj/item/weapon/reagent_containers/food/snacks/human/burger
/*
/* Duplicated by plainburger
/datum/recipe/monkeyburger
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/reagent_containers/food/snacks/meat/monkey
)
result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger
*/
/datum/recipe/plainburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/humanburger
)
result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger
/datum/recipe/syntiburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/syntiflesh
)
result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger
/datum/recipe/brainburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/brain
)
result = /obj/item/weapon/reagent_containers/food/snacks/brainburger
/datum/recipe/roburger
reagents = list("flour" = 5)
items = list(
@@ -140,69 +147,68 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/roburger
/datum/recipe/xenoburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/reagent_containers/food/snacks/xenomeat
)
result = /obj/item/weapon/reagent_containers/food/snacks/xenoburger
/datum/recipe/fishburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/reagent_containers/food/snacks/carpmeat
)
result = /obj/item/weapon/reagent_containers/food/snacks/fishburger
/datum/recipe/tofuburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/reagent_containers/food/snacks/tofu
)
result = /obj/item/weapon/reagent_containers/food/snacks/tofuburger
/datum/recipe/ghostburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/ectoplasm
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/ectoplasm //where do you even find this stuff
)
result = /obj/item/weapon/reagent_containers/food/snacks/ghostburger
/datum/recipe/clownburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/clothing/mask/gas/clown_hat,
/* /obj/item/weapon/reagent_containers/food/snacks/grown/banana, */
)
result = /obj/item/weapon/reagent_containers/food/snacks/clownburger
/datum/recipe/mimeburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/clothing/head/beret
)
result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger
/datum/recipe/waffles
reagents = list("flour" = 10)
/datum/recipe/hotdog
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/bun,
/obj/item/weapon/reagent_containers/food/snacks/sausage
)
result = /obj/item/weapon/reagent_containers/food/snacks/hotdog
/datum/recipe/waffles
reagents = list("sugar" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/waffles
/*
/datum/recipe/faggot
monkeymeat_amount = 1
humanmeat_amount = 1
creates = "/obj/item/weapon/reagent_containers/food/snacks/faggot"
*/
/datum/recipe/donkpocket
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/meatball,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/meatball
)
result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL
proc/warm_up(var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked)
@@ -229,8 +235,10 @@
return being_cooked
/datum/recipe/meatbread
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
@@ -241,8 +249,10 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
/datum/recipe/syntibread
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/syntiflesh,
/obj/item/weapon/syntiflesh,
/obj/item/weapon/syntiflesh,
@@ -252,17 +262,11 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
/*
/datum/recipe/meatbreadhuman
flour_amount = 3
humanmeat_amount = 3
cheese_amount = 3
creates = "/obj/item/weapon/reagent_containers/food/snacks/meatbread"
*/
/datum/recipe/xenomeatbread
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
@@ -273,11 +277,11 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
/datum/recipe/bananabread
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5, "sugar" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
@@ -292,9 +296,9 @@
result = /obj/item/weapon/reagent_containers/food/snacks/omelette
/datum/recipe/muffin
reagents = list("milk" = 5, "flour" = 5)
reagents = list("milk" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
)
result = /obj/item/weapon/reagent_containers/food/snacks/muffin
@@ -307,96 +311,96 @@
result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm
/datum/recipe/soylenviridians
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
)
result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians
/datum/recipe/soylentgreen
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/meat/human,
/obj/item/weapon/reagent_containers/food/snacks/meat/human,
)
result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen
/datum/recipe/carrotcake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5, "sugar" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot //TODO: more carrots
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
/datum/recipe/cheesecake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5, "sugar" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
/datum/recipe/plaincake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5, "sugar" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake
/datum/recipe/meatpie
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/meat,
)
result = /obj/item/weapon/reagent_containers/food/snacks/meatpie
/datum/recipe/tofupie
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/tofu,
)
result = /obj/item/weapon/reagent_containers/food/snacks/tofupie
/datum/recipe/xemeatpie
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
)
result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie
/datum/recipe/pie
reagents = list("flour" = 10)
reagents = list("sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
)
result = /obj/item/weapon/reagent_containers/food/snacks/pie
/datum/recipe/cherrypie
reagents = list("flour" = 10)
reagents = list("sugar" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries,
)
result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie
/*
/datum/recipe/berrypie
reagents = list("berryjuice" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
)
result = /obj/item/weapon/reagent_containers/food/snacks/berrypie
*/
/datum/recipe/berryclafoutis
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/berries,
)
result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis
@@ -409,9 +413,9 @@
result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu
/datum/recipe/chaosdonut
reagents = list("frostoil" = 5, "capsaicin" = 5, "flour" = 5)
reagents = list("frostoil" = 5, "capsaicin" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos
@@ -448,8 +452,10 @@
result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob
/datum/recipe/tofubread
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/tofu,
/obj/item/weapon/reagent_containers/food/snacks/tofu,
/obj/item/weapon/reagent_containers/food/snacks/tofu,
@@ -474,8 +480,8 @@
result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries
/datum/recipe/cubancarp
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili,
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
)
@@ -487,10 +493,19 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/popcorn
/datum/recipe/fortunecookie
reagents = list("flour" = 5)
/datum/recipe/cookie
reagents = list("milk" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
)
result = /obj/item/weapon/reagent_containers/food/snacks/cookie
/datum/recipe/fortunecookie
reagents = list("sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice,
/obj/item/weapon/paper,
)
result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie
@@ -524,8 +539,8 @@
result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak
/datum/recipe/pizzamargherita
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
@@ -535,8 +550,8 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita
/datum/recipe/meatpizza
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
@@ -546,8 +561,8 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
/datum/recipe/syntipizza
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/syntiflesh,
/obj/item/weapon/syntiflesh,
/obj/item/weapon/syntiflesh,
@@ -557,23 +572,26 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
/datum/recipe/mushroompizza
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
/datum/recipe/vegetablepizza
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant,
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
/obj/item/weapon/reagent_containers/food/snacks/grown/corn,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
@@ -648,45 +666,46 @@
result = /obj/item/weapon/reagent_containers/food/snacks/coldchili
/datum/recipe/amanita_pie
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,
)
result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie
/datum/recipe/plump_pie
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
)
result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie
/datum/recipe/spellburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger,
/obj/item/clothing/head/wizard/fake,
)
result = /obj/item/weapon/reagent_containers/food/snacks/spellburger
/datum/recipe/spellburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger,
/obj/item/clothing/head/wizard,
)
result = /obj/item/weapon/reagent_containers/food/snacks/spellburger
/datum/recipe/bigbiteburger
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/egg,
)
result = /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger
/datum/recipe/enchiladas
items = list(
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/cutlet,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili,
/obj/item/weapon/reagent_containers/food/snacks/grown/corn,
@@ -694,23 +713,30 @@
result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas
/datum/recipe/creamcheesebread
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
/datum/recipe/monkeysdelight
reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 5)
reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/monkeycube,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
)
result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight
/datum/recipe/baguette
reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 15)
reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
)
result = /obj/item/weapon/reagent_containers/food/snacks/baguette
/datum/recipe/fishandchips
@@ -721,17 +747,20 @@
result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips
/datum/recipe/birthdaycake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/clothing/head/cakehat
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake
/datum/recipe/bread
reagents = list("flour" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
/datum/recipe/sandwich
@@ -766,10 +795,10 @@
result = /obj/item/weapon/reagent_containers/food/snacks/tomatosoup
/datum/recipe/rofflewaffles
reagents = list("psilocybin" = 5, "flour" = 10)
reagents = list("psilocybin" = 5, "sugar" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
)
result = /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles
@@ -818,9 +847,11 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
/datum/recipe/spagetti
reagents = list("flour" = 5)
result= /obj/item/weapon/reagent_containers/food/snacks/spagetti
/*/datum/recipe/spagetti We have the processor now
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice
)
result= /obj/item/weapon/reagent_containers/food/snacks/spagetti*/
/datum/recipe/boiledspagetti
reagents = list("water" = 5)
@@ -847,10 +878,9 @@
result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato
/datum/recipe/poppypretzel
reagents = list("flour" = 5)
items = list(
/obj/item/seeds/poppyseed,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
)
result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel
@@ -875,23 +905,14 @@
result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw
/datum/recipe/superbiteburger
reagents = list("sodiumchloride" = 5, "blackpepper" = 5, "flour" = 15)
reagents = list("sodiumchloride" = 5, "blackpepper" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/boiledegg,
)
result = /obj/item/weapon/reagent_containers/food/snacks/superbiteburger
@@ -903,31 +924,35 @@
result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple
/datum/recipe/applepie
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/grown/apple,
)
result = /obj/item/weapon/reagent_containers/food/snacks/applepie
/datum/recipe/applecake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/grown/apple,
/obj/item/weapon/reagent_containers/food/snacks/grown/apple,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
/datum/recipe/slimeburger
reagents = list("slimejelly" = 5, "flour" = 15)
items = list()
reagents = list("slimejelly" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun
)
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
/datum/recipe/jellyburger
reagents = list("cherryjelly" = 5, "flour" = 15)
items = list()
reagents = list("cherryjelly" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun
)
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
/datum/recipe/twobread
@@ -955,8 +980,11 @@
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
/datum/recipe/orangecake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
@@ -966,8 +994,11 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
/datum/recipe/limecake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
@@ -977,8 +1008,11 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
/datum/recipe/lemoncake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
@@ -988,8 +1022,11 @@
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
/datum/recipe/chocolatecake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
@@ -1006,11 +1043,9 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/bloodsoup
/datum/recipe/slimesoup
reagents = list("water" = 10, "slimejelly" = 5)
items = list(
)
items = list()
result = /obj/item/weapon/reagent_containers/food/snacks/slimesoup
/datum/recipe/clownstears
@@ -1033,8 +1068,11 @@
result = /obj/item/weapon/reagent_containers/food/snacks/mint
/datum/recipe/braincake
reagents = list("milk" = 5, "flour" = 15)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
@@ -1052,13 +1090,14 @@
/datum/recipe/sausage
items = list(
/obj/item/weapon/reagent_containers/food/snacks/meatball,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/cutlet,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sausage
/datum/recipe/fishfingers
reagents = list("flour" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
)
@@ -1075,16 +1114,18 @@
result = /obj/item/weapon/reagent_containers/food/snacks/mysterysoup
/datum/recipe/pumpkinpie
reagents = list("milk" = 5, "sugar" = 5, "flour" = 5)
reagents = list("milk" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin,
/obj/item/weapon/reagent_containers/food/snacks/egg,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
/datum/recipe/plumphelmetbiscuit
reagents = list("flour" = 5)
reagents = list("water" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
)
result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
@@ -1114,8 +1155,11 @@
result = /obj/item/weapon/reagent_containers/food/snacks/beetsoup
/datum/recipe/appletart
reagents = list("sugar" = 5, "milk" = 5, "flour" = 15)
reagents = list("sugar" = 5, "milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/grown/goldapple,
)
@@ -1158,7 +1202,10 @@
return being_cooked
/datum/recipe/cracker
reagents = list("flour" = 5, "sodiumchloride" = 1)
reagents = list("sodiumchloride" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice
)
result = /obj/item/weapon/reagent_containers/food/snacks/cracker
////////////////////////////FOOD ADDITTIONS///////////////////////////////
@@ -1270,3 +1317,51 @@
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
)
result = /obj/item/weapon/reagent_containers/food/snacks/sashimi
//////////////////////////////////////////
// bs12 food port stuff
//////////////////////////////////////////
/datum/recipe/taco
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice,
/obj/item/weapon/reagent_containers/food/snacks/cutlet,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
)
result = /obj/item/weapon/reagent_containers/food/snacks/taco
/datum/recipe/bun
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/bun
/datum/recipe/flatbread
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
)
result = /obj/item/weapon/reagent_containers/food/snacks/flatbread
/datum/recipe/meatball
items = list(
/obj/item/weapon/reagent_containers/food/snacks/rawmeatball
)
result = /obj/item/weapon/reagent_containers/food/snacks/meatball
/datum/recipe/cutlet
items = list(
/obj/item/weapon/reagent_containers/food/snacks/rawcutlet
)
result = /obj/item/weapon/reagent_containers/food/snacks/cutlet
/datum/recipe/fries
items = list(
/obj/item/weapon/reagent_containers/food/snacks/rawsticks
)
result = /obj/item/weapon/reagent_containers/food/snacks/fries
/datum/recipe/mint
reagents = list("sugar" = 5, "frostoil" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/mint
@@ -559,5 +559,22 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
pos = A.loc
sleep(15)
following = null
if (href_list["jump"])
var/mob/target = locate(href_list["jump"])
var/mob/A = usr;
A << "Teleporting to [target]..."
//var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list
if(target && target != usr)
spawn(0)
var/turf/pos = get_turf(A)
var/turf/T=get_turf(target)
if(T != pos)
if(!T)
return
if(!client)
return
loc = T
following = null
..()
//END TELEPORT HREF CODE
+2 -2
View File
@@ -1,5 +1,5 @@
/mob/dead/observer/say(var/message)
message = trim(copytext(message, 1, MAX_MESSAGE_LEN))
message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN))
if (!message)
return
@@ -18,7 +18,7 @@
/mob/dead/observer/emote(var/act, var/type, var/message)
message = trim(copytext(message, 1, MAX_MESSAGE_LEN))
message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN))
if(!message)
return
@@ -10,7 +10,8 @@
construction_time = 75
var/searching = 0
var/askDelay = 10 * 60 * 1
mob/living/carbon/brain/brainmob = null
//var/mob/living/carbon/brain/brainmob = null
var/list/ghost_volunteers[0]
req_access = list(access_robotics)
locked = 0
mecha = null//This does not appear to be used outside of reference in mecha.dm.
@@ -21,19 +22,26 @@
//Start the process of searching for a new user.
user << "\blue You carefully locate the manual activation switch and start the positronic brain's boot process."
icon_state = "posibrain-searching"
ghost_volunteers.Cut()
src.searching = 1
src.request_player()
spawn(600) reset_search()
proc/request_player()
for(var/mob/O in respawnable_list)
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
continue
if(jobban_isbanned(O, "pAI"))
continue
if(O.client)
if(O.client.prefs.be_special & BE_PAI)
question(O.client)
for(var/mob/dead/observer/O in player_list)
if(O.client && O.client.prefs.be_special & BE_PAI)
if(check_observer(O))
O << "\blue <b>\A [src] has been activated. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)"
//question(O.client)
proc/check_observer(var/mob/dead/observer/O)
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
return 0
if(jobban_isbanned(O, "pAI"))
return 0
if(O.client)
return 1
return 0
proc/question(var/client/C)
spawn(0)
@@ -90,6 +98,30 @@
for (var/mob/M in viewers(T))
M.show_message("\blue The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?")
Topic(href,href_list)
if("signup" in href_list)
var/mob/dead/observer/O = locate(href_list["signup"])
if(!O) return
volunteer(O)
proc/volunteer(var/mob/dead/observer/O)
if(!searching)
O << "Not looking for a ghost, yet."
return
if(!istype(O))
O << "\red NO."
return
if(O in ghost_volunteers)
O << "\blue Removed from registration list."
ghost_volunteers.Remove(O)
return
if(!check_observer(O))
O << "\red You cannot be \a [src]."
return
O.<< "\blue You've been added to the list of ghosts that may become this [src]. Click again to unvolunteer."
ghost_volunteers.Add(O)
/obj/item/device/mmi/posibrain/examine()
set src in oview()
@@ -141,3 +173,11 @@
dead_mob_list -= src.brainmob
..()
/obj/item/device/mmi/posibrain/attack_ghost(var/mob/dead/observer/O)
if(searching)
volunteer(O)
else
var/turf/T = get_turf_or_move(src.loc)
for (var/mob/M in viewers(T))
M.show_message("\blue The positronic brain pings softly.")
@@ -9,7 +9,7 @@
for(var/datum/organ/external/O in organs) //hardcoded to streamline things a bit
total_brute += O.brute_dam
total_burn += O.burn_dam
health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute - getBrainLoss()
health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute
//TODO: fix husking
if( ((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) //100 only being used as the magic human max health number, feel free to change it if you add a var for it -- Urist
ChangeToHusk()
@@ -928,7 +928,6 @@
proc/handle_chemicals_in_body()
if(reagents && !(species.flags & IS_SYNTHETIC)) //Synths don't process reagents.
var/alien = 0 //Not the best way to handle it, but neater than checking this for every single reagent proc.
if(species && species.name == "Diona")
@@ -937,7 +936,6 @@
alien = 2
reagents.metabolize(src,alien)
if(reagents) reagents.metabolize(src)
var/total_plasmaloss = 0
for(var/obj/item/I in src)
if(I.contaminated)
@@ -113,15 +113,15 @@ Please contact me on #coderbus IRC. ~Carn x
#define HAIR_LAYER 14 //TODO: make part of head layer?
#define FACEMASK_LAYER 15
#define HEAD_LAYER 16
#define HANDCUFF_LAYER 17
#define LEGCUFF_LAYER 18
#define L_HAND_LAYER 19
#define R_HAND_LAYER 20
#define TAIL_LAYER 21 //bs12 specific. this hack is probably gonna come back to haunt me
#define TARGETED_LAYER 22 //BS12: Layer for the target overlay from weapon targeting system
#define FIRE_LAYER 23 //If you're on fire
#define TOTAL_LAYERS 23
//////////////////////////////////
#define COLLAR_LAYER 17
#define HANDCUFF_LAYER 18
#define LEGCUFF_LAYER 19
#define TAIL_LAYER 20 //bs12 specific. this hack is probably gonna come back to haunt me
#define L_HAND_LAYER 21
#define R_HAND_LAYER 22
#define TARGETED_LAYER 23 //BS12: Layer for the target overlay from weapon targeting system
#define FIRE_LAYER 24 //If you're on fire
#define TOTAL_LAYERS 24
/mob/living/carbon/human
var/list/overlays_standing[TOTAL_LAYERS]
@@ -725,6 +725,8 @@ proc/get_damage_icon_part(damage_state, body_part)
update_tail_showing(0)
update_collar(0)
if(update_icons) update_icons()
/mob/living/carbon/human/update_inv_pockets(var/update_icons=1)
@@ -847,6 +849,22 @@ proc/get_damage_icon_part(damage_state, body_part)
if(update_icons)
update_icons()
//Adds a collar overlay above the helmet layer if the suit has one
// Suit needs an identically named sprite in icons/mob/collar.dmi
/mob/living/carbon/human/proc/update_collar(var/update_icons=1)
var/icon/C = new('icons/mob/collar.dmi')
var/image/standing = null
if(wear_suit)
if(wear_suit.icon_state in C.IconStates())
standing = image("icon" = C, "icon_state" = "[wear_suit.icon_state]")
overlays_standing[COLLAR_LAYER] = standing
if(update_icons) update_icons()
// Used mostly for creating head items
/mob/living/carbon/human/proc/generate_head_icon()
//gender no longer matters for the mouth, although there should probably be seperate base head icons.
@@ -899,6 +917,7 @@ proc/get_damage_icon_part(damage_state, body_part)
#undef BACK_LAYER
#undef HAIR_LAYER
#undef HEAD_LAYER
#undef COLLAR_LAYER
#undef HANDCUFF_LAYER
#undef LEGCUFF_LAYER
#undef L_HAND_LAYER
@@ -903,7 +903,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECITON_TEMPERATURE
armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0)
/obj/effect/goleM_RUNe
/obj/effect/golem_rune
anchored = 1
desc = "a strange rune used to create golems. It glows when spirits are nearby."
name = "rune"
@@ -911,19 +911,14 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
icon_state = "golem"
unacidable = 1
layer = TURF_LAYER
var/list/mob/dead/observer/ghosts[0]
New()
..()
processing_objects.Add(src)
process()
var/mob/dead/observer/ghost
for(var/mob/dead/observer/O in src.loc)
if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
ghost = O
break
if(ghost)
if(ghosts.len>0)
icon_state = "golem2"
else
icon_state = "golem"
@@ -931,8 +926,8 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
attack_hand(mob/living/user as mob)
var/mob/dead/observer/ghost
for(var/mob/dead/observer/O in src.loc)
if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
if(!check_observer(O))
continue
ghost = O
break
if(!ghost)
@@ -955,11 +950,41 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
proc/announce_to_ghosts()
for(var/mob/dead/observer/G in player_list)
if(G.client)
for(var/mob/dead/observer/O in player_list)
if(O.client)
var/area/A = get_area(src)
if(A)
G << "Golem rune created in [A.name]."
O << "\blue <b>Golem rune created in [A.name]. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)</b>"
Topic(href,href_list)
if("signup" in href_list)
var/mob/dead/observer/O = locate(href_list["signup"])
volunteer(O)
attack_ghost(var/mob/dead/observer/O)
if(!O) return
volunteer(O)
proc/check_observer(var/mob/dead/observer/O)
if(!O)
return 0
if(!O.client)
return 0
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
return 0
return 1
proc/volunteer(var/mob/dead/observer/O)
if(O in ghosts)
ghosts.Remove(O)
O << "\red You are no longer signed up to be a golem."
else
if(!check_observer(O))
O << "\red You are not eligable."
return
ghosts.Add(O)
O << "\blue You are signed up to be a golem."
//////////////////////////////Old shit from metroids/RoRos, and the old cores, would not take much work to re-add them////////////////////////
/*
+1 -1
View File
@@ -34,7 +34,7 @@
health = 100
stat = CONSCIOUS
else
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - getBrainLoss() - halloss
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
+19 -10
View File
@@ -156,11 +156,14 @@ var/list/department_radio_keys = list(
message = uppertext(message)
// General public key. Special message handling
else if (copytext(message, 1, 2) == ";" || prob(braindam/2))
if (ishuman(src))
message_mode = "headset"
else if(ispAI(src) || isrobot(src))
message_mode = "pAI"
var/mmode
var/cprefix = ""
if(length(message) >= 2)
cprefix = copytext(message, 1, 3)
if(cprefix in department_radio_keys)
mmode = department_radio_keys[cprefix]
if (copytext(message, 1, 2) == ";" || (prob(braindam/2) && !mmode))
message_mode = "headset"
message = copytext(message, 2)
// Begin checking for either a message mode or a language to speak.
else if (length(message) >= 2)
@@ -205,10 +208,10 @@ var/list/department_radio_keys = list(
// Select all always_talk devices
// Carbon lifeforms
if(istype(src, /mob/living/carbon))
for(var/obj/item/device/radio/R in contents)
if(R.always_talk)
devices += R
//if(istype(src, /mob/living/carbon))
for(var/obj/item/device/radio/R in contents)
if(R.always_talk)
devices += R
//src << "Speaking on [message_mode]: [message]"
if(message_mode)
@@ -235,6 +238,9 @@ var/list/department_radio_keys = list(
var/mob/living/carbon/C=src
if(C:l_ear) used_radios += C:l_ear
if(C:r_ear) used_radios += C:r_ear
if(issilicon(src))
var/mob/living/silicon/Ro=src
if(Ro:radio) devices += Ro:radio
message_range = 1
italics = 1
if ("fake left ear")
@@ -296,7 +302,10 @@ var/list/department_radio_keys = list(
if(C:r_ear) devices += C:r_ear
if(issilicon(src))
var/mob/living/silicon/Ro=src
if(Ro:radio) devices += Ro:radio
if(Ro:radio)
devices += Ro:radio
else
warning("[src] has no radio!")
message_range = 1
italics = 1
if(devices.len>0)
+20 -19
View File
@@ -12,8 +12,6 @@ var/datum/paiController/paiController // Global handler for pAI candidates
var/comments
var/ready = 0
/datum/paiController
var/list/pai_candidates = list()
var/list/asked = list()
@@ -21,6 +19,13 @@ var/datum/paiController/paiController // Global handler for pAI candidates
var/askDelay = 10 * 60 * 1 // One minute [ms * sec * min]
Topic(href, href_list[])
if("signup" in href_list)
var/mob/dead/observer/O = locate(href_list["signup"])
if(!O) return
if(!check_recruit(O)) return
recruitWindow(O)
return
if(href_list["download"])
var/datum/paiCandidate/candidate = locate(href_list["candidate"])
var/obj/item/device/paicard/card = locate(href_list["device"])
@@ -190,23 +195,19 @@ var/datum/paiController/paiController // Global handler for pAI candidates
user << browse(dat, "window=findPai")
proc/requestRecruits()
for(var/mob/O in respawnable_list)
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
continue
if(jobban_isbanned(O, "pAI"))
continue
if(asked.Find(O.key))
if(world.time < asked[O.key] + askDelay)
continue
else
asked.Remove(O.key)
if(O.client)
var/hasSubmitted = 0
for(var/datum/paiCandidate/c in paiController.pai_candidates)
if(c.key == O.key)
hasSubmitted = 1
if(!hasSubmitted && (O.client.prefs.be_special & BE_PAI))
question(O.client)
for(var/mob/dead/observer/O in player_list)
if(O.client && O.client.prefs.be_special & BE_PAI)
if(check_recruit(O))
O << "\blue <b>A pAI card is looking for personalities. (<a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)</b>"
//question(O.client)
proc/check_recruit(var/mob/dead/observer/O)
if(jobban_isbanned(O, "pAI"))
return 0
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
return 0
if(O.client)
return 1
return 0
proc/question(var/client/C)
spawn(0)
@@ -1,18 +0,0 @@
/mob/living/simple_animal/mushroom
name = "walking mushroom"
desc = "It's a massive mushroom... with legs?"
icon_state = "mushroom"
icon_living = "mushroom"
icon_dead = "mushroom_dead"
small = 1
speak_chance = 0
turns_per_move = 1
maxHealth = 5
health = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "whacks the"
harm_intent_damage = 5
pass_flags = PASSTABLE
can_hide = 1
@@ -0,0 +1,158 @@
/mob/living/simple_animal/hostile/mushroom
name = "walking mushroom"
desc = "It's a massive mushroom... with legs?"
icon_state = "mushroom_color"
icon_living = "mushroom_color"
icon_dead = "mushroom_dead"
speak_chance = 0
turns_per_move = 1
maxHealth = 10
health = 10
meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "whacks"
harm_intent_damage = 5
melee_damage_lower = 1
melee_damage_upper = 1
attack_same = 2
attacktext = "chomps"
faction = "mushroom"
environment_smash = 0
stat_attack = 2
mouse_opacity = 1
speed = 1
var/powerlevel = 0 //Tracks our general strength level gained from eating other shrooms
var/bruised = 0 //If someone tries to cheat the system by attacking a shroom to lower its health, punish them so that it wont award levels to shrooms that eat it
var/recovery_cooldown = 0 //So you can't repeatedly revive it during a fight
var/faint_ticker = 0 //If we hit three, another mushroom's gonna eat us
var/image/cap_living = null //Where we store our cap icons so we dont generate them constantly to update our icon
var/image/cap_dead = null
/mob/living/simple_animal/hostile/mushroom/examine()
..()
if(health >= maxHealth)
usr << "<span class='info'>It looks healthy.</span>"
else
usr << "<span class='info'>It looks like it's been roughed up.</span>"
/mob/living/simple_animal/hostile/mushroom/Life()
..()
if(!stat)//Mushrooms slowly regenerate if conscious, for people who want to save them from being eaten
health = min(health+2, maxHealth)
/mob/living/simple_animal/hostile/mushroom/New()//Makes every shroom a little unique
melee_damage_lower += rand(3, 5)
melee_damage_upper += rand(10,20)
maxHealth += rand(40,60)
move_to_delay = rand(2,10)
var/cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255))
cap_living = image('icons/mob/animal.dmi',icon_state = "mushroom_cap")
cap_dead = image('icons/mob/animal.dmi',icon_state = "mushroom_cap_dead")
cap_living.color = cap_color
cap_dead.color = cap_color
UpdateMushroomCap()
..()
/mob/living/simple_animal/hostile/mushroom/adjustBruteLoss(var/damage)//Possibility to flee from a fight just to make it more visually interesting
if(!retreat_distance && prob(33))
retreat_distance = 5
spawn(30)
retreat_distance = null
..()
/mob/living/simple_animal/hostile/mushroom/attack_animal(var/mob/living/L)
if(istype(L, /mob/living/simple_animal/hostile/mushroom) && stat == DEAD)
var/mob/living/simple_animal/hostile/mushroom/M = L
if(faint_ticker < 2)
M.visible_message("<span class='notice'>[M] chews a bit on [src].</span>")
faint_ticker++
return
M.visible_message("<span class='notice'>[M] devours [src]!</span>")
var/level_gain = (powerlevel - M.powerlevel)
if(level_gain >= -1 && !bruised && !M.ckey)//Player shrooms can't level up to become robust gods.
if(level_gain < 1)//So we still gain a level if two mushrooms were the same level
level_gain = 1
M.LevelUp(level_gain)
M.health = M.maxHealth
del(src)
..()
/mob/living/simple_animal/hostile/mushroom/revive()
..()
icon_state = "mushroom_color"
UpdateMushroomCap()
/mob/living/simple_animal/hostile/mushroom/Die()
visible_message("<span class='notice'>[src] fainted.</span>")
..()
UpdateMushroomCap()
/mob/living/simple_animal/hostile/mushroom/proc/UpdateMushroomCap()
overlays.Cut()
if(health == 0)
overlays += cap_dead
else
overlays += cap_living
/mob/living/simple_animal/hostile/mushroom/proc/Recover()
visible_message("<span class='notice'>[src] slowly begins to recover.</span>")
health = 5
faint_ticker = 0
icon_state = icon_living
UpdateMushroomCap()
recovery_cooldown = 1
spawn(300)
recovery_cooldown = 0
/mob/living/simple_animal/hostile/mushroom/proc/LevelUp(var/level_gain)
if(powerlevel <= 9)
powerlevel += level_gain
if(prob(25))
melee_damage_lower += (level_gain * rand(1,5))
else
melee_damage_upper += (level_gain * rand(1,5))
maxHealth += (level_gain * rand(1,5))
health = maxHealth //They'll always heal, even if they don't gain a level, in case you want to keep this shroom around instead of harvesting it
/mob/living/simple_animal/hostile/mushroom/proc/Bruise()
if(!bruised && !stat)
src.visible_message("<span class='notice'>The [src.name] was bruised!</span>")
bruised = 1
/mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom))
if(stat == DEAD && !recovery_cooldown)
Recover()
del(I)
else
user << "<span class='notice'>[src] won't eat it!</span>"
return
if(I.force)
Bruise()
..()
/mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M as mob)
..()
if(M.a_intent == "harm")
Bruise()
/mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM)
..()
if(istype(AM, /obj/item))
var/obj/item/T = AM
if(T.throwforce)
Bruise()
/mob/living/simple_animal/hostile/mushroom/bullet_act()
..()
Bruise()
/mob/living/simple_animal/hostile/mushroom/harvest()
var/counter
for(counter=0, counter<=powerlevel, counter++)
var/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice(src.loc)
S.reagents.add_reagent("mushroomhallucinogen", powerlevel)
S.reagents.add_reagent("doctorsdelight", powerlevel)
S.reagents.add_reagent("synaptizine", powerlevel)
del(src)
+1
View File
@@ -885,6 +885,7 @@ note dizziness decrements automatically in the mob's Life() proc.
stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]")
stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]")
stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]")
stat(null,"GC-[master_controller.gc_cost]\t#[garbage.queue.len]")
stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]")
else
stat(null,"MasterController-ERROR")
@@ -187,6 +187,10 @@ datum/preferences
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
eyes_s.Blend(facial_s, ICON_OVERLAY)
var/icon/underwear_s = null
if(underwear > 0 && underwear < 7 && current_species.flags & HAS_UNDERWEAR)
underwear_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = "underwear[underwear]_[g]_s")
var/icon/clothes_s = null
var/uniform_dmi='icons/mob/uniform.dmi'
if(disabilities&DISABILITY_FLAG_FAT)
@@ -204,8 +208,8 @@ datum/preferences
if(HOP)
clothes_s = new /icon(uniform_dmi, "hop_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "ianshirt"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -216,7 +220,8 @@ datum/preferences
if(BARTENDER)
clothes_s = new /icon(uniform_dmi, "ba_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "tophat"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -229,6 +234,8 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "ggloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "apron"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "nymph"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -240,6 +247,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "chef_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "chef"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "apronchef"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -250,6 +259,8 @@ datum/preferences
if(JANITOR)
clothes_s = new /icon(uniform_dmi, "janitor_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bio_janitor"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -260,6 +271,8 @@ datum/preferences
if(LIBRARIAN)
clothes_s = new /icon(uniform_dmi, "red_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "hairflower"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -271,8 +284,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "qm_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "clipboard"), ICON_UNDERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "poncho"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -284,6 +297,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "cargotech_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "flat_cap"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -295,6 +310,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "miner_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "bearpelt"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -306,7 +323,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "internalaffairs_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "briefcase"), ICON_UNDERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -317,6 +335,8 @@ datum/preferences
if(CHAPLAIN)
clothes_s = new /icon(uniform_dmi, "chapblack_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "imperium_monk"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -349,8 +369,9 @@ datum/preferences
if(RD)
clothes_s = new /icon(uniform_dmi, "director_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "clipboard"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "petehat"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -362,6 +383,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "toxinswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "metroid"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -372,7 +395,10 @@ datum/preferences
if(CHEMIST)
clothes_s = new /icon(uniform_dmi, "chemistrywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labgreen"), ICON_OVERLAY)
else
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -383,8 +409,10 @@ datum/preferences
if(CMO)
clothes_s = new /icon(uniform_dmi, "cmo_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "firstaid"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bio_cmo"), ICON_OVERLAY)
else
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "medicalpack"), ICON_OVERLAY)
@@ -395,8 +423,10 @@ datum/preferences
if(DOCTOR)
clothes_s = new /icon(uniform_dmi, "medical_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "firstaid"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "surgeon"), ICON_OVERLAY)
else
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "medicalpack"), ICON_OVERLAY)
@@ -407,7 +437,10 @@ datum/preferences
if(GENETICIST)
clothes_s = new /icon(uniform_dmi, "geneticswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "monkeysuit"), ICON_OVERLAY)
else
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -420,6 +453,8 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "sterile"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "plaguedoctor"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "medicalpack"), ICON_OVERLAY)
@@ -431,8 +466,9 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "robotics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "toolbox_blue"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "toolbox_blue"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -446,10 +482,10 @@ datum/preferences
if(CAPTAIN)
clothes_s = new /icon(uniform_dmi, "captain_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "captain"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "caparmor"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "centcomcaptain"), ICON_OVERLAY)
else
clothes_s.Blend(new /icon('icons/mob/head.dmi', "captain"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -461,8 +497,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "hosred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "hosberet"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY)
@@ -471,11 +507,12 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(WARDEN)
clothes_s = new /icon(uniform_dmi, "warden_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s")
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "slippers_worn"), ICON_OVERLAY)
else
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY)
@@ -487,7 +524,8 @@ datum/preferences
clothes_s = new /icon(uniform_dmi, "detective_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "detective"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY)
switch(backbag)
@@ -500,8 +538,8 @@ datum/preferences
if(OFFICER)
clothes_s = new /icon(uniform_dmi, "secred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "officerberet"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY)
@@ -514,8 +552,9 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "hardhat0_white"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "blueprints"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "engiepack"), ICON_OVERLAY)
@@ -528,6 +567,8 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "hardhat0_yellow"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "hazard"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "engiepack"), ICON_OVERLAY)
@@ -540,6 +581,8 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "firesuit"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -551,6 +594,8 @@ datum/preferences
if(AI)//Gives AI and borgs assistant-wear, so they can still customize their character
clothes_s = new /icon(uniform_dmi, "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "straight_jacket"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "cardborg_h"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
else if(backbag == 3 || backbag == 4)
@@ -558,6 +603,8 @@ datum/preferences
if(CYBORG)
clothes_s = new /icon(uniform_dmi, "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "cardborg"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "cardborg_h"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
else if(backbag == 3 || backbag == 4)
@@ -577,10 +624,13 @@ datum/preferences
preview_icon.Blend(eyes_s, ICON_OVERLAY)
if(underwear_s)
preview_icon.Blend(underwear_s, ICON_OVERLAY)
if(clothes_s)
preview_icon.Blend(clothes_s, ICON_OVERLAY)
preview_icon_front = new(preview_icon, dir = SOUTH)
preview_icon_side = new(preview_icon, dir = WEST)
del(eyes_s)
del(clothes_s)
del(underwear_s)
del(clothes_s)
+1 -1
View File
@@ -365,7 +365,7 @@
return 1
if(ispath(MP, /mob/living/simple_animal/hostile/carp))
return 1
if(ispath(MP, /mob/living/simple_animal/mushroom))
if(ispath(MP, /mob/living/simple_animal/hostile/mushroom))
return 1
if(ispath(MP, /mob/living/simple_animal/shade))
return 1
+11 -9
View File
@@ -499,10 +499,12 @@ This function completely restores a damaged organ to perfect condition.
if(HEAD)
if(owner.species.flags & IS_SYNTHETIC)
organ= new /obj/item/weapon/organ/head/posi(owner.loc, owner)
else if(owner.mutations & SKELETON)
owner.death()
else if(SKELETON in owner.mutations)
organ= new /obj/item/weapon/skeleton/head(owner.loc)
else
organ= new /obj/item/weapon/organ/head(owner.loc, owner)
owner.death()
owner.u_equip(owner.glasses)
owner.u_equip(owner.head)
owner.u_equip(owner.l_ear)
@@ -511,55 +513,55 @@ This function completely restores a damaged organ to perfect condition.
if(ARM_RIGHT)
if(status & ORGAN_ROBOT)
organ = new /obj/item/robot_parts/r_arm(owner.loc)
else if(owner.mutations & SKELETON)
else if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/r_arm(owner.loc)
else
organ= new /obj/item/weapon/organ/r_arm(owner.loc, owner)
if(ARM_LEFT)
if(status & ORGAN_ROBOT)
organ= new /obj/item/robot_parts/l_arm(owner.loc)
else if(owner.mutations & SKELETON)
else if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/l_arm(owner.loc)
else
organ= new /obj/item/weapon/organ/l_arm(owner.loc, owner)
if(LEG_RIGHT)
if(status & ORGAN_ROBOT)
organ = new /obj/item/robot_parts/r_leg(owner.loc)
else if(owner.mutations & SKELETON)
else if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/r_leg(owner.loc)
else
organ= new /obj/item/weapon/organ/r_leg(owner.loc, owner)
if(LEG_LEFT)
if(status & ORGAN_ROBOT)
organ = new /obj/item/robot_parts/l_leg(owner.loc)
else if(owner.mutations & SKELETON)
else if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/l_leg(owner.loc)
else
organ= new /obj/item/weapon/organ/l_leg(owner.loc, owner)
if(HAND_RIGHT)
if(!(status & ORGAN_ROBOT))
if(owner.mutations & SKELETON)
if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/r_hand(owner.loc)
else
organ= new /obj/item/weapon/organ/r_hand(owner.loc, owner)
owner.u_equip(owner.gloves)
if(HAND_LEFT)
if(!(status & ORGAN_ROBOT))
if(owner.mutations & SKELETON)
if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/l_hand(owner.loc)
else
organ= new /obj/item/weapon/organ/l_hand(owner.loc, owner)
owner.u_equip(owner.gloves)
if(FOOT_RIGHT)
if(!(status & ORGAN_ROBOT))
if(owner.mutations & SKELETON)
if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/r_foot(owner.loc)
else
organ= new /obj/item/weapon/organ/r_foot/(owner.loc, owner)
owner.u_equip(owner.shoes)
if(FOOT_LEFT)
if(!(status & ORGAN_ROBOT))
if(owner.mutations & SKELETON)
if(SKELETON in owner.mutations)
organ = new /obj/item/weapon/skeleton/l_foot(owner.loc)
else
organ = new /obj/item/weapon/organ/l_foot(owner.loc, owner)
+20
View File
@@ -604,3 +604,23 @@ obj/structure/cable/proc/cableColor(var/colorC)
_color = pick("red","yellow","green","blue","pink")
icon_state = "coil_[_color]"
..()
/obj/item/stack/cable_coil/attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:get_organ(user.zone_sel.selecting)
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help")
return ..()
if(S.burn_dam > 0 && src.use(1))
S.heal_damage(0,15,0,1)
if(user != M)
user.visible_message("\red \The [user] repairs some burn damage on their [S.display_name] with \the [src]",\
"\red You repair some burn damage on your [S.display_name]",\
"You hear wires being cut.")
else
user.visible_message("\red \The [user] repairs some burn damage on their [S.display_name] with \the [src]",\
"\red You repair some burn damage on your [S.display_name]",\
"You hear wires being cut.")
else
user << "Nothing to fix!"
else
return ..()
+1 -1
View File
@@ -186,7 +186,7 @@ proc/wabbajack(mob/living/M)
if("cat") new_mob = new /mob/living/simple_animal/cat(M.loc)
if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc)
if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc)
if("mushroom") new_mob = new /mob/living/simple_animal/mushroom(M.loc)
if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc)
if("tomato") new_mob = new /mob/living/simple_animal/tomato(M.loc)
if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc)
if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc)
+23 -2
View File
@@ -199,11 +199,11 @@ datum
return total_transfered
*/
metabolize(var/mob/M)
metabolize(var/mob/M,var/alien)
for(var/A in reagent_list)
var/datum/reagent/R = A
if(M && R)
R.on_mob_life(M)
R.on_mob_life(M,alien)
update_total()
conditional_update_move(var/atom/A, var/Running = 0)
@@ -506,6 +506,27 @@ datum
return res
remove_all_type(var/reagent_type, var/amount, var/strict = 0, var/safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
if(!isnum(amount)) return 1
var/has_removed_reagent = 0
for(var/datum/reagent/R in reagent_list)
var/matches = 0
// Switch between how we check the reagent type
if(strict)
if(R.type == reagent_type)
matches = 1
else
if(istype(R, reagent_type))
matches = 1
// We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type.
if(matches)
// Have our other proc handle removement
has_removed_reagent = remove_reagent(R.id, amount, safety)
return has_removed_reagent
// Admin logging.
get_reagent_ids(var/and_amount=0)
var/list/stuff = list()
+1 -1
View File
@@ -894,7 +894,7 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
///obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk = list("rice" = -5),
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/plastellium = list("plasticide" = 5),
+78 -17
View File
@@ -5,9 +5,16 @@
#define REAGENTS_OVERDOSE 30
#define REM REAGENTS_EFFECT_MULTIPLIER
//Some on_mob_life() procs check for alien races.
#define IS_DIONA 1
#define IS_VOX 2
//The reaction procs must ALWAYS set src = null, this detaches the proc from the object (the reagent)
//so that it can continue working when the reagent is deleted while the proc is still active.
//Some on_mob_life() procs check for alien races.
#define IS_DIONA 1
#define IS_VOX 2
datum
reagent
@@ -69,7 +76,7 @@ datum
src = null
return
on_mob_life(var/mob/living/M as mob)
on_mob_life(var/mob/living/M as mob, var/alien)
if(!istype(M, /mob/living))
return //Noticed runtime errors from pacid trying to damage ghosts, this should fix. --NEO
// Certain elements in too large amounts cause side-effects
@@ -554,10 +561,15 @@ datum
reagent_state = LIQUID
color = "#0000FF" // rgb: 0, 0, 255
on_mob_life(var/mob/living/M as mob)
on_mob_life(var/mob/living/M as mob, var/alien)
if(!M) M = holder.my_atom
if(M.losebreath >= 10)
M.losebreath = max(10, M.losebreath-5)
if(alien && alien == IS_VOX)
M.adjustToxLoss(REAGENTS_METABOLISM)
else
if(M.losebreath >= 10)
M.losebreath = max(10, M.losebreath-5)
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
return
@@ -685,6 +697,14 @@ datum
custom_metabolism = 0.01
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2) return
if(alien && alien == IS_VOX)
M.adjustToxLoss(REAGENTS_METABOLISM)
holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears.
return
..()
copper
name = "Copper"
id = "copper"
@@ -704,6 +724,14 @@ datum
mildly_toxic = 1
custom_metabolism = 0.01
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2) return
if(alien && alien == IS_VOX)
M.adjustOxyLoss(-2*REM)
holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears.
return
..()
hydrogen
name = "Hydrogen"
id = "hydrogen"
@@ -1483,6 +1511,7 @@ datum
if(M.stat == 2.0)
return
if(!M) M = holder.my_atom
//This needs a diona check but if one is added they won't be able to heal burn damage at all.
M.heal_organ_damage(0,2*REM)
..()
return
@@ -1494,11 +1523,12 @@ datum
reagent_state = LIQUID
color = "#F4A460" // rgb: 244, 164, 96
on_mob_life(var/mob/living/M as mob)
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN
return
if(!M) M = holder.my_atom
M.heal_organ_damage(0,3*REM)
if(!alien || alien != IS_DIONA)
M.heal_organ_damage(0,3*REM)
..()
return
@@ -1509,11 +1539,16 @@ datum
reagent_state = LIQUID
color = "#00CED1" // rgb: 0, 206, 209
on_mob_life(var/mob/living/M as mob)
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2.0)
return //See above, down and around. --Agouri
if(!M) M = holder.my_atom
M.adjustOxyLoss(-2*REM)
if(alien && alien == IS_VOX)
M.adjustToxLoss(2*REM)
else if(!alien || alien != IS_DIONA)
M.adjustOxyLoss(-2*REM)
if(holder.has_reagent("lexorin"))
holder.remove_reagent("lexorin", 2*REM)
..()
@@ -1526,11 +1561,16 @@ datum
reagent_state = LIQUID
color = "#00FFFF" // rgb: 0, 255, 255
on_mob_life(var/mob/living/M as mob)
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2.0)
return
if(!M) M = holder.my_atom
M.adjustOxyLoss(-M.getOxyLoss())
if(alien && alien == IS_VOX)
M.adjustOxyLoss()
else if(!alien || alien != IS_DIONA)
M.adjustOxyLoss(-M.getOxyLoss())
if(holder.has_reagent("lexorin"))
holder.remove_reagent("lexorin", 2*REM)
..()
@@ -1543,14 +1583,32 @@ datum
reagent_state = LIQUID
color = "#DB7093" // rgb: 219, 112, 147
on_mob_life(var/mob/living/M as mob)
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2.0)
return
if(!M) M = holder.my_atom
if(M.getOxyLoss() && prob(80)) M.adjustOxyLoss(-1*REM)
if(M.getBruteLoss() && prob(80)) M.heal_organ_damage(1*REM,0)
if(M.getFireLoss() && prob(80)) M.heal_organ_damage(0,1*REM)
if(M.getToxLoss() && prob(80)) M.adjustToxLoss(-1*REM)
if(!alien || alien != IS_DIONA)
if(M.getOxyLoss()) M.adjustOxyLoss(-1*REM)
if(M.getBruteLoss() && prob(80)) M.heal_organ_damage(1*REM,0)
if(M.getFireLoss() && prob(80)) M.heal_organ_damage(0,1*REM)
if(M.getToxLoss() && prob(80)) M.adjustToxLoss(-1*REM)
..()
return
anti_toxin
name = "Anti-Toxin (Dylovene)"
id = "anti_toxin"
description = "Dylovene is a broad-spectrum antitoxin."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
on_mob_life(var/mob/living/M as mob, var/alien)
if(!M) M = holder.my_atom
if(!alien || alien != IS_DIONA)
M.reagents.remove_all_type(/datum/reagent/toxin, 1*REM, 0, 1)
M.drowsyness = max(M.drowsyness-2*REM, 0)
M.hallucination = max(0, M.hallucination - 5*REM)
M.adjustToxLoss(-2*REM)
..()
return
@@ -1772,11 +1830,12 @@ datum
reagent_state = LIQUID
color = "#FF003F" // rgb: 255, 0, 63
on_mob_life(var/mob/living/M as mob)
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2.0)
return
if(!M) M = holder.my_atom
M.heal_organ_damage(2*REM,0)
if(alien != IS_DIONA)
M.heal_organ_damage(2*REM,0)
..()
return
@@ -2547,6 +2606,7 @@ datum
..()
return
/* We're back to flour bags
flour
name = "flour"
id = "flour"
@@ -2564,6 +2624,7 @@ datum
src = null
if(!istype(T, /turf/space))
new /obj/effect/decal/cleanable/flour(T)
*/
rice
name = "Rice"
+2 -2
View File
@@ -1380,7 +1380,7 @@ datum
required_other = 1
on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
var/obj/effect/goleM_RUNe/Z = new /obj/effect/goleM_RUNe
var/obj/effect/golem_rune/Z = new /obj/effect/golem_rune
Z.loc = get_turf(holder.my_atom)
Z.announce_to_ghosts()
//////////////////////////////////////////FOOD MIXTURES////////////////////////////////////
@@ -1561,7 +1561,7 @@ datum
name = "Space Beer"
id = "spacebeer"
result = "beer"
required_reagents = list("flour" = 10)
required_reagents = list("cornoil" = 10)
required_catalysts = list("enzyme" = 5)
result_amount = 10
@@ -8,5 +8,5 @@
/obj/item/weapon/reagent_containers/food/New()
..()
src.pixel_x = rand(-5.0, 5) //Randomizes postion slightly.
src.pixel_y = rand(-5.0, 5)
src.pixel_x = rand(-10.0, 10) //Randomizes postion
src.pixel_y = rand(-10.0, 10)
@@ -171,6 +171,7 @@
src.pixel_x = rand(-10.0, 10)
src.pixel_y = rand(-10.0, 10)
/* Flour is no longer a reagent
/obj/item/weapon/reagent_containers/food/drinks/flour
name = "flour sack"
desc = "A big bag of flour. Good for baking!"
@@ -182,6 +183,7 @@
reagents.add_reagent("flour", 50)
src.pixel_x = rand(-10.0, 10)
src.pixel_y = rand(-10.0, 10)
*/
/obj/item/weapon/reagent_containers/food/drinks/soymilk
name = "SoyMilk"
@@ -263,7 +263,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy
name = "candy"
desc = "Nougat love it or hate it."
desc = "Nougat, love it or hate it."
icon_state = "candy"
trash = /obj/item/trash/candy
filling_color = "#7D5F46"
@@ -286,7 +286,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
name = "candy corn"
desc = "It's a handful of candy corn. Can be stored in a detective's hat."
desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas."
icon_state = "candy_corn"
filling_color = "#FFFCB0"
@@ -321,7 +321,7 @@
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
name = "Chocolate Bar"
desc = "Such, sweet, fattening food."
desc = "Such sweet, fattening food."
icon_state = "chocolatebar"
filling_color = "#7D5F46"
@@ -334,7 +334,7 @@
/obj/item/weapon/reagent_containers/food/snacks/chocolateegg
name = "Chocolate Egg"
desc = "Such, sweet, fattening food."
desc = "Such sweet, fattening food."
icon_state = "chocolateegg"
filling_color = "#7D5F46"
@@ -542,15 +542,16 @@
..()
reagents.add_reagent("nutriment", 2)
/*/obj/item/weapon/reagent_containers/food/snacks/flour //Has been converted into a reagent. Use that instead of the item!
/obj/item/weapon/reagent_containers/food/snacks/flour
name = "flour"
desc = "Some flour"
desc = "A small bag filled with some flour."
icon_state = "flour"
New()
..()
reagents.add_reagent("nutriment", 1)*/
reagents.add_reagent("nutriment", 1)
/obj/item/weapon/reagent_containers/food/snacks/appendix //yes, this is the same as meat. I might do something different in future
/obj/item/weapon/reagent_containers/food/snacks/appendix
//yes, this is the same as meat. I might do something different in future
name = "appendix"
desc = "An appendix which looks perfectly healthy."
icon = 'icons/obj/surgery.dmi'
@@ -770,6 +771,14 @@
reagents.add_reagent("nutriment", 6)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/cheeseburger
name = "cheeseburger"
desc = "The cheese adds a good flavor."
icon_state = "cheeseburger"
New()
..()
reagents.add_reagent("nutriment", 2)
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger
name = "burger"
desc = "The cornerstone of every nutritious breakfast."
@@ -812,7 +821,9 @@
New()
..()
reagents.add_reagent("nanites", 2)
reagents.add_reagent("nutriment", 2)
if(prob(5))
reagents.add_reagent("nanites", 2)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/roburgerbig
@@ -1253,7 +1264,7 @@
/obj/item/weapon/reagent_containers/food/snacks/fries
name = "Space Fries"
desc = "AKA: French Fries, Freedom Fries, etc"
desc = "AKA: French Fries, Freedom Fries, etc."
icon_state = "fries"
trash = /obj/item/trash/plate
filling_color = "#EDDD00"
@@ -1277,7 +1288,7 @@
/obj/item/weapon/reagent_containers/food/snacks/spagetti
name = "Spagetti"
desc = "Now thats a nice pasta!"
desc = "A bundle of raw spaghetti."
icon_state = "spagetti"
filling_color = "#EDDD00"
@@ -2045,7 +2056,7 @@
New()
..()
reagents.add_reagent("nutriment", 40)
reagents.add_reagent("nutriment", 50)
bitesize = 10
/obj/item/weapon/reagent_containers/food/snacks/candiedapple
@@ -2061,7 +2072,7 @@
/obj/item/weapon/reagent_containers/food/snacks/applepie
name = "Apple Pie"
desc = "A pie containing sweet sweet love...or apple."
desc = "A pie containing sweet sweet love... or apple."
icon_state = "applepie"
filling_color = "#E0EDC5"
@@ -2304,7 +2315,7 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
name = "xenomeatbread loaf"
desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical."
desc = "The culinary base of every self-respecting eloquent gentleman. Extra Heretical."
icon_state = "xenomeatbread"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
slices_num = 5
@@ -2695,7 +2706,7 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita
name = "Margherita"
desc = "The most cheezy pizza in galaxy"
desc = "The golden standard of pizzas."
icon_state = "pizzamargherita"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice
slices_num = 6
@@ -2707,14 +2718,14 @@
/obj/item/weapon/reagent_containers/food/snacks/margheritaslice
name = "Margherita slice"
desc = "A slice of the most cheezy pizza in galaxy"
desc = "A slice of the classic pizza."
icon_state = "pizzamargheritaslice"
filling_color = "#BAA14C"
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
name = "Meatpizza"
desc = "" //TODO:
desc = "A pizza with meat topping."
icon_state = "meatpizza"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
slices_num = 6
@@ -2726,7 +2737,7 @@
/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
name = "Meatpizza slice"
desc = "A slice of " //TODO:
desc = "A slice of a meaty pizza."
icon_state = "meatpizzaslice"
filling_color = "#BAA14C"
bitesize = 2
@@ -2751,7 +2762,7 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
name = "Vegetable pizza"
desc = "No one of Tomatos Sapiens were harmed during making this pizza"
desc = "No one of Tomato Sapiens were harmed during making this pizza"
icon_state = "vegetablepizza"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
slices_num = 6
@@ -3107,3 +3118,194 @@
reagents.add_reagent("toxin", 5)
bitesize = 3
///////////////////////////////////////////
// new old food stuff from bs12
///////////////////////////////////////////
// Flour + egg = dough
/obj/item/weapon/reagent_containers/food/snacks/flour/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg))
new /obj/item/weapon/reagent_containers/food/snacks/dough(src)
user << "You make some dough."
del(W)
del(src)
// Egg + flour = dough
/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/flour))
new /obj/item/weapon/reagent_containers/food/snacks/dough(src)
user << "You make some dough."
del(W)
del(src)
/obj/item/weapon/reagent_containers/food/snacks/dough
name = "dough"
desc = "A piece of dough."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "dough"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 3)
// Dough + rolling pin = flat dough
/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/kitchen/rollingpin))
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src)
user << "You flatten the dough."
del(src)
// slicable into 3xdoughslices
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
name = "flat dough"
desc = "A flattened dough."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "flat dough"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice
slices_num = 3
New()
..()
reagents.add_reagent("nutriment", 3)
/obj/item/weapon/reagent_containers/food/snacks/doughslice
name = "dough slice"
desc = "A building block of an impressive dish."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "doughslice"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 1)
/obj/item/weapon/reagent_containers/food/snacks/bun
name = "bun"
desc = "A base for any self-respecting burger."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "bun"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 4)
/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob)
// Bun + meatball = burger
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meatball))
new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src)
user << "You make a burger."
del(W)
del(src)
// Bun + cutlet = hamburger
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/cutlet))
new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src)
user << "You make a burger."
del(W)
del(src)
// Bun + sausage = hotdog
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/sausage))
new /obj/item/weapon/reagent_containers/food/snacks/hotdog(src)
user << "You make a hotdog."
del(W)
del(src)
// Burger + cheese wedge = cheeseburger
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob)
if(istype(W))// && !istype(src,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge))
new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src)
user << "You make a cheeseburger."
del(W)
del(src)
return
else
..()
// Human Burger + cheese wedge = cheeseburger
/obj/item/weapon/reagent_containers/food/snacks/human/burger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob)
if(istype(W))
new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src)
user << "You make a cheeseburger."
del(W)
del(src)
return
else
..()
/obj/item/weapon/reagent_containers/food/snacks/taco
name = "taco"
desc = "Take a bite!"
icon_state = "taco"
bitesize = 3
New()
..()
reagents.add_reagent("nutriment", 7)
/obj/item/weapon/reagent_containers/food/snacks/rawcutlet
name = "raw cutlet"
desc = "A thin piece of raw meat."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "rawcutlet"
bitesize = 1
New()
..()
reagents.add_reagent("nutriment", 1)
/obj/item/weapon/reagent_containers/food/snacks/cutlet
name = "cutlet"
desc = "A tasty meat slice."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "cutlet"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 2)
/obj/item/weapon/reagent_containers/food/snacks/rawmeatball
name = "raw meatball"
desc = "A raw meatball."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "rawmeatball"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 2)
/obj/item/weapon/reagent_containers/food/snacks/hotdog
name = "hotdog"
desc = "Unrelated to dogs, maybe."
icon_state = "hotdog"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 6)
/obj/item/weapon/reagent_containers/food/snacks/flatbread
name = "flatbread"
desc = "Bland but filling."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "flatbread"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 3)
// potato + knife = raw sticks
/obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/kitchen/utensil/knife))
new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(src)
user << "You cut the potato."
del(src)
else
..()
/obj/item/weapon/reagent_containers/food/snacks/rawsticks
name = "raw potato sticks"
desc = "Raw fries, not very tasty."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "rawsticks"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 3)
@@ -991,7 +991,12 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user as mob)
if(istype(user.loc,/turf/space))
return
new /mob/living/simple_animal/mushroom(user.loc)
var/mob/living/simple_animal/hostile/mushroom/M = new /mob/living/simple_animal/hostile/mushroom(user.loc)
M.maxHealth += round(endurance / 4)
M.melee_damage_lower += round(potency / 20)
M.melee_damage_upper += round(potency / 20)
M.move_to_delay -= round(production / 50)
M.health = M.maxHealth
del(src)
user << "<span class='notice'>You plant the walking mushroom.</span>"
@@ -9,6 +9,15 @@
reagents.add_reagent("nutriment", 3)
src.bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/kitchen/utensil/knife))
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
user << "You cut the meat in thin strips."
del(src)
else
..()
/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh
name = "synthetic meat"
+14
View File
@@ -345,6 +345,20 @@ var/MAX_EXPLOSION_RANGE = 14
//#define SHOCKWAVE 19 // (Not implemented) attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%)
//#define ELECTRICITY 20 // (Not implemented) ability to shoot electric attacks (15%)
//bitflags for mutations
// Extra powers:
#define SHADOW (1<<10) // shadow teleportation (create in/out portals anywhere) (25%)
#define SCREAM (1<<11) // supersonic screaming (25%)
#define EXPLOSIVE (1<<12) // exploding on-demand (15%)
#define REGENERATION (1<<13) // superhuman regeneration (30%)
#define REPROCESSOR (1<<14) // eat anything (50%)
#define SHAPESHIFTING (1<<15) // take on the appearance of anything (40%)
#define PHASING (1<<16) // ability to phase through walls (40%)
#define SHIELD (1<<17) // shielding from all projectile attacks (30%)
#define SHOCKWAVE (1<<18) // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%)
#define ELECTRICITY (1<<19) // ability to shoot electric attacks (15%)
//2spooky
#define SKELETON 29
#define PLANT 30
Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 KiB

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 100 KiB

File diff suppressed because it is too large Load Diff
+7372 -7319
View File
File diff suppressed because it is too large Load Diff