mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-28 11:03:19 +00:00
Merge branch 'master' of git://github.com/Abi79/tgstation13-git
Conflicts: baystation12.dme code/defines/mob/mob.dm code/defines/obj/vending.dm code/game/atom_procs.dm code/game/dna.dm code/game/machinery/computer/aifixer.dm code/game/vote.dm code/modules/chemical/Chemistry-Machinery.dm code/modules/chemical/Chemistry-Reagents.dm code/modules/mob/living/carbon/metroid/life.dm html/changelog.html icons/obj/stationobjs.dmi interface/skin.dmf maps/tgstation.2.0.8.dmm
This commit is contained in:
@@ -125,6 +125,7 @@
|
||||
#define FILE_DIR "code/modules/projectiles/guns/energy"
|
||||
#define FILE_DIR "code/modules/projectiles/guns/projectile"
|
||||
#define FILE_DIR "code/modules/projectiles/projectile"
|
||||
#define FILE_DIR "code/modules/recycling"
|
||||
#define FILE_DIR "code/modules/research"
|
||||
#define FILE_DIR "code/unused"
|
||||
#define FILE_DIR "code/unused/beast"
|
||||
@@ -138,7 +139,6 @@
|
||||
#define FILE_DIR "code/WorkInProgress"
|
||||
#define FILE_DIR "code/WorkInProgress/mapload"
|
||||
#define FILE_DIR "code/WorkInProgress/organs"
|
||||
#define FILE_DIR "code/WorkInProgress/recycling"
|
||||
#define FILE_DIR "code/WorkInProgress/virus2"
|
||||
#define FILE_DIR "code/WorkInProgress/virus2/Disease2"
|
||||
#define FILE_DIR "html"
|
||||
@@ -433,6 +433,7 @@
|
||||
#include "code\game\machinery\igniter.dm"
|
||||
#include "code\game\machinery\lightswitch.dm"
|
||||
#include "code\game\machinery\machinery.dm"
|
||||
#include "code\game\machinery\magnet.dm"
|
||||
#include "code\game\machinery\morgue.dm"
|
||||
#include "code\game\machinery\navbeacon.dm"
|
||||
#include "code\game\machinery\OpTable.dm"
|
||||
@@ -548,6 +549,7 @@
|
||||
#include "code\game\objects\noticeboard.dm"
|
||||
#include "code\game\objects\object_procs.dm"
|
||||
#include "code\game\objects\portals.dm"
|
||||
#include "code\game\objects\shooting_range.dm"
|
||||
#include "code\game\objects\sign_decals.dm"
|
||||
#include "code\game\objects\stool.dm"
|
||||
#include "code\game\objects\structures.dm"
|
||||
@@ -949,6 +951,10 @@
|
||||
#include "code\modules\projectiles\projectile\bullets.dm"
|
||||
#include "code\modules\projectiles\projectile\energy.dm"
|
||||
#include "code\modules\projectiles\projectile\special.dm"
|
||||
#include "code\modules\recycling\conveyor.dm"
|
||||
#include "code\modules\recycling\disposal-construction.dm"
|
||||
#include "code\modules\recycling\disposal.dm"
|
||||
#include "code\modules\recycling\sortingmachinery.dm"
|
||||
#include "code\modules\research\circuitprinter.dm"
|
||||
#include "code\modules\research\designs.dm"
|
||||
#include "code\modules\research\destructive_analyzer.dm"
|
||||
@@ -964,10 +970,6 @@
|
||||
#include "code\WorkInProgress\explosion_particles.dm"
|
||||
#include "code\WorkInProgress\mapload\dmm_suite.dm"
|
||||
#include "code\WorkInProgress\mapload\reader.dm"
|
||||
#include "code\WorkInProgress\recycling\conveyor.dm"
|
||||
#include "code\WorkInProgress\recycling\disposal-construction.dm"
|
||||
#include "code\WorkInProgress\recycling\disposal.dm"
|
||||
#include "code\WorkInProgress\recycling\sortingmachinery.dm"
|
||||
#include "code\WorkInProgress\virus2\Prob.dm"
|
||||
#include "code\WorkInProgress\virus2\Disease2\analyser.dm"
|
||||
#include "code\WorkInProgress\virus2\Disease2\base.dm"
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
mob.suiciding = 1
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(mob) << "\red <b>[mob.name] is attempting to bite off \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||
mob.oxyloss = max(175 - mob.getToxLoss() - mob.fireloss - mob.getBruteLoss(), mob.getOxyLoss())
|
||||
mob.oxyloss = max(175 - mob.getToxLoss() - mob.getFireLoss() - mob.getBruteLoss(), mob.getOxyLoss())
|
||||
mob.updatehealth()
|
||||
spawn(200) //in case they get revived by cryo chamber or something stupid like that, let them suicide again in 20 seconds
|
||||
mob.suiciding = 0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
spread_type = SPECIAL
|
||||
affected_species = list("Monkey", "Human")
|
||||
curable = 0
|
||||
desc = "Monkies with this disease will bite humans, causing humans to spontaneously mutate into a monkey."
|
||||
desc = "monkeys with this disease will bite humans, causing humans to spontaneously mutate into a monkey."
|
||||
severity = "Medium"
|
||||
//stage_prob = 100
|
||||
agent = "Kongey Vibrion M-909"
|
||||
|
||||
@@ -147,6 +147,20 @@
|
||||
|
||||
summon_type = list("/obj/effect/critter/spesscarp/elite")
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/creature
|
||||
name = "Summon Creature Swarm"
|
||||
desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth"
|
||||
|
||||
school = "conjuration"
|
||||
charge_max = 1200
|
||||
clothes_req = 0
|
||||
invocation = "IA IA"
|
||||
invocation_type = "shout"
|
||||
summon_amt = 10
|
||||
range = 3
|
||||
|
||||
summon_type = list("/obj/effect/critter/creature")
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/trigger/blind
|
||||
name = "Blind"
|
||||
desc = "This spell temporarily blinds a single person and does not require wizard garb."
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
var/bruteloss = 0.0//Living
|
||||
var/oxyloss = 0.0//Living
|
||||
var/toxloss = 0.0//Living
|
||||
var/fireloss = 0.0//Living
|
||||
var/cloneloss = 0//Carbon
|
||||
var/brainloss = 0//Carbon
|
||||
|
||||
var/obj/screen/pain = null
|
||||
var/obj/screen/flash = null
|
||||
@@ -92,7 +95,7 @@
|
||||
var/canmove = 1.0
|
||||
var/eye_stat = null//Living, potentially Carbon
|
||||
|
||||
var/fireloss = 0.0//Living
|
||||
|
||||
|
||||
var/timeofdeath = 0.0//Living
|
||||
var/cpr_time = 1.0//Carbon
|
||||
@@ -128,7 +131,7 @@
|
||||
var/r_epil = 0
|
||||
var/r_ch_cou = 0
|
||||
var/r_Tourette = 0//Carbon
|
||||
var/cloneloss = 0//Carbon
|
||||
|
||||
var/seer = 0 //for cult//Carbon, probably Human
|
||||
|
||||
var/miming = null //checks if the guy is a mime//Human
|
||||
@@ -162,7 +165,7 @@
|
||||
var/const/blindness = 1//Carbon
|
||||
var/const/deafness = 2//Carbon
|
||||
var/const/muteness = 4//Carbon
|
||||
var/brainloss = 0//Carbon
|
||||
|
||||
|
||||
var/datum/dna/dna = null//Carbon
|
||||
var/radiation = 0.0//Carbon
|
||||
@@ -438,71 +441,38 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
||||
/mob/proc/getBruteLoss()
|
||||
return bruteloss
|
||||
|
||||
/mob/proc/adjustBruteLoss(var/amount)
|
||||
bruteloss = max(bruteloss + amount, 0)
|
||||
|
||||
/mob/proc/getOxyLoss()
|
||||
return oxyloss
|
||||
|
||||
/mob/proc/adjustOxyLoss(var/amount)
|
||||
oxyloss = max(oxyloss + amount, 0)
|
||||
|
||||
/mob/proc/getToxLoss()
|
||||
return toxloss
|
||||
|
||||
/mob/proc/adjustToxLoss(var/amount)
|
||||
toxloss = max(toxloss + amount, 0)
|
||||
|
||||
/mob/proc/getFireLoss()
|
||||
return fireloss
|
||||
|
||||
/mob/proc/adjustFireLoss(var/amount)
|
||||
fireloss = max(fireloss + amount, 0)
|
||||
|
||||
/mob/proc/getCloneLoss()
|
||||
return cloneloss
|
||||
|
||||
/mob/proc/adjustToxLoss(var/amount)
|
||||
toxloss = max(toxloss + amount, 0)
|
||||
|
||||
|
||||
|
||||
// Standard for setting hasn't been agreed upon yet.
|
||||
|
||||
/*
|
||||
|
||||
/mob/proc/setBruteLoss(var/T)
|
||||
bruteloss = T
|
||||
|
||||
/mob/proc/setOxyLoss(var/T)
|
||||
oxyloss = T
|
||||
|
||||
/mob/proc/setFireLoss(var/T)
|
||||
fireloss = T
|
||||
|
||||
|
||||
|
||||
/mob/proc/setCloneLoss(var/T)
|
||||
cloneloss = T
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/proc/adjustCloneLoss(var/amount)
|
||||
cloneloss = max(cloneloss + amount, 0)
|
||||
|
||||
/mob/proc/getBrainLoss()
|
||||
return brainloss
|
||||
|
||||
/mob/proc/adjustBrainLoss(var/amount)
|
||||
brainloss = max(brainloss + amount, 0)
|
||||
|
||||
// ++++ROCKDTBEN++++ MOB PROCS //END
|
||||
|
||||
|
||||
@@ -144,6 +144,7 @@
|
||||
usr.drop_item()
|
||||
item_to_add.loc = src
|
||||
src.inventory_head = item_to_add
|
||||
update_clothing()
|
||||
|
||||
if(inventory_head && inventory_head.type == /obj/item/clothing/head/caphat)
|
||||
name = "Captain "+real_name
|
||||
@@ -171,6 +172,7 @@
|
||||
usr.drop_item()
|
||||
item_to_add.loc = src
|
||||
src.inventory_back = item_to_add
|
||||
update_clothing()
|
||||
|
||||
show_inv(usr)
|
||||
else
|
||||
|
||||
@@ -1029,6 +1029,7 @@
|
||||
g_amt = 3750
|
||||
origin_tech = "materials=1"
|
||||
|
||||
|
||||
/obj/item/stack/sheet/rglass
|
||||
name = "reinforced glass"
|
||||
desc = "Glass which seems to have rods or something stuck in them."
|
||||
@@ -1038,6 +1039,15 @@
|
||||
m_amt = 1875
|
||||
origin_tech = "materials=2"
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg
|
||||
name = "reinforced glass"
|
||||
desc = "Glass which seems to have rods or something stuck in them."
|
||||
singular_name = "reinforced glass sheet"
|
||||
icon_state = "sheet-rglass"
|
||||
g_amt = 0
|
||||
m_amt = 0
|
||||
|
||||
|
||||
/obj/item/stack/sheet/metal
|
||||
name = "metal"
|
||||
desc = "Sheets made out off metal. It has been dubbed Metal Sheets."
|
||||
@@ -1048,6 +1058,15 @@
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
origin_tech = "materials=1"
|
||||
|
||||
/obj/item/stack/sheet/metal/cyborg
|
||||
name = "metal"
|
||||
desc = "Sheets made out off metal. It has been dubbed Metal Sheets."
|
||||
singular_name = "metal sheet"
|
||||
icon_state = "sheet-metal"
|
||||
m_amt = 0
|
||||
throwforce = 14.0
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
|
||||
/obj/item/stack/sheet/r_metal
|
||||
name = "reinforced metal"
|
||||
singular_name = "reinforced metal sheet"
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
var/welded = 0
|
||||
var/wall_mounted = 0 //never solid (You can always pass over it)
|
||||
flags = FPRINT
|
||||
var/health = 200//Might be a bit much, dono can always change later
|
||||
var/health = 100 //Might be a bit much, dono can always change later //Nerfed -Pete
|
||||
var/lastbang //
|
||||
|
||||
/obj/structure/closet/acloset
|
||||
name = "Strange closet"
|
||||
@@ -277,7 +278,7 @@
|
||||
|
||||
/obj/structure/closet/jcloset
|
||||
name = "Custodial Closet"
|
||||
desc = "A bulky (yet mobile) closet. Comes with janitor's clothes and biohazard gear."
|
||||
desc = "A bulky (yet mobile) closet. Comes with janitor's clothes and gear."
|
||||
|
||||
/obj/structure/closet/lawcloset
|
||||
name = "Legal Closet"
|
||||
@@ -581,25 +582,25 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet
|
||||
/obj/structure/closet/secure_closet
|
||||
desc = "An immobile card-locked storage closet."
|
||||
name = "Security Locker"
|
||||
icon = 'closet.dmi'
|
||||
icon_state = "secure1"
|
||||
density = 1
|
||||
var/opened = 0
|
||||
opened = 0
|
||||
var/locked = 1
|
||||
var/broken = 0
|
||||
var/large = 1
|
||||
var/icon_closed = "secure"
|
||||
icon_closed = "secure"
|
||||
var/icon_locked = "secure1"
|
||||
var/icon_opened = "secureopen"
|
||||
icon_opened = "secureopen"
|
||||
var/icon_broken = "securebroken"
|
||||
var/icon_off = "secureoff"
|
||||
var/wall_mounted = 0 //never solid (You can always pass over it)
|
||||
var/health = 300
|
||||
wall_mounted = 0 //never solid (You can always pass over it)
|
||||
health = 200
|
||||
|
||||
/obj/structure/secure_closet/medical_wall
|
||||
/obj/structure/closet/secure_closet/medical_wall
|
||||
name = "First Aid Closet"
|
||||
desc = "A wall mounted closet which --should-- contain medical supplies."
|
||||
icon_state = "medical_wall_locked"
|
||||
@@ -613,21 +614,21 @@
|
||||
wall_mounted = 1
|
||||
req_access = list(access_medical)
|
||||
|
||||
/obj/structure/secure_closet/personal
|
||||
/obj/structure/closet/secure_closet/personal
|
||||
desc = "The first card swiped gains control."
|
||||
name = "Personal Closet"
|
||||
|
||||
/obj/structure/secure_closet/personal/patient
|
||||
/obj/structure/closet/secure_closet/personal/patient
|
||||
name = "Patient's closet"
|
||||
|
||||
/obj/structure/secure_closet/kitchen
|
||||
/obj/structure/closet/secure_closet/kitchen
|
||||
name = "Kitchen Cabinet"
|
||||
req_access = list(access_kitchen)
|
||||
|
||||
/obj/structure/secure_closet/kitchen/mining
|
||||
/obj/structure/closet/secure_closet/kitchen/mining
|
||||
req_access = list()
|
||||
|
||||
/obj/structure/secure_closet/meat
|
||||
/obj/structure/closet/secure_closet/meat
|
||||
name = "Meat Fridge"
|
||||
icon_state = "fridge1"
|
||||
icon_closed = "fridge"
|
||||
@@ -636,7 +637,7 @@
|
||||
icon_broken = "fridgebroken"
|
||||
icon_off = "fridge1"
|
||||
|
||||
/obj/structure/secure_closet/fridge
|
||||
/obj/structure/closet/secure_closet/fridge
|
||||
name = "Refrigerator"
|
||||
icon_state = "fridge1"
|
||||
icon_closed = "fridge"
|
||||
@@ -645,7 +646,7 @@
|
||||
icon_broken = "fridgebroken"
|
||||
icon_off = "fridge1"
|
||||
|
||||
/obj/structure/secure_closet/money_freezer
|
||||
/obj/structure/closet/secure_closet/money_freezer
|
||||
name = "Freezer"
|
||||
icon_state = "fridge1"
|
||||
icon_closed = "fridge"
|
||||
@@ -655,7 +656,7 @@
|
||||
icon_off = "fridge1"
|
||||
req_access = list(access_heads_vault)
|
||||
|
||||
/obj/structure/secure_closet/wall
|
||||
/obj/structure/closet/secure_closet/wall
|
||||
name = "wall locker"
|
||||
req_access = list(access_security)
|
||||
icon_state = "wall-locker1"
|
||||
|
||||
@@ -267,10 +267,18 @@
|
||||
|
||||
/obj/effect/decal/cleanable/egg_smudge
|
||||
name = "Smashed egg"
|
||||
desc = ""
|
||||
desc = "Seems like this one won't hatch"
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
|
||||
|
||||
/obj/effect/decal/cleanable/pie_smudge //honk
|
||||
name = "Smashed pie"
|
||||
desc = "Pie cream from a cream pie"
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_pie")
|
||||
|
||||
@@ -12,6 +12,15 @@
|
||||
desc = "A backpack and trophy rack, useful for both carrying extra gear and proudly declaring your insanity "
|
||||
icon_state = "cultpack"
|
||||
|
||||
/obj/item/weapon/storage/trashbag
|
||||
name = "trash bag"
|
||||
desc = "for picking up all those pens"
|
||||
icon_state = "trashbag"
|
||||
item_state = "trashbag"
|
||||
w_class = 4.0
|
||||
storage_slots = 20
|
||||
max_w_class = 1
|
||||
max_combined_w_class = 20
|
||||
/*
|
||||
/obj/item/weapon/storage/lbe
|
||||
name = "Load Bearing Equipment"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"/obj/item/weapon/pen/paralysis",
|
||||
"/obj/item/weapon/chem_grenade/incendiary")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Special Ops crate"
|
||||
hidden = 1
|
||||
|
||||
@@ -113,14 +113,14 @@
|
||||
"/obj/item/weapon/reagent_containers/food/snacks/grown/banana",
|
||||
"/obj/item/weapon/reagent_containers/food/snacks/grown/banana")
|
||||
cost = 5
|
||||
containertype = "/obj/structure/crate/freezer"
|
||||
containertype = "/obj/structure/closet/crate/freezer"
|
||||
containername = "Food crate"
|
||||
|
||||
/datum/supply_packs/monkey
|
||||
name = "Monkey crate"
|
||||
contains = list ("/obj/item/weapon/monkeycube_box")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate/freezer"
|
||||
containertype = "/obj/structure/closet/crate/freezer"
|
||||
containername = "Monkey crate"
|
||||
|
||||
/*
|
||||
@@ -130,7 +130,7 @@
|
||||
"/obj/item/ammo_casing/shotgun/beanbag",
|
||||
"/obj/item/ammo_casing/shotgun/beanbag")
|
||||
cost = 25
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Shotgun crate"
|
||||
//APPARENTLY OP?
|
||||
*/
|
||||
@@ -148,7 +148,7 @@
|
||||
"/obj/item/ammo_casing/shotgun/beanbag",
|
||||
"/obj/item/ammo_casing/shotgun/beanbag")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Beanbag shells"
|
||||
|
||||
/datum/supply_packs/party
|
||||
@@ -164,7 +164,7 @@
|
||||
"/obj/item/weapon/reagent_containers/food/drinks/beer",
|
||||
"/obj/item/weapon/reagent_containers/food/drinks/beer")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Party equipment"
|
||||
|
||||
/datum/supply_packs/internals
|
||||
@@ -176,7 +176,7 @@
|
||||
"/obj/item/weapon/tank/air",
|
||||
"/obj/item/weapon/tank/air")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate/internals"
|
||||
containertype = "/obj/structure/closet/crate/internals"
|
||||
containername = "Internals crate"
|
||||
|
||||
/datum/supply_packs/evacuation
|
||||
@@ -196,7 +196,7 @@
|
||||
"/obj/item/clothing/mask/gas",
|
||||
"/obj/item/clothing/mask/gas")
|
||||
cost = 35
|
||||
containertype = "/obj/structure/crate/internals"
|
||||
containertype = "/obj/structure/closet/crate/internals"
|
||||
containername = "Emergency Crate"
|
||||
|
||||
/datum/supply_packs/janitor
|
||||
@@ -214,7 +214,7 @@
|
||||
"/obj/item/weapon/chem_grenade/cleaner",
|
||||
"/obj/structure/mopbucket")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Janitorial supplies"
|
||||
|
||||
/obj/item/weapon/storage/lightbox/tubes
|
||||
@@ -230,7 +230,7 @@
|
||||
"/obj/item/weapon/storage/lightbox/bulbs",
|
||||
"/obj/item/weapon/storage/lightbox/bulbs")
|
||||
cost = 5
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Replacement lights"
|
||||
|
||||
/datum/supply_packs/costume
|
||||
@@ -248,7 +248,7 @@
|
||||
"/obj/item/clothing/suit/suspenders",
|
||||
"/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Standard Costumes"
|
||||
access = access_theatre
|
||||
|
||||
@@ -259,14 +259,14 @@
|
||||
"/obj/item/clothing/shoes/sandal",
|
||||
"/obj/item/clothing/head/wizard/fake")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Wizard costume crate"
|
||||
|
||||
/datum/supply_packs/mule
|
||||
name = "MULEbot Crate"
|
||||
contains = list("/obj/machinery/bot/mulebot")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "MULEbot Crate"
|
||||
|
||||
/datum/supply_packs/hydroponics // -- Skie
|
||||
@@ -280,7 +280,7 @@
|
||||
"/obj/item/clothing/gloves/botanic_leather",
|
||||
"/obj/item/clothing/suit/apron") // Updated with new things
|
||||
cost = 10
|
||||
containertype = /obj/structure/crate/hydroponics
|
||||
containertype = /obj/structure/closet/crate/hydroponics
|
||||
containername = "Hydroponics crate"
|
||||
access = access_hydroponics
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
"/obj/item/seeds/chantermycelium",
|
||||
"/obj/item/seeds/potatoseed")
|
||||
cost = 10
|
||||
containertype = /obj/structure/crate/hydroponics
|
||||
containertype = /obj/structure/closet/crate/hydroponics
|
||||
containername = "Seeds crate"
|
||||
access = access_hydroponics
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
"/obj/item/seeds/bananaseed",
|
||||
"/obj/item/seeds/eggyseed")
|
||||
cost = 15
|
||||
containertype = /obj/structure/crate/hydroponics
|
||||
containertype = /obj/structure/closet/crate/hydroponics
|
||||
containername = "Exotic Seeds crate"
|
||||
access = access_hydroponics
|
||||
|
||||
@@ -330,7 +330,7 @@
|
||||
"/obj/item/weapon/reagent_containers/glass/bottle/stoxin",
|
||||
"/obj/item/weapon/storage/syringes")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate/medical"
|
||||
containertype = "/obj/structure/closet/crate/medical"
|
||||
containername = "Medical crate"
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@
|
||||
"/obj/item/weapon/storage/syringes",
|
||||
"/obj/item/weapon/storage/beakerbox")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate/secure/weapon"
|
||||
containertype = "/obj/structure/closet/crate/secure/weapon"
|
||||
containername = "Virus crate"
|
||||
access = access_cmo
|
||||
|
||||
@@ -356,7 +356,7 @@
|
||||
contains = list("/obj/item/stack/sheet/metal")
|
||||
amount = 50
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Metal sheets crate"
|
||||
|
||||
/datum/supply_packs/glass50
|
||||
@@ -364,7 +364,7 @@
|
||||
contains = list("/obj/item/stack/sheet/glass")
|
||||
amount = 50
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Glass sheets crate"
|
||||
|
||||
/datum/supply_packs/electrical
|
||||
@@ -378,7 +378,7 @@
|
||||
"/obj/item/weapon/cell/high",
|
||||
"/obj/item/weapon/cell/high")
|
||||
cost = 15
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Electrical maintenance crate"
|
||||
|
||||
/datum/supply_packs/mechanical
|
||||
@@ -393,7 +393,7 @@
|
||||
"/obj/item/clothing/head/helmet/welding",
|
||||
"/obj/item/clothing/head/helmet/hardhat")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Mechanical maintenance crate"
|
||||
|
||||
/datum/supply_packs/waterfueltank
|
||||
@@ -401,7 +401,7 @@
|
||||
contains = list("/obj/structure/reagent_dispensers/watertank",
|
||||
"/obj/structure/reagent_dispensers/fueltank")
|
||||
cost = 15
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Water/Fuel tank crate"
|
||||
|
||||
/datum/supply_packs/engine
|
||||
@@ -409,7 +409,7 @@
|
||||
contains = list("/obj/machinery/emitter",
|
||||
"/obj/machinery/emitter",)
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Emitter crate"
|
||||
access = access_heads
|
||||
|
||||
@@ -449,7 +449,7 @@
|
||||
"/obj/item/mecha_parts/circuitboard/ripley/peripherals", //TEMPORARY due to lack of circuitboard printer
|
||||
"/obj/item/mecha_parts/circuitboard/ripley/main") //TEMPORARY due to lack of circuitboard printer
|
||||
cost = 40
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "APLU \"Ripley\" Circuit Crate"
|
||||
access = access_robotics
|
||||
|
||||
@@ -466,7 +466,7 @@
|
||||
"/obj/item/weapon/cell/high",
|
||||
"/obj/item/weapon/cell/high")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate/secure/gear"
|
||||
containertype = "/obj/structure/closet/crate/secure/gear"
|
||||
containername = "Robotics Assembly"
|
||||
access = access_robotics
|
||||
|
||||
@@ -485,7 +485,7 @@
|
||||
"/obj/item/device/assembly/timer",
|
||||
"/obj/item/device/assembly/timer")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/crate/secure/plasma"
|
||||
containertype = "/obj/structure/closet/crate/secure/plasma"
|
||||
containername = "Plasma assembly crate"
|
||||
access = access_tox
|
||||
|
||||
@@ -500,7 +500,7 @@
|
||||
"/obj/item/weapon/storage/flashbang_kit",
|
||||
"/obj/item/weapon/storage/flashbang_kit")
|
||||
cost = 30
|
||||
containertype = "/obj/structure/crate/secure/weapon"
|
||||
containertype = "/obj/structure/closet/crate/secure/weapon"
|
||||
containername = "Weapons crate"
|
||||
access = access_security
|
||||
|
||||
@@ -514,7 +514,7 @@
|
||||
"/obj/item/weapon/chem_grenade/incendiary",
|
||||
"/obj/item/weapon/chem_grenade/incendiary")
|
||||
cost = 25
|
||||
containertype = "/obj/structure/crate/secure/weapon"
|
||||
containertype = "/obj/structure/closet/crate/secure/weapon"
|
||||
containername = "Experimental weapons crate"
|
||||
access = access_heads
|
||||
|
||||
@@ -525,7 +525,7 @@
|
||||
"/obj/item/clothing/suit/armor/vest",
|
||||
"/obj/item/clothing/suit/armor/vest")
|
||||
cost = 15
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Armor crate"
|
||||
access = access_security
|
||||
|
||||
@@ -550,7 +550,7 @@
|
||||
"/obj/item/clothing/head/helmet/riot",
|
||||
"/obj/item/clothing/suit/armor/riot")
|
||||
cost = 60
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Riot gear crate"
|
||||
access = access_armory
|
||||
|
||||
@@ -558,7 +558,7 @@
|
||||
name = "Loyalty implant crate"
|
||||
contains = list ("/obj/item/weapon/storage/lockbox/loyalty")
|
||||
cost = 60
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Loyalty implant crate"
|
||||
access = access_armory
|
||||
|
||||
@@ -569,7 +569,7 @@
|
||||
"/obj/item/weapon/gun/projectile/shotgun/combat2",
|
||||
"/obj/item/weapon/gun/projectile/shotgun/combat2")
|
||||
cost = 50
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Ballistic gear crate"
|
||||
access = access_armory
|
||||
|
||||
@@ -580,7 +580,7 @@
|
||||
"/obj/item/weapon/gun/energy/gun",
|
||||
"/obj/item/weapon/gun/energy/gun")
|
||||
cost = 50
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Experimental energy gear crate"
|
||||
access = access_armory
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
"/obj/item/clothing/head/helmet/riot",
|
||||
"/obj/item/clothing/suit/armor/riot")
|
||||
cost = 35
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Experimental armor crate"
|
||||
access = access_armory
|
||||
|
||||
@@ -602,7 +602,7 @@
|
||||
"/obj/machinery/deployable/barrier",
|
||||
"/obj/machinery/deployable/barrier")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate/secure/gear"
|
||||
containertype = "/obj/structure/closet/crate/secure/gear"
|
||||
containername = "Secruity Barriers crate"
|
||||
|
||||
/datum/supply_packs/hats/
|
||||
@@ -632,7 +632,7 @@
|
||||
"/obj/item/clothing/head/collectable/petehat")
|
||||
name = "Collectable Hat Crate!"
|
||||
cost = 200
|
||||
containertype = "/obj/structure/crate/hat"
|
||||
containertype = "/obj/structure/closet/crate/hat"
|
||||
containername = "Collectable Hats Crate! Brought to you by Bass.inc!"
|
||||
|
||||
/datum/supply_packs/hats/New()
|
||||
|
||||
@@ -319,3 +319,70 @@
|
||||
|
||||
attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/item/toy/waterflower
|
||||
name = "Water Flower"
|
||||
desc = "A seemingly innocent sunflower...with a twist."
|
||||
icon = 'harvest.dmi'
|
||||
icon_state = "sunflower"
|
||||
item_state = "sunflower"
|
||||
var/empty = 0
|
||||
flags = USEDELAY
|
||||
|
||||
/obj/item/toy/waterflower/New()
|
||||
var/datum/reagents/R = new/datum/reagents(10)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
R.add_reagent("water", 10)
|
||||
|
||||
/obj/item/toy/waterflower/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
||||
return
|
||||
|
||||
/obj/item/toy/waterflower/afterattack(atom/A as mob|obj, mob/user as mob)
|
||||
|
||||
if (istype(A, /obj/item/weapon/storage/backpack ))
|
||||
return
|
||||
|
||||
else if (locate (/obj/structure/table, src.loc))
|
||||
return
|
||||
|
||||
else if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1)
|
||||
A.reagents.trans_to(src, 10)
|
||||
user << "\blue You refill your flower!"
|
||||
return
|
||||
|
||||
else if (src.reagents.total_volume < 1)
|
||||
src.empty = 1
|
||||
user << "\blue Your flower has run dry!"
|
||||
return
|
||||
|
||||
else
|
||||
src.empty = 0
|
||||
|
||||
|
||||
var/obj/effect/decal/D = new/obj/effect/decal/(get_turf(src))
|
||||
D.name = "water"
|
||||
D.icon = 'chemical.dmi'
|
||||
D.icon_state = "chempuff"
|
||||
D.create_reagents(5)
|
||||
src.reagents.trans_to(D, 1)
|
||||
playsound(src.loc, 'spray3.ogg', 50, 1, -6)
|
||||
|
||||
spawn(0)
|
||||
for(var/i=0, i<1, i++)
|
||||
step_towards(D,A)
|
||||
D.reagents.reaction(get_turf(D))
|
||||
for(var/atom/T in get_turf(D))
|
||||
D.reagents.reaction(T)
|
||||
if(ismob(T) && T:client)
|
||||
T:client << "\red [user] has sprayed you with water!"
|
||||
sleep(4)
|
||||
del(D)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/toy/waterflower/examine()
|
||||
set src in usr
|
||||
usr << text("\icon[] [] units of water left!", src, src.reagents.total_volume)
|
||||
..()
|
||||
return
|
||||
@@ -41,7 +41,7 @@
|
||||
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
|
||||
icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
|
||||
product_paths = "/obj/item/weapon/reagent_containers/food/drinks/bottle/gin;/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey;/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla;/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka;/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth;/obj/item/weapon/reagent_containers/food/drinks/bottle/rum;/obj/item/weapon/reagent_containers/food/drinks/bottle/wine;/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac;/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua;/obj/item/weapon/reagent_containers/food/drinks/beer;/obj/item/weapon/reagent_containers/food/drinks/ale;/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/cream;/obj/item/weapon/reagent_containers/food/drinks/tonic;/obj/item/weapon/reagent_containers/food/drinks/cola;/obj/item/weapon/reagent_containers/food/drinks/sodawater;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass;/obj/item/weapon/reagent_containers/food/drinks/ice"
|
||||
product_amounts = "5;5;5;5;5;5;5;5;5;6;6;4;4;4;4;8;8;8;30;10"
|
||||
product_amounts = "5;5;5;5;5;5;5;5;5;6;6;4;4;4;4;8;8;15;30;10"
|
||||
vend_delay = 15
|
||||
product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/tea"
|
||||
product_hideamt = "10"
|
||||
@@ -204,7 +204,7 @@
|
||||
desc = "A kitchen and restaurant equipment vendor"
|
||||
icon_state = "dinnerware"
|
||||
product_paths = "/obj/item/weapon/tray;/obj/item/weapon/kitchen/utensil/fork;/obj/item/weapon/kitchenknife;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass;/obj/item/clothing/suit/chef/classic"
|
||||
product_amounts = "6;4;2;15;2"
|
||||
product_amounts = "8;6;3;8;2"
|
||||
//product_amounts = "8;5;4" Old totals
|
||||
product_hidden = "/obj/item/weapon/kitchen/utensil/spoon;/obj/item/weapon/kitchen/utensil/knife;/obj/item/weapon/kitchen/rollingpin;/obj/item/weapon/butch"
|
||||
product_hideamt = "2;2;2;2"
|
||||
|
||||
@@ -548,6 +548,8 @@
|
||||
w_class = 2.0
|
||||
throw_speed = 2
|
||||
throw_range = 5
|
||||
m_amt = 50
|
||||
g_amt = 20
|
||||
flags = TABLEPASS|USEDELAY|FPRINT|CONDUCT
|
||||
item_state = "coil_red"
|
||||
|
||||
@@ -782,7 +784,7 @@
|
||||
throwforce = 3.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
w_class = 2.0
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
@@ -937,7 +939,7 @@
|
||||
icon = 'shards.dmi'
|
||||
icon_state = "large"
|
||||
desc = "Could probably be used as ... a throwing weapon?"
|
||||
w_class = 3.0
|
||||
w_class = 1.0
|
||||
force = 5.0
|
||||
throwforce = 15.0
|
||||
item_state = "shard-glass"
|
||||
|
||||
@@ -139,13 +139,13 @@ proc/sql_report_death(var/mob/living/carbon/human/H)
|
||||
lakey = dd_replacetext(H.lastattacker:key, "'", "''")
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, getBruteLoss(), fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.getOxyLoss()])"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])"
|
||||
var/DBConnection/dbcon = new()
|
||||
dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
|
||||
if(!dbcon.IsConnected())
|
||||
log_game("SQL ERROR during death reporting. Failed to connect.")
|
||||
else
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.fireloss], [H.brainloss], [H.getOxyLoss()], '[coord]')")
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()], '[coord]')")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
|
||||
@@ -176,13 +176,13 @@ proc/sql_report_cyborg_death(var/mob/living/silicon/robot/H)
|
||||
lakey = dd_replacetext(H.lastattacker:key, "'", "''")
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.getOxyLoss()])"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])"
|
||||
var/DBConnection/dbcon = new()
|
||||
dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
|
||||
if(!dbcon.IsConnected())
|
||||
log_game("SQL ERROR during death reporting. Failed to connect.")
|
||||
else
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.fireloss], [H.brainloss], [H.getOxyLoss()], '[coord]')")
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()], '[coord]')")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
|
||||
|
||||
@@ -238,12 +238,14 @@
|
||||
return
|
||||
if(using_new_click_proc) //TODO ERRORAGE (see message below)
|
||||
return DblClickNew()
|
||||
return DblClick()
|
||||
return DblClick(location, control, params)
|
||||
|
||||
var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblClickNew() proc is being tested)
|
||||
|
||||
/atom/proc/DblClickNew()
|
||||
|
||||
// TODO DOOHL: Intergrate params to new proc. Saved for another time because var/valid_place is a fucking brainfuck
|
||||
|
||||
//Spamclick server-overloading prevention delay... THING
|
||||
if (world.time <= usr:lastDblClick+1)
|
||||
return
|
||||
@@ -530,7 +532,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
if ( !animal.restrained() )
|
||||
attack_animal(animal)
|
||||
|
||||
/atom/DblClick() //TODO: DEFERRED: REWRITE
|
||||
/atom/DblClick(location, control, params) //TODO: DEFERRED: REWRITE
|
||||
// world << "checking if this shit gets called at all"
|
||||
|
||||
|
||||
@@ -732,7 +734,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
if (t5)
|
||||
src.attackby(W, usr)
|
||||
if (W)
|
||||
W.afterattack(src, usr, (t5 ? 1 : 0))
|
||||
W.afterattack(src, usr, (t5 ? 1 : 0), params)
|
||||
|
||||
else
|
||||
// ------- YOU DO NOT HAVE AN ITEM IN YOUR HAND -------
|
||||
@@ -782,7 +784,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
// ------- IT SHOULD NEVER GET TO HERE, DUE TO THE ISTYPE(SRC, /OBJ/SCREEN) FROM PREVIOUS IF-S - I TESTED IT WITH A DEBUG OUTPUT AND I COULDN'T GET THIST TO SHOW UP. -------
|
||||
src.attackby(W, usr)
|
||||
if (W)
|
||||
W.afterattack(src, usr)
|
||||
W.afterattack(src, usr,, params)
|
||||
else
|
||||
// ------- YOU ARE NOT RESTRAINED, AND ARE CLICKING A HUD OBJECT -------
|
||||
if (istype(usr, /mob/living/carbon/human))
|
||||
@@ -893,7 +895,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
"\blue You place your palms on yourself and heal.", \
|
||||
)
|
||||
|
||||
C.oxyloss = max(0, C.oxyloss-25)
|
||||
C.adjustOxyLoss(-25)
|
||||
C.adjustToxLoss(-25)
|
||||
|
||||
if(istype(C, /mob/living/carbon/human))
|
||||
@@ -904,7 +906,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
H.UpdateDamageIcon()
|
||||
else
|
||||
C.heal_organ_damage(25, 25)
|
||||
C.cloneloss = max(0, C.cloneloss-25)
|
||||
C.adjustCloneLoss(-25)
|
||||
C.stunned = max(0, C.stunned-5)
|
||||
C.paralysis = max(0, C.paralysis-5)
|
||||
C.stuttering = max(0, C.stuttering-5)
|
||||
|
||||
@@ -91,7 +91,7 @@ On the map:
|
||||
1443 for atmospherics - distribution loop/mixed air tank
|
||||
1445 for bot nav beacons
|
||||
1447 for mulebot, secbot and ed209 control
|
||||
1449 for airlock controls, electropack
|
||||
1449 for airlock controls, electropack, magnets
|
||||
1451 for toxin lab access
|
||||
1453 for engineering access
|
||||
1455 for AI access
|
||||
@@ -126,6 +126,7 @@ var/const/RADIO_NAVBEACONS = "5"
|
||||
var/const/RADIO_AIRLOCK = "6"
|
||||
var/const/RADIO_SECBOT = "7"
|
||||
var/const/RADIO_MULEBOT = "8"
|
||||
var/const/RADIO_MAGNETS = "9"
|
||||
|
||||
var/global/datum/controller/radio/radio_controller
|
||||
|
||||
@@ -258,10 +259,13 @@ datum/signal
|
||||
var/transmission_method = 0
|
||||
//0 = wire
|
||||
//1 = radio transmission
|
||||
//2 = subspace transmission
|
||||
|
||||
var/data = list()
|
||||
var/encryption
|
||||
|
||||
var/frequency = 0
|
||||
|
||||
proc/copy_from(datum/signal/model)
|
||||
source = model.source
|
||||
transmission_method = model.transmission_method
|
||||
|
||||
@@ -391,9 +391,9 @@
|
||||
C.occupant = O
|
||||
connected = null
|
||||
O.name = text("monkey ([])",copytext(md5(M.real_name), 2, 6))
|
||||
O.take_overall_damage(M.getBruteLoss() + 40, M.fireloss)
|
||||
O.take_overall_damage(M.getBruteLoss() + 40, M.getFireLoss())
|
||||
O.adjustToxLoss(M.getToxLoss() + 20)
|
||||
O.oxyloss += M.getOxyLoss()
|
||||
O.adjustOxyLoss(M.getOxyLoss())
|
||||
O.stat = M.stat
|
||||
O.a_intent = "hurt"
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
@@ -466,9 +466,9 @@
|
||||
O.real_name = randomname
|
||||
i++
|
||||
updateappearance(O,O.dna.uni_identity)
|
||||
O.take_overall_damage(M.getBruteLoss(), M.fireloss)
|
||||
O.take_overall_damage(M.getBruteLoss(), M.getFireLoss())
|
||||
O.adjustToxLoss(M.getToxLoss())
|
||||
O.oxyloss += M.getOxyLoss()
|
||||
O.adjustOxyLoss(M.getOxyLoss())
|
||||
O.stat = M.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
@@ -483,6 +483,18 @@
|
||||
|
||||
|
||||
/////////////////////////// DNA MACHINES
|
||||
/obj/machinery/dna_scannernew/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/clonescanner(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
|
||||
component_parts += new /obj/item/weapon/cable_coil(src)
|
||||
component_parts += new /obj/item/weapon/cable_coil(src)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/dna_scannernew/allow_drop()
|
||||
return 0
|
||||
|
||||
@@ -569,8 +581,12 @@
|
||||
/obj/machinery/dna_scannernew/proc/go_out()
|
||||
if ((!( src.occupant ) || src.locked))
|
||||
return
|
||||
for(var/obj/O in src)
|
||||
O.loc = src.loc
|
||||
/*
|
||||
// it's like this was -just- here to break constructed dna scanners -Pete
|
||||
// if that's not the case, slap my shit and uncomment this.
|
||||
// for(var/obj/O in src)
|
||||
// O.loc = src.loc
|
||||
*/
|
||||
//Foreach goto(30)
|
||||
if (src.occupant.client)
|
||||
src.occupant.client.eye = src.occupant.client.mob
|
||||
@@ -966,7 +982,7 @@
|
||||
src.temphtml += text("Data: <font color='blue'>[]</FONT><BR>", src.buffer1)
|
||||
src.temphtml += text("By: <font color='blue'>[]</FONT><BR>", src.buffer1owner)
|
||||
src.temphtml += text("Label: <font color='blue'>[]</FONT><BR>", src.buffer1label)
|
||||
if (src.connected.occupant) src.temphtml += text("Save : <A href='?src=\ref[];b1addui=1'>UI</A> - <A href='?src=\ref[];b1adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b1addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.connected.occupant && !(src.connected.occupant.mutations & HUSK)) src.temphtml += text("Save : <A href='?src=\ref[];b1addui=1'>UI</A> - <A href='?src=\ref[];b1adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b1addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.buffer1) src.temphtml += text("Transfer to: <A href='?src=\ref[];b1transfer=1'>Occupant</A> - <A href='?src=\ref[];b1injector=1'>Injector</A><BR>", src, src)
|
||||
//if (src.buffer1) src.temphtml += text("<A href='?src=\ref[];b1iso=1'>Isolate Block</A><BR>", src)
|
||||
if (src.buffer1) src.temphtml += "Disk: <A href='?src=\ref[src];save_disk=1'>Save To</a> | <A href='?src=\ref[src];load_disk=1'>Load From</a><br>"
|
||||
@@ -980,7 +996,7 @@
|
||||
src.temphtml += text("Data: <font color='blue'>[]</FONT><BR>", src.buffer2)
|
||||
src.temphtml += text("By: <font color='blue'>[]</FONT><BR>", src.buffer2owner)
|
||||
src.temphtml += text("Label: <font color='blue'>[]</FONT><BR>", src.buffer2label)
|
||||
if (src.connected.occupant) src.temphtml += text("Save : <A href='?src=\ref[];b2addui=1'>UI</A> - <A href='?src=\ref[];b2adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b2addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.connected.occupant && !(src.connected.occupant.mutations & HUSK)) src.temphtml += text("Save : <A href='?src=\ref[];b2addui=1'>UI</A> - <A href='?src=\ref[];b2adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b2addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.buffer2) src.temphtml += text("Transfer to: <A href='?src=\ref[];b2transfer=1'>Occupant</A> - <A href='?src=\ref[];b2injector=1'>Injector</A><BR>", src, src)
|
||||
//if (src.buffer2) src.temphtml += text("<A href='?src=\ref[];b2iso=1'>Isolate Block</A><BR>", src)
|
||||
if (src.buffer2) src.temphtml += "Disk: <A href='?src=\ref[src];save_disk=2'>Save To</a> | <A href='?src=\ref[src];load_disk=2'>Load From</a><br>"
|
||||
@@ -994,7 +1010,7 @@
|
||||
src.temphtml += text("Data: <font color='blue'>[]</FONT><BR>", src.buffer3)
|
||||
src.temphtml += text("By: <font color='blue'>[]</FONT><BR>", src.buffer3owner)
|
||||
src.temphtml += text("Label: <font color='blue'>[]</FONT><BR>", src.buffer3label)
|
||||
if (src.connected.occupant) src.temphtml += text("Save : <A href='?src=\ref[];b3addui=1'>UI</A> - <A href='?src=\ref[];b3adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b3addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.connected.occupant && !(src.connected.occupant.mutations & HUSK)) src.temphtml += text("Save : <A href='?src=\ref[];b3addui=1'>UI</A> - <A href='?src=\ref[];b3adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b3addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.buffer3) src.temphtml += text("Transfer to: <A href='?src=\ref[];b3transfer=1'>Occupant</A> - <A href='?src=\ref[];b3injector=1'>Injector</A><BR>", src, src)
|
||||
//if (src.buffer3) src.temphtml += text("<A href='?src=\ref[];b3iso=1'>Isolate Block</A><BR>", src)
|
||||
if (src.buffer3) src.temphtml += "Disk: <A href='?src=\ref[src];save_disk=3'>Save To</a> | <A href='?src=\ref[src];load_disk=3'>Load From</a><br>"
|
||||
@@ -1119,7 +1135,7 @@
|
||||
src.buffer3label = sanitize(input("New Label:","Edit Label","Infos here"))
|
||||
dopage(src,"buffermenu")
|
||||
if (href_list["b1transfer"])
|
||||
if (!src.connected.occupant)
|
||||
if (!src.connected.occupant || src.connected.occupant.mutations & HUSK)
|
||||
return
|
||||
if (src.buffer1type == "ui")
|
||||
if (src.buffer1iue)
|
||||
@@ -1134,7 +1150,7 @@
|
||||
src.connected.occupant.radiation += rand(20,50)
|
||||
src.delete = 0
|
||||
if (href_list["b2transfer"])
|
||||
if (!src.connected.occupant)
|
||||
if (!src.connected.occupant || src.connected.occupant.mutations & HUSK)
|
||||
return
|
||||
if (src.buffer2type == "ui")
|
||||
if (src.buffer2iue)
|
||||
@@ -1149,7 +1165,7 @@
|
||||
src.connected.occupant.radiation += rand(20,50)
|
||||
src.delete = 0
|
||||
if (href_list["b3transfer"])
|
||||
if (!src.connected.occupant)
|
||||
if (!src.connected.occupant || src.connected.occupant.mutations & HUSK)
|
||||
return
|
||||
if (src.buffer3type == "ui")
|
||||
if (src.buffer3iue)
|
||||
@@ -1174,7 +1190,7 @@
|
||||
src.temphtml = "Injector created."
|
||||
src.delete = 0
|
||||
src.injectorready = 0
|
||||
spawn(1200)
|
||||
spawn(300)
|
||||
src.injectorready = 1
|
||||
else
|
||||
src.temphtml = "Replicator not ready yet."
|
||||
@@ -1190,7 +1206,7 @@
|
||||
src.temphtml = "Injector created."
|
||||
src.delete = 0
|
||||
src.injectorready = 0
|
||||
spawn(1200)
|
||||
spawn(300)
|
||||
src.injectorready = 1
|
||||
else
|
||||
src.temphtml = "Replicator not ready yet."
|
||||
@@ -1206,7 +1222,7 @@
|
||||
src.temphtml = "Injector created."
|
||||
src.delete = 0
|
||||
src.injectorready = 0
|
||||
spawn(1200)
|
||||
spawn(300)
|
||||
src.injectorready = 1
|
||||
else
|
||||
src.temphtml = "Replicator not ready yet."
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
var/datum/objective/absorb/absorb_objective = new
|
||||
absorb_objective.owner = changeling
|
||||
absorb_objective.gen_amount_goal(8,12)
|
||||
absorb_objective.gen_amount_goal(6,8)
|
||||
changeling.objectives += absorb_objective
|
||||
|
||||
switch(rand(1,100))
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
O.toxloss = usr.getToxLoss()
|
||||
O.bruteloss = usr.getBruteLoss()
|
||||
O.oxyloss = usr.getOxyLoss()
|
||||
O.fireloss = usr.fireloss
|
||||
O.fireloss = usr.getFireLoss()
|
||||
O.stat = usr.stat
|
||||
O.a_intent = "hurt"
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
@@ -330,7 +330,7 @@
|
||||
O.toxloss = usr.getToxLoss()
|
||||
O.bruteloss = usr.getBruteLoss()
|
||||
O.oxyloss = usr.getOxyLoss()
|
||||
O.fireloss = usr.fireloss
|
||||
O.fireloss = usr.getFireLoss()
|
||||
O.stat = usr.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
@@ -374,6 +374,7 @@
|
||||
usr.toxloss = 0
|
||||
//usr.bruteloss = 0
|
||||
usr.oxyloss = 0
|
||||
usr.cloneloss = 0
|
||||
usr.paralysis = 0
|
||||
usr.stunned = 0
|
||||
usr.weakened = 0
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
temp_apc.overload_lighting()
|
||||
// for (var/obj/machinery/computer/prison_shuttle/temp_shuttle in world)
|
||||
// temp_shuttle.prison_break()
|
||||
for (var/obj/structure/secure_closet/security/temp_closet in world)
|
||||
for (var/obj/structure/closet/secure_closet/security/temp_closet in world)
|
||||
if(istype(get_area(temp_closet), /area/security/brig))
|
||||
temp_closet.locked = 0
|
||||
temp_closet.icon_state = temp_closet.icon_closed
|
||||
|
||||
@@ -133,7 +133,7 @@ ________________________________________________________________________________
|
||||
A += s_acost
|
||||
else
|
||||
if(prob(s_delay))//Suit delay is used as probability. May change later.
|
||||
U.bruteloss += k_damage//Default damage done, usually 1.
|
||||
U.adjustBruteLoss(k_damage)//Default damage done, usually 1.
|
||||
A = k_cost//kamikaze cost.
|
||||
cell.charge-=A
|
||||
if(cell.charge<=0)
|
||||
@@ -289,7 +289,7 @@ ________________________________________________________________________________
|
||||
dat += "<h4>Nutrition Status: [U.nutrition]</h4>"
|
||||
dat += "Oxygen loss: [U.getOxyLoss()]"
|
||||
dat += " | Toxin levels: [U.getToxLoss()]<br>"
|
||||
dat += "Burn severity: [U.fireloss]"
|
||||
dat += "Burn severity: [U.getFireLoss()]"
|
||||
dat += " | Brute trauma: [U.getBruteLoss()]<br>"
|
||||
dat += "Radiation Level: [U.radiation] rad<br>"
|
||||
dat += "Body Temperature: [U.bodytemperature-T0C]°C ([U.bodytemperature*1.8-459.67]°F)<br>"
|
||||
@@ -690,7 +690,7 @@ ________________________________________________________________________________
|
||||
spawn(0)
|
||||
display_spideros()//To refresh the screen and let this finish.
|
||||
while (A.stat != 2)
|
||||
A.oxyloss += 2
|
||||
A.adjustOxyLoss(2)
|
||||
A.updatehealth()
|
||||
sleep(10)
|
||||
killai()
|
||||
|
||||
@@ -21,6 +21,8 @@ var/global/datum/controller/gameticker/ticker
|
||||
var/Bible_item_state // item_state the chaplain has chosen for his bible
|
||||
var/Bible_name // name of the bible
|
||||
|
||||
var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders
|
||||
|
||||
|
||||
var/pregame_timeleft = 0
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
if(rev_mind in revolutionaries)
|
||||
revolutionaries -= rev_mind
|
||||
rev_mind.special_role = null
|
||||
rev_mind.current << "\red <FONT size = 3><B>You have been brainwashed! You are no longer a revolutionary! Your memory is hazy from the time you were a rebel, and you cannot remember a thing!</B></FONT>"
|
||||
rev_mind.current << "\red <FONT size = 3><B>You have been brainwashed! You are no longer a revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...</B></FONT>"
|
||||
update_rev_icons_removed(rev_mind)
|
||||
for(var/mob/living/M in view(rev_mind.current))
|
||||
M << "[rev_mind.current] looks like they just remembered their real allegiance!"
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
initialize_directions = NORTH
|
||||
initialize_directions = dir
|
||||
|
||||
initialize()
|
||||
if(node) return
|
||||
|
||||
var/node_connect = NORTH
|
||||
var/node_connect = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.getBruteLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getBruteLoss())
|
||||
dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.getOxyLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getOxyLoss())
|
||||
dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.getToxLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getToxLoss())
|
||||
dat += text("[]\t-Burn Severity %: []</FONT><BR>", (occupant.fireloss < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.fireloss)
|
||||
dat += text("[]\t-Burn Severity %: []</FONT><BR>", (occupant.getFireLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getFireLoss())
|
||||
dat += text("<HR>Paralysis Summary %: [] ([] seconds left!)<BR>", occupant.paralysis, round(occupant.paralysis / 4))
|
||||
dat += text("Inaprovaline units: [] units<BR>", occupant.reagents.get_reagent_amount("inaprovaline"))
|
||||
dat += text("Soporific: [] units<BR>", occupant.reagents.get_reagent_amount("stoxin"))
|
||||
@@ -234,7 +234,7 @@
|
||||
if (M.health > 0)
|
||||
if (M.getOxyLoss() >= 10)
|
||||
var/amount = max(0.15, 1)
|
||||
M.oxyloss -= amount
|
||||
M.adjustOxyLoss(-amount)
|
||||
else
|
||||
M.oxyloss = 0
|
||||
M.updatehealth()
|
||||
@@ -334,7 +334,7 @@
|
||||
user << text("[]\t -Brute Damage %: []", (src.occupant.getBruteLoss() < 60 ? "\blue " : "\red "), src.occupant.getBruteLoss())
|
||||
user << text("[]\t -Respiratory Damage %: []", (src.occupant.getOxyLoss() < 60 ? "\blue " : "\red "), src.occupant.getOxyLoss())
|
||||
user << text("[]\t -Toxin Content %: []", (src.occupant.getToxLoss() < 60 ? "\blue " : "\red "), src.occupant.getToxLoss())
|
||||
user << text("[]\t -Burn Severity %: []", (src.occupant.fireloss < 60 ? "\blue " : "\red "), src.occupant.fireloss)
|
||||
user << text("[]\t -Burn Severity %: []", (src.occupant.getFireLoss() < 60 ? "\blue " : "\red "), src.occupant.getFireLoss())
|
||||
user << "\blue Expected time till occupant can safely awake: (note: If health is below 20% these times are inaccurate)"
|
||||
user << text("\blue \t [] second\s (if around 1 or 2 the sleeper is keeping them asleep.)", src.occupant.paralysis / 5)
|
||||
else
|
||||
|
||||
@@ -256,6 +256,8 @@ var/global/list/autolathe_recipes = list( \
|
||||
new /obj/item/device/radio(), \
|
||||
new /obj/item/device/assembly/infra(), \
|
||||
new /obj/item/device/assembly/timer(), \
|
||||
new /obj/item/weapon/light/tube(), \
|
||||
new /obj/item/weapon/light/bulb(), \
|
||||
)
|
||||
|
||||
var/global/list/autolathe_recipes_hidden = list( \
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
if((C.getOxyLoss() >= (15 + heal_threshold)) && (!C.reagents.has_reagent(src.treatment_oxy)))
|
||||
return 1
|
||||
|
||||
if((C.fireloss >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_fire)))
|
||||
if((C.getFireLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_fire)))
|
||||
return 1
|
||||
|
||||
if((C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_tox)))
|
||||
@@ -399,7 +399,7 @@
|
||||
if(!C.reagents.has_reagent(src.treatment_oxy))
|
||||
reagent_id = src.treatment_oxy
|
||||
|
||||
if (!reagent_id && (C.fireloss >= heal_threshold))
|
||||
if (!reagent_id && (C.getFireLoss() >= heal_threshold))
|
||||
if(!C.reagents.has_reagent(src.treatment_fire))
|
||||
reagent_id = src.treatment_fire
|
||||
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
|
||||
// called to load a crate
|
||||
/obj/machinery/bot/mulebot/proc/load(var/atom/movable/C)
|
||||
if((wires & wire_loadcheck) && !istype(C,/obj/structure/crate))
|
||||
if((wires & wire_loadcheck) && !istype(C,/obj/structure/closet/crate))
|
||||
src.visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
|
||||
playsound(src.loc, 'buzz-sigh.ogg', 50, 0)
|
||||
return // if not emagged, only allow crates to be loaded
|
||||
@@ -478,7 +478,7 @@
|
||||
mode = 1
|
||||
|
||||
// if a create, close before loading
|
||||
var/obj/structure/crate/crate = C
|
||||
var/obj/structure/closet/crate/crate = C
|
||||
if(istype(crate))
|
||||
crate.close()
|
||||
|
||||
@@ -742,7 +742,7 @@
|
||||
AM = A
|
||||
break
|
||||
else // otherwise, look for crates only
|
||||
AM = locate(/obj/structure/crate) in get_step(loc,loaddir)
|
||||
AM = locate(/obj/structure/closet/crate) in get_step(loc,loaddir)
|
||||
if(AM)
|
||||
load(AM)
|
||||
// whatever happened, check to see if we return home
|
||||
|
||||
@@ -415,7 +415,7 @@
|
||||
if (!src.implanted)
|
||||
return "ERROR"
|
||||
else
|
||||
src.healthstring = "[round(src.implanted:getOxyLoss())] - [round(src.implanted:fireloss)] - [round(src.implanted:getToxLoss())] - [round(src.implanted:getBruteLoss())]"
|
||||
src.healthstring = "[round(src.implanted:getOxyLoss())] - [round(src.implanted:getFireLoss())] - [round(src.implanted:getToxLoss())] - [round(src.implanted:getBruteLoss())]"
|
||||
if (!src.healthstring)
|
||||
src.healthstring = "ERROR"
|
||||
return src.healthstring
|
||||
@@ -452,12 +452,12 @@
|
||||
src.icon_state = "pod_1"
|
||||
//Get the clone body ready
|
||||
src.occupant.rejuv = 10
|
||||
src.occupant.cloneloss += 190 //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite
|
||||
src.occupant.brainloss += 90
|
||||
src.occupant.adjustCloneLoss(190) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite
|
||||
src.occupant.adjustBrainLoss(90)
|
||||
src.occupant.paralysis += 4
|
||||
|
||||
//Here let's calculate their health so the pod doesn't immediately eject them!!!
|
||||
src.occupant.health = (src.occupant.getBruteLoss() + src.occupant.getToxLoss() + src.occupant.getOxyLoss() + src.occupant.cloneloss)
|
||||
src.occupant.health = (src.occupant.getBruteLoss() + src.occupant.getToxLoss() + src.occupant.getOxyLoss() + src.occupant.getCloneLoss())
|
||||
|
||||
src.occupant << "\blue <b>Clone generation process initiated.</b>"
|
||||
src.occupant << "\blue This will take a moment, please hold."
|
||||
@@ -544,17 +544,17 @@
|
||||
src.occupant.paralysis = 4
|
||||
|
||||
//Slowly get that clone healed and finished.
|
||||
src.occupant.cloneloss = max(src.occupant.cloneloss-2, 0)
|
||||
src.occupant.adjustCloneLoss(-2)
|
||||
|
||||
//Premature clones may have brain damage.
|
||||
src.occupant.brainloss = max(src.occupant.brainloss-1, 0)
|
||||
src.occupant.adjustBrainLoss(-1)
|
||||
|
||||
//So clones don't die of oxyloss in a running pod.
|
||||
if (src.occupant.reagents.get_reagent_amount("inaprovaline") < 30)
|
||||
src.occupant.reagents.add_reagent("inaprovaline", 60)
|
||||
|
||||
//Also heal some oxyloss ourselves because inaprovaline is so bad at preventing it!!
|
||||
src.occupant.oxyloss = max(src.occupant.getOxyLoss()-4, 0)
|
||||
src.occupant.adjustOxyLoss(-4)
|
||||
|
||||
use_power(7500) //This might need tweaking.
|
||||
return
|
||||
@@ -630,14 +630,20 @@
|
||||
src.mess = 0
|
||||
gibs(src.loc)
|
||||
src.icon_state = "pod_0"
|
||||
|
||||
/*
|
||||
for(var/obj/O in src)
|
||||
O.loc = src.loc
|
||||
*/
|
||||
return
|
||||
|
||||
if (!(src.occupant))
|
||||
return
|
||||
|
||||
/*
|
||||
for(var/obj/O in src)
|
||||
O.loc = src.loc
|
||||
*/
|
||||
|
||||
if (src.occupant.client)
|
||||
src.occupant.client.eye = src.occupant.client.mob
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<B>Health:</B> [src.victim.health]<BR>
|
||||
<B>Brute Damage:</B> [src.victim.getBruteLoss()]<BR>
|
||||
<B>Toxins Damage:</B> [src.victim.getToxLoss()]<BR>
|
||||
<B>Fire Damage:</B> [src.victim.fireloss]<BR>
|
||||
<B>Fire Damage:</B> [src.victim.getFireLoss()]<BR>
|
||||
<B>Suffocation Damage:</B> [src.victim.getOxyLoss()]<BR>
|
||||
<B>Patient Status:</B> [src.victim.stat ? "Non-responsive" : "Stable"]<BR>
|
||||
"}
|
||||
|
||||
@@ -122,10 +122,10 @@
|
||||
src.active = 1
|
||||
src.overlays += image('computer.dmi', "ai-fixer-on")
|
||||
while (src.occupant.health < 100)
|
||||
src.occupant.oxyloss = max (src.occupant.getOxyLoss()-1, 0)
|
||||
src.occupant.fireloss = max (src.occupant.fireloss-1, 0)
|
||||
src.occupant.adjustOxyLoss(-1)
|
||||
src.occupant.adjustFireLoss(-1)
|
||||
src.occupant.adjustToxLoss(-1)
|
||||
src.occupant.bruteloss = max (src.occupant.getBruteLoss()-1, 0)
|
||||
src.occupant.adjustBruteLoss(-1)
|
||||
src.occupant.updatehealth()
|
||||
if (src.occupant.health >= 0 && src.occupant.stat == 2)
|
||||
src.occupant.stat = 0
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
var/mob/living/carbon/human/H = C.loc
|
||||
var/dam1 = round(H.getOxyLoss(),1)
|
||||
var/dam2 = round(H.getToxLoss(),1)
|
||||
var/dam3 = round(H.fireloss,1)
|
||||
var/dam3 = round(H.getFireLoss(),1)
|
||||
var/dam4 = round(H.getBruteLoss(),1)
|
||||
switch(C.sensor_mode)
|
||||
if(1)
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
New()
|
||||
..()
|
||||
build_icon()
|
||||
initialize_directions = SOUTH
|
||||
initialize_directions = dir
|
||||
|
||||
initialize()
|
||||
if(node) return
|
||||
var/node_connect = SOUTH
|
||||
var/node_connect = dir
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node = target
|
||||
@@ -90,7 +90,7 @@
|
||||
<B>Current cell temperature:</B> [temp_text]K<BR>
|
||||
<B>Cryo status:</B> [ src.on ? "<A href='?src=\ref[src];start=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];start=1'>On</A>"]<BR>
|
||||
[beaker_text]<BR><BR>
|
||||
<B>Current occupant:</B> [src.occupant ? "<BR>Name: [src.occupant]<BR>Health: [health_text]<BR>Oxygen deprivation: [round(src.occupant.getOxyLoss(),0.1)]<BR>Brute damage: [round(src.occupant.getBruteLoss(),0.1)]<BR>Fire damage: [round(src.occupant.fireloss,0.1)]<BR>Toxin damage: [round(src.occupant.getToxLoss(),0.1)]<BR>Body temperature: [src.occupant.bodytemperature]" : "<FONT color=red>None</FONT>"]<BR>
|
||||
<B>Current occupant:</B> [src.occupant ? "<BR>Name: [src.occupant]<BR>Health: [health_text]<BR>Oxygen deprivation: [round(src.occupant.getOxyLoss(),0.1)]<BR>Brute damage: [round(src.occupant.getBruteLoss(),0.1)]<BR>Fire damage: [round(src.occupant.getFireLoss(),0.1)]<BR>Toxin damage: [round(src.occupant.getToxLoss(),0.1)]<BR>Body temperature: [src.occupant.bodytemperature]" : "<FONT color=red>None</FONT>"]<BR>
|
||||
|
||||
"}
|
||||
user.machine = src
|
||||
@@ -168,15 +168,15 @@
|
||||
occupant.sleeping = max(5, (1/occupant.bodytemperature)*2000)
|
||||
occupant.paralysis = max(5, (1/occupant.bodytemperature)*3000)
|
||||
if(air_contents.oxygen > 2)
|
||||
if(occupant.getOxyLoss()) occupant.oxyloss = max(0, occupant.getOxyLoss() - 1)
|
||||
if(occupant.getOxyLoss()) occupant.adjustOxyLoss(-1)
|
||||
else
|
||||
occupant.oxyloss -= 1
|
||||
occupant.adjustOxyLoss(-1)
|
||||
//severe damage should heal waaay slower without proper chemicals
|
||||
if(occupant.bodytemperature < 225)
|
||||
if (occupant.getToxLoss())
|
||||
occupant.adjustToxLoss(max(-1, -20/occupant.getToxLoss()))
|
||||
var/heal_brute = occupant.getBruteLoss() ? min(1, 20/occupant.getBruteLoss()) : 0
|
||||
var/heal_fire = occupant.fireloss ? min(1, 20/occupant.fireloss) : 0
|
||||
var/heal_fire = occupant.getFireLoss() ? min(1, 20/occupant.getFireLoss()) : 0
|
||||
occupant.heal_organ_damage(heal_brute,heal_fire)
|
||||
if(beaker && (next_trans == 0))
|
||||
beaker:reagents.trans_to(occupant, 1, 10)
|
||||
|
||||
@@ -600,7 +600,7 @@ About the new airlock wires panel:
|
||||
|
||||
if (ishuman(user) && prob(40) && src.density)
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.brainloss >= 60)
|
||||
if(H.getBrainLoss() >= 60)
|
||||
playsound(src.loc, 'bang.ogg', 25, 1)
|
||||
if(!istype(H.head, /obj/item/clothing/head/helmet))
|
||||
for(var/mob/M in viewers(src, null))
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
return ..(user)
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.brainloss >= 60)
|
||||
if(H.getBrainLoss() >= 60)
|
||||
return
|
||||
|
||||
var/t1 = text("<B>Access control</B><br>\n")
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(F.id == src.id)
|
||||
targets += F
|
||||
|
||||
for(var/obj/structure/secure_closet/brig/C in world)
|
||||
for(var/obj/structure/closet/secure_closet/brig/C in world)
|
||||
if(C.id == src.id)
|
||||
targets += C
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
spawn(0)
|
||||
door.close()
|
||||
|
||||
for(var/obj/structure/secure_closet/brig/C in targets)
|
||||
for(var/obj/structure/closet/secure_closet/brig/C in targets)
|
||||
if(C.broken) continue
|
||||
if(C.opened && !C.close()) continue
|
||||
C.locked = 1
|
||||
@@ -97,7 +97,7 @@
|
||||
spawn(0)
|
||||
door.open()
|
||||
|
||||
for(var/obj/structure/secure_closet/brig/C in targets)
|
||||
for(var/obj/structure/closet/secure_closet/brig/C in targets)
|
||||
if(C.broken) continue
|
||||
if(C.opened) continue
|
||||
C.locked = 0
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
|
||||
/obj/structure/crate/juice
|
||||
/obj/structure/closet/crate/juice
|
||||
New()
|
||||
..()
|
||||
new/obj/machinery/juicer(src)
|
||||
|
||||
@@ -186,11 +186,11 @@ Class Procs:
|
||||
return 1
|
||||
*/
|
||||
if (ishuman(user))
|
||||
if(user.brainloss >= 60)
|
||||
if(user.getBrainLoss() >= 60)
|
||||
for(var/mob/M in viewers(src, null))
|
||||
M << "\red [user] stares cluelessly at [src] and drools."
|
||||
return 1
|
||||
else if(prob(user.brainloss))
|
||||
else if(prob(user.getBrainLoss()))
|
||||
user << "\red You momentarily forget how to use [src]."
|
||||
return 1
|
||||
|
||||
|
||||
425
code/game/machinery/magnet.dm
Normal file
425
code/game/machinery/magnet.dm
Normal file
@@ -0,0 +1,425 @@
|
||||
// Magnetic attractor, creates variable magnetic fields and attraction.
|
||||
// Can also be used to emit electron/proton beams to create a center of magnetism on another tile
|
||||
|
||||
// tl;dr: it's magnets lol
|
||||
// This was created for firing ranges, but I suppose this could have other applications - Doohl
|
||||
|
||||
/obj/machinery/magnetic_module
|
||||
|
||||
icon = 'objects.dmi'
|
||||
icon_state = "floor_magnet-f"
|
||||
name = "Electromagnetic Generator"
|
||||
desc = "A device that uses station power to create points of magnetic energy."
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 50
|
||||
|
||||
var/freq = 1449 // radio frequency
|
||||
var/electricity_level = 1 // intensity of the magnetic pull
|
||||
var/magnetic_field = 1 // the range of magnetic attraction
|
||||
var/code = 0 // frequency code, they should be different unless you have a group of magnets working together or something
|
||||
var/turf/center // the center of magnetic attraction
|
||||
var/on = 0
|
||||
var/pulling = 0
|
||||
|
||||
// x, y modifiers to the center turf; (0, 0) is centered on the magnet, whereas (1, -1) is one tile right, one tile down
|
||||
var/center_x = 0
|
||||
var/center_y = 0
|
||||
var/max_dist = 20 // absolute value of center_x,y cannot exceed this integer
|
||||
|
||||
New()
|
||||
..()
|
||||
var/turf/T = loc
|
||||
hide(T.intact)
|
||||
center = T
|
||||
|
||||
spawn(10) // must wait for map loading to finish
|
||||
if(radio_controller)
|
||||
radio_controller.add_object(src, freq, RADIO_MAGNETS)
|
||||
|
||||
spawn()
|
||||
magnetic_process()
|
||||
|
||||
// update the invisibility and icon
|
||||
hide(var/intact)
|
||||
invisibility = intact ? 101 : 0
|
||||
updateicon()
|
||||
|
||||
// update the icon_state
|
||||
proc/updateicon()
|
||||
var/state="floor_magnet"
|
||||
var/onstate=""
|
||||
if(!on)
|
||||
onstate="0"
|
||||
|
||||
if(invisibility)
|
||||
icon_state = "[state][onstate]-f" // if invisible, set icon to faded version
|
||||
// in case of being revealed by T-scanner
|
||||
else
|
||||
icon_state = "[state][onstate]"
|
||||
|
||||
receive_signal(datum/signal/signal)
|
||||
|
||||
var/command = signal.data["command"]
|
||||
var/modifier = signal.data["modifier"]
|
||||
var/signal_code = signal.data["code"]
|
||||
if(command && (signal_code == code))
|
||||
|
||||
Cmd(command, modifier)
|
||||
|
||||
|
||||
|
||||
proc/Cmd(var/command, var/modifier)
|
||||
|
||||
if(command)
|
||||
switch(command)
|
||||
if("set-electriclevel")
|
||||
if(modifier) electricity_level = modifier
|
||||
if("set-magneticfield")
|
||||
if(modifier) magnetic_field = modifier
|
||||
|
||||
if("add-elec")
|
||||
electricity_level++
|
||||
if(electricity_level > 12)
|
||||
electricity_level = 12
|
||||
if("sub-elec")
|
||||
electricity_level--
|
||||
if(electricity_level <= 0)
|
||||
electricity_level = 1
|
||||
if("add-mag")
|
||||
magnetic_field++
|
||||
if(magnetic_field > 4)
|
||||
magnetic_field = 4
|
||||
if("sub-mag")
|
||||
magnetic_field--
|
||||
if(magnetic_field <= 0)
|
||||
magnetic_field = 1
|
||||
|
||||
if("set-x")
|
||||
if(modifier) center_x = modifier
|
||||
if("set-y")
|
||||
if(modifier) center_y = modifier
|
||||
|
||||
if("N") // NORTH
|
||||
center_y++
|
||||
if("S") // SOUTH
|
||||
center_y--
|
||||
if("E") // EAST
|
||||
center_x++
|
||||
if("W") // WEST
|
||||
center_x--
|
||||
if("C") // CENTER
|
||||
center_x = 0
|
||||
center_y = 0
|
||||
if("R") // RANDOM
|
||||
center_x = rand(-max_dist, max_dist)
|
||||
center_y = rand(-max_dist, max_dist)
|
||||
|
||||
if("set-code")
|
||||
if(modifier) code = modifier
|
||||
if("toggle-power")
|
||||
on = !on
|
||||
|
||||
if(on)
|
||||
spawn()
|
||||
magnetic_process()
|
||||
|
||||
|
||||
|
||||
process()
|
||||
..()
|
||||
if(stat & NOPOWER)
|
||||
on = 0
|
||||
|
||||
// Sanity checks:
|
||||
if(electricity_level <= 0)
|
||||
electricity_level = 1
|
||||
if(magnetic_field <= 0)
|
||||
magnetic_field = 1
|
||||
|
||||
|
||||
// Limitations:
|
||||
if(abs(center_x) > max_dist)
|
||||
center_x = max_dist
|
||||
if(abs(center_y) > max_dist)
|
||||
center_y = max_dist
|
||||
if(magnetic_field > 4)
|
||||
magnetic_field = 4
|
||||
if(electricity_level > 12)
|
||||
electricity_level = 12
|
||||
|
||||
// Update power usage:
|
||||
if(on)
|
||||
use_power = 2
|
||||
active_power_usage = electricity_level*15
|
||||
else
|
||||
use_power = 0
|
||||
|
||||
|
||||
// Overload conditions:
|
||||
/* // Eeeehhh kinda stupid
|
||||
if(on)
|
||||
if(electricity_level > 11)
|
||||
if(prob(electricity_level))
|
||||
explosion(loc, 0, 1, 2, 3) // ooo dat shit EXPLODES son
|
||||
spawn(2)
|
||||
del(src)
|
||||
*/
|
||||
|
||||
updateicon()
|
||||
|
||||
|
||||
proc/magnetic_process() // proc that actually does the pulling
|
||||
if(pulling) return
|
||||
while(on)
|
||||
|
||||
pulling = 1
|
||||
center = locate(x+center_x, y+center_y, z)
|
||||
if(center)
|
||||
for(var/obj/M in orange(magnetic_field, center))
|
||||
if(!M.anchored && (M.flags & CONDUCT))
|
||||
step_towards(M, center)
|
||||
|
||||
for(var/mob/living/silicon/S in orange(magnetic_field, center))
|
||||
if(istype(S, /mob/living/silicon/ai)) continue
|
||||
step_towards(S, center)
|
||||
|
||||
use_power(electricity_level * 5)
|
||||
sleep(13 - electricity_level)
|
||||
|
||||
pulling = 0
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/machinery/magnetic_controller
|
||||
name = "Magnetic Control Console"
|
||||
icon = 'airlock_machines.dmi' // uses an airlock machine icon, THINK GREEN HELP THE ENVIRONMENT - RECYCLING!
|
||||
icon_state = "airlock_control_standby"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
use_power = 1
|
||||
idle_power_usage = 45
|
||||
var/frequency = 1449
|
||||
var/code = 0
|
||||
var/list/magnets = list()
|
||||
var/title = "Magnetic Control Console"
|
||||
var/autolink = 0 // if set to 1, can't probe for other magnets!
|
||||
|
||||
var/pathpos = 1 // position in the path
|
||||
var/path = "NULL" // text path of the magnet
|
||||
var/speed = 1 // lowest = 1, highest = 10
|
||||
var/list/rpath = list() // real path of the magnet, used in iterator
|
||||
|
||||
var/moving = 0 // 1 if scheduled to loop
|
||||
var/looping = 0 // 1 if looping
|
||||
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
|
||||
if(autolink)
|
||||
for(var/obj/machinery/magnetic_module/M in world)
|
||||
if(M.freq == frequency && M.code == code)
|
||||
magnets.Add(M)
|
||||
|
||||
|
||||
spawn(45) // must wait for map loading to finish
|
||||
if(radio_controller)
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_MAGNETS)
|
||||
|
||||
|
||||
if(path) // check for default path
|
||||
filter_path() // renders rpath
|
||||
|
||||
|
||||
process()
|
||||
..()
|
||||
if(magnets.len == 0 && autolink)
|
||||
for(var/obj/machinery/magnetic_module/M in world)
|
||||
if(M.freq == frequency && M.code == code)
|
||||
magnets.Add(M)
|
||||
|
||||
|
||||
attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
user.machine = src
|
||||
var/dat = "<B>Magnetic Control Console</B><BR><BR>"
|
||||
if(!autolink)
|
||||
dat += {"
|
||||
Frequency: <a href='?src=\ref[src];operation=setfreq'>[frequency]</a><br>
|
||||
Code: <a href='?src=\ref[src];operation=setfreq'>[code]</a><br>
|
||||
<a href='?src=\ref[src];operation=probe'>Probe Generators</a><br>
|
||||
"}
|
||||
|
||||
if(magnets.len >= 1)
|
||||
|
||||
dat += "Magnets confirmed: <br>"
|
||||
var/i = 0
|
||||
for(var/obj/machinery/magnetic_module/M in magnets)
|
||||
i++
|
||||
dat += " < \[[i]\] (<a href='?src=\ref[src];radio-op=togglepower'>[M.on ? "On":"Off"]</a>) | Electricity level: <a href='?src=\ref[src];radio-op=minuselec'>-</a> [M.electricity_level] <a href='?src=\ref[src];radio-op=pluselec'>+</a>; Magnetic field: <a href='?src=\ref[src];radio-op=minusmag'>-</a> [M.magnetic_field] <a href='?src=\ref[src];radio-op=plusmag'>+</a><br>"
|
||||
|
||||
dat += "<br>Speed: <a href='?src=\ref[src];operation=minusspeed'>-</a> [speed] <a href='?src=\ref[src];operation=plusspeed'>+</a><br>"
|
||||
dat += "Path: {<a href='?src=\ref[src];operation=setpath'>[path]</a>}<br>"
|
||||
dat += "Moving: <a href='?src=\ref[src];operation=togglemoving'>[moving ? "Enabled":"Disabled"]</a>"
|
||||
|
||||
|
||||
user << browse(dat, "window=magnet;size=400x500")
|
||||
onclose(user, "magnet")
|
||||
|
||||
Topic(href, href_list)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
if(href_list["radio-op"])
|
||||
|
||||
// Prepare signal beforehand, because this is a radio operation
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 // radio transmission
|
||||
signal.source = src
|
||||
signal.frequency = frequency
|
||||
signal.data["code"] = code
|
||||
|
||||
// Apply any necessary commands
|
||||
switch(href_list["radio-op"])
|
||||
if("togglepower")
|
||||
signal.data["command"] = "toggle-power"
|
||||
|
||||
if("minuselec")
|
||||
signal.data["command"] = "sub-elec"
|
||||
if("pluselec")
|
||||
signal.data["command"] = "add-elec"
|
||||
|
||||
if("minusmag")
|
||||
signal.data["command"] = "sub-mag"
|
||||
if("plusmag")
|
||||
signal.data["command"] = "add-mag"
|
||||
|
||||
|
||||
// Broadcast the signal
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS)
|
||||
|
||||
spawn(1)
|
||||
updateUsrDialog() // pretty sure this increases responsiveness
|
||||
|
||||
if(href_list["operation"])
|
||||
switch(href_list["operation"])
|
||||
if("plusspeed")
|
||||
speed ++
|
||||
if(speed > 10)
|
||||
speed = 10
|
||||
if("minusspeed")
|
||||
speed --
|
||||
if(speed <= 0)
|
||||
speed = 1
|
||||
if("setpath")
|
||||
var/newpath = input(usr, "Please define a new path!",,path) as text|null
|
||||
if(newpath && newpath != "")
|
||||
moving = 0 // stop moving
|
||||
path = newpath
|
||||
pathpos = 1 // reset position
|
||||
filter_path() // renders rpath
|
||||
|
||||
if("togglemoving")
|
||||
moving = !moving
|
||||
if(moving)
|
||||
spawn() MagnetMove()
|
||||
|
||||
|
||||
updateUsrDialog()
|
||||
|
||||
proc/MagnetMove()
|
||||
if(looping) return
|
||||
|
||||
while(moving && rpath.len >= 1)
|
||||
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
break
|
||||
|
||||
looping = 1
|
||||
|
||||
// Prepare the radio signal
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 // radio transmission
|
||||
signal.source = src
|
||||
signal.frequency = frequency
|
||||
signal.data["code"] = code
|
||||
|
||||
if(pathpos > rpath.len) // if the position is greater than the length, we just loop through the list!
|
||||
pathpos = 1
|
||||
|
||||
var/nextmove = uppertext(rpath[pathpos]) // makes it un-case-sensitive
|
||||
|
||||
if(!(nextmove in list("N","S","E","W","C","R")))
|
||||
// N, S, E, W are directional
|
||||
// C is center
|
||||
// R is random (in magnetic field's bounds)
|
||||
del(signal)
|
||||
break // break the loop if the character located is invalid
|
||||
|
||||
signal.data["command"] = nextmove
|
||||
|
||||
|
||||
pathpos++ // increase iterator
|
||||
|
||||
// Broadcast the signal
|
||||
spawn()
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS)
|
||||
|
||||
if(speed == 10)
|
||||
sleep(1)
|
||||
else
|
||||
sleep(12-speed)
|
||||
|
||||
looping = 0
|
||||
|
||||
|
||||
proc/filter_path()
|
||||
// Generates the rpath variable using the path string, think of this as "string2list"
|
||||
// Doesn't use params2list() because of the akward way it stacks entities
|
||||
rpath = list() // clear rpath
|
||||
var/maximum_character = min( 50, length(path) ) // chooses the maximum length of the iterator. 50 max length
|
||||
|
||||
for(var/i=1, i<=maximum_character, i++) // iterates through all characters in path
|
||||
|
||||
var/nextchar = copytext(path, i, i+1) // find next character
|
||||
|
||||
if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore
|
||||
rpath += copytext(path, i, i+1) // else, add to list
|
||||
|
||||
// there doesn't HAVE to be separators but it makes paths syntatically visible
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -322,7 +322,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
continue // if threat level < 4, keep going
|
||||
|
||||
else if (istype(C, /mob/living/carbon/monkey) || istype(C, /mob/living/silicon))
|
||||
continue // Don't target monkies or borgs/AIs you dumb shit
|
||||
continue // Don't target monkeys or borgs/AIs you dumb shit
|
||||
|
||||
var/dst = get_dist(src, C) // if it's too far away, why bother?
|
||||
if (dst > 12)
|
||||
|
||||
@@ -458,11 +458,11 @@
|
||||
|
||||
/* for(var/mob/M as mob in src.loc) //does not work for some reason.
|
||||
if(istype(M,/mob/living/carbon))
|
||||
M.bruteloss += 100
|
||||
M.adjustBruteLoss(100)
|
||||
M.updatehealth()
|
||||
M << "\red <B>You feel as the very atoms of your body divide!</B>"
|
||||
else
|
||||
M.bruteloss += 50
|
||||
M.adjustBruteLoss(50)
|
||||
M.updatehealth()
|
||||
M << "\red <B>Strong energy field detected. Damage from field dampened.</B>"
|
||||
*/
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
else
|
||||
tmploc = locate(tx, ty, destination.z)
|
||||
|
||||
if(tx == destturf.x && ty == destturf.y && (istype(destination.loc, /obj/structure/closet) || istype(destination.loc, /obj/structure/secure_closet)))
|
||||
if(tx == destturf.x && ty == destturf.y && (istype(destination.loc, /obj/structure/closet) || istype(destination.loc, /obj/structure/closet/secure_closet)))
|
||||
tmploc = destination.loc
|
||||
|
||||
if(tmploc==null)
|
||||
|
||||
@@ -141,7 +141,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
if(istype(user.wear_mask, /obj/item/clothing/mask/muzzle) || user.ear_deaf)
|
||||
user << "You need to be able to both speak and hear to use runes."
|
||||
return
|
||||
if(!word1 || !word2 || !word3 || prob(usr.brainloss))
|
||||
if(!word1 || !word2 || !word3 || prob(usr.getBrainLoss()))
|
||||
return fizzle()
|
||||
// if(!src.visibility)
|
||||
// src.visibility=1
|
||||
|
||||
@@ -717,7 +717,7 @@ var/list/sacrificed = list()
|
||||
cultist.handcuffed || \
|
||||
istype(cultist.wear_mask, /obj/item/clothing/mask/muzzle) || \
|
||||
(istype(cultist.loc, /obj/structure/closet)&&cultist.loc:welded) || \
|
||||
(istype(cultist.loc, /obj/structure/secure_closet)&&cultist.loc:locked) || \
|
||||
(istype(cultist.loc, /obj/structure/closet/secure_closet)&&cultist.loc:locked) || \
|
||||
(istype(cultist.loc, /obj/machinery/dna_scannernew)&&cultist.loc:locked) \
|
||||
))
|
||||
user << "\red The [cultist] is already free."
|
||||
@@ -730,7 +730,7 @@ var/list/sacrificed = list()
|
||||
cultist.u_equip(cultist.wear_mask)
|
||||
if(istype(cultist.loc, /obj/structure/closet)&&cultist.loc:welded)
|
||||
cultist.loc:welded = 0
|
||||
if(istype(cultist.loc, /obj/structure/secure_closet)&&cultist.loc:locked)
|
||||
if(istype(cultist.loc, /obj/structure/closet/secure_closet)&&cultist.loc:locked)
|
||||
cultist.loc:locked = 0
|
||||
if(istype(cultist.loc, /obj/machinery/dna_scannernew)&&cultist.loc:locked)
|
||||
cultist.loc:locked = 0
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
if(istype(target, /mob))
|
||||
var/mob/M = target
|
||||
M.make_dizzy(3)
|
||||
M.bruteloss += 1
|
||||
M.adjustBruteLoss(1)
|
||||
M.updatehealth()
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("[src.name] shakes [M] like a rag doll.")
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
if(M.stat>1) return
|
||||
if(chassis.occupant.a_intent == "hurt")
|
||||
M.take_overall_damage(dam_force)
|
||||
M.oxyloss += round(dam_force/2)
|
||||
M.adjustOxyLoss(round(dam_force/2))
|
||||
M.updatehealth()
|
||||
chassis.occupant_message("\red You squeese [target] with [src.name]. Something cracks.")
|
||||
chassis.visible_message("\red [chassis] squeeses [target].")
|
||||
@@ -78,6 +78,7 @@
|
||||
chassis.occupant_message("<font color='red'><b>You start to drill [target]</b></font>")
|
||||
chassis.use_power(energy_drain)
|
||||
var/T = chassis.loc
|
||||
var/C = target.loc //why are these backwards? we may never know -Pete
|
||||
if(do_after_cooldown(target))
|
||||
if(T == chassis.loc && src == chassis.selected)
|
||||
if(istype(target, /turf/simulated/wall/r_wall))
|
||||
@@ -93,7 +94,7 @@
|
||||
for(var/obj/item/weapon/ore/ore in range(chassis,1))
|
||||
if(get_dir(chassis,ore)&chassis.dir)
|
||||
ore.Move(ore_box)
|
||||
else
|
||||
else if(target.loc == C)
|
||||
chassis.log_message("Drilled through [target]")
|
||||
target.ex_act(2)
|
||||
return 1
|
||||
|
||||
@@ -1295,7 +1295,7 @@
|
||||
O.laws = AI.laws
|
||||
O.stat = AI.stat
|
||||
O.oxyloss = AI.getOxyLoss()
|
||||
O.fireloss = AI.fireloss
|
||||
O.fireloss = AI.getFireLoss()
|
||||
O.bruteloss = AI.getBruteLoss()
|
||||
O.toxloss = AI.toxloss
|
||||
O.updatehealth()
|
||||
@@ -1313,7 +1313,7 @@
|
||||
AI.control_disabled = 0
|
||||
AI.laws = O.laws
|
||||
AI.oxyloss = O.getOxyLoss()
|
||||
AI.fireloss = O.fireloss
|
||||
AI.fireloss = O.getFireLoss()
|
||||
AI.bruteloss = O.getBruteLoss()
|
||||
AI.toxloss = O.toxloss
|
||||
AI.updatehealth()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
return (!density)
|
||||
|
||||
/obj/structure/closet/proc/can_open()
|
||||
if (src.welded)
|
||||
if(src.welded)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -14,28 +14,23 @@
|
||||
for(var/obj/structure/closet/closet in get_turf(src))
|
||||
if(closet != src)
|
||||
return 0
|
||||
for(var/obj/structure/secure_closet/closet in get_turf(src))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/proc/dump_contents()
|
||||
for (var/obj/item/I in src)
|
||||
for(var/obj/item/I in src)
|
||||
I.loc = src.loc
|
||||
|
||||
for (var/obj/effect/overlay/o in src) //REMOVE THIS
|
||||
o.loc = src.loc
|
||||
|
||||
for(var/mob/M in src)
|
||||
M.loc = src.loc
|
||||
if (M.client)
|
||||
if(M.client)
|
||||
M.client.eye = M.client.mob
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
|
||||
/obj/structure/closet/proc/open()
|
||||
if (src.opened)
|
||||
if(src.opened)
|
||||
return 0
|
||||
|
||||
if (!src.can_open())
|
||||
if(!src.can_open())
|
||||
return 0
|
||||
|
||||
src.dump_contents()
|
||||
@@ -47,26 +42,22 @@
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/proc/close()
|
||||
if (!src.opened)
|
||||
if(!src.opened)
|
||||
return 0
|
||||
if (!src.can_close())
|
||||
if(!src.can_close())
|
||||
return 0
|
||||
|
||||
for (var/obj/item/I in src.loc)
|
||||
if (!I.anchored)
|
||||
for(var/obj/item/I in src.loc)
|
||||
if(!I.anchored)
|
||||
I.loc = src
|
||||
|
||||
for (var/obj/effect/overlay/o in src.loc) //REMOVE THIS
|
||||
if (!o.anchored)
|
||||
o.loc = src
|
||||
|
||||
for (var/mob/M in src.loc)
|
||||
if (istype (M, /mob/dead/observer))
|
||||
for(var/mob/M in src.loc)
|
||||
if(istype (M, /mob/dead/observer))
|
||||
continue
|
||||
if (M.buckled)
|
||||
if(M.buckled)
|
||||
continue
|
||||
|
||||
if (M.client)
|
||||
if(M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
@@ -78,27 +69,27 @@
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/proc/toggle()
|
||||
if (src.opened)
|
||||
if(src.opened)
|
||||
return src.close()
|
||||
return src.open()
|
||||
|
||||
// this should probably use dump_contents()
|
||||
/obj/structure/closet/ex_act(severity)
|
||||
switch(severity)
|
||||
if (1)
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
if(1)
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
if (2)
|
||||
if (prob(50))
|
||||
if(2)
|
||||
if(prob(50))
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
if (3)
|
||||
if (prob(5))
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
if(3)
|
||||
if(prob(5))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
@@ -107,7 +98,7 @@
|
||||
health -= Proj.damage
|
||||
..()
|
||||
if(health <= 0)
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
|
||||
@@ -115,18 +106,18 @@
|
||||
|
||||
// this should probably use dump_contents()
|
||||
/obj/structure/closet/blob_act()
|
||||
if (prob(75))
|
||||
if(prob(75))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
|
||||
/obj/structure/closet/meteorhit(obj/O as obj)
|
||||
if (O.icon_state == "flaming")
|
||||
if(O.icon_state == "flaming")
|
||||
src.dump_contents()
|
||||
del(src)
|
||||
|
||||
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/packageWrap))
|
||||
if(istype(W, /obj/item/weapon/packageWrap))
|
||||
var/obj/item/weapon/packageWrap/O = W
|
||||
if (O.amount > 3)
|
||||
var/obj/effect/bigDelivery/P = new /obj/effect/bigDelivery(get_turf(src.loc))
|
||||
@@ -135,16 +126,16 @@
|
||||
src.welded = 1
|
||||
src.loc = P
|
||||
O.amount -= 3
|
||||
else if (src.opened)
|
||||
if (istype(W, /obj/item/weapon/grab))
|
||||
else if(src.opened)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
||||
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (!W:remove_fuel(0,user))
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if(!W:remove_fuel(0,user))
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
for (var/mob/M in viewers(src))
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("\red [src] has been cut apart by [user.name] with the weldingtool.", 3, "\red You hear welding.", 2)
|
||||
del(src)
|
||||
return
|
||||
@@ -154,11 +145,11 @@
|
||||
|
||||
usr.drop_item()
|
||||
|
||||
if (W)
|
||||
if(W)
|
||||
W.loc = src.loc
|
||||
|
||||
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (!W:remove_fuel(0,user))
|
||||
if(!W:remove_fuel(0,user))
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
src.welded =! src.welded
|
||||
@@ -169,32 +160,29 @@
|
||||
return
|
||||
|
||||
/obj/structure/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
||||
if (!user.can_use_hands())
|
||||
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis)
|
||||
return
|
||||
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
|
||||
if((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
|
||||
return
|
||||
if (user.loc==null) // just in case someone manages to get a closet into the blue light dimension, as unlikely as that seems
|
||||
if(user.loc==null) // just in case someone manages to get a closet into the blue light dimension, as unlikely as that seems
|
||||
return
|
||||
if (!istype(user.loc, /turf)) // are you in a container/closet/pod/etc?
|
||||
if(!istype(user.loc, /turf)) // are you in a container/closet/pod/etc?
|
||||
return
|
||||
if(!src.opened)
|
||||
return
|
||||
if(istype(O, /obj/structure/secure_closet) || istype(O, /obj/structure/closet))
|
||||
return
|
||||
if(isrobot(user))
|
||||
if(istype(O, /obj/structure/closet))
|
||||
return
|
||||
step_towards(O, src.loc)
|
||||
user.show_viewers(text("\red [] stuffs [] into []!", user, O, src))
|
||||
if(user != O)
|
||||
user.show_viewers(text("\red [] stuffs [] into []!", user, O, src))
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/structure/closet
|
||||
var/lastbang = 0
|
||||
/obj/structure/closet/relaymove(mob/user as mob)
|
||||
if (user.stat)
|
||||
if(user.stat)
|
||||
return
|
||||
|
||||
if (!src.open())
|
||||
if(!src.open())
|
||||
user << "\blue It won't budge!"
|
||||
if(!lastbang)
|
||||
lastbang = 1
|
||||
@@ -217,5 +205,5 @@
|
||||
/obj/structure/closet/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
if (!src.toggle())
|
||||
if(!src.toggle())
|
||||
usr << "\blue It won't budge!"
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
/obj/structure/closet/jcloset/New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/suit/bio_suit/janitor(src)
|
||||
new /obj/item/clothing/head/bio_hood/janitor(src)
|
||||
new /obj/item/clothing/under/rank/janitor(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
new /obj/item/clothing/shoes/galoshes(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/structure/secure_closet/kitchen/New()
|
||||
/obj/structure/closet/secure_closet/kitchen/New()
|
||||
..()
|
||||
sleep(2)
|
||||
/*new /obj/item/clothing/head/chefhat(src)
|
||||
@@ -38,7 +38,7 @@
|
||||
new /obj/item/weapon/kitchen/utensil/spoon(src)
|
||||
new /obj/item/weapon/kitchen/rollingpin(src)*/
|
||||
|
||||
/obj/structure/secure_closet/meat/New()
|
||||
/obj/structure/closet/secure_closet/meat/New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/kitchen/egg_box(src)
|
||||
@@ -48,7 +48,7 @@
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src)
|
||||
|
||||
/obj/structure/secure_closet/fridge/New()
|
||||
/obj/structure/closet/secure_closet/fridge/New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/milk(src)
|
||||
@@ -62,7 +62,7 @@
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src)
|
||||
|
||||
/obj/structure/secure_closet/money_freezer/New()
|
||||
/obj/structure/closet/secure_closet/money_freezer/New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/weapon/spacecash/c1000(src)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/structure/secure_closet/bar
|
||||
/obj/structure/closet/secure_closet/bar
|
||||
name = "Booze"
|
||||
req_access = list(access_bar)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/structure/secure_closet/engineering_chief
|
||||
/obj/structure/closet/secure_closet/engineering_chief
|
||||
name = "Chief Engineer's Locker"
|
||||
req_access = list(access_ce)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/engineering_electrical
|
||||
/obj/structure/closet/secure_closet/engineering_electrical
|
||||
name = "Electrical Supplies"
|
||||
req_access = list(access_engine)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/engineering_welding
|
||||
/obj/structure/closet/secure_closet/engineering_welding
|
||||
name = "Welding Supplies"
|
||||
req_access = list(access_engine)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/engineering_personal
|
||||
/obj/structure/closet/secure_closet/engineering_personal
|
||||
name = "Engineer's Locker"
|
||||
req_access = list(access_engine)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/structure/secure_closet/medical1
|
||||
/obj/structure/closet/secure_closet/medical1
|
||||
name = "Medicine Closet"
|
||||
desc = "Filled with medical junk."
|
||||
icon_state = "medical1"
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/medical2
|
||||
/obj/structure/closet/secure_closet/medical2
|
||||
name = "Anesthetic"
|
||||
desc = "Used to knock people out."
|
||||
icon_state = "medical1"
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/medical3
|
||||
/obj/structure/closet/secure_closet/medical3
|
||||
name = "Medical Doctor's Locker"
|
||||
req_access = list(access_medical)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/CMO
|
||||
/obj/structure/closet/secure_closet/CMO
|
||||
name = "Chief Medical Officer"
|
||||
req_access = list(access_cmo)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/animal
|
||||
/obj/structure/closet/secure_closet/animal
|
||||
name = "Animal Control"
|
||||
req_access = list(access_medical)
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/chemical
|
||||
/obj/structure/closet/secure_closet/chemical
|
||||
name = "Chemical Closet"
|
||||
desc = "Store dangerous chemicals in here."
|
||||
icon_state = "medical1"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
/obj/structure/secure_closet/personal/var/registered = null
|
||||
/obj/structure/secure_closet/personal/req_access = list(access_all_personal_lockers)
|
||||
/obj/structure/closet/secure_closet/personal/var/registered = null
|
||||
/obj/structure/closet/secure_closet/personal/req_access = list(access_all_personal_lockers)
|
||||
|
||||
/obj/structure/secure_closet/personal/New()
|
||||
/obj/structure/closet/secure_closet/personal/New()
|
||||
..()
|
||||
spawn(2)
|
||||
new /obj/item/weapon/storage/backpack( src )
|
||||
new /obj/item/device/radio/headset( src )
|
||||
return
|
||||
|
||||
/obj/structure/secure_closet/personal/patient/New()
|
||||
/obj/structure/closet/secure_closet/personal/patient/New()
|
||||
..()
|
||||
contents = list()
|
||||
spawn(4)
|
||||
@@ -16,7 +16,7 @@
|
||||
new /obj/item/clothing/shoes/white( src )
|
||||
return
|
||||
|
||||
/obj/structure/secure_closet/personal/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/structure/closet/secure_closet/personal/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (src.opened)
|
||||
if (istype(W, /obj/item/weapon/grab))
|
||||
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/structure/secure_closet/scientist
|
||||
/obj/structure/closet/secure_closet/scientist
|
||||
name = "Scientist Locker"
|
||||
req_access = list(access_tox_storage)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/RD
|
||||
/obj/structure/closet/secure_closet/RD
|
||||
name = "Research Director"
|
||||
req_access = list(access_rd)
|
||||
|
||||
|
||||
@@ -1,88 +1,10 @@
|
||||
/obj/structure/secure_closet/alter_health()
|
||||
return get_turf(src)
|
||||
|
||||
/obj/structure/secure_closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group || (height==0) || wall_mounted) return 1
|
||||
|
||||
return src.opened
|
||||
|
||||
/obj/structure/secure_closet/proc/can_close()
|
||||
for(var/obj/structure/closet/closet in get_turf(src))
|
||||
return 0
|
||||
for(var/obj/structure/secure_closet/closet in get_turf(src))
|
||||
if(closet != src)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/structure/secure_closet/proc/can_open()
|
||||
if (src.locked)
|
||||
/obj/structure/closet/secure_closet/can_open()
|
||||
..()
|
||||
if(src.locked)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/structure/secure_closet/proc/dump_contents()
|
||||
for (var/obj/item/I in src)
|
||||
I.loc = src.loc
|
||||
|
||||
for (var/obj/effect/overlay/o in src) //REMOVE THIS
|
||||
o.loc = src.loc
|
||||
|
||||
for(var/mob/M in src)
|
||||
M.loc = src.loc
|
||||
if (M.client)
|
||||
M.client.eye = M.client.mob
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
/obj/structure/secure_closet/proc/open()
|
||||
if (src.opened)
|
||||
return 0
|
||||
|
||||
if (!src.can_open())
|
||||
return 0
|
||||
|
||||
src.dump_contents()
|
||||
|
||||
src.icon_state = src.icon_opened
|
||||
src.opened = 1
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
return 1
|
||||
|
||||
/obj/structure/secure_closet/proc/close()
|
||||
if (!src.opened)
|
||||
return 0
|
||||
|
||||
if (!src.can_close())
|
||||
return 0
|
||||
|
||||
for (var/obj/item/I in src.loc)
|
||||
if (!I.anchored)
|
||||
I.loc = src
|
||||
|
||||
for (var/obj/effect/overlay/o in src.loc) //REMOVE THIS
|
||||
if (!o.anchored)
|
||||
o.loc = src
|
||||
|
||||
for (var/mob/M in src.loc)
|
||||
if (M.buckled)
|
||||
continue
|
||||
|
||||
if (M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
M.loc = src
|
||||
if(broken)
|
||||
src.icon_state = src.icon_off
|
||||
else
|
||||
src.icon_state = src.icon_closed
|
||||
src.opened = 0
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
return 1
|
||||
|
||||
/obj/structure/secure_closet/proc/toggle()
|
||||
if (src.opened)
|
||||
return src.close()
|
||||
return src.open()
|
||||
|
||||
/obj/structure/secure_closet/emp_act(severity)
|
||||
/obj/structure/closet/secure_closet/emp_act(severity)
|
||||
for(var/obj/O in src)
|
||||
O.emp_act(severity)
|
||||
if(!broken)
|
||||
@@ -96,69 +18,20 @@
|
||||
src.req_access += pick(get_all_accesses())
|
||||
..()
|
||||
|
||||
/obj/structure/secure_closet/ex_act(severity)
|
||||
switch(severity)
|
||||
if (1)
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
if (2)
|
||||
if (prob(50))
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
if (3)
|
||||
if (prob(5))
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
|
||||
/obj/structure/secure_closet/blob_act()
|
||||
if (prob(75))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
|
||||
/obj/structure/secure_closet/meteorhit(obj/O as obj)
|
||||
if (O.icon_state == "flaming")
|
||||
for(var/obj/item/I in src)
|
||||
I.loc = src.loc
|
||||
for(var/mob/M in src)
|
||||
M.loc = src.loc
|
||||
if (M.client)
|
||||
M.client.eye = M.client.mob
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
src.icon_state = src.icon_broken
|
||||
del(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/secure_closet/bullet_act(var/obj/item/projectile/Proj)
|
||||
health -= Proj.damage
|
||||
..()
|
||||
if(health <= 0)
|
||||
for (var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/structure/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (src.opened)
|
||||
if (istype(W, /obj/item/weapon/grab))
|
||||
if (src.large)
|
||||
/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(src.opened)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
if(src.large)
|
||||
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
||||
else
|
||||
user << "The locker is too small to stuff [W] into!"
|
||||
user.drop_item()
|
||||
if (W)
|
||||
if(W)
|
||||
W.loc = src.loc
|
||||
else if(src.broken)
|
||||
user << "\red It appears to be broken."
|
||||
return
|
||||
else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
|
||||
else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
|
||||
broken = 1
|
||||
locked = 0
|
||||
desc = "It appears to be broken."
|
||||
@@ -177,7 +50,7 @@
|
||||
else if(src.allowed(user))
|
||||
src.locked = !src.locked
|
||||
for(var/mob/O in viewers(user, 3))
|
||||
if ((O.client && !( O.blinded )))
|
||||
if((O.client && !( O.blinded )))
|
||||
O << text("\blue The locker has been []locked by [].", (src.locked ? null : "un"), user)
|
||||
if(src.locked)
|
||||
src.icon_state = src.icon_locked
|
||||
@@ -188,88 +61,32 @@
|
||||
user << "\red Access Denied"
|
||||
return
|
||||
|
||||
/obj/structure/secure_closet
|
||||
var/lastbang
|
||||
/obj/structure/secure_closet/relaymove(mob/user as mob)
|
||||
if (user.stat)
|
||||
/obj/structure/closet/secure_closet/relaymove(mob/user as mob)
|
||||
if(user.stat)
|
||||
return
|
||||
if (!( src.locked ))
|
||||
if(!(src.locked))
|
||||
for(var/obj/item/I in src)
|
||||
I.loc = src.loc
|
||||
for(var/mob/M in src)
|
||||
M.loc = src.loc
|
||||
if (M.client)
|
||||
if(M.client)
|
||||
M.client.eye = M.client.mob
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
src.icon_state = src.icon_opened
|
||||
src.opened = 1
|
||||
else
|
||||
user << "\blue It's welded shut!"
|
||||
if (world.time > lastbang+5)
|
||||
if(world.time > lastbang+5)
|
||||
lastbang = world.time
|
||||
for(var/mob/M in hearers(src, null))
|
||||
M << text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
|
||||
return
|
||||
|
||||
/obj/structure/secure_closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
||||
if ((user.restrained() || user.stat))
|
||||
return
|
||||
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
|
||||
return
|
||||
if(!src.opened)
|
||||
return
|
||||
if(istype(O, /obj/structure/secure_closet) || istype(O, /obj/structure/closet))
|
||||
return
|
||||
step_towards(O, src.loc)
|
||||
if (user != O)
|
||||
for(var/mob/B in viewers(user, 3))
|
||||
if ((B.client && !( B.blinded )))
|
||||
B << text("\red [] stuffs [] into []!", user, O, src)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
/*
|
||||
/obj/structure/secure_closet/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if (!src.opened && !src.locked)
|
||||
if(!src.can_open())
|
||||
return
|
||||
//open it
|
||||
for(var/obj/item/I in src)
|
||||
I.loc = src.loc
|
||||
for(var/mob/M in src)
|
||||
M.loc = src.loc
|
||||
if (M.client)
|
||||
M.client.eye = M.client.mob
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
src.icon_state = src.icon_opened
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
src.opened = 1
|
||||
else if(src.opened)
|
||||
if(!src.can_close())
|
||||
return
|
||||
//close it
|
||||
for(var/obj/item/I in src.loc)
|
||||
if (!( I.anchored ))
|
||||
I.loc = src
|
||||
for(var/mob/M in src.loc)
|
||||
if (M.buckled)
|
||||
continue
|
||||
if (M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
M.loc = src
|
||||
src.icon_state = src.icon_closed
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
src.opened = 0
|
||||
else
|
||||
return src.attackby(null, user)
|
||||
return*/
|
||||
|
||||
/obj/structure/secure_closet/attack_hand(mob/user as mob)
|
||||
/obj/structure/closet/secure_closet/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
if (!src.toggle())
|
||||
if(!src.toggle())
|
||||
return src.attackby(null, user)
|
||||
|
||||
/obj/structure/secure_closet/attack_paw(mob/user as mob)
|
||||
/obj/structure/closet/secure_closet/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/structure/secure_closet/captains
|
||||
/obj/structure/closet/secure_closet/captains
|
||||
name = "Captain's Closet"
|
||||
req_access = list(access_captain)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/hop
|
||||
/obj/structure/closet/secure_closet/hop
|
||||
name = "Head of Personnel"
|
||||
req_access = list(access_hop)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/hos
|
||||
/obj/structure/closet/secure_closet/hos
|
||||
name = "Head Of Security"
|
||||
req_access = list(access_hos)
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/warden
|
||||
/obj/structure/closet/secure_closet/warden
|
||||
name = "Warden's Locker"
|
||||
req_access = list(access_armory)
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/security
|
||||
/obj/structure/closet/secure_closet/security
|
||||
name = "Security Locker"
|
||||
req_access = list(access_security)
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/detective
|
||||
/obj/structure/closet/secure_closet/detective
|
||||
name = "Detective"
|
||||
req_access = list(access_forensics_lockers)
|
||||
icon_state = "cabinetdetective"
|
||||
@@ -137,7 +137,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/injection
|
||||
/obj/structure/closet/secure_closet/injection
|
||||
name = "Lethal Injections"
|
||||
req_access = list(access_hos)
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/brig
|
||||
/obj/structure/closet/secure_closet/brig
|
||||
name = "Brig Locker"
|
||||
req_access = list(access_brig)
|
||||
anchored = 1
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/secure_closet/courtroom
|
||||
/obj/structure/closet/secure_closet/courtroom
|
||||
name = "Courtroom Locker"
|
||||
req_access = list(access_court)
|
||||
|
||||
|
||||
@@ -655,15 +655,16 @@
|
||||
id = I
|
||||
else
|
||||
var/obj/item/weapon/card/I = user.equipped()
|
||||
if(id)//Get id and replace it.
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
user.put_in_hand(id)
|
||||
id = I
|
||||
else//Insert id.
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
id = I
|
||||
if (istype(I, /obj/item/weapon/card/id) && I:registered)
|
||||
if(id)//Get id and replace it.
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
user.put_in_hand(id)
|
||||
id = I
|
||||
else//Insert id.
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
id = I
|
||||
return
|
||||
|
||||
// access to status display signals
|
||||
@@ -721,7 +722,7 @@
|
||||
|
||||
user.show_message("\blue Analyzing Results for [C]:")
|
||||
user.show_message("\blue \t Overall Status: [C.stat > 1 ? "dead" : "[C.health]% healthy"]", 1)
|
||||
user.show_message("\blue \t Damage Specifics: [C.getOxyLoss() > 50 ? "\red" : "\blue"][C.getOxyLoss()]-[C.getToxLoss() > 50 ? "\red" : "\blue"][C.getToxLoss()]-[C.fireloss > 50 ? "\red" : "\blue"][C.fireloss]-[C.getBruteLoss() > 50 ? "\red" : "\blue"][C.getBruteLoss()]", 1)
|
||||
user.show_message("\blue \t Damage Specifics: [C.getOxyLoss() > 50 ? "\red" : "\blue"][C.getOxyLoss()]-[C.getToxLoss() > 50 ? "\red" : "\blue"][C.getToxLoss()]-[C.getFireLoss() > 50 ? "\red" : "\blue"][C.getFireLoss()]-[C.getBruteLoss() > 50 ? "\red" : "\blue"][C.getBruteLoss()]", 1)
|
||||
user.show_message("\blue \t Key: Suffocation/Toxin/Burns/Brute", 1)
|
||||
user.show_message("\blue \t Body Temperature: [C.bodytemperature-T0C]°C ([C.bodytemperature*1.8-459.67]°F)", 1)
|
||||
for(var/datum/disease/D in C.viruses)
|
||||
|
||||
@@ -506,7 +506,7 @@ Code:
|
||||
menu += "Calculating navigation path"
|
||||
if(7)
|
||||
menu += "Unable to locate destination"
|
||||
var/obj/structure/crate/C = QC.botstatus["load"]
|
||||
var/obj/structure/closet/crate/C = QC.botstatus["load"]
|
||||
menu += "<BR>Current Load: [ !C ? "<i>none</i>" : "[C.name] (<A href='byond://?src=\ref[QC];op=unload'><i>unload</i></A>)" ]<BR>"
|
||||
menu += "Destination: [!QC.botstatus["dest"] ? "<i>none</i>" : QC.botstatus["dest"] ] (<A href='byond://?src=\ref[QC];op=setdest'><i>set</i></A>)<BR>"
|
||||
menu += "Power: [QC.botstatus["powr"]]%<BR>"
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
A.suiciding = 1
|
||||
A << "Your core files are being wiped!"
|
||||
while (A.stat != 2)
|
||||
A.oxyloss += 2
|
||||
A.adjustOxyLoss(2)
|
||||
A.updatehealth()
|
||||
sleep(10)
|
||||
flush = 0
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/obj/item/device/flashlight/attack(mob/M as mob, mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(src.on && user.zone_sel.selecting == "eyes")
|
||||
if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly
|
||||
if ((user.mutations & CLUMSY || user.getBrainLoss() >= 60) && prob(50))//too dumb to use flashlight properly
|
||||
return ..()//just hit them in the head
|
||||
|
||||
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")//don't have dexterity
|
||||
|
||||
@@ -180,7 +180,7 @@ MASS SPECTROMETER
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
|
||||
/obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob)
|
||||
if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))
|
||||
if ((user.mutations & CLUMSY || user.getBrainLoss() >= 60) && prob(50))
|
||||
user << text("\red You try to analyze the floor's vitals!")
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [user] has analyzed the floor's vitals!"), 1)
|
||||
@@ -195,31 +195,31 @@ MASS SPECTROMETER
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [] has analyzed []'s vitals!", user, M), 1)
|
||||
//Foreach goto(67)
|
||||
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.fireloss + M.getBruteLoss())))
|
||||
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss())))
|
||||
if((M.reagents && M.reagents.has_reagent("zombiepowder")) || (M.changeling && M.changeling.changeling_fakedeath))
|
||||
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, "dead"), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", fake_oxy < 50 ? "\red [fake_oxy]" : fake_oxy , M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.fireloss > 50 ? "\red[M.fireloss]" : M.fireloss, M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", fake_oxy < 50 ? "\red [fake_oxy]" : fake_oxy , M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
else
|
||||
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, (M.stat > 1 ? "dead" : text("[]% healthy", M.health))), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.getOxyLoss() > 50 ? "\red [M.getOxyLoss()]" : M.getOxyLoss(), M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.fireloss > 50 ? "\red[M.fireloss]" : M.fireloss, M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.getOxyLoss() > 50 ? "\red [M.getOxyLoss()]" : M.getOxyLoss(), M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
user.show_message("\blue Key: Suffocation/Toxin/Burns/Brute", 1)
|
||||
user.show_message("\blue Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1)
|
||||
if((M.changeling && M.changeling.changeling_fakedeath) || (M.reagents && M.reagents.has_reagent("zombiepowder")))
|
||||
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
else
|
||||
user.show_message(text("\blue [] | [] | [] | []", M.getOxyLoss() > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
if (M.cloneloss)
|
||||
user.show_message(text("\blue [] | [] | [] | []", M.getOxyLoss() > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
if (M.getCloneLoss())
|
||||
user.show_message(text("\red Subject appears to have been imperfectly cloned."), 1)
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
if(!D.hidden[SCANNER])
|
||||
user.show_message(text("\red <b>Warning: [D.form] Detected</b>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]"))
|
||||
if (M.reagents && M.reagents.get_reagent_amount("inaprovaline"))
|
||||
user.show_message(text("\blue Bloodstream Analysis located [M.reagents:get_reagent_amount("inaprovaline")] units of rejuvenation chemicals."), 1)
|
||||
if (M.brainloss >= 100 || istype(M, /mob/living/carbon/human) && M:brain_op_stage == 4.0)
|
||||
if (M.getBrainLoss() >= 100 || istype(M, /mob/living/carbon/human) && M:brain_op_stage == 4.0)
|
||||
user.show_message(text("\red Subject is brain dead."), 1)
|
||||
else if (M.brainloss >= 60)
|
||||
else if (M.getBrainLoss() >= 60)
|
||||
user.show_message(text("\red Severe brain damage detected. Subject likely to have mental retardation."), 1)
|
||||
else if (M.brainloss >= 10)
|
||||
else if (M.getBrainLoss() >= 10)
|
||||
user.show_message(text("\red Significant brain damage detected. Subject may have had a concussion."), 1)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
if (M.stuttering)
|
||||
src.storedinfo += "[M.name] stammers, \"[msg]\""
|
||||
return
|
||||
if (M.brainloss >= 60)
|
||||
if (M.getBrainLoss() >= 60)
|
||||
src.storedinfo += "[M.name] gibbers, \"[msg]\""
|
||||
return
|
||||
if (ending == "?")
|
||||
|
||||
@@ -307,7 +307,7 @@ steam.start() -- spawns the effect
|
||||
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
|
||||
else
|
||||
M.drop_item()
|
||||
M.oxyloss += 1
|
||||
M.adjustOxyLoss(1)
|
||||
if (M.coughedtime != 1)
|
||||
M.coughedtime = 1
|
||||
M.emote("cough")
|
||||
@@ -331,7 +331,7 @@ steam.start() -- spawns the effect
|
||||
return
|
||||
else
|
||||
M.drop_item()
|
||||
M.oxyloss += 1
|
||||
M.adjustOxyLoss(1)
|
||||
if (M.coughedtime != 1)
|
||||
M.coughedtime = 1
|
||||
M.emote("cough")
|
||||
|
||||
@@ -319,7 +319,7 @@ mob/proc/flash_weak_pain()
|
||||
switch(src.damtype)
|
||||
if("brute")
|
||||
if(istype(src, /mob/living/carbon/metroid))
|
||||
M.bruteloss += power
|
||||
M.adjustBrainLoss(power)
|
||||
|
||||
else
|
||||
|
||||
@@ -376,7 +376,7 @@ mob/proc/flash_weak_pain()
|
||||
M << "\red You stab yourself in the eye."
|
||||
M.sdisabilities |= 1
|
||||
M.weakened += 4
|
||||
M.bruteloss += 10
|
||||
M.adjustBruteLoss(10)
|
||||
*/
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15)
|
||||
possible_transfer_amounts = list(5,10,15,25,30,50,100)
|
||||
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
||||
volume = 60
|
||||
var
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/obj/item/trash
|
||||
icon = 'trash.dmi'
|
||||
w_class = 1.0
|
||||
desc = "It's \a trash"
|
||||
desc = "This is rubbish."
|
||||
raisins
|
||||
name = "4no raisins"
|
||||
icon_state= "4no_raisins"
|
||||
@@ -50,35 +50,16 @@
|
||||
/obj/item/trash/attack(mob/M as mob, mob/living/user as mob)
|
||||
return
|
||||
|
||||
/obj/item/trash/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/trashbag))
|
||||
var/obj/item/weapon/trashbag/S = W
|
||||
if (S.mode == 1)
|
||||
for (var/obj/item/trash/O in locate(src.x,src.y,src.z))
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += O;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
break
|
||||
user << "\blue You pick up all trash."
|
||||
else
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += src;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
S.update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/trashbag
|
||||
icon = 'trash.dmi'
|
||||
icon_state = "trashbag0"
|
||||
item_state = "trashbag"
|
||||
name = "Trash bag"
|
||||
desc = "A heavy-duty, no fun allowed trash bag."
|
||||
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
|
||||
var/capacity = 25; //the number of trash it can carry.
|
||||
flags = FPRINT | TABLEPASS | ONBELT
|
||||
w_class = 1
|
||||
w_class = 2.0
|
||||
|
||||
/obj/item/weapon/trashbag/update_icon()
|
||||
if(contents.len == 0)
|
||||
@@ -89,12 +70,39 @@
|
||||
icon_state = "trashbag2"
|
||||
else icon_state = "trashbag3"
|
||||
|
||||
/obj/item/weapon/trashbag/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/weapon/trashbag/attackby(obj/item/W as obj, mob/living/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/trash))
|
||||
var/obj/item/trash/O = W
|
||||
src.contents += O;
|
||||
return
|
||||
if (contents.len < capacity)
|
||||
if (istype(W, /obj/item))
|
||||
if (W.w_class <= 2)
|
||||
var/obj/item/O = W
|
||||
src.contents += O
|
||||
else
|
||||
user << "\blue The bag is full!"
|
||||
|
||||
/obj/item/weapon/trashbag/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
|
||||
if(istype(target, /obj/item))
|
||||
var/obj/item/W = target
|
||||
if(W.w_class <= 2)
|
||||
if(mode == 1)
|
||||
if(contents.len < capacity) //slightly redundant, but it makes it prettier in the chatbox. -Pete
|
||||
user << "\blue You pick up all the trash."
|
||||
for(var/obj/item/O in get_turf(W))
|
||||
if(contents.len < capacity)
|
||||
if(O.w_class <= 2)
|
||||
contents += O;
|
||||
else
|
||||
user << "\blue The bag is full!"
|
||||
break
|
||||
else
|
||||
user << "\blue The bag is full!"
|
||||
else
|
||||
if(contents.len < capacity)
|
||||
contents += W;
|
||||
else
|
||||
user << "\blue The bag is full!"
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/trashbag/verb/toggle_mode()
|
||||
set name = "Switch Bag Method"
|
||||
@@ -104,5 +112,5 @@
|
||||
switch (mode)
|
||||
if(1)
|
||||
usr << "The bag now picks up all trash in a tile at once."
|
||||
if(0)
|
||||
usr << "The bag now picks up one trash at a time."
|
||||
else
|
||||
usr << "The bag now picks up one piece of trash at a time."
|
||||
@@ -390,7 +390,7 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/corp
|
||||
name = "'Corporate' Core AI Module"
|
||||
desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = null //Adminbus only for now, need to determine how the players take to this. --NEO
|
||||
origin_tech = "programming=3;materials=4"
|
||||
|
||||
|
||||
/obj/item/weapon/aiModule/corp/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
|
||||
@@ -129,23 +129,6 @@ ZIPPO
|
||||
|
||||
else if(istype(W, /obj/item/weapon/match) && (W:lit > 0))
|
||||
light("\red [user] lights their [name] with their [W]. How poor can you get?")
|
||||
|
||||
else if (istype(W, /obj/item/weapon/trashbag))
|
||||
var/obj/item/weapon/trashbag/S = W
|
||||
if (S.mode == 1)
|
||||
for (var/obj/item/clothing/mask/cigarette/C in locate(src.x,src.y,src.z))
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += C;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
break
|
||||
user << "\blue You pick up all trash."
|
||||
else
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += src;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
S.update_icon()
|
||||
return
|
||||
|
||||
|
||||
@@ -291,27 +274,6 @@ ZIPPO
|
||||
return
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/trashbag))
|
||||
var/obj/item/weapon/trashbag/S = W
|
||||
if (S.mode == 1)
|
||||
for (var/obj/item/weapon/cigpacket/CP in locate(src.x,src.y,src.z))
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += CP;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
break
|
||||
user << "\blue You pick up all trash."
|
||||
else
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += src;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
S.update_icon()
|
||||
return
|
||||
|
||||
|
||||
|
||||
/////////
|
||||
//ZIPPO//
|
||||
|
||||
@@ -22,31 +22,33 @@
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/inject(mob/M as mob)
|
||||
M.radiation += rand(20,50)
|
||||
if (dnatype == "ui")
|
||||
if (!block) //isolated block?
|
||||
if (ue) //unique enzymes? yes
|
||||
M.dna.uni_identity = dna
|
||||
updateappearance(M, M.dna.uni_identity)
|
||||
M.real_name = ue
|
||||
M.name = ue
|
||||
uses--
|
||||
else //unique enzymes? no
|
||||
M.dna.uni_identity = dna
|
||||
|
||||
if (!(M.mutations & HUSK)) // prevents husks from having their DNA changed
|
||||
if (dnatype == "ui")
|
||||
if (!block) //isolated block?
|
||||
if (ue) //unique enzymes? yes
|
||||
M.dna.uni_identity = dna
|
||||
updateappearance(M, M.dna.uni_identity)
|
||||
M.real_name = ue
|
||||
M.name = ue
|
||||
uses--
|
||||
else //unique enzymes? no
|
||||
M.dna.uni_identity = dna
|
||||
updateappearance(M, M.dna.uni_identity)
|
||||
uses--
|
||||
else
|
||||
M.dna.uni_identity = setblock(M.dna.uni_identity,block,dna,3)
|
||||
updateappearance(M, M.dna.uni_identity)
|
||||
uses--
|
||||
else
|
||||
M.dna.uni_identity = setblock(M.dna.uni_identity,block,dna,3)
|
||||
updateappearance(M, M.dna.uni_identity)
|
||||
uses--
|
||||
if (dnatype == "se")
|
||||
if (!block) //isolated block?
|
||||
M.dna.struc_enzymes = dna
|
||||
domutcheck(M, null)
|
||||
uses--
|
||||
else
|
||||
M.dna.struc_enzymes = setblock(M.dna.struc_enzymes,block,dna,3)
|
||||
domutcheck(M, null,1)
|
||||
uses--
|
||||
if (dnatype == "se")
|
||||
if (!block) //isolated block?
|
||||
M.dna.struc_enzymes = dna
|
||||
domutcheck(M, null)
|
||||
uses--
|
||||
else
|
||||
M.dna.struc_enzymes = setblock(M.dna.struc_enzymes,block,dna,3)
|
||||
domutcheck(M, null,1)
|
||||
uses--
|
||||
|
||||
spawn(0)//this prevents the collapse of space-time continuum
|
||||
del(src)
|
||||
|
||||
@@ -178,6 +178,21 @@ MOP
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
|
||||
obj/item/weapon/mop/proc/clean(turf/simulated/A as turf)
|
||||
src.reagents.reaction(A,1,10)
|
||||
A.clean_blood()
|
||||
for(var/obj/effect/rune/R in A)
|
||||
del(R)
|
||||
for(var/obj/effect/decal/cleanable/R in A)
|
||||
del(R)
|
||||
for(var/obj/effect/overlay/R in A)
|
||||
del(R)
|
||||
|
||||
/obj/effect/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/mop))
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/mop/afterattack(atom/A, mob/user as mob)
|
||||
if (src.reagents.total_volume < 1 || mopcount >= 5)
|
||||
user << "\blue Your mop is dry!"
|
||||
@@ -185,25 +200,17 @@ MOP
|
||||
|
||||
if (istype(A, /turf/simulated))
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("\red <B>[] begins to clean []</B>", user, A), 1)
|
||||
O.show_message("\red <B>[user] begins to clean \the [A]</B>", 1)
|
||||
sleep(40)
|
||||
clean(A)
|
||||
user << "\blue You have finished mopping!"
|
||||
src.reagents.reaction(A,1,10)
|
||||
A.clean_blood()
|
||||
for(var/obj/effect/rune/R in A)
|
||||
del(R)
|
||||
for(var/obj/effect/decal/cleanable/crayon/R in A)
|
||||
del(R)
|
||||
mopcount++
|
||||
else if (istype(A, /obj/effect/decal/cleanable/blood) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/decal/cleanable/xenoblood) || istype(A, /obj/effect/rune) || istype(A,/obj/effect/decal/cleanable/crayon) || istype(A,/obj/effect/decal/cleanable/vomit) )
|
||||
else if (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune))
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("\red <B>[user] begins to clean [A]</B>"), 1)
|
||||
sleep(20)
|
||||
if(A)
|
||||
user << "\blue You have finished mopping!"
|
||||
var/turf/U = A.loc
|
||||
src.reagents.reaction(U)
|
||||
if(A) del(A)
|
||||
O.show_message("\red <B>[user] begins to clean \the [get_turf(A)]</B>", 1)
|
||||
sleep(40)
|
||||
clean(get_turf(A))
|
||||
user << "\blue You have finished mopping!"
|
||||
mopcount++
|
||||
|
||||
if(mopcount >= 5) //Okay this stuff is an ugly hack and i feel bad about it.
|
||||
|
||||
@@ -253,7 +253,7 @@ CIRCULAR SAW
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if(M.mutations & HUSK) return ..()
|
||||
//if(M.mutations & HUSK) return ..()
|
||||
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
M = user
|
||||
|
||||
@@ -132,6 +132,6 @@
|
||||
"/obj/item/weapon/wrapping_paper",
|
||||
"/obj/item/weapon/wrapping_paper")
|
||||
cost = 20
|
||||
containertype = "/obj/structure/crate"
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "New Year Celebration crate"
|
||||
*/
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "Talk through this."
|
||||
icon_state = "intercom"
|
||||
anchored = 1
|
||||
w_class = 4.0
|
||||
var/number = 0
|
||||
var/anyai = 1
|
||||
var/mob/living/silicon/ai/ai = list()
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
/obj/item/device/Nradio
|
||||
icon = 'radio.dmi'
|
||||
name = "station bounced radio"
|
||||
suffix = "\[3\]"
|
||||
icon_state = "walkietalkie"
|
||||
item_state = "walkietalkie"
|
||||
|
||||
flags = 450//FFFF what does this even mean likely conduct+onbelt+someothershit
|
||||
throw_speed = 2
|
||||
throw_range = 9
|
||||
w_class = 2
|
||||
g_amt = 25
|
||||
m_amt = 75
|
||||
|
||||
var
|
||||
//General things
|
||||
frequency = 1459 //Default freq
|
||||
broadcasting = 0 //Mike
|
||||
listening = 1 //Speaker
|
||||
secured = 0 //Can you see our wires
|
||||
freerange = 0 // 0 - Sanitize frequencies, 1 - Full range
|
||||
|
||||
datum/radio_frequency/radio_connection = null
|
||||
list/datum/radio_frequency/secure_radio_connections = new
|
||||
|
||||
//Internal things
|
||||
obj/item/weapon/syndicate_uplink/uplink = null //If we have an uplink one of our freqs will activate it
|
||||
wires = WIRE_RECEIVE | WIRE_TRANSMIT //Active wires
|
||||
|
||||
list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
|
||||
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
|
||||
|
||||
last_transmission //What is this
|
||||
obj/item/device/radio/patch_link = null //What is this
|
||||
|
||||
var/const
|
||||
WIRE_TRANSMIT = 1 //sends a signal, like to set off a bomb or electrocute someone, or talk
|
||||
WIRE_RECEIVE = 2 //we can hear things
|
||||
TRANSMISSION_DELAY = 5 // only 2/second/radio antispam protection
|
||||
FREQ_LISTENING = 1
|
||||
|
||||
|
||||
proc
|
||||
set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
freerange = 0 // 0 - Sanitize frequencies, 1 - Full range
|
||||
list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
|
||||
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
|
||||
flags = 450
|
||||
flags = 450 // hello i'm a fucking idiot why is this 450?? CODE GODS PLEASE EXPLAIN~
|
||||
throw_speed = 2
|
||||
throw_range = 9
|
||||
w_class = 2
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
/obj/item/device/radio/signaler
|
||||
name = "Remote Signaling Device"
|
||||
desc = "Used to remotely activate devices."
|
||||
icon = 'new_assemblies.dmi'
|
||||
icon_state = "signaller"
|
||||
item_state = "signaler"
|
||||
var/code = 30
|
||||
w_class = 1
|
||||
frequency = 1457
|
||||
var/delay = 0
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(isscrewdriver(W))
|
||||
b_stat = !b_stat
|
||||
if(b_stat)
|
||||
user.show_message("\blue The [src.name] can now be attached!")
|
||||
else
|
||||
user.show_message("\blue The [src.name] is ready!")
|
||||
return
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/device/radio/signaler/attack_self(mob/user as mob, flag1)
|
||||
user.machine = src
|
||||
interact(user,flag1)
|
||||
|
||||
/obj/item/device/radio/signaler/interact(mob/user as mob, flag1)
|
||||
var/t1
|
||||
if ((src.b_stat && !( flag1 )))
|
||||
t1 = text("-------<BR>\nGreen Wire: []<BR>\nRed Wire: []<BR>\nBlue Wire: []<BR>\n", (src.wires & 4 ? text("<A href='?src=\ref[];wires=4'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=4'>Mend Wire</A>", src)), (src.wires & 2 ? text("<A href='?src=\ref[];wires=2'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=2'>Mend Wire</A>", src)), (src.wires & 1 ? text("<A href='?src=\ref[];wires=1'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=1'>Mend Wire</A>", src)))
|
||||
else
|
||||
t1 = "-------"
|
||||
var/dat = {"
|
||||
<TT>
|
||||
Speaker: [src.listening ? "<A href='byond://?src=\ref[src];listen=0'>Engaged</A>" : "<A href='byond://?src=\ref[src];listen=1'>Disengaged</A>"]<BR>
|
||||
<A href='byond://?src=\ref[src];send=1'>Send Signal</A><BR>
|
||||
<B>Frequency/Code</B> for signaler:<BR>
|
||||
Frequency:
|
||||
<A href='byond://?src=\ref[src];freq=-10'>-</A>
|
||||
<A href='byond://?src=\ref[src];freq=-2'>-</A>
|
||||
[format_frequency(src.frequency)]
|
||||
<A href='byond://?src=\ref[src];freq=2'>+</A>
|
||||
<A href='byond://?src=\ref[src];freq=10'>+</A><BR>
|
||||
|
||||
Code:
|
||||
<A href='byond://?src=\ref[src];code=-5'>-</A>
|
||||
<A href='byond://?src=\ref[src];code=-1'>-</A>
|
||||
[src.code]
|
||||
<A href='byond://?src=\ref[src];code=1'>+</A>
|
||||
<A href='byond://?src=\ref[src];code=5'>+</A><BR>
|
||||
[t1]
|
||||
</TT>"}
|
||||
user << browse(dat, "window=radio")
|
||||
onclose(user, "radio")
|
||||
return
|
||||
|
||||
/obj/item/device/radio/signaler/hear_talk()
|
||||
return
|
||||
|
||||
/obj/item/device/radio/signaler/send_hear()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/radio/signaler/receive_signal(datum/signal/signal)
|
||||
if(!signal || (signal.encryption != code)) return 0
|
||||
|
||||
if (!( src.wires & 2 ))
|
||||
return
|
||||
|
||||
for(var/mob/O in hearers(1, src.loc))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/radio/signaler/proc/send_signal(message="ACTIVATE")
|
||||
|
||||
if(last_transmission && world.time < (last_transmission + TRANSMISSION_DELAY))
|
||||
return
|
||||
last_transmission = world.time
|
||||
|
||||
if (!( src.wires & 4 ))
|
||||
return
|
||||
|
||||
if((usr)&&(ismob(usr)))
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
lastsignalers.Add("[time] <B>:</B> [usr.key] used [src] @ location ([src.loc.x],[src.loc.y],[src.loc.z]) <B>:</B> [format_frequency(frequency)]/[code]")
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.encryption = code
|
||||
signal.data["message"] = message
|
||||
|
||||
radio_connection.post_signal(src, signal)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/radio/signaler/Topic(href, href_list)
|
||||
//..()
|
||||
if (usr.stat)
|
||||
return
|
||||
if (usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))
|
||||
usr.machine = src
|
||||
if (href_list["freq"])
|
||||
..()
|
||||
return
|
||||
else
|
||||
if (href_list["code"])
|
||||
src.code += text2num(href_list["code"])
|
||||
src.code = round(src.code)
|
||||
src.code = min(100, src.code)
|
||||
src.code = max(1, src.code)
|
||||
else
|
||||
if (href_list["send"])
|
||||
spawn( 0 )
|
||||
src.send_signal("ACTIVATE")
|
||||
return
|
||||
else
|
||||
if (href_list["listen"])
|
||||
src.listening = text2num(href_list["listen"])
|
||||
else
|
||||
if (href_list["wires"])
|
||||
var/t1 = text2num(href_list["wires"])
|
||||
if (!( istype(usr.equipped(), /obj/item/weapon/wirecutters) ))
|
||||
return
|
||||
if ((!( src.b_stat ) && !( src.master )))
|
||||
return
|
||||
if (t1 & 1)
|
||||
if (src.wires & 1)
|
||||
src.wires &= 65534
|
||||
else
|
||||
src.wires |= 1
|
||||
else
|
||||
if (t1 & 2)
|
||||
if (src.wires & 2)
|
||||
src.wires &= 65533
|
||||
else
|
||||
src.wires |= 2
|
||||
else
|
||||
if (t1 & 4)
|
||||
if (src.wires & 4)
|
||||
src.wires &= 65531
|
||||
else
|
||||
src.wires |= 4
|
||||
src.add_fingerprint(usr)
|
||||
if (!src.master)
|
||||
if (istype(src.loc, /mob))
|
||||
attack_self(src.loc)
|
||||
else
|
||||
for(var/mob/M in viewers(1, src))
|
||||
if (M.client)
|
||||
src.attack_self(M)
|
||||
else
|
||||
if (istype(src.master.loc, /mob))
|
||||
src.attack_self(src.master.loc)
|
||||
else
|
||||
for(var/mob/M in viewers(1, src.master))
|
||||
if (M.client)
|
||||
src.attack_self(M)
|
||||
else
|
||||
usr << browse(null, "window=radio")
|
||||
return
|
||||
return
|
||||
@@ -4,7 +4,7 @@
|
||||
var/obj/screen/close/closer = null
|
||||
var/icon_locking = "secureb"
|
||||
var/icon_sparking = "securespark"
|
||||
var/icon_open = "secure0"
|
||||
var/icon_opened = "secure0"
|
||||
var/locked = 1
|
||||
var/code = ""
|
||||
var/l_code = null
|
||||
@@ -216,7 +216,7 @@
|
||||
else if ((src.code == src.l_code) && (src.emagged == 0) && (src.l_set == 1))
|
||||
src.locked = 0
|
||||
src.overlays = null
|
||||
overlays += image('storage.dmi', icon_open)
|
||||
overlays += image('storage.dmi', icon_opened)
|
||||
src.code = null
|
||||
else
|
||||
src.code = "ERROR"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "secure safe"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "safe"
|
||||
icon_open = "safe0"
|
||||
icon_opened = "safe0"
|
||||
icon_locking = "safeb"
|
||||
icon_sparking = "safespark"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
251
code/game/objects/shooting_range.dm
Normal file
251
code/game/objects/shooting_range.dm
Normal file
@@ -0,0 +1,251 @@
|
||||
|
||||
// TARGET STAKE
|
||||
// TARGET
|
||||
// Basically they are for the firing range
|
||||
/obj/structure/target_stake
|
||||
name = "target stake"
|
||||
desc = "A thin platform with negatively-magnetized wheels."
|
||||
icon = 'objects.dmi'
|
||||
icon_state = "target_stake"
|
||||
density = 1
|
||||
flags = CONDUCT
|
||||
var/obj/item/target/pinned_target // the current pinned target
|
||||
|
||||
Move()
|
||||
..()
|
||||
// Move the pinned target along with the stake
|
||||
if(pinned_target in view(3, src))
|
||||
pinned_target.loc = loc
|
||||
|
||||
else // Sanity check: if the pinned target can't be found in immediate view
|
||||
pinned_target = null
|
||||
density = 1
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
// Putting objects on the stake. Most importantly, targets
|
||||
if(pinned_target)
|
||||
return // get rid of that pinned target first!
|
||||
|
||||
if(istype(W, /obj/item/target))
|
||||
density = 0
|
||||
W.density = 1
|
||||
user.drop_item(src)
|
||||
W.loc = loc
|
||||
W.layer = 3.1
|
||||
pinned_target = W
|
||||
user << "You slide the target into the stake."
|
||||
|
||||
user.drop_item(src)
|
||||
W.loc = loc
|
||||
return
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
// taking pinned targets off!
|
||||
if(pinned_target)
|
||||
density = 1
|
||||
pinned_target.density = 0
|
||||
pinned_target.layer = OBJ_LAYER
|
||||
|
||||
pinned_target.loc = user.loc
|
||||
if(ishuman(user))
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hand(pinned_target)
|
||||
user << "You take the target out of the stake."
|
||||
else
|
||||
pinned_target.loc = get_turf_loc(user)
|
||||
user << "You take the target out of the stake."
|
||||
|
||||
pinned_target = null
|
||||
|
||||
|
||||
|
||||
// Targets, the things that actually get shot!
|
||||
/obj/item/target
|
||||
name = "shooting target"
|
||||
desc = "A shooting target."
|
||||
icon = 'objects.dmi'
|
||||
icon_state = "target_h"
|
||||
density = 0
|
||||
var/hp = 1800
|
||||
var/icon/virtualIcon
|
||||
var/list/bulletholes = list()
|
||||
|
||||
Del()
|
||||
// if a target is deleted and associated with a stake, force stake to forget
|
||||
for(var/obj/structure/target_stake/T in view(3,src))
|
||||
if(T.pinned_target == src)
|
||||
T.pinned_target = null
|
||||
T.density = 1
|
||||
break
|
||||
..() // delete target
|
||||
|
||||
Move()
|
||||
..()
|
||||
// After target moves, check for nearby stakes. If associated, move to target
|
||||
for(var/obj/structure/target_stake/M in view(3,src))
|
||||
if(M.density == 0 && M.pinned_target == src)
|
||||
M.loc = loc
|
||||
|
||||
// This may seem a little counter-intuitive but I assure you that's for a purpose.
|
||||
// Stakes are the ones that carry targets, yes, but in the stake code we set
|
||||
// a stake's density to 0 meaning it can't be pushed anymore. Instead of pushing
|
||||
// the stake now, we have to push the target.
|
||||
|
||||
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/weldingtool))
|
||||
if(W:welding == 1)
|
||||
overlays = null
|
||||
usr << "You slice off [src]'s uneven chunks of aluminum and scorch marks."
|
||||
return
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
// taking pinned targets off!
|
||||
var/obj/structure/target_stake/stake
|
||||
for(var/obj/structure/target_stake/T in view(3,src))
|
||||
if(T.pinned_target == src)
|
||||
stake = T
|
||||
break
|
||||
|
||||
if(stake)
|
||||
if(stake.pinned_target)
|
||||
stake.density = 1
|
||||
density = 0
|
||||
layer = OBJ_LAYER
|
||||
|
||||
loc = user.loc
|
||||
if(ishuman(user))
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hand(src)
|
||||
user << "You take the target out of the stake."
|
||||
else
|
||||
src.loc = get_turf_loc(user)
|
||||
user << "You take the target out of the stake."
|
||||
|
||||
stake.pinned_target = null
|
||||
return
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
syndicate
|
||||
icon_state = "target_s"
|
||||
desc = "A shooting target that looks like a syndicate scum."
|
||||
hp = 2600 // i guess syndie targets are sturdier?
|
||||
alien
|
||||
icon_state = "target_q"
|
||||
desc = "A shooting target that looks like a xenomorphic alien."
|
||||
hp = 2350 // alium onest too kinda
|
||||
|
||||
/obj/item/target/bullet_act(var/obj/item/projectile/Proj)
|
||||
var/p_x = Proj.p_x + pick(0,0,0,0,0,-1,1) // really ugly way of coding "sometimes offset Proj.p_x!"
|
||||
var/p_y = Proj.p_y + pick(0,0,0,0,0,-1,1)
|
||||
var/decaltype = 1 // 1 - scorch, 2 - bullet
|
||||
|
||||
if(istype(/obj/item/projectile/bullet, Proj))
|
||||
decaltype = 2
|
||||
|
||||
|
||||
virtualIcon = new(icon, icon_state)
|
||||
|
||||
if( virtualIcon.GetPixel(p_x, p_y) ) // if the located pixel isn't blank (null)
|
||||
|
||||
hp -= Proj.damage
|
||||
if(hp <= 0)
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << "\red [src] breaks into tiny pieces and collapses!"
|
||||
del(src)
|
||||
|
||||
// Create a temporary object to represent the damage
|
||||
var/obj/bmark = new
|
||||
bmark.pixel_x = p_x
|
||||
bmark.pixel_y = p_y
|
||||
bmark.icon = 'effects.dmi'
|
||||
bmark.layer = 3.5
|
||||
bmark.icon_state = "scorch"
|
||||
|
||||
if(decaltype == 1)
|
||||
// Energy weapons are hot. they scorch!
|
||||
|
||||
// offset correction
|
||||
bmark.pixel_x--
|
||||
bmark.pixel_y--
|
||||
|
||||
if(Proj.damage >= 20)
|
||||
bmark.icon_state = "scorch"
|
||||
bmark.dir = pick(NORTH,SOUTH,EAST,WEST) // random scorch design
|
||||
|
||||
|
||||
else
|
||||
bmark.icon_state = "light_scorch"
|
||||
else
|
||||
|
||||
// Bullets are hard. They make dents!
|
||||
bmark.icon_state = "dent"
|
||||
|
||||
if(Proj.damage >= 10 && bulletholes.len <= 35) // maximum of 35 bullet holes
|
||||
if(decaltype == 2) // bullet
|
||||
if(prob(Proj.damage+30)) // bullets make holes more commonly!
|
||||
new/datum/bullethole(src, bmark.pixel_x, bmark.pixel_y) // create new bullet hole
|
||||
else // Lasers!
|
||||
if(prob(Proj.damage-10)) // lasers make holes less commonly
|
||||
new/datum/bullethole(src, bmark.pixel_x, bmark.pixel_y) // create new bullet hole
|
||||
|
||||
// draw bullet holes
|
||||
for(var/datum/bullethole/B in bulletholes)
|
||||
|
||||
virtualIcon.DrawBox(null, B.b1x1, B.b1y, B.b1x2, B.b1y) // horizontal line, left to right
|
||||
virtualIcon.DrawBox(null, B.b2x, B.b2y1, B.b2x, B.b2y2) // vertical line, top to bottom
|
||||
|
||||
overlays += bmark // add the decal
|
||||
|
||||
icon = virtualIcon // apply bulletholes over decals
|
||||
|
||||
return
|
||||
|
||||
return -1 // the bullet/projectile goes through the target! Ie, you missed
|
||||
|
||||
|
||||
// Small memory holder entity for transparent bullet holes
|
||||
/datum/bullethole
|
||||
// First box
|
||||
var/b1x1 = 0
|
||||
var/b1x2 = 0
|
||||
var/b1y = 0
|
||||
|
||||
// Second box
|
||||
var/b2x = 0
|
||||
var/b2y1 = 0
|
||||
var/b2y2 = 0
|
||||
|
||||
New(var/obj/item/target/Target, var/pixel_x = 0, var/pixel_y = 0)
|
||||
if(!Target) return
|
||||
|
||||
// Randomize the first box
|
||||
b1x1 = pixel_x - pick(1,1,1,1,2,2,3,3,4)
|
||||
b1x2 = pixel_x + pick(1,1,1,1,2,2,3,3,4)
|
||||
b1y = pixel_y
|
||||
if(prob(35))
|
||||
b1y += rand(-4,4)
|
||||
|
||||
// Randomize the second box
|
||||
b2x = pixel_x
|
||||
if(prob(35))
|
||||
b2x += rand(-4,4)
|
||||
b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4)
|
||||
b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4)
|
||||
|
||||
Target.bulletholes.Add(src)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// if (src.loc != usr)
|
||||
// return
|
||||
// if ((istype(usr, /mob/living/carbon/human) || (ticker && ticker.mode.name == "monkey")))
|
||||
if (ishuman(usr) || ismonkey(usr)) //so monkies can take off their backpacks -- Urist
|
||||
if (ishuman(usr) || ismonkey(usr)) //so monkeys can take off their backpacks -- Urist
|
||||
var/mob/M = usr
|
||||
if (!( istype(over_object, /obj/screen) ))
|
||||
return ..()
|
||||
@@ -38,6 +38,8 @@
|
||||
desc = "A backpack that opens into a localized pocket of Blue Space."
|
||||
origin_tech = "bluespace=4"
|
||||
icon_state = "holdingpack"
|
||||
max_w_class = 4
|
||||
max_combined_w_class = 28
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -50,7 +52,8 @@
|
||||
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
|
||||
user << "\red The Bluespace interfaces of the two devices catastrophically malfunction!"
|
||||
del(W)
|
||||
new /obj/machinery/singularity (get_turf(src))
|
||||
var/obj/machinery/singularity/singulo = new /obj/machinery/singularity (get_turf(src))
|
||||
singulo.energy = 300 //should make it a bit bigger~
|
||||
message_admins("[key_name_admin(user)] detonated a bag of holding")
|
||||
log_game("[key_name(user)] detonated a bag of holding")
|
||||
del(src)
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
playsound(src.loc, "punch", 25, 1, -1)
|
||||
else
|
||||
if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet))
|
||||
M.brainloss += 10
|
||||
M.adjustBrainLoss(10)
|
||||
M << "\red You feel dumber."
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red <B>[] beats [] over the head with []!</B>", user, M, src), 1)
|
||||
|
||||
@@ -1,150 +1,148 @@
|
||||
/obj/structure/crate
|
||||
/obj/structure/closet/crate
|
||||
desc = "A crate."
|
||||
name = "Crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "crate"
|
||||
density = 1
|
||||
var/openicon = "crateopen"
|
||||
var/closedicon = "crate"
|
||||
icon_opened = "crateopen"
|
||||
icon_closed = "crate"
|
||||
req_access = null
|
||||
var/opened = 0
|
||||
var/locked = 0
|
||||
opened = 0
|
||||
flags = FPRINT
|
||||
m_amt = 7500
|
||||
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
||||
// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //???
|
||||
|
||||
/obj/structure/crate/internals
|
||||
/obj/structure/closet/crate/internals
|
||||
desc = "A internals crate."
|
||||
name = "Internals crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "o2crate"
|
||||
density = 1
|
||||
openicon = "o2crateopen"
|
||||
closedicon = "o2crate"
|
||||
icon_opened = "o2crateopen"
|
||||
icon_closed = "o2crate"
|
||||
|
||||
/obj/structure/crate/trashcart
|
||||
/obj/structure/closet/crate/trashcart
|
||||
desc = "A heavy, metal trashcart with wheels."
|
||||
name = "Trash Cart"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "trashcart"
|
||||
density = 1
|
||||
openicon = "trashcartopen"
|
||||
closedicon = "trashcart"
|
||||
icon_opened = "trashcartopen"
|
||||
icon_closed = "trashcart"
|
||||
|
||||
/obj/structure/crate/hat
|
||||
/obj/structure/closet/crate/hat
|
||||
desc = "A crate filled with Valuable Collector's Hats!."
|
||||
name = "Hat Crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "crate"
|
||||
density = 1
|
||||
openicon = "crateopen"
|
||||
closedicon = "crate"
|
||||
icon_opened = "crateopen"
|
||||
icon_closed = "crate"
|
||||
|
||||
/obj/structure/crate/medical
|
||||
/obj/structure/closet/crate/medical
|
||||
desc = "A medical crate."
|
||||
name = "Medical crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "medicalcrate"
|
||||
density = 1
|
||||
openicon = "medicalcrateopen"
|
||||
closedicon = "medicalcrate"
|
||||
icon_opened = "medicalcrateopen"
|
||||
icon_closed = "medicalcrate"
|
||||
|
||||
/obj/structure/crate/rcd
|
||||
/obj/structure/closet/crate/rcd
|
||||
desc = "A crate for the storage of the RCD."
|
||||
name = "RCD crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "crate"
|
||||
density = 1
|
||||
openicon = "crateopen"
|
||||
closedicon = "crate"
|
||||
icon_opened = "crateopen"
|
||||
icon_closed = "crate"
|
||||
|
||||
/obj/structure/crate/freezer
|
||||
/obj/structure/closet/crate/freezer
|
||||
desc = "A freezer."
|
||||
name = "Freezer"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "freezer"
|
||||
density = 1
|
||||
openicon = "freezeropen"
|
||||
closedicon = "freezer"
|
||||
icon_opened = "freezeropen"
|
||||
icon_closed = "freezer"
|
||||
|
||||
/obj/structure/crate/bin
|
||||
/obj/structure/closet/crate/bin
|
||||
desc = "A large bin."
|
||||
name = "Large bin"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "largebin"
|
||||
density = 1
|
||||
openicon = "largebinopen"
|
||||
closedicon = "largebin"
|
||||
icon_opened = "largebinopen"
|
||||
icon_closed = "largebin"
|
||||
|
||||
/obj/structure/crate/radiation
|
||||
/obj/structure/closet/crate/radiation
|
||||
desc = "A crate with a radiation sign on it."
|
||||
name = "Radioactive gear crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "radiation"
|
||||
density = 1
|
||||
openicon = "radiationopen"
|
||||
closedicon = "radiation"
|
||||
icon_opened = "radiationopen"
|
||||
icon_closed = "radiation"
|
||||
|
||||
/obj/item/clothing/suit/radiation
|
||||
|
||||
/obj/structure/crate/secure/weapon
|
||||
/obj/structure/closet/crate/secure/weapon
|
||||
desc = "A secure weapons crate."
|
||||
name = "Weapons crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "weaponcrate"
|
||||
density = 1
|
||||
openicon = "weaponcrateopen"
|
||||
closedicon = "weaponcrate"
|
||||
icon_opened = "weaponcrateopen"
|
||||
icon_closed = "weaponcrate"
|
||||
|
||||
/obj/structure/crate/secure/plasma
|
||||
/obj/structure/closet/crate/secure/plasma
|
||||
desc = "A secure plasma crate."
|
||||
name = "Plasma crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "plasmacrate"
|
||||
density = 1
|
||||
openicon = "plasmacrateopen"
|
||||
closedicon = "plasmacrate"
|
||||
icon_opened = "plasmacrateopen"
|
||||
icon_closed = "plasmacrate"
|
||||
|
||||
/obj/structure/crate/secure/gear
|
||||
/obj/structure/closet/crate/secure/gear
|
||||
desc = "A secure gear crate."
|
||||
name = "Gear crate"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "secgearcrate"
|
||||
density = 1
|
||||
openicon = "secgearcrateopen"
|
||||
closedicon = "secgearcrate"
|
||||
icon_opened = "secgearcrateopen"
|
||||
icon_closed = "secgearcrate"
|
||||
|
||||
/obj/structure/crate/secure/bin
|
||||
/obj/structure/closet/crate/secure/bin
|
||||
desc = "A secure bin."
|
||||
name = "Secure bin"
|
||||
icon_state = "largebins"
|
||||
openicon = "largebinsopen"
|
||||
closedicon = "largebins"
|
||||
icon_opened = "largebinsopen"
|
||||
icon_closed = "largebins"
|
||||
redlight = "largebinr"
|
||||
greenlight = "largebing"
|
||||
sparks = "largebinsparks"
|
||||
emag = "largebinemag"
|
||||
|
||||
/obj/structure/crate/secure
|
||||
/obj/structure/closet/crate/secure
|
||||
desc = "A secure crate."
|
||||
name = "Secure crate"
|
||||
icon_state = "securecrate"
|
||||
openicon = "securecrateopen"
|
||||
closedicon = "securecrate"
|
||||
icon_opened = "securecrateopen"
|
||||
icon_closed = "securecrate"
|
||||
var/redlight = "securecrater"
|
||||
var/greenlight = "securecrateg"
|
||||
var/sparks = "securecratesparks"
|
||||
var/emag = "securecrateemag"
|
||||
var/broken = 0
|
||||
locked = 1
|
||||
var/locked = 1
|
||||
|
||||
/obj/structure/crate/hydroponics
|
||||
/obj/structure/closet/crate/hydroponics
|
||||
name = "Hydroponics crate"
|
||||
desc = "All you need to destroy those pesky weeds and pests."
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "hydrocrate"
|
||||
openicon = "hydrocrateopen"
|
||||
closedicon = "hydrocrate"
|
||||
icon_opened = "hydrocrateopen"
|
||||
icon_closed = "hydrocrate"
|
||||
density = 1
|
||||
/* New() // This stuff shouldn't be here, it should be in /datum/supply_packs/hydroponics
|
||||
..()
|
||||
@@ -158,14 +156,14 @@
|
||||
new /obj/item/weapon/pestspray(src)
|
||||
new /obj/item/weapon/pestspray(src) */
|
||||
|
||||
/obj/structure/crate/hydroponics/prespawned
|
||||
/obj/structure/closet/crate/hydroponics/prespawned
|
||||
//This exists so the prespawned hydro crates spawn with their contents.
|
||||
/* name = "Hydroponics crate"
|
||||
desc = "All you need to destroy those pesky weeds and pests."
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "hydrocrate"
|
||||
openicon = "hydrocrateopen"
|
||||
closedicon = "hydrocrate"
|
||||
icon_opened = "hydrocrateopen"
|
||||
icon_closed = "hydrocrate"
|
||||
density = 1*/
|
||||
New()
|
||||
..()
|
||||
@@ -179,7 +177,7 @@
|
||||
// new /obj/item/weapon/pestspray(src)
|
||||
// new /obj/item/weapon/pestspray(src)
|
||||
|
||||
/obj/structure/crate/New()
|
||||
/obj/structure/closet/crate/New()
|
||||
..()
|
||||
spawn(1)
|
||||
if(!opened) // if closed, any item at the crate's loc is put in the contents
|
||||
@@ -187,7 +185,7 @@
|
||||
if(I.density || I.anchored || I == src) continue
|
||||
I.loc = src
|
||||
|
||||
/obj/structure/crate/secure/New()
|
||||
/obj/structure/closet/crate/secure/New()
|
||||
..()
|
||||
if(locked)
|
||||
overlays = null
|
||||
@@ -196,14 +194,14 @@
|
||||
overlays = null
|
||||
overlays += greenlight
|
||||
|
||||
/obj/structure/crate/rcd/New()
|
||||
/obj/structure/closet/crate/rcd/New()
|
||||
..()
|
||||
new /obj/item/weapon/rcd_ammo(src)
|
||||
new /obj/item/weapon/rcd_ammo(src)
|
||||
new /obj/item/weapon/rcd_ammo(src)
|
||||
new /obj/item/weapon/rcd(src)
|
||||
|
||||
/obj/structure/crate/radiation/New()
|
||||
/obj/structure/closet/crate/radiation/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/radiation(src)
|
||||
new /obj/item/clothing/head/radiation(src)
|
||||
@@ -214,7 +212,7 @@
|
||||
new /obj/item/clothing/suit/radiation(src)
|
||||
new /obj/item/clothing/head/radiation(src)
|
||||
|
||||
/obj/structure/crate/proc/open()
|
||||
/obj/structure/closet/crate/open()
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
|
||||
for(var/obj/O in src)
|
||||
@@ -222,34 +220,37 @@
|
||||
for(var/mob/M in src)
|
||||
M.loc = get_turf(src)
|
||||
|
||||
icon_state = openicon
|
||||
icon_state = icon_opened
|
||||
src.opened = 1
|
||||
|
||||
/obj/structure/crate/proc/close()
|
||||
/obj/structure/closet/crate/close()
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
for(var/obj/O in get_turf(src))
|
||||
if(O.density || O.anchored || O == src) continue
|
||||
O.loc = src
|
||||
icon_state = closedicon
|
||||
icon_state = icon_closed
|
||||
src.opened = 0
|
||||
|
||||
/obj/structure/crate/attack_hand(mob/user as mob)
|
||||
if(!locked)
|
||||
if(opened) close()
|
||||
else open()
|
||||
else
|
||||
user << "\red It's locked."
|
||||
/obj/structure/closet/crate/attack_hand(mob/user as mob)
|
||||
if(opened) close()
|
||||
else open()
|
||||
return
|
||||
|
||||
/obj/structure/crate/secure/attack_hand(mob/user as mob)
|
||||
if(locked && allowed(user) && !broken)
|
||||
user << "\blue You unlock the [src]."
|
||||
src.locked = 0
|
||||
overlays = null
|
||||
overlays += greenlight
|
||||
return ..()
|
||||
/obj/structure/closet/crate/secure/attack_hand(mob/user as mob)
|
||||
if(locked && !broken)
|
||||
if (allowed(user))
|
||||
user << "\blue You unlock the [src]."
|
||||
src.locked = 0
|
||||
overlays = null
|
||||
overlays += greenlight
|
||||
return
|
||||
else
|
||||
user << "\red It's locked."
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken)
|
||||
user << "\red You lock the [src]."
|
||||
src.locked = 1
|
||||
@@ -269,10 +270,10 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/structure/crate/attack_paw(mob/user as mob)
|
||||
/obj/structure/closet/crate/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/structure/crate/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/packageWrap))
|
||||
var/obj/item/weapon/packageWrap/O = W
|
||||
if (O.amount > 3)
|
||||
@@ -288,7 +289,7 @@
|
||||
W.loc = src.loc
|
||||
else return attack_hand(user)
|
||||
|
||||
/obj/structure/crate/secure/emp_act(severity)
|
||||
/obj/structure/closet/crate/secure/emp_act(severity)
|
||||
for(var/obj/O in src)
|
||||
O.emp_act(severity)
|
||||
if(!broken && !opened && prob(50/severity))
|
||||
@@ -312,7 +313,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/crate/ex_act(severity)
|
||||
/obj/structure/closet/crate/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
for(var/obj/O in src.contents)
|
||||
|
||||
@@ -150,9 +150,10 @@
|
||||
user << "\red The [src] is full, make some space."
|
||||
return
|
||||
|
||||
if ( W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
|
||||
user << "\red The [src] cannot hold [W] as it's a storage item of the same size."
|
||||
return //To prevent the stacking of the same sized items.
|
||||
if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
|
||||
if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm.
|
||||
user << "\red The [src] cannot hold [W] as it's a storage item of the same size."
|
||||
return //To prevent the stacking of the same sized items.
|
||||
|
||||
user.u_equip(W)
|
||||
W.loc = src
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
armed = 0
|
||||
/*
|
||||
else if (ismouse(target))
|
||||
target.bruteloss = 100
|
||||
target.adjustBruteLoss(100)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/mousetrap/attack_self(mob/user as mob)
|
||||
@@ -153,7 +153,7 @@
|
||||
user << "\blue You arm the mousetrap."
|
||||
else
|
||||
icon_state = "mousetrap"
|
||||
if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
if((user.getBrainLoss() >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
/obj/item/weapon/mousetrap/attack_hand(mob/user as mob)
|
||||
if(armed)
|
||||
if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
if((user.getBrainLoss() >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
|
||||
@@ -75,20 +75,32 @@ client/verb/Toggle_Soundscape()
|
||||
if (!A:client) return
|
||||
//if (A:ear_deaf) return
|
||||
|
||||
if (A && A:client && !A:client:ambience_playing && !A:client:no_ambi) // Constant background noises
|
||||
if (A && A:client && !A:client:ambience_playing && !A:client:no_ambi) // Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! - LastyScratch
|
||||
A:client:ambience_playing = 1
|
||||
A << sound('shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = 2)
|
||||
|
||||
switch(src.name)
|
||||
if ("Chapel") sound = pick('ambicha1.ogg','ambicha2.ogg','ambicha3.ogg','ambicha4.ogg')
|
||||
if ("Morgue") sound = pick('ambimo1.ogg','ambimo2.ogg')
|
||||
if ("Space") sound = pick('ambispace.ogg')
|
||||
if ("Morgue") sound = pick('ambimo1.ogg','ambimo2.ogg','ambistat.ogg')
|
||||
if ("Space") sound = pick('ambispace.ogg','ambistat.ogg',)
|
||||
if ("Engine Control") sound = pick('ambisin1.ogg','ambisin2.ogg','ambisin3.ogg','ambisin4.ogg')
|
||||
if ("Atmospherics") sound = pick('ambiatm1.ogg')
|
||||
if ("Medbay") sound = pick('ambistat.ogg')
|
||||
if ("Bridge") sound = pick('ambistat.ogg')
|
||||
if ("Arrival Shuttle Hallway") sound = pick('ambistat.ogg','ambiruntime.ogg')
|
||||
if ("AI Sat Ext") sound = pick('ambiruntime.ogg','ambimalf.ogg')
|
||||
if ("AI Satellite") sound = pick('ambimalf.ogg')
|
||||
if ("AI Satellite Teleporter Room") sound = pick('ambiruntime.ogg','ambimalf.ogg')
|
||||
if ("Central Primary Hallway") sound = pick('ambiruntime.ogg')
|
||||
if ("Aft Primary Hallway") sound = pick('ambiruntime.ogg')
|
||||
if ("AI Upload Foyer") sound = pick('ambimalf.ogg', 'null.ogg', 'null.ogg')
|
||||
if ("AI Upload Chamber") sound = pick('ambimalf.ogg','null.ogg','null.ogg')
|
||||
if ("Mine")
|
||||
sound = pick('ambimine.ogg')
|
||||
musVolume = 25
|
||||
else sound = pick('ambigen1.ogg','ambigen3.ogg','ambigen4.ogg','ambigen5.ogg','ambigen6.ogg','ambigen7.ogg','ambigen8.ogg','ambigen9.ogg','ambigen10.ogg','ambigen11.ogg','ambigen12.ogg','ambigen14.ogg')
|
||||
else
|
||||
sound = pick('ambigen1.ogg','ambigen3.ogg','ambigen4.ogg','ambigen5.ogg','ambigen6.ogg','ambigen7.ogg','ambigen8.ogg','ambigen9.ogg','ambigen10.ogg','ambigen11.ogg','ambigen12.ogg','ambigen14.ogg')
|
||||
|
||||
|
||||
if (prob(35))
|
||||
if(A && A:client && !A:client:played)
|
||||
|
||||
@@ -146,7 +146,7 @@ var/ordernum=0
|
||||
var/shuttleat = supply_shuttle_at_station ? SUPPLY_STATION_AREATYPE : SUPPLY_DOCK_AREATYPE
|
||||
|
||||
for(var/turf/T in get_area_turfs(shuttleat) )
|
||||
var/crate = locate(/obj/structure/crate) in T
|
||||
var/crate = locate(/obj/structure/closet/crate) in T
|
||||
if (crate)
|
||||
del(crate)
|
||||
supply_shuttle_points += SUPPLY_POINTSPERCRATE
|
||||
@@ -169,7 +169,7 @@ var/ordernum=0
|
||||
var/pickedloc = 0
|
||||
var/found = 0
|
||||
for(var/C in markers)
|
||||
if (locate(/obj/structure/crate) in get_turf(C)) continue
|
||||
if (locate(/obj/structure/closet/crate) in get_turf(C)) continue
|
||||
found = 1
|
||||
pickedloc = get_turf(C)
|
||||
if (!found) pickedloc = get_turf(pick(markers))
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
suiciding = 1
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/carbon/brain/verb/suicide()
|
||||
@@ -48,7 +48,7 @@
|
||||
if(confirm == "Yes")
|
||||
suiciding = 1
|
||||
viewers(loc) << "\red <b>[src]'s brain is growing dull and lifeless. It looks like it's trying to commit suicide. Somehow.</b>"
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
spawn(200)
|
||||
suiciding = 0
|
||||
@@ -74,7 +74,7 @@
|
||||
suiciding = 1
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/silicon/ai/verb/suicide()
|
||||
@@ -94,7 +94,7 @@
|
||||
suiciding = 1
|
||||
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
||||
//put em at -175
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/silicon/robot/verb/suicide()
|
||||
@@ -114,7 +114,7 @@
|
||||
suiciding = 1
|
||||
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
||||
//put em at -175
|
||||
oxyloss = max(475 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
oxyloss = max(475 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/silicon/pai/verb/suicide()
|
||||
@@ -149,7 +149,7 @@
|
||||
suiciding = 1
|
||||
viewers(src) << "\red <b>[src] is thrashing wildly! It looks like \he's trying to commit suicide.</b>"
|
||||
//put em at -175
|
||||
oxyloss = max(100 - fireloss - getBruteLoss(), getOxyLoss())
|
||||
oxyloss = max(100 - getFireLoss() - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
world << "Result is change to \red [wintext]"
|
||||
world.save_mode(winner)
|
||||
|
||||
if(ticker.current_state != GAME_STATE_PREGAME)
|
||||
if(ticker && ticker.mode)
|
||||
world <<"\red <B>World will reboot in 10 seconds</B>"
|
||||
|
||||
feedback_set_details("end_error","mode vote - [winner]")
|
||||
|
||||
@@ -1969,7 +1969,7 @@
|
||||
<A href='?src=\ref[src];secretsfun=sec_clothes'>Remove 'internal' clothing</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=sec_all_clothes'>Remove ALL clothing</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=toxic'>Toxic Air (WARNING: dangerous)</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=monkey'>Turn all humans into monkies</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=sec_classic1'>Remove firesuits, grilles, and pods</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=power'>Make all areas powered</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=unpower'>Make all areas unpowered</A><BR>
|
||||
|
||||
@@ -132,6 +132,8 @@
|
||||
verbs += /client/proc/kill_air
|
||||
verbs += /client/proc/cmd_debug_make_powernets
|
||||
verbs += /client/proc/enable_mapping_debug
|
||||
verbs += /client/proc/everyone_random
|
||||
verbs += /client/proc/only_one // Fateweaver suggested I do this - Doohl
|
||||
|
||||
if (holder.level >= 5)//Game Admin********************************************************************
|
||||
verbs += /obj/admins/proc/view_txt_log
|
||||
@@ -155,7 +157,6 @@
|
||||
verbs += /client/proc/cmd_admin_drop_everything
|
||||
verbs += /client/proc/make_sound
|
||||
verbs += /client/proc/play_local_sound
|
||||
verbs += /client/proc/only_one
|
||||
verbs += /client/proc/send_space_ninja
|
||||
verbs += /client/proc/restartcontroller //Can call via aproccall --I_hate_easy_things.jpg, Mport --Agouri
|
||||
verbs += /client/proc/Blobize//I need to remember to move/remove this later
|
||||
|
||||
@@ -813,3 +813,35 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
for(var/t in M.attack_log)
|
||||
usr << t
|
||||
|
||||
|
||||
/client/proc/everyone_random()
|
||||
set category = "Fun"
|
||||
set name = "Make Everyone Random"
|
||||
set desc = "Make everyone have a random appearance. You can only use this before rounds!"
|
||||
|
||||
if (ticker && ticker.mode)
|
||||
usr << "Nope you can't do this, the game's already started. This only works before rounds!"
|
||||
return
|
||||
|
||||
if(ticker.random_players)
|
||||
ticker.random_players = 0
|
||||
message_admins("Admin [key_name_admin(usr)] has disabled \"Everyone is Special\" mode.", 1)
|
||||
usr << "Disabled."
|
||||
return
|
||||
|
||||
|
||||
var/notifyplayers = alert(src, "Do you want to notify the players?", "Options", "Yes", "No", "Cancel")
|
||||
if(notifyplayers == "Cancel")
|
||||
return
|
||||
|
||||
log_admin("Admin [key_name(src)] has forced the players to have random appearances.")
|
||||
message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.", 1)
|
||||
|
||||
if(notifyplayers == "Yes")
|
||||
world << "\blue <b>Admin [usr.key] has forced the players to have completely random identities!"
|
||||
|
||||
usr << "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>."
|
||||
|
||||
ticker.random_players = 1
|
||||
|
||||
|
||||
|
||||
@@ -15,12 +15,20 @@
|
||||
|
||||
var
|
||||
code = 30
|
||||
frequency = 100
|
||||
frequency = 1457
|
||||
delay = 0
|
||||
airlock_wire = null
|
||||
datum/radio_frequency/radio_connection
|
||||
|
||||
proc
|
||||
send_signal()
|
||||
signal()
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
spawn(40)
|
||||
set_frequency(frequency)
|
||||
return
|
||||
|
||||
|
||||
activate()
|
||||
@@ -30,12 +38,10 @@
|
||||
process_cooldown()
|
||||
|
||||
signal()
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
interact(mob/user as mob, flag1)
|
||||
|
||||
var/t1 = "-------"
|
||||
// if ((src.b_stat && !( flag1 )))
|
||||
// t1 = text("-------<BR>\nGreen Wire: []<BR>\nRed Wire: []<BR>\nBlue Wire: []<BR>\n", (src.wires & 4 ? text("<A href='?src=\ref[];wires=4'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=4'>Mend Wire</A>", src)), (src.wires & 2 ? text("<A href='?src=\ref[];wires=2'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=2'>Mend Wire</A>", src)), (src.wires & 1 ? text("<A href='?src=\ref[];wires=1'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=1'>Mend Wire</A>", src)))
|
||||
@@ -49,7 +55,7 @@
|
||||
Frequency:
|
||||
<A href='byond://?src=\ref[src];freq=-10'>-</A>
|
||||
<A href='byond://?src=\ref[src];freq=-2'>-</A>
|
||||
[src.frequency]
|
||||
[format_frequency(src.frequency)]
|
||||
<A href='byond://?src=\ref[src];freq=2'>+</A>
|
||||
<A href='byond://?src=\ref[src];freq=10'>+</A><BR>
|
||||
|
||||
@@ -75,10 +81,10 @@
|
||||
return
|
||||
|
||||
if (href_list["freq"])
|
||||
src.frequency += text2num(href_list["freq"])
|
||||
src.frequency = round(src.frequency)
|
||||
src.frequency = min(100, src.frequency)
|
||||
src.frequency = max(1, src.frequency)
|
||||
var/new_frequency = (frequency + text2num(href_list["freq"]))
|
||||
if(new_frequency < 1200 || new_frequency > 1600)
|
||||
new_frequency = sanitize_frequency(new_frequency)
|
||||
set_frequency(new_frequency)
|
||||
|
||||
if(href_list["code"])
|
||||
src.code += text2num(href_list["code"])
|
||||
@@ -95,14 +101,22 @@
|
||||
|
||||
return
|
||||
|
||||
proc/signal()//will have to do for now
|
||||
|
||||
signal()
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.encryption = code
|
||||
signal.data["message"] = "ACTIVATE"
|
||||
radio_connection.post_signal(src, signal)
|
||||
return
|
||||
/*
|
||||
for(var/obj/item/device/assembly/signaler/S in world)
|
||||
if(!S) continue
|
||||
if(S == src) continue
|
||||
if((S.frequency == src.frequency) && (S.code == src.code))
|
||||
spawn(0)
|
||||
if(S) S.pulse(0)
|
||||
return 0
|
||||
return 0*/
|
||||
|
||||
|
||||
pulse(var/radio = 0)
|
||||
@@ -112,3 +126,21 @@
|
||||
else if(holder)
|
||||
holder.process_activation(src, 1, 0)
|
||||
return 1
|
||||
|
||||
|
||||
receive_signal(datum/signal/signal)
|
||||
if(!signal) return 0
|
||||
if(signal.encryption != code) return 0
|
||||
if(!(src.wires & WIRE_RADIO_RECEIVE)) return 0
|
||||
pulse(1)
|
||||
|
||||
for(var/mob/O in hearers(1, src.loc))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
return
|
||||
|
||||
|
||||
proc/set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
|
||||
return
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
|
||||
process()
|
||||
if(timing && (time >= 0))
|
||||
if(timing && (time > 0))
|
||||
time--
|
||||
if(timing && time <= 0)
|
||||
timing = 0
|
||||
|
||||
@@ -351,7 +351,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:adjustToxLoss(3)
|
||||
M:oxyloss += 3
|
||||
M:adjustOxyLoss(3)
|
||||
M:sleeping += 1
|
||||
..()
|
||||
return
|
||||
@@ -812,6 +812,7 @@ datum
|
||||
|
||||
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
if(!..()) return
|
||||
if(isrobot(M) || isAI(M)) return // Mutagen doesn't do anything to robutts!
|
||||
src = null
|
||||
if((method==TOUCH && prob(33)) || method==INGEST)
|
||||
randmuti(M)
|
||||
@@ -823,6 +824,7 @@ datum
|
||||
updateappearance(M,M.dna.uni_identity)
|
||||
return
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(isrobot(M) || isAI(M)) return // Mutagen doesn't do anything to robutts!
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation += 3
|
||||
..()
|
||||
@@ -1119,7 +1121,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.take_organ_damage(1, 0)
|
||||
M:oxyloss += 3
|
||||
M:adjustOxyLoss(3)
|
||||
if(prob(20)) M:emote("gasp")
|
||||
..()
|
||||
return
|
||||
@@ -1165,7 +1167,7 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M:oxyloss = max(M:getOxyLoss()-2, 0)
|
||||
M:adjustOxyLoss(-2)
|
||||
if(holder.has_reagent("lexorin"))
|
||||
holder.remove_reagent("lexorin", 2)
|
||||
..()
|
||||
@@ -1199,9 +1201,9 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getOxyLoss() && prob(40)) M:oxyloss--
|
||||
if(M:getOxyLoss() && prob(40)) M:adjustOxyLoss(-1)
|
||||
if(M:getBruteLoss() && prob(40)) M:heal_organ_damage(1,0)
|
||||
if(M:fireloss && prob(40)) M:heal_organ_damage(0,1)
|
||||
if(M:getFireLoss() && prob(40)) M:heal_organ_damage(0,1)
|
||||
if(M:getToxLoss() && prob(40)) M:adjustToxLoss(-1)
|
||||
..()
|
||||
return
|
||||
@@ -1219,7 +1221,7 @@ datum
|
||||
M:oxyloss = 0
|
||||
M:radiation = 0
|
||||
M:heal_organ_damage(5,5)
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-5)
|
||||
M:adjustToxLoss(-5)
|
||||
if(holder.has_reagent("toxin"))
|
||||
holder.remove_reagent("toxin", 5)
|
||||
if(holder.has_reagent("stoxin"))
|
||||
@@ -1295,7 +1297,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:jitteriness = max(M:jitteriness-5,0)
|
||||
if(prob(80)) M:brainloss++
|
||||
if(prob(80)) M:adjustBrainLoss(1)
|
||||
if(prob(50)) M:drowsyness = max(M:drowsyness, 3)
|
||||
if(prob(10)) M:emote("drool")
|
||||
..()
|
||||
@@ -1326,7 +1328,7 @@ datum
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M:radiation = max(M:radiation-7,0)
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-1)
|
||||
M:adjustToxLoss(-1)
|
||||
if(prob(15))
|
||||
M.take_organ_damage(1, 0)
|
||||
..()
|
||||
@@ -1341,7 +1343,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:brainloss = max(M:brainloss-3 , 0)
|
||||
M:adjustBrainLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1400,10 +1402,10 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature < 170)
|
||||
if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-1)
|
||||
if(M:getOxyLoss()) M:oxyloss = max(0, M:getOxyLoss()-3)
|
||||
M:adjustCloneLoss(-1)
|
||||
M:adjustOxyLoss(-3)
|
||||
M:heal_organ_damage(3,3)
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-3)
|
||||
M:adjustToxLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1417,10 +1419,10 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature < 170)
|
||||
if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-3)
|
||||
if(M:getOxyLoss()) M:oxyloss = max(0, M:getOxyLoss()-3)
|
||||
M:adjustCloneLoss(-3)
|
||||
M:adjustOxyLoss(-3)
|
||||
M:heal_organ_damage(3,3)
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-3)
|
||||
M:adjustToxLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1457,7 +1459,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:oxyloss += 0.5
|
||||
M:adjustOxyLoss(0.5)
|
||||
M:adjustToxLoss(0.5)
|
||||
M:weakened = max(M:weakened, 10)
|
||||
M:silent = max(M:silent, 10)
|
||||
@@ -1694,7 +1696,7 @@ datum
|
||||
if(prob(40))
|
||||
M.take_organ_damage(0, 1)
|
||||
if(prob(80) && istype(M, /mob/living/carbon/metroid))
|
||||
M.fireloss += rand(5,20)
|
||||
M.adjustFireLoss(rand(5,20))
|
||||
M << "\red You feel a terrible chill inside your body!"
|
||||
..()
|
||||
return
|
||||
@@ -1928,7 +1930,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getOxyLoss() && prob(30)) M:oxyloss--
|
||||
if(M:getOxyLoss() && prob(30)) M:adjustOxyLoss(-1)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -1944,7 +1946,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:fireloss && prob(20)) M:heal_organ_damage(0,1)
|
||||
if(M:getFireLoss() && prob(20)) M:heal_organ_damage(0,1)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -3030,9 +3032,9 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getOxyLoss() && prob(50)) M:oxyloss -= 2
|
||||
if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2)
|
||||
if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0)
|
||||
if(M:fireloss && prob(50)) M:heal_organ_damage(0,2)
|
||||
if(M:getFireLoss() && prob(50)) M:heal_organ_damage(0,2)
|
||||
if(M:getToxLoss() && prob(50)) M:adjustToxLoss(-2)
|
||||
if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15)
|
||||
if(M.confused !=0) M.confused = max(0,M.confused - 5)
|
||||
@@ -3603,7 +3605,7 @@ datum
|
||||
if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||
M.make_jittery(5)
|
||||
if(M:bruteloss && prob(20)) M:heal_organ_damage(1,0)
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -3623,7 +3625,7 @@ datum
|
||||
if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||
M.make_jittery(5)
|
||||
if(M:bruteloss && prob(20)) M:heal_organ_damage(1,0)
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -3676,8 +3678,8 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:oxyloss += 0.5
|
||||
M:getToxLoss() += 0.5
|
||||
M:adjustOxyLoss(0.5)
|
||||
M:adjustOxyLoss(0.5)
|
||||
M:weakened = max(M:weakened, 15)
|
||||
M:silent = max(M:silent, 15)
|
||||
if(!data) data = 1
|
||||
|
||||
@@ -555,7 +555,7 @@
|
||||
icon_state = null
|
||||
w_class = 1
|
||||
var/amount_per_transfer_from_this = 5
|
||||
var/possible_transfer_amounts = list(5,10,25)
|
||||
var/possible_transfer_amounts = list(5,10,15,25,30)
|
||||
var/volume = 30
|
||||
|
||||
verb/set_APTFT() //set amount_per_transfer_from_this
|
||||
@@ -595,7 +595,7 @@
|
||||
icon_state = "null"
|
||||
item_state = "null"
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,25)
|
||||
possible_transfer_amounts = list(5,10,15,25,30,50)
|
||||
volume = 50
|
||||
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
||||
|
||||
@@ -604,7 +604,7 @@
|
||||
/obj/machinery/chem_dispenser/,
|
||||
/obj/machinery/reagentgrinder,
|
||||
/obj/structure/table,
|
||||
/obj/structure/secure_closet,
|
||||
/obj/structure/closet/secure_closet,
|
||||
/obj/structure/closet,
|
||||
/obj/machinery/sink,
|
||||
/obj/item/weapon/storage,
|
||||
@@ -1339,27 +1339,6 @@
|
||||
if (gulp_size < 5) gulp_size = 5
|
||||
else gulp_size = max(round(reagents.total_volume / 5), 5)
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/trashbag))
|
||||
var/obj/item/weapon/trashbag/S = W
|
||||
if (S.mode == 1)
|
||||
for (var/obj/item/weapon/reagent_containers/food/drinks/D in locate(src.x,src.y,src.z))
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += D;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
break
|
||||
user << "\blue You pick up all trash."
|
||||
else
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += src;
|
||||
else
|
||||
user << "\blue The bag is full."
|
||||
S.update_icon()
|
||||
return
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
return
|
||||
|
||||
@@ -1699,7 +1678,7 @@
|
||||
item_state = "beaker"
|
||||
volume = 100
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,30,50)
|
||||
possible_transfer_amounts = list(5,10,15,25,30,50,100)
|
||||
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
||||
|
||||
|
||||
@@ -2625,6 +2604,14 @@
|
||||
..()
|
||||
reagents.add_reagent("dexalin", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/bicardine
|
||||
name = "Bicardine pill"
|
||||
desc = "Used to treat physical injuries."
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("bicardine", 30)
|
||||
|
||||
//Dispensers
|
||||
/obj/structure/reagent_dispensers/watertank
|
||||
name = "watertank"
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
vision_flags = SEE_TURFS
|
||||
|
||||
/obj/item/clothing/glasses/science
|
||||
name = "Protective Goggles"
|
||||
desc = "Protects your eyes against harmful chemicals."
|
||||
name = "Science Goggles"
|
||||
desc = "nothing"
|
||||
icon_state = "purple"
|
||||
item_state = "glasses"
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
var/datum/organ/external/affecting = H.get_organ(ran_zone(dam_zone))
|
||||
H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"))
|
||||
else
|
||||
target:bruteloss += damage
|
||||
target:adjustBruteLoss(damage)
|
||||
|
||||
if(attack_sound)
|
||||
playsound(loc, attack_sound, 50, 1, -1)
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
|
||||
name = "candy corm" //Not a typo
|
||||
desc = "It's a handful of candy corm. Can be stored in a detective's hat."
|
||||
name = "candy corn"
|
||||
desc = "It's a handful of candy corn. Can be stored in a detective's hat."
|
||||
icon_state = "candy_corn"
|
||||
New()
|
||||
..()
|
||||
@@ -105,6 +105,57 @@
|
||||
src.name = "frosted donut"
|
||||
reagents.add_reagent("sprinkles", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chaosdonut
|
||||
name = "Chaos Donut"
|
||||
desc = "Like life, it never quite tastes the same."
|
||||
icon_state = "donut1"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
bitesize = 10
|
||||
var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10)
|
||||
switch(chaosselect)
|
||||
if(1)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
if(2)
|
||||
reagents.add_reagent("capsaicin", 3)
|
||||
if(3)
|
||||
reagents.add_reagent("frostoil", 3)
|
||||
if(4)
|
||||
reagents.add_reagent("sprinkles", 3)
|
||||
if(5)
|
||||
reagents.add_reagent("plasma", 3)
|
||||
if(6)
|
||||
reagents.add_reagent("coco", 3)
|
||||
if(7)
|
||||
reagents.add_reagent("metroid", 3)
|
||||
if(8)
|
||||
reagents.add_reagent("banana", 3)
|
||||
if(9)
|
||||
reagents.add_reagent("berryjuice", 3)
|
||||
if(10)
|
||||
reagents.add_reagent("tricordrazine", 3)
|
||||
if(prob(30))
|
||||
src.icon_state = "donut2"
|
||||
src.name = "Frosted Chaos Donut"
|
||||
reagents.add_reagent("sprinkles", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellydonut
|
||||
name = "Jelly Donut"
|
||||
desc = "You jelly?"
|
||||
icon_state = "jdonut1"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent("berryjuice", 5)
|
||||
bitesize = 5
|
||||
if(prob(30))
|
||||
src.icon_state = "jdonut2"
|
||||
src.name = "Frosted Jelly Donut"
|
||||
reagents.add_reagent("sprinkles", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg
|
||||
name = "egg"
|
||||
desc = "An egg!"
|
||||
@@ -119,6 +170,25 @@
|
||||
src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.")
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedegg
|
||||
name = "Fried egg"
|
||||
desc = "A fried egg, with a touch of salt and pepper."
|
||||
icon_state = "friedegg"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledegg
|
||||
name = "Boiled egg"
|
||||
desc = "A hard boiled egg."
|
||||
icon_state = "egg"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour
|
||||
name = "flour"
|
||||
desc = "Some flour"
|
||||
@@ -428,6 +498,12 @@
|
||||
reagents.add_reagent("banana",5)
|
||||
bitesize = 3
|
||||
|
||||
throw_impact(atom/hit_atom)
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/pie_smudge(src.loc)
|
||||
src.visible_message("\red [src.name] splats.","\red You hear a splat.")
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis
|
||||
name = "Berry Clafoutis"
|
||||
desc = "No black birds, this is a good sign."
|
||||
@@ -459,21 +535,6 @@
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellydonut
|
||||
name = "Jelly Donut"
|
||||
desc = "Oh so gooey on the inside."
|
||||
icon_state = "jdonut1"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent("berryjuice", 5)
|
||||
bitesize = 5
|
||||
if(prob(30))
|
||||
src.icon_state = "jdonut2"
|
||||
src.name = "Frosted Jelly Donut"
|
||||
reagents.add_reagent("sprinkles", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylentgreen
|
||||
name = "Soylent Green"
|
||||
desc = "Not made of people. Honest." //Totally people.
|
||||
@@ -494,22 +555,11 @@
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/humeatpie
|
||||
name = "Meat-pie"
|
||||
// var/hname = "" //TODO: need some way to find out that facts for the characters.
|
||||
// var/job = null
|
||||
icon_state = "meatpie"
|
||||
desc = "The best meatpies on station."
|
||||
trash = "plate"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/momeatpie
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatpie
|
||||
name = "Meat-pie"
|
||||
icon_state = "meatpie"
|
||||
desc = "A delicious meatpie."
|
||||
desc = "An old barber recipe, very delicious!"
|
||||
trash = "plate"
|
||||
New()
|
||||
..()
|
||||
@@ -572,24 +622,11 @@
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chaosdonut
|
||||
name = "Chaos Donut"
|
||||
desc = "Like life, it never quite tastes the same."
|
||||
icon_state = "donut1"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
bitesize = 2
|
||||
if(prob(30))
|
||||
src.icon_state = "donut2"
|
||||
src.name = "Frosted Chaos Donut"
|
||||
reagents.add_reagent("sprinkles", 3)
|
||||
reagents.add_reagent(pick("capsaicin", "frostoil", "nutriment"), 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/human/kabob
|
||||
name = "-kabob"
|
||||
icon_state = "kabob"
|
||||
desc = "A delicious kabob"
|
||||
desc = "A human meat, on a stick."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
@@ -604,7 +641,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeykabob
|
||||
name = "Meat-kabob"
|
||||
icon_state = "kabob"
|
||||
desc = "A delicious kabob"
|
||||
desc = "Delicious meat, on a stick."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
@@ -619,7 +656,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofukabob
|
||||
name = "Tofu-kabob"
|
||||
icon_state = "kabob"
|
||||
desc = "A delicious kabob"
|
||||
desc = "Vegan meat, on a stick."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
@@ -644,7 +681,7 @@
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/popcorn
|
||||
name = "Popcorm" //not a typo
|
||||
name = "Popcorn"
|
||||
desc = "Now let's find some cinema."
|
||||
icon_state = "popcorn"
|
||||
trash = "popcorn"
|
||||
@@ -802,7 +839,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff
|
||||
name = "Spacy Liberty Duff"
|
||||
desc = "Jello gelatin, if Alfred Hubbard were a confectionist" //TODO
|
||||
desc = "Jello gelatin, from Alfred Hubbard's cookbook"
|
||||
icon_state = "spacylibertyduff"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
@@ -836,7 +873,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatballsoup
|
||||
name = "Meatball soup"
|
||||
desc = "" //TODO
|
||||
desc = "You've got balls kid, BALLS!"
|
||||
icon_state = "meatballsoup"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
@@ -857,7 +894,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bloodsoup
|
||||
name = "Meatball soup"
|
||||
desc = "So very, very red."
|
||||
desc = "Smells like copper"
|
||||
icon_state = "meatballsoup"
|
||||
New()
|
||||
..()
|
||||
@@ -879,7 +916,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup
|
||||
name = "Vegetable soup"
|
||||
desc = "" //TODO
|
||||
desc = "A true vegan meal" //TODO
|
||||
icon_state = "vegetablesoup"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
@@ -890,7 +927,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/nettlesoup
|
||||
name = "Nettle soup"
|
||||
desc = "" //TODO
|
||||
desc = "To think, the botanist would've beat you to death with one of these."
|
||||
icon_state = "nettlesoup"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
@@ -902,27 +939,65 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mysterysoup
|
||||
name = "Mystery soup"
|
||||
desc = "A....strange, strange soup."
|
||||
desc = "The mystery is, why aren't you eating it?"
|
||||
icon_state = "mysterysoup"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 12)
|
||||
reagents.add_reagent("water", 7)
|
||||
bitesize = 4
|
||||
var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10)
|
||||
switch(mysteryselect)
|
||||
if(1)
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("capsaicin", 3)
|
||||
reagents.add_reagent("tomatojuice", 2)
|
||||
if(2)
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("frostoil", 3)
|
||||
reagents.add_reagent("tomatojuice", 2)
|
||||
if(3)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("water", 5)
|
||||
reagents.add_reagent("tricordrazine", 5)
|
||||
if(4)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
if(5)
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("banana", 10)
|
||||
if(6)
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("blood", 10)
|
||||
if(7)
|
||||
reagents.add_reagent("metroid", 10)
|
||||
reagents.add_reagent("water", 10)
|
||||
if(8)
|
||||
reagents.add_reagent("carbon", 10)
|
||||
reagents.add_reagent("toxin", 10)
|
||||
if(9)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("tomatojuice", 10)
|
||||
if(10)
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("tomatojuice", 5)
|
||||
reagents.add_reagent("imidazoline", 5)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/wishsoup
|
||||
name = "Wish Soup"
|
||||
desc = "I wish this was soup."
|
||||
icon = 'janitor.dmi'
|
||||
icon_state = "bucket"
|
||||
icon_state = "wishsoup"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("water", 20)
|
||||
reagents.add_reagent("water", 10)
|
||||
bitesize = 5
|
||||
if(prob(5))
|
||||
src.desc = "A wish come true!"
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hotchili
|
||||
name = "Hot Chili"
|
||||
desc = "" //TODO
|
||||
desc = "A five alarm Texan Chili!"
|
||||
icon_state = "hotchili"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
@@ -935,7 +1010,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/coldchili
|
||||
name = "Cold Chili"
|
||||
desc = "" //TODO
|
||||
desc = "This slush is barely a liquid!"
|
||||
icon_state = "coldchili"
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
@@ -1031,10 +1106,10 @@
|
||||
reagents.add_reagent("capsaicin", 6)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkiesdelight
|
||||
name = "Monkie's Delight"
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight
|
||||
name = "monkey's Delight"
|
||||
desc = "Eeee Eee!"
|
||||
icon_state = "monkiesdelight"
|
||||
icon_state = "monkeysdelight"
|
||||
trash = "tray"
|
||||
New()
|
||||
..()
|
||||
@@ -1072,8 +1147,8 @@
|
||||
trash = "plate"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
bitesize = 3
|
||||
reagents.add_reagent("nutriment", 11)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
|
||||
name = "Toasted Sandwich"
|
||||
@@ -1082,8 +1157,18 @@
|
||||
trash = "plate"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 9)
|
||||
bitesize = 3
|
||||
reagents.add_reagent("nutriment", 12)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grilledcheese
|
||||
name = "Grilled Cheese Sandwich"
|
||||
desc = "Goes great with Tomato soup!"
|
||||
icon_state = "toastedsandwich"
|
||||
trash = "plate"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 7)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tomatosoup
|
||||
name = "Tomato Soup"
|
||||
@@ -1092,10 +1177,9 @@
|
||||
trash = "snack_bowl"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("tomatojuice", 10)
|
||||
reagents.add_reagent("water", 10)
|
||||
bitesize = 5
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles
|
||||
name = "Roffle Waffles"
|
||||
@@ -1195,7 +1279,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spesslaw
|
||||
name = "Spesslaw"
|
||||
desc = "A lawyers favourate"
|
||||
desc = "A lawyers favourite"
|
||||
icon_state = "spesslaw"
|
||||
New()
|
||||
..()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user