Merge branch 'master' into surgery

Conflicts:
	code/WorkInProgress/surgery.dm
	code/modules/mob/living/carbon/carbon_defines.dm
This commit is contained in:
Chinsky
2013-01-15 13:42:13 +04:00
691 changed files with 46179 additions and 41058 deletions
+9 -7
View File
@@ -260,7 +260,7 @@ client
body += "<option value='?_src_=vars;makerobot=\ref[D]'>Make cyborg</option>"
body += "<option value='?_src_=vars;makemonkey=\ref[D]'>Make monkey</option>"
body += "<option value='?_src_=vars;makealien=\ref[D]'>Make alien</option>"
body += "<option value='?_src_=vars;makemetroid=\ref[D]'>Make metroid</option>"
body += "<option value='?_src_=vars;makeslime=\ref[D]'>Make slime</option>"
body += "<option value>---</option>"
body += "<option value='?_src_=vars;gib=\ref[D]'>Gib</option>"
if(isobj(D))
@@ -691,10 +691,10 @@ client
return
holder.Topic(href, list("makealien"=href_list["makealien"]))
else if(href_list["makemetroid"])
else if(href_list["makeslime"])
if(!check_rights(0)) return
var/mob/living/carbon/human/H = locate(href_list["makemetroid"])
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
return
@@ -703,7 +703,7 @@ client
if(!H)
usr << "Mob doesn't exist anymore"
return
holder.Topic(href, list("makemetroid"=href_list["makemetroid"]))
holder.Topic(href, list("makeslime"=href_list["makeslime"]))
else if(href_list["makeai"])
if(!check_rights(0)) return
@@ -727,10 +727,12 @@ client
usr << "This can only be done to instances of type /mob/living/carbon/human"
return
var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","metroid","plant","shadow","tajaran","skrell")
var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow","tajaran","skrell")
switch(new_mutantrace)
if(null) return
if("NONE") new_mutantrace = ""
if(null)
return
if("NONE")
new_mutantrace = ""
if(!H)
usr << "Mob doesn't exist anymore"
return
+9 -11
View File
@@ -44,7 +44,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
var/permeability_mod = 1//permeability modifier coefficient.
var/desc = null//description. Leave it null and this disease won't show in med records.
var/severity = null//severity descr
var/longevity = 250//time in "ticks" the virus stays in inanimate object (blood stains, corpses, etc). In syringes, bottles and beakers it stays infinitely.
var/longevity = 150//time in "ticks" the virus stays in inanimate object (blood stains, corpses, etc). In syringes, bottles and beakers it stays infinitely.
var/list/hidden = list(0, 0)
var/can_carry = 1 // If the disease allows "carriers".
var/age = 0 // age of the disease in the current mob
@@ -66,15 +66,13 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
if(stage > max_stages)
stage = max_stages
if(stage < max_stages && prob(stage_prob) && !cure_present) //now the disease shouldn't get back up to stage 4 in no time
stage++
//world << "up"
if(stage > 0 && (cure_present && prob(cure_chance)))
stage--
//world << "down"
if(!cure_present && prob(stage_prob)) //now the disease shouldn't get back up to stage 4 in no time
stage = min(stage + 1, max_stages)
else if(cure_present && prob(cure_chance))
stage = max(stage - 1, 1)
if(stage <= 1 && ((prob(1) && curable) || (cure_present && prob(cure_chance))))
// world << "Cured as stage act"
cure()
return
return
@@ -178,8 +176,8 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
if(resistance && !(type in affected_mob.resistances))
var/saved_type = "[type]"
affected_mob.resistances += text2path(saved_type)
if(istype(src, /datum/disease/alien_embryo)) //Get rid of the infection flag if it's a xeno embryo.
affected_mob.status_flags &= ~(XENO_HOST)
/*if(istype(src, /datum/disease/alien_embryo)) //Get rid of the infection flag if it's a xeno embryo.
affected_mob.status_flags &= ~(XENO_HOST)*/
affected_mob.viruses -= src //remove the datum from the list
del(src) //delete the datum to stop it processing
return
@@ -187,7 +185,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
/datum/disease/New(var/process=1, var/datum/disease/D)//process = 1 - adding the object to global list. List is processed by master controller.
cure_list = list(cure_id) // to add more cures, add more vars to this list in the actual disease's New()
if(process) // Viruses in list are considered active.
if(process) // Viruses in list are considered active.
active_diseases += src
initial_spread = spread
+9 -5
View File
@@ -94,15 +94,12 @@ var/list/advance_cures = list(
// Compares type then ID.
/datum/disease/advance/IsSame(var/datum/disease/advance/D)
if(!(istype(D, /datum/disease/advance)))
//error("Returning 0 because not same type.")
if(!(istype(D, /datum/disease/advance)))
return 0
//error("Comparing [src.GetDiseaseID()] [D.GetDiseaseID()]")
if(src.GetDiseaseID() != D.GetDiseaseID())
//error("Returing 0")
return 0
//error("Returning 1")
return 1
// To add special resistances.
@@ -416,4 +413,11 @@ var/list/advance_cures = list(
name_symptoms += S.name
message_admins("[key_name_admin(user)] has triggered a custom virus outbreak of [D.name]! It has these symptoms: [english_list(name_symptoms)]")
/*
/mob/verb/test()
for(var/datum/disease/D in active_diseases)
src << "<a href='?_src_=vars;Vars=\ref[D]'>[D.name] - [D.holder]</a>"
*/
#undef RANDOM_STARTING_LEVEL
@@ -86,7 +86,7 @@ Bonus
// They lose blood and health.
var/brute_dam = M.getBruteLoss()
if(brute_dam >= 50)
if(brute_dam < 50)
M.adjustBruteLoss(3)
var/turf/pos = get_turf(M)
+9 -4
View File
@@ -1,5 +1,7 @@
//affected_mob.contract_disease(new /datum/disease/alien_embryo)
//cael - retained this file for legacy reference, see code\modules\mob\living\carbon\alien\special\alien_embryo.dm for replacement
//Our own special process so that dead hosts still chestburst
/datum/disease/alien_embryo/process()
if(!holder) return
@@ -98,6 +100,9 @@
gibbed = 1
return
/datum/disease/alien_embryo/stage_change(var/old_stage)
RefreshInfectionImage()
/*----------------------------------------
Proc: RefreshInfectionImage()
Des: Removes all infection images from aliens and places an infection image on all infected mobs for aliens.
@@ -107,7 +112,7 @@ Des: Removes all infection images from aliens and places an infection image on a
for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client)
for(var/image/I in alien.client.images)
if(I.icon_state == "infected")
if(dd_hasprefix_case(I.icon_state, "infected"))
del(I)
for (var/mob/living/carbon/alien/alien in player_list)
@@ -115,7 +120,7 @@ Des: Removes all infection images from aliens and places an infection image on a
for (var/mob/living/carbon/C in mob_list)
if(C)
if (C.status_flags & XENO_HOST)
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected")
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]")
alien.client.images += I
return
@@ -128,7 +133,7 @@ Des: Checks if the passed mob (C) is infected with the alien egg, then gives eac
for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client)
if (C.status_flags & XENO_HOST)
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected")
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]")
alien.client.images += I
return
@@ -143,6 +148,6 @@ Des: Removes the alien infection image from all aliens in the world located in p
if (alien.client)
for(var/image/I in alien.client.images)
if(I.loc == C)
if(I.icon_state == "infected")
if(dd_hasprefix_case(I.icon_state, "infected"))
del(I)
return
+9 -4
View File
@@ -368,7 +368,7 @@ datum/mind
if(!def_value)//If it's a custom objective, it will be an empty string.
def_value = "custom"
var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "debrain", "protect", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "custom")
var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "debrain", "protect", "prevent", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "custom")
if (!new_obj_type) return
var/datum/objective/new_objective = null
@@ -406,6 +406,10 @@ datum/mind
//Will display as special role if the target is set as MODE. Ninjas/commandos/nuke ops.
new_objective.explanation_text = "[objective_type] [new_target:real_name], the [new_target:mind:assigned_role=="MODE" ? (new_target:mind:special_role) : (new_target:mind:assigned_role)]."
if ("prevent")
new_objective = new /datum/objective/block
new_objective.owner = src
if ("hijack")
new_objective = new /datum/objective/hijack
new_objective.owner = src
@@ -647,6 +651,7 @@ datum/mind
ticker.mode.changelings -= src
special_role = null
current.remove_changeling_powers()
current.verbs -= /datum/changeling/proc/EvolutionMenu
if(changeling) del(changeling)
current << "<FONT color='red' size = 3><B>You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!</B></FONT>"
log_admin("[key_name_admin(usr)] has de-changeling'ed [current].")
@@ -1139,10 +1144,10 @@ datum/mind
/mob/living/carbon/monkey/mind_initialize()
..()
//METROID
/mob/living/carbon/metroid/mind_initialize()
//slime
/mob/living/carbon/slime/mind_initialize()
..()
mind.assigned_role = "Metroid"
mind.assigned_role = "slime"
//XENO
/mob/living/carbon/alien/mind_initialize()
+4
View File
@@ -42,6 +42,10 @@
if(clear)
L+=T
if(!L.len)
usr <<"The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry."
return
var/attempt = 0
var/success = 0
while(!success)
+2 -2
View File
@@ -25,7 +25,7 @@
for(var/i=0,i<summon_amt,i++)
if(!targets.len)
break
var/summoned_object_type = text2path(pick(summon_type))
var/summoned_object_type = pick(summon_type)
var/spawn_place = pick(targets)
if(summon_ignore_prev_spawn_points)
targets -= spawn_place
@@ -58,7 +58,7 @@
name = "Dispense Wizard Justice"
desc = "This spell dispenses wizard justice."
summon_type = list("/obj/machinery/bot/ed209")
summon_type = list(/obj/machinery/bot/ed209)
summon_amt = 10
range = 3
newVars = list("emagged" = 1,"name" = "Wizard's Justicebot")
+86
View File
@@ -0,0 +1,86 @@
/obj/effect/proc_holder/spell/dumbfire
var/projectile_type = ""
var/activate_on_collision = 1
var/proj_icon = 'icons/obj/projectiles.dmi'
var/proj_icon_state = "spell"
var/proj_name = "a spell projectile"
var/proj_trail = 0 //if it leaves a trail
var/proj_trail_lifespan = 0 //deciseconds
var/proj_trail_icon = 'icons/obj/wizard.dmi'
var/proj_trail_icon_state = "trail"
var/proj_type = "/obj/effect/proc_holder/spell" //IMPORTANT use only subtypes of this
var/proj_insubstantial = 0 //if it can pass through dense objects or not
var/proj_trigger_range = 1 //the range from target at which the projectile triggers cast(target)
var/proj_lifespan = 100 //in deciseconds * proj_step_delay
var/proj_step_delay = 1 //lower = faster
/obj/effect/proc_holder/spell/dumbfire/choose_targets(mob/user = usr)
var/turf/T = get_turf(usr)
for(var/i = 1; i < range; i++)
var/turf/new_turf = get_step(T, usr.dir)
if(new_turf.density)
break
T = new_turf
perform(list(T))
/obj/effect/proc_holder/spell/dumbfire/cast(list/targets, mob/user = usr)
for(var/turf/target in targets)
spawn(0)
var/obj/effect/proc_holder/spell/targeted/projectile
if(istext(proj_type))
var/projectile_type = text2path(proj_type)
projectile = new projectile_type(user)
if(istype(proj_type,/obj/effect/proc_holder/spell))
projectile = new /obj/effect/proc_holder/spell/targeted/trigger(user)
projectile:linked_spells += proj_type
projectile.icon = proj_icon
projectile.icon_state = proj_icon_state
projectile.dir = get_dir(projectile, target)
projectile.name = proj_name
var/current_loc = usr.loc
projectile.loc = current_loc
for(var/i = 0,i < proj_lifespan,i++)
if(!projectile)
break
if(proj_insubstantial)
projectile.loc = get_step(projectile, projectile.dir)
else
step(projectile, projectile.dir)
if(projectile.loc == current_loc || i == proj_lifespan)
projectile.cast(current_loc)
break
var/mob/living/L = locate(/mob/living) in range(projectile, proj_trigger_range) - usr
if(L)
projectile.cast(L.loc)
break
if(proj_trail && projectile)
spawn(0)
if(projectile)
var/obj/effect/overlay/trail = new /obj/effect/overlay(projectile.loc)
trail.icon = proj_trail_icon
trail.icon_state = proj_trail_icon_state
trail.density = 0
spawn(proj_trail_lifespan)
del(trail)
current_loc = projectile.loc
sleep(proj_step_delay)
if(projectile)
del(projectile)
+5
View File
@@ -23,6 +23,11 @@
switch(destroys)
if("gib")
target.gib()
if("gib_brain")
if(ishuman(target) || ismonkey(target))
var/obj/item/brain/B = new(target.loc)
B.transfer_identity(target)
target.gib()
if("disintegrate")
target.dust()
+18 -17
View File
@@ -54,7 +54,7 @@
invocation_type = "shout"
range = 1
destroys = "gib"
destroys = "gib_brain"
sparks_spread = 1
sparks_amt = 4
@@ -138,8 +138,8 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/carp
name = "Summon Bigger Carp"
desc = "This spell conjures an elite carp."
name = "Summon Carp"
desc = "This spell conjures a simple carp."
school = "conjuration"
charge_max = 1200
@@ -148,7 +148,7 @@
invocation_type = "shout"
range = 1
summon_type = list("/obj/effect/critter/spesscarp/elite")
summon_type = list(/mob/living/simple_animal/hostile/carp)
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct
@@ -162,7 +162,7 @@
invocation_type = "none"
range = 0
summon_type = list("/obj/structure/constructshell")
summon_type = list(/obj/structure/constructshell)
/obj/effect/proc_holder/spell/aoe_turf/conjure/creature
@@ -177,7 +177,7 @@
summon_amt = 10
range = 3
summon_type = list("/obj/effect/critter/creature")
summon_type = list(/mob/living/simple_animal/hostile/creature)
/obj/effect/proc_holder/spell/targeted/trigger/blind
name = "Blind"
@@ -200,26 +200,27 @@
disabilities = 1
duration = 300
/obj/effect/proc_holder/spell/targeted/projectile/fireball
/obj/effect/proc_holder/spell/dumbfire/fireball
name = "Fireball"
desc = "This spell fires a fireball at a target and does not require wizard garb."
school = "evocation"
charge_max = 200
charge_max = 100
clothes_req = 0
invocation = "ONI SOMA"
invocation_type = "shout"
range = 20
proj_icon_state = "fireball"
proj_name = "a fireball"
proj_lingering = 1
proj_type = "/obj/effect/proc_holder/spell/targeted/trigger/fireball"
proj_type = "/obj/effect/proc_holder/spell/turf/fireball"
proj_lifespan = 200
proj_step_delay = 1
/obj/effect/proc_holder/spell/targeted/trigger/fireball
starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball","/obj/effect/proc_holder/spell/targeted/explosion/fireball")
/obj/effect/proc_holder/spell/turf/fireball/cast(var/turf/T)
explosion(T, -1, 1, 2, 3)
/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball
amt_dam_brute = 20
@@ -251,7 +252,7 @@
invocation = "none"
invocation_type = "none"
range = 0
summon_type = list("/turf/simulated/floor/engine/cult")
summon_type = list(/turf/simulated/floor/engine/cult)
centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall
@@ -264,7 +265,7 @@
invocation = "none"
invocation_type = "none"
range = 0
summon_type = list("/turf/simulated/wall/cult")
summon_type = list(/turf/simulated/wall/cult)
centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced
@@ -280,7 +281,7 @@
centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
delay = 50
summon_type = list("/turf/simulated/wall/r_wall")
summon_type = list(/turf/simulated/wall/r_wall)
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone
name = "Summon Soulstone"
@@ -293,7 +294,7 @@
invocation_type = "none"
range = 0
summon_type = list("/obj/item/device/soulstone")
summon_type = list(/obj/item/device/soulstone)
/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall
@@ -306,7 +307,7 @@
invocation = "none"
invocation_type = "none"
range = 0
summon_type = list("/obj/effect/forcefield")
summon_type = list(/obj/effect/forcefield)
summon_lifespan = 50
+19 -5
View File
@@ -4,8 +4,11 @@
var/dy
var/counter = 50 // to make the vars update during 1st call
var/rate
var/list/solars // for debugging purposes, references solars_list at the constructor
/datum/sun/New()
solars = solars_list
rate = rand(75,125)/100 // 75% - 125% of standard rotation
if(prob(50))
rate = -rate
@@ -41,12 +44,23 @@
dy = c / abs(s)
for(var/obj/machinery/power/tracker/T in machines)
T.set_angle(angle)
for(var/obj/machinery/power/M in solars_list)
if(!M.powernet)
solars_list.Remove(M)
continue
// Solar Tracker
if(istype(M, /obj/machinery/power/tracker))
var/obj/machinery/power/tracker/T = M
T.set_angle(angle)
// Solar Panel
else if(istype(M, /obj/machinery/power/solar))
var/obj/machinery/power/solar/S = M
if(S.control)
occlusion(S)
for(var/obj/machinery/power/solar/S in machines)
if(S.control)
occlusion(S)
// for a solar panel, trace towards sun to see if we're in shadow
+88 -29
View File
@@ -29,7 +29,7 @@
/datum/supply_packs/specialops
name = "Special Ops supplies"
contains = list(/obj/item/weapon/storage/emp_kit,
contains = list(/obj/item/weapon/storage/box/emps,
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/grenade/smokebomb,
@@ -56,7 +56,7 @@
/datum/supply_packs/monkey
name = "Monkey crate"
contains = list (/obj/item/weapon/storage/monkeycube_box)
contains = list (/obj/item/weapon/storage/box/monkeycubes)
cost = 20
containertype = /obj/structure/closet/crate/freezer
containername = "Monkey crate"
@@ -92,7 +92,7 @@
/datum/supply_packs/party
name = "Party equipment"
contains = list(/obj/item/weapon/storage/drinkingglasses,
contains = list(/obj/item/weapon/storage/box/drinkingglasses,
/obj/item/weapon/reagent_containers/food/drinks/shaker,
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron,
/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager,
@@ -101,9 +101,7 @@
/obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/cigpacket/dromedaryco,
/obj/item/weapon/lipstick/random)
/obj/item/weapon/reagent_containers/food/drinks/beer)
cost = 20
containertype = /obj/structure/closet/crate
containername = "Party equipment"
@@ -161,9 +159,9 @@
/datum/supply_packs/lightbulbs
name = "Replacement lights"
contains = list(/obj/item/weapon/storage/lightbox/mixed,
/obj/item/weapon/storage/lightbox/mixed,
/obj/item/weapon/storage/lightbox/mixed)
contains = list(/obj/item/weapon/storage/box/lights/mixed,
/obj/item/weapon/storage/box/lights/mixed,
/obj/item/weapon/storage/box/lights/mixed)
cost = 10
containertype = /obj/structure/closet/crate
containername = "Replacement lights"
@@ -247,6 +245,16 @@
containername = "Seeds crate"
access = access_hydroponics
/datum/supply_packs/weedcontrol
name = "Weed Control Crate"
contains = list(/obj/item/weapon/scythe,
/obj/item/clothing/mask/gas,
/obj/item/weapon/grenade/chem_grenade/antiweed,
/obj/item/weapon/grenade/chem_grenade/antiweed)
cost = 20
containertype = /obj/structure/closet/crate/secure/hydrosec
containername = "Weed control crate"
access = access_hydroponics
/datum/supply_packs/exoticseeds
name = "Exotic Seeds Crate"
@@ -274,7 +282,7 @@
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,
/obj/item/weapon/reagent_containers/glass/bottle/stoxin,
/obj/item/weapon/storage/syringes)
/obj/item/weapon/storage/box/syringes)
cost = 10
containertype = /obj/structure/closet/crate/medical
containername = "Medical crate"
@@ -291,8 +299,8 @@
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat,
/obj/item/weapon/reagent_containers/glass/bottle/brainrot,
/obj/item/weapon/reagent_containers/glass/bottle/hullucigen_virion,
/obj/item/weapon/storage/syringes,
/obj/item/weapon/storage/beakerbox,
/obj/item/weapon/storage/box/syringes,
/obj/item/weapon/storage/box/beakers,
/obj/item/weapon/reagent_containers/glass/bottle/mutagen)
containername = "Virus crate"
access = access_cmo
@@ -356,25 +364,59 @@
containertype = /obj/structure/largecrate
containername = "fuel tank crate"
/datum/supply_packs/solar
name = "Solar Pack crate"
contains = list(/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly, // 21 Solar Assemblies. 1 Extra for the controller
/obj/item/weapon/circuitboard/solar_control,
/obj/item/weapon/tracker_electronics,
/obj/item/weapon/paper/solar)
cost = 20
containertype = /obj/structure/closet/crate
containername = "solar pack crate"
/datum/supply_packs/engine
name = "Emitter crate"
contains = list(/obj/machinery/emitter,
/obj/machinery/emitter)
contains = list(/obj/machinery/power/emitter,
/obj/machinery/power/emitter)
cost = 10
containertype = /obj/structure/closet/crate/secure
containername = "Emitter crate"
access = access_heads
access = access_ce
/datum/supply_packs/engine/field_gen
name = "Field Generator crate"
contains = list(/obj/machinery/field_generator,
/obj/machinery/field_generator)
containertype = /obj/structure/closet/crate/secure
containername = "Field Generator crate"
access = access_ce
/datum/supply_packs/engine/sing_gen
name = "Singularity Generator crate"
contains = list(/obj/machinery/the_singularitygen)
containertype = /obj/structure/closet/crate/secure
containername = "Singularity Generator crate"
access = access_ce
/datum/supply_packs/engine/collector
name = "Collector crate"
@@ -393,7 +435,9 @@
/obj/structure/particle_accelerator/particle_emitter/right,
/obj/structure/particle_accelerator/power_box,
/obj/structure/particle_accelerator/end_cap)
containertype = /obj/structure/closet/crate/secure
containername = "Particle Accelerator crate"
access = access_ce
/datum/supply_packs/mecha_ripley
name = "Circuit Crate (\"Ripley\" APLU)"
@@ -449,7 +493,7 @@
cost = 10
containertype = /obj/structure/closet/crate/secure/plasma
containername = "Plasma assembly crate"
access = access_tox
access = access_tox_storage
/datum/supply_packs/weapons
name = "Weapons crate"
@@ -459,8 +503,8 @@
/obj/item/weapon/gun/energy/laser,
/obj/item/weapon/gun/energy/taser,
/obj/item/weapon/gun/energy/taser,
/obj/item/weapon/storage/flashbang_kit,
/obj/item/weapon/storage/flashbang_kit)
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/storage/box/flashbangs)
cost = 30
containertype = /obj/structure/closet/crate/secure/weapon
containername = "Weapons crate"
@@ -499,9 +543,9 @@
/obj/item/weapon/shield/riot,
/obj/item/weapon/shield/riot,
/obj/item/weapon/shield/riot,
/obj/item/weapon/storage/flashbang_kit,
/obj/item/weapon/storage/flashbang_kit,
/obj/item/weapon/storage/flashbang_kit,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/handcuffs,
/obj/item/weapon/handcuffs,
/obj/item/weapon/handcuffs,
@@ -567,6 +611,17 @@
containertype = /obj/structure/closet/crate/secure/gear
containername = "Security Barriers crate"
/datum/supply_packs/securitybarriers
name = "Shield Generators"
contains = list(/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen)
cost = 20
containertype = /obj/structure/closet/crate/secure
containername = "Shield Generators crate"
access = access_teleporter
/datum/supply_packs/randomised
var/num_contained = 3 //number of items picked to be contained in a randomised crate
contains = list(/obj/item/clothing/head/collectable/chef,
@@ -584,7 +639,7 @@
/obj/item/clothing/head/collectable/HoS,
/obj/item/clothing/head/collectable/thunderdome,
/obj/item/clothing/head/collectable/swat,
/obj/item/clothing/head/collectable/metroid,
/obj/item/clothing/head/collectable/slime,
/obj/item/clothing/head/collectable/police,
/obj/item/clothing/head/collectable/slime,
/obj/item/clothing/head/collectable/xenom,
@@ -600,7 +655,7 @@
/datum/supply_packs/artscrafts
name = "Arts and Crafts supplies"
contains = list(/obj/item/weapon/storage/crayonbox,
contains = list(/obj/item/weapon/storage/fancy/crayons,
/obj/item/device/camera,
/obj/item/device/camera_film,
/obj/item/device/camera_film,
@@ -625,10 +680,14 @@
/datum/supply_packs/randomised/contraband
num_contained = 5
contains = list(/obj/item/seeds/bloodtomatoseed,
/obj/item/weapon/storage/pill_bottle/zoom,
/obj/item/weapon/storage/pill_bottle/happy,
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe)
contains = list(/obj/item/weapon/contraband/poster,
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
/obj/item/weapon/lipstick/random,
/obj/item/seeds/bloodtomatoseed,
/obj/item/weapon/storage/pill_bottle/zoom,
/obj/item/weapon/storage/pill_bottle/happy,
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe)
name = "Contraband crate"
cost = 30
containertype = /obj/structure/closet/crate
@@ -674,8 +733,8 @@
name = "Sterile equipment crate"
contains = list(/obj/item/clothing/under/rank/medical/green,
/obj/item/clothing/under/rank/medical/green,
/obj/item/weapon/storage/stma_kit,
/obj/item/weapon/storage/lglo_kit)
/obj/item/weapon/storage/box/masks,
/obj/item/weapon/storage/box/gloves)
cost = 10
containertype = "/obj/structure/closet/crate"
containername = "Sterile equipment crate"
-13
View File
@@ -1,13 +0,0 @@
/datum/vote
var/voting = 0 // true if currently voting
var/nextvotetime = 0 // time at which next vote can be started
var/votetime = 60 // time at which voting will end
var/mode = 0 // 0 = restart vote, 1 = mode vote
// modes which can be voted for
var/winner = null // the vote winner
var/customname
var/choices = list()
var/enteringchoices = 0
var/instant_restart = 0