mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-29 08:11:11 +01:00
@@ -1,5 +1,6 @@
|
||||
#define SPECIES_WHITELIST_SELECTABLE 0x20 // Can select and customize, but not join as
|
||||
|
||||
#define LANGUAGE_SLAVIC "Pan-Slavic"
|
||||
#define LANGUAGE_BIRDSONG "Birdsong"
|
||||
#define LANGUAGE_SAGARU "Sagaru"
|
||||
#define LANGUAGE_CANILUNZT "Canilunzt"
|
||||
|
||||
@@ -44,6 +44,14 @@
|
||||
name = OUTFIT_JOB_NAME("Cook")
|
||||
id_pda_assignment = "Cook"
|
||||
|
||||
// Rykka adds Server Outfit
|
||||
|
||||
/decl/hierarchy/outfit/job/service/server
|
||||
name = OUTFIT_JOB_NAME("Server")
|
||||
uniform = /obj/item/clothing/under/waiter
|
||||
|
||||
// End Outfit addition
|
||||
|
||||
/decl/hierarchy/outfit/job/service/gardener
|
||||
name = OUTFIT_JOB_NAME("Gardener")
|
||||
uniform = /obj/item/clothing/under/rank/hydroponics
|
||||
|
||||
@@ -2738,4 +2738,4 @@ var/list/the_station_areas = list (
|
||||
icon_state = "yellow"
|
||||
luminosity = 1
|
||||
dynamic_lighting = 0
|
||||
requires_power = 0
|
||||
requires_power = 0
|
||||
@@ -6,13 +6,13 @@
|
||||
faction = "Station"
|
||||
total_positions = -1
|
||||
spawn_positions = -1
|
||||
supervisors = "the staff from the departmen you're interning in"
|
||||
supervisors = "the staff from the department you're interning in"
|
||||
selection_color = "#555555"
|
||||
economic_modifier = 2
|
||||
access = list() //See /datum/job/intern/get_access()
|
||||
minimal_access = list() //See /datum/job/intern/get_access()
|
||||
outfit_type = /decl/hierarchy/outfit/job/assistant/intern
|
||||
alt_titles = list("Apprentice Engineer","Medical Intern","Lab Assistant","Security Cadet","Jr. Cargo Tech", "Jr. Explorer") //VOREStation Edit
|
||||
alt_titles = list("Apprentice Engineer","Medical Intern","Lab Assistant","Security Cadet","Jr. Cargo Tech", "Jr. Explorer", "Server" = /decl/hierarchy/outfit/job/service/server)
|
||||
timeoff_factor = 0 // Interns, noh
|
||||
|
||||
/datum/job/intern/New()
|
||||
|
||||
@@ -267,8 +267,8 @@
|
||||
data["access"] = !isLocked(user)
|
||||
data["locked"] = locked
|
||||
data["enabled"] = enabled
|
||||
data["is_lethal"] = 1
|
||||
data["lethal"] = lethal
|
||||
//data["is_lethal"] = 1 // VOREStation Removal of "Lethal" setting - it does nothing. Rykka did dis.
|
||||
//data["lethal"] = lethal // VOREStation Removal of "Lethal" setting - it does nothing. Rykka did dis.
|
||||
|
||||
if(data["access"])
|
||||
var/settings[0]
|
||||
@@ -291,8 +291,8 @@
|
||||
var/value = text2num(href_list["value"])
|
||||
if(href_list["command"] == "enable")
|
||||
enabled = value
|
||||
else if(href_list["command"] == "lethal")
|
||||
lethal = value
|
||||
//else if(href_list["command"] == "lethal") // VOREStation Removal of "Lethal" setting - it does nothing. Rykka did dis.
|
||||
//lethal = value // VOREStation Removal of "Lethal" setting - it does nothing. Rykka did dis.
|
||||
else if(href_list["command"] == "check_synth")
|
||||
check_synth = value
|
||||
else if(href_list["command"] == "check_weapons")
|
||||
@@ -1138,4 +1138,4 @@
|
||||
|
||||
#undef TURRET_PRIORITY_TARGET
|
||||
#undef TURRET_SECONDARY_TARGET
|
||||
#undef TURRET_NOT_TARGET
|
||||
#undef TURRET_NOT_TARGET
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
active_power_usage = 40000 //40 kW
|
||||
var/efficiency = 40000 //will provide the modified power rate when upgraded
|
||||
var/obj/item/charging = null
|
||||
var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/modular_computer, /obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/ammo_casing/nsfw_batt) //VOREStation Add - NSFW Batteries
|
||||
var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/modular_computer, /obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/ammo_casing/microbattery) //VOREStation Add - NSFW Batteries
|
||||
var/icon_state_charged = "recharger2"
|
||||
var/icon_state_charging = "recharger1"
|
||||
var/icon_state_idle = "recharger0" //also when unpowered
|
||||
@@ -72,7 +72,7 @@
|
||||
if(EW.use_external_power)
|
||||
to_chat(user, "<span class='notice'>\The [EW] has no recharge port.</span>")
|
||||
return
|
||||
else if(!G.get_cell() && !istype(G, /obj/item/ammo_casing/nsfw_batt)) //VOREStation Edit: NSFW charging
|
||||
else if(!G.get_cell() && !istype(G, /obj/item/ammo_casing/microbattery)) //VOREStation Edit: NSFW charging
|
||||
to_chat(user, "\The [G] does not have a battery installed.")
|
||||
return
|
||||
|
||||
@@ -157,8 +157,8 @@
|
||||
update_use_power(1)
|
||||
|
||||
//VOREStation Add - NSFW Batteries
|
||||
else if(istype(charging, /obj/item/ammo_casing/nsfw_batt))
|
||||
var/obj/item/ammo_casing/nsfw_batt/batt = charging
|
||||
else if(istype(charging, /obj/item/ammo_casing/microbattery))
|
||||
var/obj/item/ammo_casing/microbattery/batt = charging
|
||||
if(batt.shots_left >= initial(batt.shots_left))
|
||||
icon_state = icon_state_charged
|
||||
update_use_power(1)
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
invisibility = 99 // nope cant see this shit
|
||||
plane = ABOVE_PLANE
|
||||
anchored = 1
|
||||
icon = 'icons/mob/screen1.dmi' //VS Edit
|
||||
icon_state = "centermarker" //VS Edit
|
||||
|
||||
/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A)
|
||||
return 0
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
if((slot_flags & SLOT_BACK) && M.get_equipped_item(slot_back) == src)
|
||||
return 1
|
||||
if((slot_flags & SLOT_BELT) && M.get_equipped_item(slot_belt) == src)
|
||||
if((slot_flags & SLOT_BACK) && M.get_equipped_item(slot_s_store) == src)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
@@ -26,10 +26,10 @@
|
||||
|
||||
/obj/item/gunbox/blueshield/secondary/attack_self(mob/living/user)
|
||||
var/list/options = list()
|
||||
options["NSFW Variable Pistol(Microbattery)"] = list(/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos)
|
||||
options["NSCW Variable Pistol(Microbattery)"] = list(/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos)
|
||||
options["E-Gun (Weapon Cell)"] = list(/obj/item/weapon/gun/energy/gun, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon)
|
||||
options["Consul Revolver (.44)"] = list(/obj/item/weapon/gun/projectile/revolver/consul, /obj/item/ammo_magazine/s44, /obj/item/ammo_magazine/s44, /obj/item/ammo_magazine/s44/rubber)
|
||||
var/choice = input(user,"Would you prefer an NSFW, e-gun or a revolver?") as null|anything in options
|
||||
var/choice = input(user,"Would you prefer an NSCW, e-gun or a revolver?") as null|anything in options
|
||||
if(src && choice)
|
||||
var/list/things_to_spawn = options[choice]
|
||||
for(var/new_type in things_to_spawn) // Spawn all the things, the gun and the ammo.
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
R.add_language(LANGUAGE_ECUREUILIAN, 1)
|
||||
R.add_language(LANGUAGE_DAEMON, 1)
|
||||
R.add_language(LANGUAGE_ENOCHIAN, 1)
|
||||
R.add_language(LANGUAGE_SLAVIC, 1)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -29,18 +29,21 @@
|
||||
if (istype(M,/mob/living/carbon/human)) //Repairing robolimbs
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/S = H.get_organ(user.zone_sel.selecting)
|
||||
|
||||
//VOREStation Edit Start
|
||||
if (S && (S.robotic >= ORGAN_ROBOT))
|
||||
if(!S.get_damage())
|
||||
user << "<span class='notice'>Nothing to fix here.</span>"
|
||||
to_chat(user, "<span class='notice'>Nothing to fix here.</span>")
|
||||
else if((S.open < 2) && (S.brute_dam + S.burn_dam >= S.min_broken_damage) && !repair_external)
|
||||
to_chat(user, "<span class='notice'>The damage is too extensive for this nanite swarm to handle.</span>")
|
||||
else if(can_use(1))
|
||||
user.setClickCooldown(user.get_attack_speed(src))
|
||||
if(S.open >= 2)
|
||||
if(do_after(user,5 * toolspeed))
|
||||
S.heal_damage(20, 20, robo_repair = 1)
|
||||
S.heal_damage(restoration_internal, restoration_internal, robo_repair = 1)
|
||||
else if(do_after(user,5 * toolspeed))
|
||||
S.heal_damage(10,10, robo_repair =1)
|
||||
S.heal_damage(restoration_external,restoration_external, robo_repair =1)
|
||||
H.updatehealth()
|
||||
use(1)
|
||||
user.visible_message("<span class='notice'>\The [user] applies some nanite paste on [user != M ? "[M]'s [S.name]" : "[S]"] with [src].</span>",\
|
||||
"<span class='notice'>You apply some nanite paste on [user == M ? "your" : "[M]'s"] [S.name].</span>")
|
||||
//VOREStation Edit End
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
/obj/item/stack/nanopaste
|
||||
var/restoration_external = 5
|
||||
var/restoration_internal = 20
|
||||
var/repair_external = FALSE
|
||||
|
||||
/obj/item/stack/nanopaste/advanced
|
||||
name = "advanced nanopaste"
|
||||
singular_name = "advanced nanite swarm"
|
||||
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery. These ones are capable of restoring condition even of most thrashed robotic parts"
|
||||
icon = 'icons/obj/stacks_vr.dmi'
|
||||
icon_state = "adv_nanopaste"
|
||||
restoration_external = 10
|
||||
repair_external = TRUE
|
||||
@@ -33,6 +33,7 @@
|
||||
source.add_language(LANGUAGE_BIRDSONG)
|
||||
source.add_language(LANGUAGE_SAGARU)
|
||||
source.add_language(LANGUAGE_CANILUNZT)
|
||||
source.add_language(LANGUAGE_SLAVIC)
|
||||
source.add_language(LANGUAGE_SOL_COMMON) //In case they're giving a xenomorph an implant or something.
|
||||
|
||||
/obj/item/weapon/implant/vrlanguage/post_implant(mob/source)
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
prob(3);/obj/item/weapon/reagent_containers/syringe/antiviral,
|
||||
prob(5);/obj/item/weapon/reagent_containers/syringe/inaprovaline,
|
||||
prob(1);/obj/item/weapon/reagent_containers/hypospray,
|
||||
prob(1);/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med,
|
||||
prob(1);/obj/item/weapon/storage/box/freezer,
|
||||
prob(2);/obj/item/stack/nanopaste)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
layer = MOB_LAYER
|
||||
plane = MOB_PLANE
|
||||
explosion_resistance = 5
|
||||
var/can_pass_lying = 1
|
||||
var/can_pass_lying = TRUE
|
||||
var/list/mobs_can_pass = list(
|
||||
/mob/living/bot,
|
||||
/mob/living/simple_mob/slime/xenobio,
|
||||
@@ -37,7 +37,7 @@
|
||||
if (istype(A, /obj/structure/bed) && B.has_buckled_mobs())//if it's a bed/chair and someone is buckled, it will not pass
|
||||
return 0
|
||||
|
||||
if(istype(A, /obj/vehicle)) //no vehicles
|
||||
if(istype(A, /obj/vehicle) || istype (A, /obj/mecha)) //no vehicles
|
||||
return 0
|
||||
|
||||
var/mob/living/M = A
|
||||
@@ -66,4 +66,4 @@
|
||||
name = "airtight plastic flaps"
|
||||
desc = "Heavy duty, airtight, plastic flaps. Have extra safety installed, preventing passage of living beings."
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
can_pass_lying = 0
|
||||
can_pass_lying = FALSE
|
||||
@@ -0,0 +1,30 @@
|
||||
//Atmosphere properties
|
||||
#define VIRGO3B_ONE_ATMOSPHERE 82.4 //kPa
|
||||
#define VIRGO3B_AVG_TEMP 234 //kelvin
|
||||
|
||||
#define VIRGO3B_PER_N2 0.16 //percent
|
||||
#define VIRGO3B_PER_O2 0.00
|
||||
#define VIRGO3B_PER_N2O 0.00 //Currently no capacity to 'start' a turf with this. See turf.dm
|
||||
#define VIRGO3B_PER_CO2 0.12
|
||||
#define VIRGO3B_PER_PHORON 0.72
|
||||
|
||||
//Math only beyond this point
|
||||
#define VIRGO3B_MOL_PER_TURF (VIRGO3B_ONE_ATMOSPHERE*CELL_VOLUME/(VIRGO3B_AVG_TEMP*R_IDEAL_GAS_EQUATION))
|
||||
#define VIRGO3B_MOL_N2 (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_N2)
|
||||
#define VIRGO3B_MOL_O2 (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_O2)
|
||||
#define VIRGO3B_MOL_N2O (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_N2O)
|
||||
#define VIRGO3B_MOL_CO2 (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_CO2)
|
||||
#define VIRGO3B_MOL_PHORON (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_PHORON)
|
||||
|
||||
//Turfmakers
|
||||
#define VIRGO3B_SET_ATMOS nitrogen=VIRGO3B_MOL_N2;oxygen=VIRGO3B_MOL_O2;carbon_dioxide=VIRGO3B_MOL_CO2;phoron=VIRGO3B_MOL_PHORON;temperature=VIRGO3B_AVG_TEMP
|
||||
#define VIRGO3B_TURF_CREATE(x) x/virgo3b/nitrogen=VIRGO3B_MOL_N2;x/virgo3b/oxygen=VIRGO3B_MOL_O2;x/virgo3b/carbon_dioxide=VIRGO3B_MOL_CO2;x/virgo3b/phoron=VIRGO3B_MOL_PHORON;x/virgo3b/temperature=VIRGO3B_AVG_TEMP;x/virgo3b/outdoors=TRUE;x/virgo3b/update_graphic(list/graphic_add = null, list/graphic_remove = null) return 0
|
||||
#define VIRGO3B_TURF_CREATE_UN(x) x/virgo3b/nitrogen=VIRGO3B_MOL_N2;x/virgo3b/oxygen=VIRGO3B_MOL_O2;x/virgo3b/carbon_dioxide=VIRGO3B_MOL_CO2;x/virgo3b/phoron=VIRGO3B_MOL_PHORON;x/virgo3b/temperature=VIRGO3B_AVG_TEMP
|
||||
|
||||
// This is a wall you surround the area of your "planet" with, that makes the atmosphere inside stay within bounds, even if canisters
|
||||
// are opened or other strange things occur.
|
||||
/turf/unsimulated/wall/planetary/virgo3b
|
||||
name = "facility wall"
|
||||
desc = "An eight-meter tall carbyne wall. For when the wildlife on your planet is mostly militant megacorps."
|
||||
alpha = 0xFF
|
||||
VIRGO3B_SET_ATMOS
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "riveted"
|
||||
opacity = 1
|
||||
density = 1
|
||||
blocks_air = TRUE
|
||||
|
||||
/turf/unsimulated/wall/fakeglass
|
||||
name = "window"
|
||||
|
||||
@@ -703,7 +703,7 @@
|
||||
"if told you I'd have to kill you",
|
||||
"... wait, why am I even telling you this? Just let me pass",
|
||||
"stop asking questions")
|
||||
/* Space foxes: deleted. Keeping them commented for historical reasons.
|
||||
/* Space foxes: deleted. Keeping them commented for historical reasons. -YW
|
||||
/datum/lore/organization/gov/kitsuhana
|
||||
name = "Kitsuhana Heavy Industries"
|
||||
short_name = "Kitsuhana"
|
||||
|
||||
@@ -144,13 +144,13 @@
|
||||
/datum/gear/fluff/sariU_disk
|
||||
path = /obj/item/weapon/disk/limb/eggnerdltd
|
||||
display_name = "Sari-U's Eggnerd Disk"
|
||||
ckeywhitelist = list("cross_exonar")
|
||||
ckeywhitelist = list("crossexonar")
|
||||
character_name = list("Sari-U")
|
||||
|
||||
/datum/gear/fluff/sariE_disk
|
||||
path = /obj/item/weapon/disk/limb/eggnerdltd
|
||||
display_name = "Sari-E's Eggnerd Disk"
|
||||
ckeywhitelist = list("cross_exonar")
|
||||
ckeywhitelist = list("crossexonar")
|
||||
character_name = list("Sari-E")
|
||||
|
||||
// D CKEYS
|
||||
@@ -494,14 +494,14 @@
|
||||
/datum/gear/fluff/resh_uniform
|
||||
path = /obj/item/clothing/suit/security/navyhos
|
||||
display_name = "Resh's HoS Uniform"
|
||||
ckeywhitelist = list("mr_signmeup")
|
||||
ckeywhitelist = list("mrsignmeup")
|
||||
character_name = list("Reshskakskakss Seekiseekis")
|
||||
allowed_roles = list("Head of Security")
|
||||
|
||||
/datum/gear/fluff/daniel_medal
|
||||
path = /obj/item/clothing/accessory/medal/conduct
|
||||
display_name = "Daniel's Conduct Medal"
|
||||
ckeywhitelist = list("mr_signmeup")
|
||||
ckeywhitelist = list("mrsignmeup")
|
||||
character_name = list("Daniel Fisher")
|
||||
|
||||
// N CKEYS
|
||||
|
||||
@@ -17,36 +17,36 @@
|
||||
|
||||
//Area allowing backpacks to be placed on rigsuits.
|
||||
/obj/item/weapon/rig/vox
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/combat
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/ert
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/tool/crowbar, \
|
||||
/obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/device/multitool, \
|
||||
/obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \
|
||||
/obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack)
|
||||
/obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/light/ninja
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/cell, /obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/cell, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/merc
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs, /obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/ce
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd,/obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/medical
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller,/obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/hazmat
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/measuring_tape,/obj/item/device/ano_scanner,/obj/item/device/depth_scanner,/obj/item/device/core_sampler,/obj/item/device/gps,/obj/item/device/beacon_locator,/obj/item/device/radio/beacon,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/fossils,/obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/measuring_tape,/obj/item/device/ano_scanner,/obj/item/device/depth_scanner,/obj/item/device/core_sampler,/obj/item/device/gps,/obj/item/device/beacon_locator,/obj/item/device/radio/beacon,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/fossils,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/hazard
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/industrial
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd,/obj/item/weapon/storage/backpack)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
|
||||
/obj/item/weapon/rig/military
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/handcuffs, \
|
||||
/obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/weldingtool, /obj/item/weapon/tool, /obj/item/device/multitool, \
|
||||
/obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \
|
||||
/obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/device/suit_cooling_unit, /obj/item/weapon/storage/backpack)
|
||||
/obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/device/suit_cooling_unit, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
/obj/item/weapon/rig/pmc
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/tool/crowbar, \
|
||||
/obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/device/multitool, \
|
||||
/obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \
|
||||
/obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack)
|
||||
/obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio)
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
fruit = list("cabbage" = 1)
|
||||
reagents = list("rice" = 20)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi
|
||||
|
||||
|
||||
@@ -5,7 +5,13 @@
|
||||
reusable = TRUE
|
||||
var/datum/planet/target_planet
|
||||
|
||||
var/list/banned_weathers = list() //VOREStation Temp Edit
|
||||
var/list/banned_weathers = list(
|
||||
//VOREStation Edit - Virgo 3B Weather,
|
||||
/datum/weather/virgo3b/ash_storm,
|
||||
/datum/weather/virgo3b/emberfall,
|
||||
/datum/weather/virgo3b/blood_moon,
|
||||
/datum/weather/virgo3b/fallout)
|
||||
//VOREStation Edit End
|
||||
var/list/possible_weathers = list()
|
||||
|
||||
/datum/gm_action/planet_weather_shift/set_up()
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
recipes += new/datum/stack_recipe("roller bed", /obj/item/roller, 5, time = 30, on_floor = 1)
|
||||
recipes += new/datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 10)
|
||||
|
||||
/material/sandstone/generate_recipes()
|
||||
/material/stone/generate_recipes()
|
||||
..()
|
||||
recipes += new/datum/stack_recipe("planting bed", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1)
|
||||
|
||||
@@ -127,7 +127,6 @@
|
||||
recipes += new/datum/stack_recipe("freezer floor tile", /obj/item/stack/tile/floor/freezer, 1, 4, 20)
|
||||
recipes += new/datum/stack_recipe("shower curtain", /obj/structure/curtain, 4, time = 15, one_per_turf = 1, on_floor = 1)
|
||||
recipes += new/datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 4, time = 25, one_per_turf = 1, on_floor = 1)
|
||||
recipes += new/datum/stack_recipe("airtight plastic flaps", /obj/structure/plasticflaps/mining, 5, time = 25, one_per_turf = 1, on_floor = 1)
|
||||
recipes += new/datum/stack_recipe("water-cooler", /obj/structure/reagent_dispensers/water_cooler, 4, time = 10, one_per_turf = 1, on_floor = 1)
|
||||
recipes += new/datum/stack_recipe("lampshade", /obj/item/weapon/lampshade, 1, time = 1)
|
||||
recipes += new/datum/stack_recipe("plastic net", /obj/item/weapon/material/fishing_net, 25, time = 1 MINUTE)
|
||||
|
||||
@@ -92,6 +92,19 @@
|
||||
"uhk","zir","sc'orth","sc'er","thc'yek","th'zirk","th'esk","k'ayek","ka'mil","sc'","ik'yir","yol","kig","k'zit","'","'","zrk","krg","isk'yet","na'k",
|
||||
"sc'azz","th'sc","nil","n'ahk","sc'yeth","aur'sk","iy'it","azzg","a'","i'","o'","u'","a","i","o","u","zz","kr","ak","nrk","tzzk","bz","xic'","k'lax'","histh")
|
||||
|
||||
/datum/language/human/slavic
|
||||
name = LANGUAGE_SLAVIC
|
||||
desc = "The official language of the Independent Colonial Confederation of Gilgamesh, originally established in 2122 by the short-lived United Slavic Confederation on Earth."
|
||||
colour = "solcom"
|
||||
key = "r"
|
||||
|
||||
syllables = list(
|
||||
"rus", "zem", "ave", "groz", "ski", "ska", "ven", "konst", "pol", "lin", "svy",
|
||||
"danya", "da", "mied", "zan", "das", "krem", "myka", "to", "st", "no", "na", "ni",
|
||||
"ko", "ne", "en", "po", "ra", "li", "on", "byl", "cto", "eni", "ost", "ol", "ego",
|
||||
"ver", "stv", "pro"
|
||||
)
|
||||
|
||||
/datum/language/unathi
|
||||
flags = 0
|
||||
/datum/language/tajaran
|
||||
|
||||
@@ -1281,6 +1281,7 @@ default behaviour is:
|
||||
var/turf/end_T = get_turf(target)
|
||||
if(end_T)
|
||||
add_attack_logs(src,M,"Thrown via grab to [end_T.x],[end_T.y],[end_T.z]")
|
||||
src.drop_from_inventory(G) //VOREStation Addition: grab exploit fix
|
||||
|
||||
src.drop_from_inventory(item)
|
||||
if(!item || !isturf(item.loc))
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
/mob/living/silicon/robot/drone
|
||||
mob_size = MOB_SMALL
|
||||
@@ -12,6 +12,8 @@
|
||||
/mob/living/simple_mob/animal/passive/mouse/attack_hand(mob/living/hander)
|
||||
if(hander.a_intent == I_HELP) //if lime intent
|
||||
get_scooped(hander) //get scooped
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/holder/mouse/attack_self(var/mob/U)
|
||||
for(var/mob/living/simple_mob/M in src.contents)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
/mob/living/simple_mob/humanoid/pirate
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
|
||||
/mob/living/simple_mob/humanoid/pirate/ranged
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged
|
||||
|
||||
/mob/living/simple_mob/humanoid/russian
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
|
||||
/mob/living/simple_mob/humanoid/russian/ranged
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged
|
||||
@@ -9,14 +9,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null
|
||||
amounts of both oxygen and nitrogen. Fortunately, the oxygen is not enough to be combustible in any meaningful way, however \
|
||||
the phoron is desirable by many corporations, including NanoTrasen."
|
||||
current_time = new /datum/time/virgo3b()
|
||||
expected_z_levels = list(
|
||||
Z_LEVEL_SURFACE_LOW,
|
||||
Z_LEVEL_SURFACE_MID,
|
||||
Z_LEVEL_SURFACE_HIGH,
|
||||
Z_LEVEL_SURFACE_MINE,
|
||||
Z_LEVEL_SOLARS,
|
||||
Z_LEVEL_PLAINS
|
||||
)
|
||||
// expected_z_levels = list(1) // This is defined elsewhere.
|
||||
planetary_wall_type = /turf/unsimulated/wall/planetary/virgo3b
|
||||
|
||||
/datum/planet/virgo3b/New()
|
||||
@@ -692,18 +692,18 @@
|
||||
var/obj/item/projectile/in_chamber = consume_next_projectile()
|
||||
if (istype(in_chamber))
|
||||
user.visible_message("<span class = 'warning'>[user] pulls the trigger.</span>")
|
||||
play_fire_sound()
|
||||
play_fire_sound(M, in_chamber)
|
||||
if(istype(in_chamber, /obj/item/projectile/beam/lasertag))
|
||||
user.show_message("<span class = 'warning'>You feel rather silly, trying to commit suicide with a toy.</span>")
|
||||
mouthshoot = 0
|
||||
return
|
||||
|
||||
in_chamber.on_hit(M)
|
||||
if (in_chamber.damage_type != HALLOSS)
|
||||
if(in_chamber.damage_type != HALLOSS && !in_chamber.nodamage)
|
||||
log_and_message_admins("[key_name(user)] commited suicide using \a [src]")
|
||||
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1)
|
||||
user.death()
|
||||
else
|
||||
else if(in_chamber.damage_type == HALLOSS)
|
||||
to_chat(user, "<span class = 'notice'>Ow...</span>")
|
||||
user.apply_effect(110,AGONY,0)
|
||||
qdel(in_chamber)
|
||||
|
||||
@@ -12,30 +12,7 @@
|
||||
req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_DATA = 4, TECH_ENGINEERING = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
|
||||
build_path = /obj/item/weapon/implantcase/backup
|
||||
|
||||
/datum/design/item/implant/sizecontrol
|
||||
name = "Size control implant"
|
||||
id = "implant_size"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_DATA = 4, TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "silver" = 3000)
|
||||
build_path = /obj/item/weapon/implanter/sizecontrol
|
||||
sort_string = "TAAAA"
|
||||
|
||||
/datum/design/item/weapon/sizegun
|
||||
name = "Size gun"
|
||||
id = "sizegun"
|
||||
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000)
|
||||
build_path = /obj/item/weapon/gun/energy/sizegun
|
||||
sort_string = "TAAAB"
|
||||
|
||||
/datum/design/item/bluespace_jumpsuit
|
||||
name = "Bluespace jumpsuit"
|
||||
id = "bsjumpsuit"
|
||||
req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000)
|
||||
build_path = /obj/item/clothing/under/bluespace
|
||||
sort_string = "TAAAC"
|
||||
sort_string = "SAAAA"
|
||||
|
||||
/datum/design/item/sleevemate
|
||||
name = "SleeveMate 3700"
|
||||
@@ -43,7 +20,7 @@
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000)
|
||||
build_path = /obj/item/device/sleevemate
|
||||
sort_string = "TAAAD"
|
||||
sort_string = "SAAAB"
|
||||
|
||||
/datum/design/item/bodysnatcher
|
||||
name = "Body Snatcher"
|
||||
@@ -51,6 +28,31 @@
|
||||
req_tech = list(TECH_MAGNET = 3, TECH_BIO = 3, TECH_ILLEGAL = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000)
|
||||
build_path = /obj/item/device/bodysnatcher
|
||||
sort_string = "SAAAC"
|
||||
|
||||
/datum/design/item/weapon/sizegun
|
||||
name = "Size gun"
|
||||
id = "sizegun"
|
||||
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000)
|
||||
build_path = /obj/item/weapon/gun/energy/sizegun
|
||||
sort_string = "SBAAA"
|
||||
|
||||
/datum/design/item/bluespace_jumpsuit
|
||||
name = "Bluespace jumpsuit"
|
||||
id = "bsjumpsuit"
|
||||
req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000)
|
||||
build_path = /obj/item/clothing/under/bluespace
|
||||
sort_string = "SBAAB"
|
||||
|
||||
/datum/design/item/implant/sizecontrol
|
||||
name = "Size control implant"
|
||||
id = "implant_size"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_DATA = 4, TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "silver" = 3000)
|
||||
build_path = /obj/item/weapon/implanter/sizecontrol
|
||||
sort_string = "SBAAC"
|
||||
|
||||
/datum/design/item/item/pressureinterlock
|
||||
name = "APP pressure interlock"
|
||||
@@ -369,8 +371,307 @@
|
||||
|
||||
/datum/design/item/robot_upgrade/sizeshift
|
||||
name = "Size Alteration Module"
|
||||
desc = "Used to allow robot to freely alter their size."
|
||||
id = "borg_sizeshift_module"
|
||||
req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000)
|
||||
build_path = /obj/item/borg/upgrade/sizeshift
|
||||
build_path = /obj/item/borg/upgrade/sizeshift
|
||||
|
||||
|
||||
|
||||
// NSFW gun and cells
|
||||
/datum/design/item/weapon/prototype_nsfw
|
||||
name = "cell-loaded revolver"
|
||||
id = "nsfw_prototype"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 6000, "phoron" = 8000, "uranium" = 4000)
|
||||
build_path = /obj/item/weapon/gun/projectile/cell_loaded/combat/prototype
|
||||
sort_string = "TNAAA"
|
||||
|
||||
/datum/design/item/weapon/prototype_nsfw_mag
|
||||
name = "combat cell magazine"
|
||||
id = "nsfw_mag_prototype"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 4000, "phoron" = 4000)
|
||||
build_path = /obj/item/ammo_magazine/cell_mag/combat/prototype
|
||||
sort_string = "TNABA"
|
||||
|
||||
/datum/design/item/nsfw_cell/AssembleDesignName()
|
||||
..()
|
||||
name = "Microbattery prototype ([item_name])"
|
||||
|
||||
/datum/design/item/nsfw_cell/stun
|
||||
name = "STUN"
|
||||
id = "nsfw_cell_stun"
|
||||
req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/stun
|
||||
sort_string = "TNACA"
|
||||
|
||||
/datum/design/item/nsfw_cell/lethal
|
||||
name = "LETHAL"
|
||||
id = "nsfw_cell_lethal"
|
||||
req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "phoron" = 3000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/lethal
|
||||
sort_string = "TNACB"
|
||||
|
||||
/datum/design/item/nsfw_cell/net
|
||||
name = "NET"
|
||||
id = "nsfw_cell_net"
|
||||
req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "uranium" = 3000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/net
|
||||
sort_string = "TNACC"
|
||||
|
||||
/datum/design/item/nsfw_cell/ion
|
||||
name = "ION"
|
||||
id = "nsfw_cell_ion"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 5, TECH_COMBAT = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "silver" = 3000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/ion
|
||||
sort_string = "TNACD"
|
||||
|
||||
/datum/design/item/nsfw_cell/shotstun
|
||||
name = "SCATTERSTUN"
|
||||
id = "nsfw_cell_shotstun"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 6, TECH_COMBAT = 6)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "silver" = 2000, "gold" = 2000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/shotstun
|
||||
sort_string = "TNACE"
|
||||
|
||||
/datum/design/item/nsfw_cell/xray
|
||||
name = "XRAY"
|
||||
id = "nsfw_cell_xray"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 5, TECH_COMBAT = 7)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "silver" = 1000, "gold" = 1000, "uranium" = 1000, "phoron" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/xray
|
||||
sort_string = "TNACF"
|
||||
|
||||
/datum/design/item/nsfw_cell/stripper
|
||||
name = "STRIPPER"
|
||||
id = "nsfw_cell_stripper"
|
||||
req_tech = list(TECH_MATERIAL = 7, TECH_BIO = 4, TECH_POWER = 4, TECH_COMBAT = 4, TECH_ILLEGAL = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "uranium" = 2000, "phoron" = 2000, "diamond" = 500)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/stripper
|
||||
sort_string = "TNACG"
|
||||
|
||||
/*
|
||||
/datum/design/item/nsfw_cell/final
|
||||
name = "FINAL OPTION"
|
||||
id = "nsfw_cell_final"
|
||||
req_tech = list(TECH_COMBAT = 69, TECH_ILLEGAL = 69, TECH_PRECURSOR = 1)
|
||||
materials = list("unobtanium" = 9001)
|
||||
build_path = /obj/item/ammo_casing/microbattery/combat/final
|
||||
sort_string = "TNACH"
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// ML-3M medigun and cells
|
||||
/datum/design/item/medical/cell_medigun
|
||||
name = "cell-loaded medigun"
|
||||
id = "cell_medigun"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BIO = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 8000, "plastic" = 8000, "glass" = 5000, "silver" = 1000, "gold" = 1000, "uranium" = 1000)
|
||||
build_path = /obj/item/weapon/gun/projectile/cell_loaded/medical
|
||||
sort_string = "MLAAA"
|
||||
|
||||
/datum/design/item/medical/cell_medigun_mag
|
||||
name = "medical cell magazine"
|
||||
id = "cell_medigun_mag"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BIO = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "plastic" = 6000, "glass" = 3000, "silver" = 500, "gold" = 500)
|
||||
build_path = /obj/item/ammo_magazine/cell_mag/medical
|
||||
sort_string = "MLABA"
|
||||
|
||||
/datum/design/item/medical/cell_medigun_mag_advanced
|
||||
name = "advanced medical cell magazine"
|
||||
id = "cell_medigun_mag_advanced"
|
||||
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 4, TECH_BIO = 7)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "plastic" = 10000, "glass" = 5000, "silver" = 1500, "gold" = 1500, "diamond" = 5000)
|
||||
build_path = /obj/item/ammo_magazine/cell_mag/medical/advanced
|
||||
sort_string = "MLABB"
|
||||
|
||||
/datum/design/item/ml3m_cell/AssembleDesignName()
|
||||
..()
|
||||
name = "Nanite cell prototype ([item_name])"
|
||||
|
||||
//Tier 0
|
||||
|
||||
/datum/design/item/ml3m_cell/brute
|
||||
name = "BRUTE"
|
||||
id = "ml3m_cell_brute"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/brute
|
||||
sort_string = "MLACA"
|
||||
|
||||
/datum/design/item/ml3m_cell/burn
|
||||
name = "BURN"
|
||||
id = "ml3m_cell_burn"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/burn
|
||||
sort_string = "MLACB"
|
||||
|
||||
/datum/design/item/ml3m_cell/stabilize
|
||||
name = "STABILIZE"
|
||||
id = "ml3m_cell_stabilize"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/stabilize
|
||||
sort_string = "MLACC"
|
||||
|
||||
//Tier 1
|
||||
|
||||
/datum/design/item/ml3m_cell/toxin
|
||||
name = "TOXIN"
|
||||
id = "ml3m_cell_toxin"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/toxin
|
||||
sort_string = "MLACD"
|
||||
|
||||
/datum/design/item/ml3m_cell/omni
|
||||
name = "OMNI"
|
||||
id = "ml3m_cell_omni"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/omni
|
||||
sort_string = "MLACE"
|
||||
|
||||
/datum/design/item/ml3m_cell/antirad
|
||||
name = "ANTIRAD"
|
||||
id = "ml3m_cell_antirad"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/antirad
|
||||
sort_string = "MLACF"
|
||||
|
||||
//Tier 2
|
||||
|
||||
/datum/design/item/ml3m_cell/brute2
|
||||
name = "BRUTE-II"
|
||||
id = "ml3m_cell_brute2"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/brute2
|
||||
sort_string = "MLACG"
|
||||
|
||||
/datum/design/item/ml3m_cell/burn2
|
||||
name = "BURN-II"
|
||||
id = "ml3m_cell_burn2"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/burn2
|
||||
sort_string = "MLACH"
|
||||
|
||||
/datum/design/item/ml3m_cell/stabilize2
|
||||
name = "STABILIZE-II"
|
||||
id = "ml3m_cell_stabilize2"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "silver" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/stabilize2
|
||||
sort_string = "MLACI"
|
||||
|
||||
/datum/design/item/ml3m_cell/omni2
|
||||
name = "OMNI-II"
|
||||
id = "ml3m_cell_omni2"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/omni2
|
||||
sort_string = "MLACJ"
|
||||
|
||||
//Tier 3
|
||||
|
||||
/datum/design/item/ml3m_cell/toxin2
|
||||
name = "TOXIN-II"
|
||||
id = "ml3m_cell_toxin2"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 1000, "silver" = 1000, "diamond" = 500)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/toxin2
|
||||
sort_string = "MLACK"
|
||||
|
||||
/datum/design/item/ml3m_cell/haste
|
||||
name = "HASTE"
|
||||
id = "ml3m_cell_haste"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000, "silver" = 1000, "diamond" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/haste
|
||||
sort_string = "MLACL"
|
||||
|
||||
/datum/design/item/ml3m_cell/resist
|
||||
name = "RESIST"
|
||||
id = "ml3m_cell_resist"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000, "uranium" = 1000, "diamond" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/resist
|
||||
sort_string = "MLACM"
|
||||
|
||||
/datum/design/item/ml3m_cell/corpse_mend
|
||||
name = "CORPSE MEND"
|
||||
id = "ml3m_cell_corpse_mend"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "phoron" = 3000, "diamond" = 3000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/corpse_mend
|
||||
sort_string = "MLACN"
|
||||
|
||||
//Tier 4
|
||||
|
||||
/datum/design/item/ml3m_cell/brute3
|
||||
name = "BRUTE-III"
|
||||
id = "ml3m_cell_brute3"
|
||||
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/brute3
|
||||
sort_string = "MLACO"
|
||||
|
||||
/datum/design/item/ml3m_cell/burn3
|
||||
name = "BURN-III"
|
||||
id = "ml3m_cell_burn3"
|
||||
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/burn3
|
||||
sort_string = "MLACP"
|
||||
|
||||
/datum/design/item/ml3m_cell/toxin3
|
||||
name = "TOXIN-III"
|
||||
id = "ml3m_cell_toxin3"
|
||||
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/toxin3
|
||||
sort_string = "MLACQ"
|
||||
|
||||
/datum/design/item/ml3m_cell/omni3
|
||||
name = "OMNI-III"
|
||||
id = "ml3m_cell_omni3"
|
||||
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/omni3
|
||||
sort_string = "MLACR"
|
||||
|
||||
//Tierless
|
||||
|
||||
/datum/design/item/ml3m_cell/shrink
|
||||
name = "SHRINK"
|
||||
id = "ml3m_cell_shrink"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 2000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/shrink
|
||||
sort_string = "MLADA"
|
||||
|
||||
/datum/design/item/ml3m_cell/grow
|
||||
name = "GROW"
|
||||
id = "ml3m_cell_grow"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 2000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/grow
|
||||
sort_string = "MLADB"
|
||||
|
||||
/datum/design/item/ml3m_cell/normalsize
|
||||
name = "NORMALSIZE"
|
||||
id = "ml3m_cell_normalsize"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 2000)
|
||||
build_path = /obj/item/ammo_casing/microbattery/medical/normalsize
|
||||
sort_string = "MLADC"
|
||||
@@ -804,7 +804,7 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.head == src)
|
||||
H.update_inv_head()
|
||||
|
||||
/*
|
||||
/obj/item/weapon/rig/light/hacker/fluff/aronai
|
||||
name = "KHI-99-AAR suit module"
|
||||
suit_type = "nano"
|
||||
@@ -821,6 +821,8 @@
|
||||
/obj/item/rig_module/teleporter
|
||||
)
|
||||
|
||||
No. With a teleporter? Just *no*. - Hawk, YW
|
||||
*/
|
||||
//Viveret:Keturah
|
||||
/obj/item/clothing/under/dress/maid
|
||||
name = "Maid Outfit"
|
||||
|
||||
@@ -0,0 +1,283 @@
|
||||
// The Gun //
|
||||
/obj/item/weapon/gun/projectile/cell_loaded //this one can load both medical and security cells! for ERT/admin use.
|
||||
name = "multipurpose cell-loaded revolver"
|
||||
desc = "Variety is the spice of life! This weapon is a hybrid of the HI-102b 'Nanotech Selectable-Cell Weapon' and the Vey-Med ML-3 'Medigun'. \
|
||||
It can fire both harmful and healing cells with an internal nanite fabricator and energy weapon cell loader. Up to three combinations of \
|
||||
energy beams can be configured at once. Ammo not included."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus,
|
||||
/datum/category_item/catalogue/information/organization/vey_med)
|
||||
|
||||
icon = 'icons/vore/custom_guns_vr.dmi'
|
||||
icon_state = "nsfw"
|
||||
|
||||
icon_override = 'icons/vore/custom_guns_vr.dmi'
|
||||
item_state = "gun"
|
||||
|
||||
caliber = "nsfw"
|
||||
|
||||
origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 6, TECH_MAGNETS = 4)
|
||||
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
|
||||
load_method = MAGAZINE //Nyeh heh hehhh.
|
||||
magazine_type = null
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/cell_mag)
|
||||
handle_casings = HOLD_CASINGS //Don't eject batteries!
|
||||
recoil = 0
|
||||
var/charge_left = 0
|
||||
var/max_charge = 0
|
||||
charge_sections = 5
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/consume_next_projectile()
|
||||
if(chambered && ammo_magazine)
|
||||
var/obj/item/ammo_casing/microbattery/batt = chambered
|
||||
if(batt.shots_left)
|
||||
return new chambered.projectile_type()
|
||||
else
|
||||
for(var/B in ammo_magazine.stored_ammo)
|
||||
var/obj/item/ammo_casing/microbattery/other_batt = B
|
||||
if(istype(other_batt,chambered.type) && other_batt.shots_left)
|
||||
switch_to(other_batt)
|
||||
return new chambered.projectile_type()
|
||||
break
|
||||
|
||||
return null
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/proc/update_charge()
|
||||
charge_left = 0
|
||||
max_charge = 0
|
||||
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/obj/item/ammo_casing/microbattery/batt = chambered
|
||||
|
||||
charge_left = batt.shots_left
|
||||
max_charge = initial(batt.shots_left)
|
||||
if(ammo_magazine) //Crawl to find more
|
||||
for(var/B in ammo_magazine.stored_ammo)
|
||||
var/obj/item/ammo_casing/microbattery/bullet = B
|
||||
if(istype(bullet,batt.type))
|
||||
charge_left += bullet.shots_left
|
||||
max_charge += initial(bullet.shots_left)
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/proc/switch_to(obj/item/ammo_casing/microbattery/new_batt)
|
||||
if(ishuman(loc))
|
||||
if(chambered && new_batt.type == chambered.type)
|
||||
to_chat(loc,"<span class='warning'>\The [src] is now using the next [new_batt.type_name] power cell.</span>")
|
||||
else
|
||||
to_chat(loc,"<span class='warning'>\The [src] is now firing [new_batt.type_name].</span>")
|
||||
|
||||
chambered = new_batt
|
||||
update_charge()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/attack_self(mob/user)
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/list/stored_ammo = ammo_magazine.stored_ammo
|
||||
|
||||
if(stored_ammo.len == 1)
|
||||
return //silly you.
|
||||
|
||||
//Find an ammotype that ISN'T the same, or exhaust the list and don't change.
|
||||
var/our_slot = stored_ammo.Find(chambered)
|
||||
|
||||
for(var/index in 1 to stored_ammo.len)
|
||||
var/true_index = ((our_slot + index - 1) % stored_ammo.len) + 1 // Stupid ONE BASED lists!
|
||||
var/obj/item/ammo_casing/microbattery/next_batt = stored_ammo[true_index]
|
||||
if(chambered != next_batt && !istype(next_batt, chambered.type))
|
||||
switch_to(next_batt)
|
||||
break
|
||||
/*
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/special_check(mob/user)
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/obj/item/ammo_casing/microbattery/batt = chambered
|
||||
if(!batt.shots_left)
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/load_ammo(var/obj/item/A, mob/user)
|
||||
. = ..()
|
||||
if(ammo_magazine && ammo_magazine.stored_ammo.len)
|
||||
switch_to(ammo_magazine.stored_ammo[1])
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/unload_ammo(mob/user, var/allow_dump=1)
|
||||
chambered = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/update_icon()
|
||||
update_charge()
|
||||
|
||||
cut_overlays()
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/obj/item/ammo_casing/microbattery/batt = chambered
|
||||
var/batt_color = batt.type_color //Used many times
|
||||
|
||||
//Mode bar
|
||||
var/image/mode_bar = image(icon, icon_state = "[initial(icon_state)]_type")
|
||||
mode_bar.color = batt_color
|
||||
add_overlay(mode_bar)
|
||||
|
||||
//Barrel color
|
||||
var/image/barrel_color = image(icon, icon_state = "[initial(icon_state)]_barrel")
|
||||
barrel_color.alpha = 150
|
||||
barrel_color.color = batt_color
|
||||
add_overlay(barrel_color)
|
||||
|
||||
//Charge bar
|
||||
var/ratio = CEILING(((charge_left / max_charge) * charge_sections), 1)
|
||||
for(var/i = 0, i < ratio, i++)
|
||||
var/image/charge_bar = image(icon, icon_state = "[initial(icon_state)]_charge")
|
||||
charge_bar.pixel_x = i
|
||||
charge_bar.color = batt_color
|
||||
add_overlay(charge_bar)
|
||||
|
||||
|
||||
// The Magazine //
|
||||
/obj/item/ammo_magazine/cell_mag
|
||||
name = "microbattery magazine"
|
||||
desc = "A microbattery holder for a cell-based variable weapon."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "cell_mag"
|
||||
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_MAGNETS = 3)
|
||||
caliber = "nsfw"
|
||||
ammo_type = /obj/item/ammo_casing/microbattery
|
||||
initial_ammo = 0
|
||||
max_ammo = 3
|
||||
var/x_offset = 5 //for update_icon() shenanigans- moved here so it can be adjusted for bigger mags
|
||||
var/capname = "nsfw_mag" //as above
|
||||
var/chargename = "nsfw_mag" //as above
|
||||
mag_type = MAGAZINE
|
||||
|
||||
var/list/modes = list()
|
||||
|
||||
/obj/item/ammo_magazine/cell_mag/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/ammo_casing/microbattery))
|
||||
var/obj/item/ammo_casing/microbattery/B = W
|
||||
if(!istype(B, ammo_type))
|
||||
to_chat(user, "<span class='warning'>[B] does not fit into [src].</span>")
|
||||
return
|
||||
if(stored_ammo.len >= max_ammo)
|
||||
to_chat(user, "<span class='warning'>[src] is full!</span>")
|
||||
return
|
||||
user.remove_from_mob(B)
|
||||
B.loc = src
|
||||
stored_ammo.Add(B)
|
||||
update_icon()
|
||||
playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1)
|
||||
update_icon()
|
||||
|
||||
/obj/item/ammo_magazine/cell_mag/update_icon()
|
||||
cut_overlays()
|
||||
if(!stored_ammo.len)
|
||||
return //Why bother
|
||||
|
||||
var/current = 0
|
||||
for(var/B in stored_ammo)
|
||||
var/obj/item/ammo_casing/microbattery/batt = B
|
||||
var/image/cap = image(icon, icon_state = "[capname]_cap")
|
||||
cap.color = batt.type_color
|
||||
cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset
|
||||
add_overlay(cap)
|
||||
|
||||
if(batt.shots_left)
|
||||
var/ratio = CEILING(((batt.shots_left / initial(batt.shots_left)) * 4), 1) //4 is how many lights we have a sprite for
|
||||
var/image/charge = image(icon, icon_state = "[chargename]_charge-[ratio]")
|
||||
charge.color = "#29EAF4" //Could use battery color but eh.
|
||||
charge.pixel_x = current * x_offset
|
||||
add_overlay(charge)
|
||||
|
||||
current++ //Increment for offsets
|
||||
|
||||
/obj/item/ammo_magazine/cell_mag/advanced
|
||||
name = "advanced microbattery magazine"
|
||||
desc = "A microbattery holder for a cell-based variable weapon. This one has much more cell capacity!"
|
||||
max_ammo = 6
|
||||
x_offset = 3
|
||||
icon_state = "cell_mag_extended"
|
||||
|
||||
|
||||
// The Casing //
|
||||
/obj/item/ammo_casing/microbattery
|
||||
name = "\'NSCW\' microbattery - UNKNOWN"
|
||||
desc = "A miniature battery for an energy weapon."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "nsfw_batt"
|
||||
slot_flags = SLOT_BELT | SLOT_EARS
|
||||
throwforce = 1
|
||||
w_class = ITEMSIZE_TINY
|
||||
var/shots_left = 4
|
||||
|
||||
leaves_residue = 0
|
||||
caliber = "nsfw"
|
||||
var/type_color = null
|
||||
var/type_name = null
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
|
||||
/obj/item/ammo_casing/microbattery/Initialize()
|
||||
. = ..()
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
update_icon()
|
||||
|
||||
/obj/item/ammo_casing/microbattery/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
var/image/ends = image(icon, icon_state = "[initial(icon_state)]_ends")
|
||||
ends.color = type_color
|
||||
add_overlay(ends)
|
||||
|
||||
/obj/item/ammo_casing/microbattery/expend()
|
||||
shots_left--
|
||||
|
||||
|
||||
// The Pack //
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid
|
||||
name = "hybrid cell-loaded gun kit"
|
||||
desc = "A storage case for a multi-purpose handgun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/cell_loaded(src)
|
||||
new /obj/item/ammo_magazine/cell_mag/advanced(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/stun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/stun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/stun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/net(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/net(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/brute3(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/burn3(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/stabilize2(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/toxin3(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/omni3(src)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat
|
||||
name = "military cell-loaded gun kit"
|
||||
desc = "A storage case for a multi-purpose handgun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/cell_loaded(src)
|
||||
new /obj/item/ammo_magazine/cell_mag/advanced(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/shotstun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/shotstun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/lethal(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/lethal(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/lethal(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/ion(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/xray(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/stabilize2(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/haste(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/resist(src)
|
||||
@@ -0,0 +1,72 @@
|
||||
// The Gun //
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/medical
|
||||
name = "cell-loaded medigun"
|
||||
desc = "The ML-3 'Medigun', or ML3 for short, is a powerful cell-based ranged healing device based on the HI-102b NSCW. \
|
||||
It uses an internal nanite fabricator, powered and controlled by discrete cells, to deliver a variety of effects at range. Up to six combinations of \
|
||||
healing beams can be configured at once, depending on cartridge used. Ammo not included."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
|
||||
|
||||
icon_state = "ml3m"
|
||||
description_info = "This is a ranged healing device that uses interchangable nanite discharge cells in a magazine. Each cell is a different healing beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type."
|
||||
description_fluff = "The Vey-Med ML-3 'Medigun' allows one to customize their loadout in the field, or before deploying, to allow emergency response personnel to deliver a variety of ranged healing options."
|
||||
description_antag = ""
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_BIO = 5)
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/medical)
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/medical/cmo
|
||||
name = "advanced cell-loaded medigun"
|
||||
desc = "This is a variation on the ML-3 'Medigun', a powerful cell-based ranged healing device based on the HI-102b NSCW. \
|
||||
It has an extended sight for increased accuracy, and much more comfortable grip. Ammo not included."
|
||||
|
||||
icon_state = "ml3m_cmo"
|
||||
|
||||
|
||||
// The Magazine //
|
||||
/obj/item/ammo_magazine/cell_mag/medical //medical
|
||||
name = "nanite magazine"
|
||||
desc = "A nanite fabrication magazine for the \'ML-3\'"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
|
||||
description_info = "This magazine holds self-charging nanite fabricators to power the ML-3 'Medigun'. Up to three can be loaded at once, and each provides four shots of their respective healing type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger."
|
||||
ammo_type = /obj/item/ammo_casing/microbattery/medical
|
||||
icon_state = "ml3m_mag"
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3)
|
||||
|
||||
/obj/item/ammo_magazine/cell_mag/medical/advanced
|
||||
name = "advanced nanite magazine"
|
||||
desc = "A nanite discharge cell for the \'ML-3\'. This one is a more advanced version which can hold six individual nanite discharge cells."
|
||||
max_ammo = 6
|
||||
x_offset = 3
|
||||
icon_state = "ml3m_mag_extended"
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BIO = 5)
|
||||
|
||||
|
||||
// The Pack //
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med
|
||||
name = "\improper ML-3 \'Medigun\' kit"
|
||||
desc = "A storage case for a multi-purpose healing gun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/cell_loaded/medical(src)
|
||||
new /obj/item/ammo_magazine/cell_mag/medical(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/brute(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/burn(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/stabilize(src)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_cmo
|
||||
name = "\improper Advanced ML-3 \'Medigun\' kit"
|
||||
desc = "A storage case for a multi-purpose healing gun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_cmo/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/cell_loaded/medical/cmo(src)
|
||||
new /obj/item/ammo_magazine/cell_mag/medical(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/brute(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/burn(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/stabilize(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/toxin(src)
|
||||
new /obj/item/ammo_casing/microbattery/medical/omni(src)
|
||||
@@ -0,0 +1,340 @@
|
||||
// The Casing //
|
||||
/obj/item/ammo_casing/microbattery/medical
|
||||
name = "\'ML-3\' nanite cell - UNKNOWN"
|
||||
desc = "A miniature nanite fabricator for a medigun."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
|
||||
icon_state = "ml3m_batt"
|
||||
origin_tech = list(TECH_BIO = 2, TECH_MATERIAL = 1, TECH_MAGNETS = 2)
|
||||
|
||||
/obj/item/projectile/beam/medical_cell
|
||||
name = "\improper healing beam"
|
||||
icon_state = "medbeam"
|
||||
nodamage = 1
|
||||
damage = 0
|
||||
check_armour = "laser"
|
||||
light_color = "#80F5FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/medigun
|
||||
tracer_type = /obj/effect/projectile/tracer/medigun
|
||||
impact_type = /obj/effect/projectile/impact/medigun
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/on_hit(var/mob/living/carbon/human/target) //what does it do when it hits someone?
|
||||
return
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/brute
|
||||
name = "\'ML-3\' nanite cell - BRUTE"
|
||||
type_color = "#BF0000"
|
||||
type_name = "<span style='color:#BF0000;font-weight:bold;'>BRUTE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/brute
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/brute/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-5)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/burn
|
||||
name = "\'ML-3\' nanite cell - BURN"
|
||||
type_color = "#FF8000"
|
||||
type_name = "<span style='color:#FF8000;font-weight:bold;'>BURN</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/burn
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/burn/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustFireLoss(-5)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/stabilize
|
||||
name = "\'ML-3\' nanite cell - STABILIZE" //Disinfects all open wounds, cures oxy damage
|
||||
type_color = "#0080FF"
|
||||
type_name = "<span style='color:#0080FF;font-weight:bold;'>STABILIZE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/stabilize
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/stabilize/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustOxyLoss(-30)
|
||||
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
|
||||
var/obj/item/organ/external/O = target.organs_by_name[name]
|
||||
for (var/datum/wound/W in O.wounds)
|
||||
if (W.internal)
|
||||
continue
|
||||
W.disinfect()
|
||||
target.add_modifier(/datum/modifier/stabilize, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/datum/modifier/stabilize
|
||||
name = "stabilize"
|
||||
desc = "Your injuries are stabilized and your pain abates!"
|
||||
mob_overlay_state = "cyan_sparkles"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
pain_immunity = TRUE
|
||||
bleeding_rate_percent = 0.1 //only a little
|
||||
incoming_oxy_damage_percent = 0
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/toxin
|
||||
name = "\'ML-3\' nanite cell - TOXIN"
|
||||
type_color = "#00A000"
|
||||
type_name = "<span style='color:#00A000;font-weight:bold;'>TOXIN</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/toxin
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/toxin/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustToxLoss(-5)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/omni
|
||||
name = "\'ML-3\' nanite cell - OMNI"
|
||||
type_color = "#8040FF"
|
||||
type_name = "<span style='color:#8040FF;font-weight:bold;'>OMNI</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/omni
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/omni/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-2.5)
|
||||
target.adjustFireLoss(-2.5)
|
||||
target.adjustToxLoss(-2.5)
|
||||
target.adjustOxyLoss(-10)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/antirad
|
||||
name = "\'ML-3\' nanite cell - ANTIRAD"
|
||||
type_color = "#008000"
|
||||
type_name = "<span style='color:#008000;font-weight:bold;'>ANTIRAD</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/antirad
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/antirad/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustToxLoss(-2.5)
|
||||
target.radiation = max(target.radiation - 150, 0) //same as 5 units of arithrazine, sans the brute damage
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/brute2
|
||||
name = "\'ML-3\' nanite cell - BRUTE-II"
|
||||
type_color = "#BF0000"
|
||||
type_name = "<span style='color:#BF0000;font-weight:bold;'>BRUTE-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/brute2
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/brute2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-10)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/burn2
|
||||
name = "\'ML-3\' nanite cell - BURN-II"
|
||||
type_color = "#FF8000"
|
||||
type_name = "<span style='color:#FF8000;font-weight:bold;'>BURN-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/burn2
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/burn2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustFireLoss(-10)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/stabilize2
|
||||
name = "\'ML-3\' nanite cell - STABILIZE-II" //Disinfects and bandages all open wounds, cures all oxy damage
|
||||
type_color = "#0080FF"
|
||||
type_name = "<span style='color:#0080FF;font-weight:bold;'>STABILIZE-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/stabilize2
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/stabilize2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustOxyLoss(-200)
|
||||
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
|
||||
var/obj/item/organ/external/O = target.organs_by_name[name]
|
||||
for (var/datum/wound/W in O.wounds)
|
||||
if(W.internal)
|
||||
continue
|
||||
if(O.is_bandaged() == FALSE)
|
||||
W.bandage()
|
||||
if(O.is_salved() == FALSE)
|
||||
W.salve()
|
||||
W.disinfect()
|
||||
target.add_modifier(/datum/modifier/stabilize, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/omni2
|
||||
name = "\'ML-3\' nanite cell - OMNI-II"
|
||||
type_color = "#8040FF"
|
||||
type_name = "<span style='color:#8040FF;font-weight:bold;'>OMNI-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/omni2
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/omni2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-5)
|
||||
target.adjustFireLoss(-5)
|
||||
target.adjustToxLoss(-5)
|
||||
target.adjustOxyLoss(-30)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/toxin2
|
||||
name = "\'ML-3\' nanite cell - TOXIN-II"
|
||||
type_color = "#00A000"
|
||||
type_name = "<span style='color:#00A000;font-weight:bold;'>TOXIN-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/toxin2
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/toxin2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustToxLoss(-20)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/haste
|
||||
name = "\'ML-3\' nanite cell - HASTE"
|
||||
type_color = "#FF3300"
|
||||
type_name = "<span style='color:#FF3300;font-weight:bold;'>HASTE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/haste
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/haste/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.add_modifier(/datum/modifier/ml3mhaste, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/datum/modifier/ml3mhaste
|
||||
name = "haste"
|
||||
desc = "You can move much faster!"
|
||||
mob_overlay_state = "haste"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
slowdown = -0.5 //a little faster!
|
||||
evasion = 1.15 //and a little harder to hit!
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/resist
|
||||
name = "\'ML-3\' nanite cell - RESIST"
|
||||
type_color = "#555555"
|
||||
type_name = "<span style='color:#555555;font-weight:bold;'>RESIST</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/resist
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/resist/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.add_modifier(/datum/modifier/resistance, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/datum/modifier/resistance
|
||||
name = "resistance"
|
||||
desc = "You resist 15% of all incoming damage and stuns!"
|
||||
mob_overlay_state = "repel_missiles"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
disable_duration_percent = 0.85
|
||||
incoming_damage_percent = 0.85
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/corpse_mend
|
||||
name = "\'ML-3\' nanite cell - CORPSE MEND"
|
||||
type_color = "#669900"
|
||||
type_name = "<span style='color:#669900;font-weight:bold;'>CORPSE MEND</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/corpse_mend
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/corpse_mend/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
if(target.stat == DEAD)
|
||||
target.adjustBruteLoss(-50)
|
||||
target.adjustFireLoss(-50)
|
||||
target.adjustToxLoss(-50)
|
||||
target.adjustOxyLoss(-200)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/brute3
|
||||
name = "\'ML-3\' nanite cell - BRUTE-III"
|
||||
type_color = "#BF0000"
|
||||
type_name = "<span style='color:#BF0000;font-weight:bold;'>BRUTE-III</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/brute3
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/brute3/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-20)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/burn3
|
||||
name = "\'ML-3\' nanite cell - BURN-III"
|
||||
type_color = "#FF8000"
|
||||
type_name = "<span style='color:#FF8000;font-weight:bold;'>BURN-III</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/burn3
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/burn3/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustFireLoss(-20)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/toxin3
|
||||
name = "\'ML-3\' nanite cell - TOXIN-III"
|
||||
type_color = "#00A000"
|
||||
type_name = "<span style='color:#00A000;font-weight:bold;'>TOXIN-III</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/toxin3
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/toxin3/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustToxLoss(-20)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/omni3
|
||||
name = "\'ML-3\' nanite cell - OMNI-III"
|
||||
type_color = "#8040FF"
|
||||
type_name = "<span style='color:#8040FF;font-weight:bold;'>OMNI-III</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/omni3
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/omni3/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-10)
|
||||
target.adjustFireLoss(-10)
|
||||
target.adjustToxLoss(-10)
|
||||
target.adjustOxyLoss(-60)
|
||||
else
|
||||
return 1
|
||||
|
||||
// Illegal cells!
|
||||
/obj/item/ammo_casing/microbattery/medical/shrink
|
||||
name = "\'ML-3\' nanite cell - SHRINK"
|
||||
type_color = "#910ffc"
|
||||
type_name = "<span style='color:#910ffc;font-weight:bold;'>SHRINK</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/shrink
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/shrink/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.resize(0.5)
|
||||
target.show_message("<font color='blue'>The beam fires into your body, changing your size!</font>")
|
||||
target.updateicon()
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/grow
|
||||
name = "\'ML-3\' nanite cell - GROW"
|
||||
type_color = "#fc0fdc"
|
||||
type_name = "<span style='color:#fc0fdc;font-weight:bold;'>GROW</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/grow
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/grow/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.resize(2.0)
|
||||
target.show_message("<font color='blue'>The beam fires into your body, changing your size!</font>")
|
||||
target.updateicon()
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/microbattery/medical/normalsize
|
||||
name = "\'ML-3\' nanite cell - NORMALSIZE"
|
||||
type_color = "#C70FEC"
|
||||
type_name = "<span style='color:#C70FEC;font-weight:bold;'>NORMALSIZE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/normalsize
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/normalsize/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.resize(1)
|
||||
target.show_message("<font color='blue'>The beam fires into your body, changing your size!</font>")
|
||||
target.updateicon()
|
||||
else
|
||||
return 1
|
||||
@@ -0,0 +1,75 @@
|
||||
// The Gun //
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/combat
|
||||
name = "cell-loaded revolver"
|
||||
desc = "Variety is the spice of life! The HI-102b 'Nanotech Selectable-Cell Weapon', or NSCW for short, is an unholy hybrid of an ammo-driven \
|
||||
energy weapon that allows the user to mix and match their own fire modes. Up to four combinations of \
|
||||
energy beams can be configured at once. Ammo not included."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
|
||||
description_fluff = "The Hephaestus 'Nanotech Selectable Cell Weapon' allows one to customize their loadout in the field, or before deploying, to achieve various results in a weapon they are already familiar with wielding."
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/combat)
|
||||
|
||||
/obj/item/weapon/gun/projectile/cell_loaded/combat/prototype
|
||||
name = "prototype cell-loaded revolver"
|
||||
desc = "Variety is the spice of life! A prototype based on HI-102b 'Nanotech Selectable-Cell Weapon', or NSCW for short, is an unholy hybrid of an ammo-driven \
|
||||
energy weapon that allows the user to mix and match their own fire modes. Up to two combinations of \
|
||||
energy beams can be configured at once. Ammo not included."
|
||||
|
||||
description_info = "This gun is an energy weapon that uses interchangable microbatteries in a magazine. Each battery is a different beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type."
|
||||
description_antag = ""
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/combat/prototype)
|
||||
|
||||
origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 4, TECH_MAGNETS = 3)
|
||||
|
||||
|
||||
// The Magazine //
|
||||
/obj/item/ammo_magazine/cell_mag/combat
|
||||
name = "microbattery magazine"
|
||||
desc = "A microbattery holder for the \'NSCW\'"
|
||||
icon_state = "nsfw_mag"
|
||||
max_ammo = 4
|
||||
x_offset = 4
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
description_info = "This magazine holds NSCW microbatteries to power the NSCW handgun. Up to three can be loaded at once, and each provides four shots of their respective energy type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger."
|
||||
ammo_type = /obj/item/ammo_casing/microbattery/combat
|
||||
|
||||
/obj/item/ammo_magazine/cell_mag/combat/prototype
|
||||
name = "prototype microbattery magazine"
|
||||
icon_state = "nsfw_mag_prototype"
|
||||
max_ammo = 2
|
||||
x_offset = 6
|
||||
catalogue_data = null
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_MAGNETS = 2)
|
||||
|
||||
|
||||
// The Pack //
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack
|
||||
name = "\improper HI-102b \'NSCW\' gun kit"
|
||||
desc = "A storage case for a multi-purpose handgun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/cell_loaded/combat(src)
|
||||
new /obj/item/ammo_magazine/cell_mag/combat(src)
|
||||
for(var/path in subtypesof(/obj/item/ammo_casing/microbattery/combat))
|
||||
new path(src)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos
|
||||
name = "\improper HI-102b \'NSCW\' gun kit"
|
||||
desc = "A storage case for a multi-purpose handgun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/cell_loaded/combat(src)
|
||||
new /obj/item/ammo_magazine/cell_mag/combat(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/lethal(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/lethal(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/stun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/stun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/stun(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/net(src)
|
||||
new /obj/item/ammo_casing/microbattery/combat/ion(src)
|
||||
@@ -0,0 +1,115 @@
|
||||
// The Casing //
|
||||
/obj/item/ammo_casing/microbattery/combat
|
||||
name = "\'NSCW\' microbattery - UNKNOWN"
|
||||
desc = "A miniature battery for an energy weapon."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 1, TECH_MAGNETS = 2)
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/lethal
|
||||
name = "\'NSCW\' microbattery - LETHAL"
|
||||
type_color = "#bf3d3d"
|
||||
type_name = "<span style='color:#bf3d3d;font-weight:bold;'>LETHAL</span>"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/stun
|
||||
name = "\'NSCW\' microbattery - STUN"
|
||||
type_color = "#0f81bc"
|
||||
type_name = "<span style='color:#0f81bc;font-weight:bold;'>STUN</span>"
|
||||
projectile_type = /obj/item/projectile/beam/stun/blue
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/net
|
||||
name = "\'NSCW\' microbattery - NET"
|
||||
type_color = "#43f136"
|
||||
type_name = "<span style='color:#43d136;font-weight:bold;'>NET</span>"
|
||||
projectile_type = /obj/item/projectile/beam/energy_net
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/xray
|
||||
name = "\'NSCW\' microbattery - XRAY"
|
||||
type_color = "#32c025"
|
||||
type_name = "<span style='color:#32c025;font-weight:bold;'>XRAY</span>"
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/shotstun
|
||||
name = "\'NSCW\' microbattery - SCATTERSTUN"
|
||||
type_color = "#88ffff"
|
||||
type_name = "<span style='color:#88ffff;font-weight:bold;'>SCATTERSTUN</span>"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/e_shot_stun
|
||||
|
||||
/obj/item/projectile/bullet/pellet/e_shot_stun
|
||||
icon_state = "spell"
|
||||
damage = 2
|
||||
agony = 20
|
||||
pellets = 6 //number of pellets
|
||||
range_step = 2 //projectile will lose a fragment each time it travels this distance. Can be a non-integer.
|
||||
base_spread = 90 //lower means the pellets spread more across body parts. If zero then this is considered a shrapnel explosion instead of a shrapnel cone
|
||||
spread_step = 10
|
||||
embed_chance = 0
|
||||
sharp = 0
|
||||
check_armour = "melee"
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/ion
|
||||
name = "\'NSCW\' microbattery - ION"
|
||||
type_color = "#d084d6"
|
||||
type_name = "<span style='color:#d084d6;font-weight:bold;'>ION</span>"
|
||||
projectile_type = /obj/item/projectile/ion/small
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/stripper
|
||||
name = "\'NSCW\' microbattery - STRIPPER"
|
||||
type_color = "#fc8d0f"
|
||||
type_name = "<span style='color:#fc8d0f;font-weight:bold;'>STRIPPER</span>"
|
||||
projectile_type = /obj/item/projectile/bullet/stripper
|
||||
|
||||
/obj/item/projectile/bullet/stripper
|
||||
icon_state = "magicm"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
embed_chance = 0
|
||||
sharp = 0
|
||||
check_armour = "melee"
|
||||
|
||||
/obj/item/projectile/bullet/stripper/on_hit(var/atom/stripped)
|
||||
if(ishuman(stripped))
|
||||
var/mob/living/carbon/human/H = stripped
|
||||
if(H.wear_suit)
|
||||
H.unEquip(H.wear_suit)
|
||||
if(H.w_uniform)
|
||||
H.unEquip(H.w_uniform)
|
||||
if(H.back)
|
||||
H.unEquip(H.back)
|
||||
if(H.shoes)
|
||||
H.unEquip(H.shoes)
|
||||
if(H.gloves)
|
||||
H.unEquip(H.gloves)
|
||||
//Hats can stay! Most other things fall off with removing these.
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/microbattery/combat/final
|
||||
name = "\'NSCW\' microbattery - FINAL OPTION"
|
||||
type_color = "#fcfc0f"
|
||||
type_name = "<span style='color:#000000;font-weight:bold;'>FINAL OPTION</span>" //Doesn't look good in yellow in chat
|
||||
projectile_type = /obj/item/projectile/beam/final_option
|
||||
|
||||
/obj/item/projectile/beam/final_option
|
||||
name = "final option beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CC33"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/final_option/on_hit(var/atom/impacted)
|
||||
if(isliving(impacted))
|
||||
var/mob/living/L = impacted
|
||||
if(L.mind)
|
||||
var/nif
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
nif = H.nif
|
||||
SStranscore.m_backup(L.mind,nif,one_time = TRUE)
|
||||
L.gib()
|
||||
|
||||
..()
|
||||
@@ -1,748 +0,0 @@
|
||||
// -------------- NSFW -------------
|
||||
/obj/item/weapon/gun/projectile/nsfw //this one can load both medical and security cells! for ERT/admin use.
|
||||
name = "cell-loaded revolver"
|
||||
desc = "Variety is the spice of life! This weapon is a hybrid of the HI-102b 'Nanotech Selectable-Fire Weapon' and the Vey-Med ML-3 'Medigun', dubbed the 'NSFW-ML3M'. \
|
||||
It can fire both harmful and healing cells with an internal nanite fabricator and energy weapon cell loader. Up to three combinations of \
|
||||
energy beams can be configured at once. Ammo not included."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus,
|
||||
/datum/category_item/catalogue/information/organization/vey_med)
|
||||
|
||||
icon = 'icons/vore/custom_guns_vr.dmi'
|
||||
icon_state = "nsfw"
|
||||
|
||||
icon_override = 'icons/vore/custom_guns_vr.dmi'
|
||||
item_state = "gun"
|
||||
|
||||
caliber = "nsfw"
|
||||
|
||||
origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 6, TECH_MAGNETS = 4)
|
||||
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
|
||||
load_method = MAGAZINE //Nyeh heh hehhh.
|
||||
magazine_type = null
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/nsfw_mag)
|
||||
handle_casings = HOLD_CASINGS //Don't eject batteries!
|
||||
recoil = 0
|
||||
var/charge_left = 0
|
||||
var/max_charge = 0
|
||||
charge_sections = 5
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/consume_next_projectile()
|
||||
if(chambered && ammo_magazine)
|
||||
var/obj/item/ammo_casing/nsfw_batt/batt = chambered
|
||||
if(batt.shots_left)
|
||||
return new chambered.projectile_type()
|
||||
else
|
||||
for(var/B in ammo_magazine.stored_ammo)
|
||||
var/obj/item/ammo_casing/nsfw_batt/other_batt = B
|
||||
if(istype(other_batt,chambered.type) && other_batt.shots_left)
|
||||
switch_to(other_batt)
|
||||
return new chambered.projectile_type()
|
||||
break
|
||||
|
||||
return null
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/proc/update_charge()
|
||||
charge_left = 0
|
||||
max_charge = 0
|
||||
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/obj/item/ammo_casing/nsfw_batt/batt = chambered
|
||||
|
||||
charge_left = batt.shots_left
|
||||
max_charge = initial(batt.shots_left)
|
||||
if(ammo_magazine) //Crawl to find more
|
||||
for(var/B in ammo_magazine.stored_ammo)
|
||||
var/obj/item/ammo_casing/nsfw_batt/bullet = B
|
||||
if(istype(bullet,batt.type))
|
||||
charge_left += bullet.shots_left
|
||||
max_charge += initial(bullet.shots_left)
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/proc/switch_to(obj/item/ammo_casing/nsfw_batt/new_batt)
|
||||
if(ishuman(loc))
|
||||
if(chambered && new_batt.type == chambered.type)
|
||||
to_chat(loc,"<span class='warning'>\The [src] is now using the next [new_batt.type_name] power cell.</span>")
|
||||
else
|
||||
to_chat(loc,"<span class='warning'>\The [src] is now firing [new_batt.type_name].</span>")
|
||||
|
||||
chambered = new_batt
|
||||
update_charge()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/attack_self(mob/user)
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/list/stored_ammo = ammo_magazine.stored_ammo
|
||||
|
||||
if(stored_ammo.len == 1)
|
||||
return //silly you.
|
||||
|
||||
//Find an ammotype that ISN'T the same, or exhaust the list and don't change.
|
||||
var/our_slot = stored_ammo.Find(chambered)
|
||||
|
||||
for(var/index in 1 to stored_ammo.len)
|
||||
var/true_index = ((our_slot + index - 1) % stored_ammo.len) + 1 // Stupid ONE BASED lists!
|
||||
var/obj/item/ammo_casing/nsfw_batt/next_batt = stored_ammo[true_index]
|
||||
if(chambered != next_batt && !istype(next_batt, chambered.type))
|
||||
switch_to(next_batt)
|
||||
break
|
||||
/*
|
||||
/obj/item/weapon/gun/projectile/nsfw/special_check(mob/user)
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/obj/item/ammo_casing/nsfw_batt/batt = chambered
|
||||
if(!batt.shots_left)
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/nsfw/load_ammo(var/obj/item/A, mob/user)
|
||||
. = ..()
|
||||
if(ammo_magazine && ammo_magazine.stored_ammo.len)
|
||||
switch_to(ammo_magazine.stored_ammo[1])
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/unload_ammo(mob/user, var/allow_dump=1)
|
||||
chambered = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/update_icon()
|
||||
update_charge()
|
||||
|
||||
cut_overlays()
|
||||
if(!chambered)
|
||||
return
|
||||
|
||||
var/obj/item/ammo_casing/nsfw_batt/batt = chambered
|
||||
var/batt_color = batt.type_color //Used many times
|
||||
|
||||
//Mode bar
|
||||
var/image/mode_bar = image(icon, icon_state = "[initial(icon_state)]_type")
|
||||
mode_bar.color = batt_color
|
||||
add_overlay(mode_bar)
|
||||
|
||||
//Barrel color
|
||||
var/image/barrel_color = image(icon, icon_state = "[initial(icon_state)]_barrel")
|
||||
barrel_color.alpha = 150
|
||||
barrel_color.color = batt_color
|
||||
add_overlay(barrel_color)
|
||||
|
||||
//Charge bar
|
||||
var/ratio = CEILING(((charge_left / max_charge) * charge_sections), 1)
|
||||
for(var/i = 0, i < ratio, i++)
|
||||
var/image/charge_bar = image(icon, icon_state = "[initial(icon_state)]_charge")
|
||||
charge_bar.pixel_x = i
|
||||
charge_bar.color = batt_color
|
||||
add_overlay(charge_bar)
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/combat
|
||||
name = "cell-loaded revolver"
|
||||
desc = "Variety is the spice of life! The HI-102b 'Nanotech Selectable-Fire Weapon', is an unholy hybrid of an ammo-driven \
|
||||
energy weapon that allows the user to mix and match their own fire modes. Up to three combinations of \
|
||||
energy beams can be configured at once. Ammo not included."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
|
||||
description_info = "This gun is an energy weapon that uses interchangable microbatteries in a magazine. Each battery is a different beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type."
|
||||
description_fluff = "The Hephaestus Industries 'Nanotech Selectable Fire Weapon' allows one to customize their loadout in the field, or before deploying, to achieve various results in a weapon they are already familiar with wielding."
|
||||
description_antag = ""
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/nsfw_mag/combat)
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/medical
|
||||
name = "\improper ML-3 \'Medigun\'"
|
||||
desc = "The ML-3 'Medigun', or ML3M for short, is a powerful cell-based ranged healing device based on the HI-102b NSFW. \
|
||||
It uses an internal nanite fabricator, powered and controlled by discrete cells, to deliver a variety of effects at range. Up to three combinations of \
|
||||
healing beams can be configured at once. Ammo not included."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
|
||||
|
||||
icon_state = "ml3m"
|
||||
description_info = "This is a ranged healing device that uses interchangable nanite discharge cells in a magazine. Each cell is a different healing beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type."
|
||||
description_fluff = "The Vey-Med ML-3 'Medigun' allows one to customize their loadout in the field, or before deploying, to allow emergency response personnel to deliver a variety of ranged healing options."
|
||||
description_antag = ""
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/nsfw_mag/medical)
|
||||
|
||||
/obj/item/weapon/gun/projectile/nsfw/medical/cmo
|
||||
name = "\improper Advanced ML-3 \'Medigun\'"
|
||||
desc = "This is a variation on the ML-3 'Medigun', a powerful cell-based ranged healing device based on the HI-102b NSFW. \
|
||||
It has an extended sight for increased accuracy, and is capable of holding large magazines. Ammo not included."
|
||||
|
||||
icon_state = "ml3m_cmo"
|
||||
|
||||
|
||||
// The Magazine //
|
||||
/obj/item/ammo_magazine/nsfw_mag
|
||||
name = "microbattery magazine"
|
||||
desc = "A microbattery holder for a cell-based variable weapon."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "nsfw_mag"
|
||||
caliber = "nsfw"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1680, "glass" = 2000)
|
||||
ammo_type = /obj/item/ammo_casing/nsfw_batt
|
||||
initial_ammo = 0
|
||||
max_ammo = 3
|
||||
var/x_offset = 5 //for update_icon() shenanigans- moved here so it can be adjusted for bigger mags
|
||||
var/capname = "nsfw_mag" //as above
|
||||
var/chargename = "nsfw_mag" //as above
|
||||
mag_type = MAGAZINE
|
||||
|
||||
var/list/modes = list()
|
||||
|
||||
/obj/item/ammo_magazine/nsfw_mag/update_icon()
|
||||
cut_overlays()
|
||||
if(!stored_ammo.len)
|
||||
return //Why bother
|
||||
|
||||
var/current = 0
|
||||
for(var/B in stored_ammo)
|
||||
var/obj/item/ammo_casing/nsfw_batt/batt = B
|
||||
var/image/cap = image(icon, icon_state = "[capname]_cap")
|
||||
cap.color = batt.type_color
|
||||
cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset
|
||||
add_overlay(cap)
|
||||
|
||||
if(batt.shots_left)
|
||||
var/ratio = CEILING(((batt.shots_left / initial(batt.shots_left)) * 4), 1) //4 is how many lights we have a sprite for
|
||||
var/image/charge = image(icon, icon_state = "[chargename]_charge-[ratio]")
|
||||
charge.color = "#29EAF4" //Could use battery color but eh.
|
||||
charge.pixel_x = current * x_offset
|
||||
add_overlay(charge)
|
||||
|
||||
current++ //Increment for offsets
|
||||
|
||||
/obj/item/ammo_magazine/nsfw_mag/combat //security
|
||||
name = "microbattery magazine"
|
||||
desc = "A microbattery holder for the \'NSFW\'"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
description_info = "This magazine holds NSFW microbatteries to power the NSFW handgun. Up to three can be loaded at once, and each provides four shots of their respective energy type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger."
|
||||
ammo_type = /obj/item/ammo_casing/nsfw_batt/combat
|
||||
|
||||
/obj/item/ammo_magazine/nsfw_mag/medical //medical
|
||||
name = "nanite magazine"
|
||||
desc = "A nanite fabrication magazine for the \'ML-3/M\'"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
|
||||
description_info = "This magazine holds self-charging nanite fabricators to power the ML-3 'Medigun'. Up to three can be loaded at once, and each provides four shots of their respective healing type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger."
|
||||
ammo_type = /obj/item/ammo_casing/nsfw_batt/medical
|
||||
icon_state = "ml3m_mag"
|
||||
|
||||
/obj/item/ammo_magazine/nsfw_mag/medical/advanced
|
||||
name = "advanced nanite magazine"
|
||||
desc = "A nanite discharge cell for the \'ML-3/M\'. This one is a more advanced version which can hold six individual nanite discharge cells."
|
||||
max_ammo = 6
|
||||
x_offset = 3
|
||||
icon_state = "ml3m_mag_extended"
|
||||
|
||||
// The Casing //
|
||||
/obj/item/ammo_casing/nsfw_batt
|
||||
name = "\'NSFW\' microbattery - UNKNOWN"
|
||||
desc = "A miniature battery for an energy weapon."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "nsfw_batt"
|
||||
slot_flags = SLOT_BELT | SLOT_EARS
|
||||
throwforce = 1
|
||||
w_class = ITEMSIZE_TINY
|
||||
var/shots_left = 4
|
||||
|
||||
leaves_residue = 0
|
||||
caliber = "nsfw"
|
||||
var/type_color = null
|
||||
var/type_name = null
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/Initialize()
|
||||
. = ..()
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
update_icon()
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
var/image/ends = image(icon, icon_state = "[initial(icon_state)]_ends")
|
||||
ends.color = type_color
|
||||
add_overlay(ends)
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/expend()
|
||||
shots_left--
|
||||
|
||||
// Specific batteries //
|
||||
// Security (Combat) //
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat
|
||||
name = "\'NSFW\' microbattery - UNKNOWN"
|
||||
desc = "A miniature battery for an energy weapon."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus)
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/lethal
|
||||
name = "\'NSFW\' microbattery - LETHAL"
|
||||
type_color = "#bf3d3d"
|
||||
type_name = "<span style='color:#bf3d3d;font-weight:bold;'>LETHAL</span>"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/stun
|
||||
name = "\'NSFW\' microbattery - STUN"
|
||||
type_color = "#0f81bc"
|
||||
type_name = "<span style='color:#0f81bc;font-weight:bold;'>STUN</span>"
|
||||
projectile_type = /obj/item/projectile/beam/stun/blue
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/net
|
||||
name = "\'NSFW\' microbattery - NET"
|
||||
type_color = "#43f136"
|
||||
type_name = "<span style='color:#43d136;font-weight:bold;'>NET</span>"
|
||||
projectile_type = /obj/item/projectile/beam/energy_net
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/xray
|
||||
name = "\'NSFW\' microbattery - XRAY"
|
||||
type_color = "#32c025"
|
||||
type_name = "<span style='color:#32c025;font-weight:bold;'>XRAY</span>"
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/shotstun
|
||||
name = "\'NSFW\' microbattery - SCATTERSTUN"
|
||||
type_color = "#88ffff"
|
||||
type_name = "<span style='color:#88ffff;font-weight:bold;'>SCATTERSTUN</span>"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/e_shot_stun
|
||||
|
||||
/obj/item/projectile/bullet/pellet/e_shot_stun
|
||||
icon_state = "spell"
|
||||
damage = 2
|
||||
agony = 20
|
||||
pellets = 6 //number of pellets
|
||||
range_step = 2 //projectile will lose a fragment each time it travels this distance. Can be a non-integer.
|
||||
base_spread = 90 //lower means the pellets spread more across body parts. If zero then this is considered a shrapnel explosion instead of a shrapnel cone
|
||||
spread_step = 10
|
||||
embed_chance = 0
|
||||
sharp = 0
|
||||
check_armour = "melee"
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/ion
|
||||
name = "\'NSFW\' microbattery - ION"
|
||||
type_color = "#d084d6"
|
||||
type_name = "<span style='color:#d084d6;font-weight:bold;'>ION</span>"
|
||||
projectile_type = /obj/item/projectile/ion/small
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/stripper
|
||||
name = "\'NSFW\' microbattery - STRIPPER"
|
||||
type_color = "#fc8d0f"
|
||||
type_name = "<span style='color:#fc8d0f;font-weight:bold;'>STRIPPER</span>"
|
||||
projectile_type = /obj/item/projectile/bullet/stripper
|
||||
|
||||
/obj/item/projectile/bullet/stripper
|
||||
icon_state = "magicm"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
embed_chance = 0
|
||||
sharp = 0
|
||||
check_armour = "melee"
|
||||
|
||||
/obj/item/projectile/bullet/stripper/on_hit(var/atom/stripped)
|
||||
if(ishuman(stripped))
|
||||
var/mob/living/carbon/human/H = stripped
|
||||
if(H.wear_suit)
|
||||
H.unEquip(H.wear_suit)
|
||||
if(H.w_uniform)
|
||||
H.unEquip(H.w_uniform)
|
||||
if(H.back)
|
||||
H.unEquip(H.back)
|
||||
if(H.shoes)
|
||||
H.unEquip(H.shoes)
|
||||
if(H.gloves)
|
||||
H.unEquip(H.gloves)
|
||||
//Hats can stay! Most other things fall off with removing these.
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/final
|
||||
name = "\'NSFW\' microbattery - FINAL OPTION"
|
||||
type_color = "#fcfc0f"
|
||||
type_name = "<span style='color:#000000;font-weight:bold;'>FINAL OPTION</span>" //Doesn't look good in yellow in chat
|
||||
projectile_type = /obj/item/projectile/beam/final_option
|
||||
|
||||
/obj/item/projectile/beam/final_option
|
||||
name = "final option beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CC33"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/final_option/on_hit(var/atom/impacted)
|
||||
if(isliving(impacted))
|
||||
var/mob/living/L = impacted
|
||||
if(L.mind)
|
||||
var/nif
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
nif = H.nif
|
||||
SStranscore.m_backup(L.mind,nif,one_time = TRUE)
|
||||
L.gib()
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack
|
||||
name = "\improper HI-102b \'NSFW\' gun kit"
|
||||
desc = "A storage case for a multi-purpose handgun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/nsfw/combat(src)
|
||||
new /obj/item/ammo_magazine/nsfw_mag/combat(src)
|
||||
for(var/path in subtypesof(/obj/item/ammo_casing/nsfw_batt/combat))
|
||||
new path(src)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos
|
||||
name = "\improper HI-102b \'NSFW\' gun kit"
|
||||
desc = "A storage case for a multi-purpose handgun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/nsfw/combat(src)
|
||||
new /obj/item/ammo_magazine/nsfw_mag/combat(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/combat/lethal(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/combat/lethal(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/combat/stun(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/combat/stun(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/combat/net(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/combat/ion(src)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med
|
||||
name = "\improper ML-3 \'Medigun\' kit"
|
||||
desc = "A storage case for a multi-purpose healing gun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/nsfw/medical(src)
|
||||
new /obj/item/ammo_magazine/nsfw_mag/medical(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/brute(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/burn(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/stabilize(src)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_cmo
|
||||
name = "\improper Advanced ML-3 \'Medigun\' kit"
|
||||
desc = "A storage case for a multi-purpose healing gun. Variety hour!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_cmo/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/projectile/nsfw/medical/cmo(src)
|
||||
new /obj/item/ammo_magazine/nsfw_mag/medical/advanced(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/brute2(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/brute2(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/burn2(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/burn2(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/stabilize2(src)
|
||||
new /obj/item/ammo_casing/nsfw_batt/medical/stabilize2(src)
|
||||
|
||||
|
||||
// Medical //
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical
|
||||
name = "\'ML-3/M\' nanite cell - UNKNOWN"
|
||||
desc = "A miniature nanite fabricator for a medigun."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
|
||||
icon_state = "ml3m_batt"
|
||||
|
||||
/obj/item/projectile/beam/ML3M
|
||||
name = "\improper healing beam"
|
||||
icon_state = "medbeam"
|
||||
nodamage = 1
|
||||
damage = 0
|
||||
check_armour = "laser"
|
||||
light_color = "#80F5FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/medigun
|
||||
tracer_type = /obj/effect/projectile/tracer/medigun
|
||||
impact_type = /obj/effect/projectile/impact/medigun
|
||||
|
||||
/obj/item/projectile/beam/ML3M/on_hit(var/mob/living/carbon/human/target) //what does it do when it hits someone?
|
||||
return
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/brute
|
||||
name = "\'ML-3/M\' nanite cell - BRUTE"
|
||||
type_color = "#BF0000"
|
||||
type_name = "<span style='color:#BF0000;font-weight:bold;'>BRUTE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/brute
|
||||
|
||||
/obj/item/projectile/beam/ML3M/brute/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-10)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/burn
|
||||
name = "\'ML-3/M\' nanite cell - BURN"
|
||||
type_color = "#FF8000"
|
||||
type_name = "<span style='color:#FF8000;font-weight:bold;'>BURN</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/burn
|
||||
|
||||
/obj/item/projectile/beam/ML3M/burn/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustFireLoss(-10)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/stabilize
|
||||
name = "\'ML-3/M\' nanite cell - STABILIZE" //Disinfects all open wounds, cures oxy damage
|
||||
type_color = "#0080FF"
|
||||
type_name = "<span style='color:#0080FF;font-weight:bold;'>STABILIZE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/stabilize
|
||||
|
||||
/obj/item/projectile/beam/ML3M/stabilize/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustOxyLoss(-30)
|
||||
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
|
||||
var/obj/item/organ/external/O = target.organs_by_name[name]
|
||||
for (var/datum/wound/W in O.wounds)
|
||||
if (W.internal)
|
||||
continue
|
||||
W.disinfect()
|
||||
target.add_modifier(/datum/modifier/stabilize, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/datum/modifier/stabilize
|
||||
name = "stabilize"
|
||||
desc = "Your injuries are stabilized and your pain abates!"
|
||||
mob_overlay_state = "cyan_sparkles"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
pain_immunity = TRUE
|
||||
bleeding_rate_percent = 0.1 //only a little
|
||||
incoming_oxy_damage_percent = 0
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/tox
|
||||
name = "\'ML-3/M\' nanite cell - TOX"
|
||||
type_color = "#00A000"
|
||||
type_name = "<span style='color:#00A000;font-weight:bold;'>TOX</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/tox
|
||||
|
||||
/obj/item/projectile/beam/ML3M/tox/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustToxLoss(-10)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/omni
|
||||
name = "\'ML-3/M\' nanite cell - OMNI"
|
||||
type_color = "#8040FF"
|
||||
type_name = "<span style='color:#8040FF;font-weight:bold;'>OMNI</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/omni
|
||||
|
||||
/obj/item/projectile/beam/ML3M/omni/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-5)
|
||||
target.adjustFireLoss(-5)
|
||||
target.adjustToxLoss(-5)
|
||||
target.adjustOxyLoss(-15)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/antirad
|
||||
name = "\'ML-3/M\' nanite cell - OMNI"
|
||||
type_color = "#008000"
|
||||
type_name = "<span style='color:#008000;font-weight:bold;'>ANTIRAD</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/antirad
|
||||
|
||||
/obj/item/projectile/beam/ML3M/antirad/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustToxLoss(-5)
|
||||
target.radiation = max(target.radiation - 350, 0) //same as 5 units of arithrazine, sans the brute damage
|
||||
else
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/brute2
|
||||
name = "\'ML-3/M\' nanite cell - BRUTE-II"
|
||||
type_color = "#BF0000"
|
||||
type_name = "<span style='color:#BF0000;font-weight:bold;'>BRUTE-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/brute2
|
||||
|
||||
/obj/item/projectile/beam/ML3M/brute2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-20)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/burn2
|
||||
name = "\'ML-3/M\' nanite cell - BURN-II"
|
||||
type_color = "#FF8000"
|
||||
type_name = "<span style='color:#FF8000;font-weight:bold;'>BURN-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/burn2
|
||||
|
||||
/obj/item/projectile/beam/ML3M/burn2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustFireLoss(-20)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/stabilize2
|
||||
name = "\'ML-3/M\' nanite cell - STABILIZE-II" //Disinfects and bandages all open wounds, cures all oxy damage
|
||||
type_color = "#0080FF"
|
||||
type_name = "<span style='color:#0080FF;font-weight:bold;'>STABILIZE-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/stabilize2
|
||||
|
||||
/obj/item/projectile/beam/ML3M/stabilize2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustOxyLoss(-200)
|
||||
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
|
||||
var/obj/item/organ/external/O = target.organs_by_name[name]
|
||||
for (var/datum/wound/W in O.wounds)
|
||||
if(W.internal)
|
||||
continue
|
||||
if(O.is_bandaged() == FALSE)
|
||||
W.bandage()
|
||||
if(O.is_salved() == FALSE)
|
||||
W.salve()
|
||||
W.disinfect()
|
||||
target.add_modifier(/datum/modifier/stabilize, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/omni2
|
||||
name = "\'ML-3/M\' nanite cell - OMNI-II"
|
||||
type_color = "#8040FF"
|
||||
type_name = "<span style='color:#8040FF;font-weight:bold;'>OMNI-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/omni2
|
||||
|
||||
/obj/item/projectile/beam/ML3M/omni2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustBruteLoss(-10)
|
||||
target.adjustFireLoss(-10)
|
||||
target.adjustToxLoss(-10)
|
||||
target.adjustOxyLoss(-30)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/tox2
|
||||
name = "\'ML-3/M\' nanite cell - TOX-II"
|
||||
type_color = "#00A000"
|
||||
type_name = "<span style='color:#00A000;font-weight:bold;'>TOX-II</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/tox2
|
||||
|
||||
/obj/item/projectile/beam/ML3M/tox2/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.adjustToxLoss(-20)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/haste
|
||||
name = "\'ML-3/M\' nanite cell - HASTE"
|
||||
type_color = "#FF3300"
|
||||
type_name = "<span style='color:#FF3300;font-weight:bold;'>HASTE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/haste
|
||||
|
||||
/obj/item/projectile/beam/ML3M/haste/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.add_modifier(/datum/modifier/ml3mhaste, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/datum/modifier/ml3mhaste
|
||||
name = "haste"
|
||||
desc = "You can move much faster!"
|
||||
mob_overlay_state = "haste"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
slowdown = -1 //a little faster!
|
||||
evasion = 1.25 //and a little harder to hit!
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/resistance
|
||||
name = "\'ML-3/M\' nanite cell - RESIST"
|
||||
type_color = "#555555"
|
||||
type_name = "<span style='color:#555555;font-weight:bold;'>RESIST</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/resistance
|
||||
|
||||
/obj/item/projectile/beam/ML3M/resistance/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.add_modifier(/datum/modifier/resistance, 20 SECONDS)
|
||||
else
|
||||
return 1
|
||||
|
||||
/datum/modifier/resistance
|
||||
name = "resistance"
|
||||
desc = "You resist 25% of all incoming damage and stuns!"
|
||||
mob_overlay_state = "repel_missiles"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
disable_duration_percent = 0.75
|
||||
incoming_damage_percent = 0.75
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/revival
|
||||
name = "\'ML-3/M\' nanite cell - REVIVAL"
|
||||
type_color = "#669900"
|
||||
type_name = "<span style='color:#669900;font-weight:bold;'>REVIVAL</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/revival
|
||||
|
||||
/obj/item/projectile/beam/ML3M/revival/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
if(target.stat == DEAD)
|
||||
target.adjustBruteLoss(-50)
|
||||
target.adjustFireLoss(-50)
|
||||
target.adjustToxLoss(-50)
|
||||
target.adjustOxyLoss(-200)
|
||||
else
|
||||
return 1
|
||||
|
||||
/datum/modifier/resistance
|
||||
name = "resistance"
|
||||
desc = "You resist 25% of all incoming damage and stuns!"
|
||||
mob_overlay_state = "repel_missiles"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
disable_duration_percent = 0.75
|
||||
incoming_damage_percent = 0.75
|
||||
|
||||
// Illegal cells!
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/shrink
|
||||
name = "\'ML-3/M\' nanite cell - SHRINK"
|
||||
type_color = "#910ffc"
|
||||
type_name = "<span style='color:#910ffc;font-weight:bold;'>SHRINK</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/shrink
|
||||
|
||||
/obj/item/projectile/beam/ML3M/shrink/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.resize(0.5)
|
||||
target.show_message("<font color='blue'> The beam fires into your body, changing your size!</font>")
|
||||
target.updateicon()
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/grow
|
||||
name = "\'ML-3/M\' nanite cell - GROW"
|
||||
type_color = "#fc0fdc"
|
||||
type_name = "<span style='color:#fc0fdc;font-weight:bold;'>GROW</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/grow
|
||||
|
||||
/obj/item/projectile/beam/ML3M/grow/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.resize(2.0)
|
||||
target.show_message("<font color='blue'> The beam fires into your body, changing your size!</font>")
|
||||
target.updateicon()
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/normalsize
|
||||
name = "\'ML-3/M\' nanite cell - NORMALSIZE"
|
||||
type_color = "#C70FEC"
|
||||
type_name = "<span style='color:#C70FEC;font-weight:bold;'>NORMALSIZE</span>"
|
||||
projectile_type = /obj/item/projectile/beam/ML3M/normalsize
|
||||
|
||||
/obj/item/projectile/beam/ML3M/normalsize/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
target.resize(1)
|
||||
target.show_message("<font color='blue'> The beam fires into your body, changing your size!</font>")
|
||||
target.updateicon()
|
||||
else
|
||||
return 1
|
||||
@@ -4,6 +4,7 @@
|
||||
name = "micro"
|
||||
desc = "Another crewmember, small enough to fit in your hand."
|
||||
icon_state = "micro"
|
||||
icon_override = 'icons/mob/head_vr.dmi'
|
||||
slot_flags = SLOT_FEET | SLOT_HEAD | SLOT_ID
|
||||
w_class = ITEMSIZE_SMALL
|
||||
item_icons = list() // No in-hand sprites (for now, anyway, we could totally add some)
|
||||
@@ -34,4 +35,9 @@
|
||||
var/turf/here = get_turf(src)
|
||||
for(var/atom/movable/A in src)
|
||||
A.forceMove(here)
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/holder/micro/sync(var/mob/living/M)
|
||||
..()
|
||||
for(var/mob/living/carbon/human/I in contents)
|
||||
item_state = lowertext(I.species.name)
|
||||
@@ -135,7 +135,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2
|
||||
var/mob/living/simple_mob/SA = M
|
||||
if(!SA.has_hands)
|
||||
return 0
|
||||
if(M.buckled)
|
||||
if(buckled)
|
||||
to_chat(usr,"<span class='notice'>You have to unbuckle \the [M] before you pick them up.</span>")
|
||||
return 0
|
||||
if(size_diff >= 0.50)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 614 B After Width: | Height: | Size: 813 B |
@@ -11,4 +11,7 @@
|
||||
#maps/RandomZLevels/listeningpost.dmm
|
||||
#maps/RandomZLevels/blackmarketpackers.dmm
|
||||
#maps/RandomZLevels/beach.dmm
|
||||
#maps/RandomZLevels/zoo.dmm
|
||||
#maps/RandomZLevels/zoo.dmm
|
||||
|
||||
#This one works with the Tether, uncomment when gateway code is unfucked
|
||||
#maps/RandomZLevels/snow_outpost.dmm
|
||||
@@ -0,0 +1,41 @@
|
||||
// -- Areas -- //
|
||||
|
||||
/area/awaymission/snow_outpost
|
||||
icon_state = "blank"
|
||||
requires_power = 0
|
||||
base_turf = /turf/snow/snow2
|
||||
ambience = list('sound/music/main.ogg', 'sound/ambience/maintenance/maintenance4.ogg', 'sound/ambience/sif/sif1.ogg', 'sound/ambience/ruins/ruins1.ogg')
|
||||
base_turf = /turf/simulated/floor/snow/snow2
|
||||
|
||||
/area/awaymission/snow_outpost/outside
|
||||
icon_state = "away1"
|
||||
requires_power = 1
|
||||
always_unpowered = 1
|
||||
dynamic_lighting = 1
|
||||
power_light = 0
|
||||
power_equip = 0
|
||||
power_environ = 0
|
||||
mobcountmax = 100
|
||||
floracountmax = 7000
|
||||
valid_mobs = list(/mob/living/simple_mob/animal/sif/savik, /mob/living/simple_mob/animal/wolf, /mob/living/simple_mob/animal/sif/shantak,
|
||||
/mob/living/simple_mob/animal/sif/kururak, /mob/living/simple_mob/animal/sif/frostfly)
|
||||
valid_flora = list(/obj/structure/flora/tree/pine, /obj/structure/flora/tree/pine, /obj/structure/flora/tree/pine,
|
||||
/obj/structure/flora/tree/dead, /obj/structure/flora/grass/brown, /obj/structure/flora/grass/green,
|
||||
/obj/structure/flora/grass/both, /obj/structure/flora/bush, /obj/structure/flora/ausbushes/grassybush,
|
||||
/obj/structure/flora/ausbushes/sunnybush, /obj/structure/flora/ausbushes/genericbush, /obj/structure/flora/ausbushes/pointybush,
|
||||
/obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fullgrass)
|
||||
|
||||
/area/awaymission/snow_outpost/restricted // No mob spawns!
|
||||
icon_state = "red"
|
||||
mobcountmax = 1 // Hacky fix.
|
||||
floracountmax = 100
|
||||
valid_mobs = list(/obj/structure/flora/tree/pine) // Hacky fix.
|
||||
valid_flora = list(/obj/structure/flora/tree/pine, /obj/structure/flora/tree/pine, /obj/structure/flora/tree/pine,
|
||||
/obj/structure/flora/tree/dead, /obj/structure/flora/grass/brown, /obj/structure/flora/grass/green,
|
||||
/obj/structure/flora/grass/both, /obj/structure/flora/bush, /obj/structure/flora/ausbushes/grassybush,
|
||||
/obj/structure/flora/ausbushes/sunnybush, /obj/structure/flora/ausbushes/genericbush, /obj/structure/flora/ausbushes/pointybush,
|
||||
/obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fullgrass)
|
||||
|
||||
/area/awaymission/snow_outpost/outpost
|
||||
icon_state = "away"
|
||||
ambience = list('sound/ambience/chapel/chapel1.ogg', 'sound/ambience/ruins/ruins5.ogg', 'sound/ambience/ruins/ruins1.ogg') // Rykka was here. <3
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -65,7 +65,7 @@
|
||||
//guard = 20
|
||||
mobs_to_pick_from = list(
|
||||
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic = 3,
|
||||
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion = 3,
|
||||
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion = 1,
|
||||
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser = 3,
|
||||
/mob/living/simple_mob/vore/aggressive/corrupthound = 1
|
||||
)
|
||||
|
||||
@@ -119,9 +119,9 @@
|
||||
mobs_to_pick_from = list(
|
||||
/mob/living/simple_mob/vore/aggressive/frog = 3, //Frogs are 3x more likely to spawn than,
|
||||
/mob/living/simple_mob/vore/aggressive/deathclaw = 1, //these deathclaws are, with these values,
|
||||
/mob/living/simple_mob/animal/giant_spider = 3,
|
||||
/mob/living/simple_mob/animal/giant_spider = 2,
|
||||
/mob/living/simple_mob/vore/aggressive/giant_snake = 1,
|
||||
/mob/living/simple_mob/animal/giant_spider/ion = 2
|
||||
/mob/living/simple_mob/animal/giant_spider/webslinger = 1
|
||||
)
|
||||
|
||||
// These are step-teleporters, for map edge transitions
|
||||
|
||||
+23659
-25176
File diff suppressed because it is too large
Load Diff
+19918
-17681
File diff suppressed because it is too large
Load Diff
+10925
-6859
File diff suppressed because it is too large
Load Diff
+5222
-4840
File diff suppressed because it is too large
Load Diff
@@ -5627,7 +5627,7 @@
|
||||
/area/gateway/prep_room)
|
||||
"akc" = (
|
||||
/obj/machinery/door/blast/shutters{
|
||||
dir = 2;
|
||||
dir = 8;
|
||||
id = "PubPrep";
|
||||
layer = 3.3;
|
||||
name = "Public Access Shutter"
|
||||
@@ -5817,7 +5817,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/blast/shutters{
|
||||
dir = 2;
|
||||
dir = 8;
|
||||
id = "PubPrep";
|
||||
layer = 3.3;
|
||||
name = "Public Access Shutter"
|
||||
|
||||
@@ -4240,18 +4240,20 @@
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/ai_upload)
|
||||
"go" = (
|
||||
/obj/effect/floor_decal/borderfloor,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/effect/floor_decal/borderfloor/corner,
|
||||
/obj/effect/floor_decal/corner/lightgrey/bordercorner,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border,
|
||||
/obj/effect/floor_decal/borderfloor/corner2{
|
||||
dir = 9
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2";
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/bordercorner2{
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 9
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
@@ -4336,21 +4338,20 @@
|
||||
/turf/simulated/open,
|
||||
/area/engineering/locker_room)
|
||||
"gx" = (
|
||||
/obj/effect/floor_decal/borderfloor,
|
||||
/obj/effect/floor_decal/corner/paleblue/border,
|
||||
/obj/effect/floor_decal/borderfloor/corner2{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/bordercorner2{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals4{
|
||||
dir = 5
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals4{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/station/starboard)
|
||||
"gy" = (
|
||||
@@ -9785,18 +9786,14 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/station/starboard)
|
||||
"op" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/effect/floor_decal/borderfloor/corner,
|
||||
/obj/effect/floor_decal/corner/lightgrey/bordercorner,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 8
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals4{
|
||||
dir = 5
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2";
|
||||
pixel_y = 0
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals4{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/station/starboard)
|
||||
@@ -12914,6 +12911,11 @@
|
||||
/obj/item/weapon/autopsy_scanner,
|
||||
/obj/item/weapon/surgical/cautery,
|
||||
/obj/effect/floor_decal/techfloor,
|
||||
/obj/machinery/light_switch{
|
||||
dir = 1;
|
||||
pixel_x = 0;
|
||||
pixel_y = -26
|
||||
},
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/medical/morgue)
|
||||
"th" = (
|
||||
@@ -13434,6 +13436,9 @@
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/computer/guestpass{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/resleeving)
|
||||
"tV" = (
|
||||
@@ -13724,6 +13729,7 @@
|
||||
/obj/structure/table/standard,
|
||||
/obj/random/tetheraid,
|
||||
/obj/random/tetheraid,
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med,
|
||||
/obj/item/device/radio/intercom/department/medbay{
|
||||
dir = 1;
|
||||
pixel_y = 24
|
||||
@@ -14963,6 +14969,11 @@
|
||||
pixel_y = -26;
|
||||
range = 12
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
dir = 1;
|
||||
pixel_x = -8;
|
||||
pixel_y = -26
|
||||
},
|
||||
/turf/simulated/floor/carpet/blue,
|
||||
/area/medical/psych)
|
||||
"wx" = (
|
||||
@@ -15048,6 +15059,11 @@
|
||||
/obj/effect/floor_decal/corner/paleblue/bordercorner2{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
dir = 1;
|
||||
pixel_x = 0;
|
||||
pixel_y = -26
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/resleeving)
|
||||
"wF" = (
|
||||
@@ -16206,7 +16222,6 @@
|
||||
/area/medical/surgery2)
|
||||
"yx" = (
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/stack/nanopaste,
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 6
|
||||
},
|
||||
@@ -16922,6 +16937,11 @@
|
||||
/obj/effect/floor_decal/corner/pink/bordercorner2{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
dir = 8;
|
||||
pixel_x = 26;
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/patient_a)
|
||||
"zF" = (
|
||||
@@ -17586,6 +17606,11 @@
|
||||
/obj/effect/floor_decal/corner/pink/bordercorner2{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
dir = 8;
|
||||
pixel_x = 26;
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/patient_b)
|
||||
"AI" = (
|
||||
@@ -18370,6 +18395,11 @@
|
||||
/obj/effect/floor_decal/corner/pink/bordercorner2{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
dir = 8;
|
||||
pixel_x = 26;
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/patient_c)
|
||||
"BR" = (
|
||||
@@ -19243,6 +19273,11 @@
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
dir = 4;
|
||||
pixel_x = -28;
|
||||
pixel_y = 0
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/ward)
|
||||
"Dg" = (
|
||||
@@ -20190,6 +20225,11 @@
|
||||
/obj/effect/floor_decal/corner/pink/border{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
dir = 1;
|
||||
pixel_x = 0;
|
||||
pixel_y = -24
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/exam_room)
|
||||
"EK" = (
|
||||
@@ -20474,7 +20514,6 @@
|
||||
/area/maintenance/station/sec_lower)
|
||||
"Fg" = (
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/stack/nanopaste,
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 5
|
||||
},
|
||||
@@ -32697,7 +32736,7 @@ pk
|
||||
pT
|
||||
qF
|
||||
fG
|
||||
go
|
||||
gx
|
||||
pr
|
||||
qN
|
||||
rw
|
||||
@@ -32839,7 +32878,7 @@ pl
|
||||
lK
|
||||
qG
|
||||
fH
|
||||
gx
|
||||
op
|
||||
ps
|
||||
qO
|
||||
rx
|
||||
@@ -32975,7 +33014,7 @@ lJ
|
||||
lJ
|
||||
lJ
|
||||
nL
|
||||
op
|
||||
go
|
||||
oV
|
||||
pm
|
||||
pU
|
||||
|
||||
@@ -3669,10 +3669,15 @@
|
||||
/area/hallway/station/upper)
|
||||
"fR" = (
|
||||
/obj/machinery/door/firedoor/glass,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/simulated/floor/tiled,
|
||||
/obj/machinery/door/airlock/multi_tile/glass{
|
||||
name = "Security Lobby"
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals_central1{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled/monofloor{
|
||||
dir = 8
|
||||
},
|
||||
/area/security/lobby)
|
||||
"fS" = (
|
||||
/obj/effect/floor_decal/borderfloor{
|
||||
@@ -5904,26 +5909,24 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/hallwayaux)
|
||||
"jm" = (
|
||||
/obj/effect/floor_decal/borderfloor{
|
||||
/obj/effect/floor_decal/corner/lightgrey{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/floor_decal/corner/lightgrey{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/sign/poster{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals6{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/floor_decal/corner/red/border{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/borderfloor/corner2{
|
||||
dir = 4
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals6{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/device/radio/intercom{
|
||||
dir = 1;
|
||||
pixel_y = 24;
|
||||
req_access = list()
|
||||
},
|
||||
/obj/effect/floor_decal/corner/red/bordercorner2{
|
||||
dir = 4
|
||||
dir = 8;
|
||||
pixel_x = -24
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/station/upper)
|
||||
@@ -15927,20 +15930,24 @@
|
||||
/turf/simulated/wall,
|
||||
/area/maintenance/station/elevator)
|
||||
"yA" = (
|
||||
/obj/effect/floor_decal/corner/lightgrey{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/floor_decal/corner/lightgrey{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/sign/poster{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals6{
|
||||
/obj/effect/floor_decal/borderfloor{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals6{
|
||||
dir = 8
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals7{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/floor_decal/corner/red/border{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/borderfloor/corner2{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/floor_decal/corner/red/bordercorner2{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/guestpass{
|
||||
pixel_y = 30
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/station/upper)
|
||||
@@ -16099,6 +16106,18 @@
|
||||
/area/medical/reception)
|
||||
"yL" = (
|
||||
/obj/machinery/door/firedoor/glass,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals_central1{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/tiled/monofloor{
|
||||
dir = 4
|
||||
},
|
||||
/area/security/lobby)
|
||||
"yM" = (
|
||||
/obj/machinery/door/firedoor/glass,
|
||||
/obj/machinery/door/airlock/multi_tile/glass{
|
||||
name = "Medbay Lobby"
|
||||
},
|
||||
@@ -16110,25 +16129,11 @@
|
||||
name = "Medbay Emergency Lockdown Shutters";
|
||||
opacity = 0
|
||||
},
|
||||
/turf/simulated/floor/tiled/monofloor{
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals_central1{
|
||||
dir = 8
|
||||
},
|
||||
/area/medical/reception)
|
||||
"yM" = (
|
||||
/obj/machinery/door/firedoor/glass,
|
||||
/obj/machinery/door/blast/shutters{
|
||||
density = 0;
|
||||
dir = 2;
|
||||
icon_state = "shutter0";
|
||||
id = "medbayquar";
|
||||
name = "Medbay Emergency Lockdown Shutters";
|
||||
opacity = 0
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/simulated/floor/tiled/monofloor{
|
||||
dir = 4
|
||||
dir = 8
|
||||
},
|
||||
/area/medical/reception)
|
||||
"yN" = (
|
||||
@@ -16526,11 +16531,24 @@
|
||||
/area/security/lobby)
|
||||
"zr" = (
|
||||
/obj/machinery/door/firedoor/glass,
|
||||
/obj/machinery/door/airlock/multi_tile/glass{
|
||||
name = "Security Lobby"
|
||||
/obj/machinery/door/blast/shutters{
|
||||
density = 0;
|
||||
dir = 2;
|
||||
icon_state = "shutter0";
|
||||
id = "medbayquar";
|
||||
name = "Medbay Emergency Lockdown Shutters";
|
||||
opacity = 0
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/lobby)
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals_central1{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/tiled/monofloor{
|
||||
dir = 4
|
||||
},
|
||||
/area/medical/reception)
|
||||
"zs" = (
|
||||
/obj/machinery/door/firedoor/glass,
|
||||
/obj/machinery/door/airlock/medical{
|
||||
@@ -23600,6 +23618,7 @@
|
||||
/obj/item/clothing/glasses/hud/health,
|
||||
/obj/item/device/defib_kit/compact/combat/loaded,
|
||||
/obj/item/weapon/cmo_disk_holder,
|
||||
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_cmo,
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 6
|
||||
},
|
||||
@@ -37313,7 +37332,7 @@ wp
|
||||
wn
|
||||
xL
|
||||
yw
|
||||
zr
|
||||
fR
|
||||
hZ
|
||||
mX
|
||||
pS
|
||||
@@ -37455,7 +37474,7 @@ wq
|
||||
wV
|
||||
xM
|
||||
yx
|
||||
fR
|
||||
yL
|
||||
jf
|
||||
nc
|
||||
qQ
|
||||
@@ -37598,10 +37617,10 @@ uP
|
||||
uP
|
||||
uP
|
||||
zt
|
||||
jm
|
||||
yA
|
||||
nf
|
||||
Ch
|
||||
yL
|
||||
yM
|
||||
AC
|
||||
Cl
|
||||
Cl
|
||||
@@ -37743,7 +37762,7 @@ yz
|
||||
jr
|
||||
ng
|
||||
rq
|
||||
yM
|
||||
zr
|
||||
AD
|
||||
Cm
|
||||
Cm
|
||||
@@ -38164,7 +38183,7 @@ vO
|
||||
wu
|
||||
wX
|
||||
sp
|
||||
yA
|
||||
jm
|
||||
zv
|
||||
Aq
|
||||
Aw
|
||||
|
||||
+1757
-932
File diff suppressed because it is too large
Load Diff
@@ -375,13 +375,13 @@
|
||||
/area/centcom/specops)
|
||||
"aH" = (
|
||||
/obj/structure/closet/crate/medical,
|
||||
/obj/item/stack/nanopaste,
|
||||
/obj/item/stack/nanopaste/advanced,
|
||||
/obj/item/weapon/tank/anesthetic,
|
||||
/obj/item/clothing/mask/breath/medical,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/stack/nanopaste,
|
||||
/obj/item/stack/nanopaste,
|
||||
/obj/item/stack/nanopaste/advanced,
|
||||
/obj/item/stack/nanopaste/advanced,
|
||||
/obj/item/weapon/storage/firstaid/surgery,
|
||||
/turf/unsimulated/floor{
|
||||
icon_state = "vault";
|
||||
@@ -1098,7 +1098,8 @@
|
||||
/area/centcom/specops)
|
||||
"bP" = (
|
||||
/obj/machinery/door/blast/regular{
|
||||
name = "When Everything else fails."
|
||||
name = "When Everything else fails.";
|
||||
dir = 4
|
||||
},
|
||||
/turf/unsimulated/floor{
|
||||
icon_state = "dark"
|
||||
@@ -1159,16 +1160,7 @@
|
||||
/area/centcom/specops)
|
||||
"bW" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/stun,
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/stun,
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/stun,
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/brute2,
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/burn2,
|
||||
/obj/item/ammo_casing/nsfw_batt/medical/stabilize2,
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/net,
|
||||
/obj/item/ammo_casing/nsfw_batt/combat/net,
|
||||
/obj/item/ammo_magazine/nsfw_mag,
|
||||
/obj/item/weapon/gun/projectile/nsfw,
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid,
|
||||
/turf/unsimulated/floor/steel{
|
||||
icon = 'icons/turf/floors_vr.dmi';
|
||||
icon_state = "wood"
|
||||
@@ -7453,7 +7445,7 @@
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/stack/nanopaste,
|
||||
/obj/item/stack/nanopaste/advanced,
|
||||
/turf/unsimulated/floor/steel{
|
||||
icon_state = "white"
|
||||
},
|
||||
@@ -16979,8 +16971,8 @@
|
||||
/area/centcom/evac)
|
||||
"QQ" = (
|
||||
/obj/structure/table/rack,
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack,
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack,
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat,
|
||||
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat,
|
||||
/turf/unsimulated/floor{
|
||||
icon_state = "dark"
|
||||
},
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "tether_shuttle_defs.dm"
|
||||
#include "tether_shuttles.dm"
|
||||
#include "tether_telecomms.dm"
|
||||
#include "tether_virgo3b.dm"
|
||||
|
||||
#include "tether-01-surface1.dmm"
|
||||
#include "tether-02-surface2.dmm"
|
||||
|
||||
@@ -170,6 +170,8 @@
|
||||
name = "\improper Civilian West Substation"
|
||||
/area/maintenance/substation/exploration
|
||||
name = "\improper Exploration Substation"
|
||||
/area/maintenance/tether_midpoint
|
||||
name = "\improper Tether Midpoint Maint"
|
||||
|
||||
|
||||
/area/tether/surfacebase/medical
|
||||
@@ -258,7 +260,7 @@
|
||||
/area/maintenance/lower/trash_pit
|
||||
name = "\improper Trash Pit"
|
||||
/area/maintenance/lower/solars
|
||||
name = "\improper Solars maintenanceance"
|
||||
name = "\improper Solars Maintenance"
|
||||
/area/maintenance/lower/mining_eva
|
||||
name = "\improper Mining EVA Maintenance"
|
||||
/area/maintenance/lower/public_garden_maintenence
|
||||
@@ -290,6 +292,9 @@
|
||||
/area/rnd/chemistry_lab
|
||||
name = "\improper Research Chemistry Lab"
|
||||
icon_state = "research"
|
||||
/area/rnd/miscellaneous_lab
|
||||
name = "\improper Research Miscellaneous Lab"
|
||||
icon_state = "research"
|
||||
/area/rnd/staircase/secondfloor
|
||||
name = "\improper Research Staircase Second Floor"
|
||||
icon_state = "research"
|
||||
@@ -316,6 +321,10 @@
|
||||
name = "\improper Research Outpost Hallway"
|
||||
icon_state = "research"
|
||||
|
||||
/area/rnd/outpost/breakroom
|
||||
name = "\improper Research Outpost Breakroom"
|
||||
icon_state = "research"
|
||||
|
||||
/area/rnd/outpost/airlock
|
||||
name = "\improper Research Outpost Airlock"
|
||||
icon_state = "green"
|
||||
@@ -360,6 +369,9 @@
|
||||
/area/rnd/outpost/anomaly_lab/testing
|
||||
name = "\improper Anomaly Lab Testing Chamber"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/anomaly_lab/airlock
|
||||
name = "\improper Anomaly Lab Testing Chamber Airlock"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/anomaly_lab/storage
|
||||
name = "\improper Anomaly Storage"
|
||||
icon_state = "research"
|
||||
@@ -367,6 +379,48 @@
|
||||
name = "\improper Research Outpost Xenoarch Storage"
|
||||
icon_state = "research"
|
||||
|
||||
|
||||
// Xenobiology Outpost Areas
|
||||
/area/rnd/outpost/xenobiology/outpost_north_airlock
|
||||
name = "\improper Xenbiology Northern Airlock"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_south_airlock
|
||||
name = "\improper Xenbiology Southern Airlock"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_hallway
|
||||
name = "\improper Xenbiology Access Corridor"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_breakroom
|
||||
name = "\improper Xenbiology Breakroom"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_office
|
||||
name = "\improper Xenbiology Main Office"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_autopsy
|
||||
name = "\improper Xenbiology Alien Autopsy Room"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_decon
|
||||
name = "\improper Xenbiology Decontamination and Showers"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_first_aid
|
||||
name = "\improper Xenbiology First Aid"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_slimepens
|
||||
name = "\improper Xenbiology Slime and Xenos Containment"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_main
|
||||
name = "\improper Xenbiology Main Outpost"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_storage
|
||||
name = "\improper Xenbiology Equipment Storage"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_stairs
|
||||
name = "\improper Xenbiology Stairwell"
|
||||
icon_state = "research"
|
||||
/area/rnd/outpost/xenobiology/outpost_substation
|
||||
name = "\improper Xenbiology SMES Substation"
|
||||
icon_state = "research"
|
||||
|
||||
// Misc
|
||||
/area/hallway/lower/third_south
|
||||
name = "\improper Hallway Third Floor South"
|
||||
@@ -627,6 +681,12 @@
|
||||
/area/hallway/station/docks
|
||||
name = "\improper Docks Hallway"
|
||||
|
||||
/area/bridge/secondary
|
||||
name = "\improper Secondary Command Office"
|
||||
|
||||
/area/bridge/secondary/meeting_room
|
||||
name = "\improper Secondary Command Meeting Room"
|
||||
|
||||
/area/maintenance/station
|
||||
icon_state = "fsmaint"
|
||||
/area/maintenance/station/bridge
|
||||
@@ -733,6 +793,9 @@
|
||||
|
||||
requires_power = FALSE
|
||||
|
||||
/area/tether/midpoint
|
||||
name = "\improper Tether Midpoint"
|
||||
|
||||
//////////////////////////////////
|
||||
|
||||
/area/antag/antag_base
|
||||
@@ -914,4 +977,4 @@
|
||||
excluded |= /area/tether/surfacebase/atrium_three
|
||||
excluded |= /area/teleporter/departing
|
||||
excluded |= /area/hallway/station/upper
|
||||
..()
|
||||
..()
|
||||
@@ -1,26 +1,3 @@
|
||||
//Atmosphere properties
|
||||
#define VIRGO3B_ONE_ATMOSPHERE 82.4 //kPa
|
||||
#define VIRGO3B_AVG_TEMP 234 //kelvin
|
||||
|
||||
#define VIRGO3B_PER_N2 0.16 //percent
|
||||
#define VIRGO3B_PER_O2 0.00
|
||||
#define VIRGO3B_PER_N2O 0.00 //Currently no capacity to 'start' a turf with this. See turf.dm
|
||||
#define VIRGO3B_PER_CO2 0.12
|
||||
#define VIRGO3B_PER_PHORON 0.72
|
||||
|
||||
//Math only beyond this point
|
||||
#define VIRGO3B_MOL_PER_TURF (VIRGO3B_ONE_ATMOSPHERE*CELL_VOLUME/(VIRGO3B_AVG_TEMP*R_IDEAL_GAS_EQUATION))
|
||||
#define VIRGO3B_MOL_N2 (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_N2)
|
||||
#define VIRGO3B_MOL_O2 (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_O2)
|
||||
#define VIRGO3B_MOL_N2O (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_N2O)
|
||||
#define VIRGO3B_MOL_CO2 (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_CO2)
|
||||
#define VIRGO3B_MOL_PHORON (VIRGO3B_MOL_PER_TURF * VIRGO3B_PER_PHORON)
|
||||
|
||||
//Turfmakers
|
||||
#define VIRGO3B_SET_ATMOS nitrogen=VIRGO3B_MOL_N2;oxygen=VIRGO3B_MOL_O2;carbon_dioxide=VIRGO3B_MOL_CO2;phoron=VIRGO3B_MOL_PHORON;temperature=VIRGO3B_AVG_TEMP
|
||||
#define VIRGO3B_TURF_CREATE(x) x/virgo3b/nitrogen=VIRGO3B_MOL_N2;x/virgo3b/oxygen=VIRGO3B_MOL_O2;x/virgo3b/carbon_dioxide=VIRGO3B_MOL_CO2;x/virgo3b/phoron=VIRGO3B_MOL_PHORON;x/virgo3b/temperature=VIRGO3B_AVG_TEMP;x/virgo3b/outdoors=TRUE;x/virgo3b/update_graphic(list/graphic_add = null, list/graphic_remove = null) return 0
|
||||
#define VIRGO3B_TURF_CREATE_UN(x) x/virgo3b/nitrogen=VIRGO3B_MOL_N2;x/virgo3b/oxygen=VIRGO3B_MOL_O2;x/virgo3b/carbon_dioxide=VIRGO3B_MOL_CO2;x/virgo3b/phoron=VIRGO3B_MOL_PHORON;x/virgo3b/temperature=VIRGO3B_AVG_TEMP
|
||||
|
||||
//Normal map defs
|
||||
#define Z_LEVEL_SURFACE_LOW 1
|
||||
#define Z_LEVEL_SURFACE_MID 2
|
||||
@@ -133,7 +110,8 @@
|
||||
/area/crew_quarters/sleep/Dorm_1/holo,
|
||||
/area/crew_quarters/sleep/Dorm_3/holo,
|
||||
/area/crew_quarters/sleep/Dorm_5/holo,
|
||||
/area/crew_quarters/sleep/Dorm_7/holo)
|
||||
/area/crew_quarters/sleep/Dorm_7/holo,
|
||||
/area/rnd/miscellaneous_lab) //TFF 31/8/19 - exempt new construction site from unit tests
|
||||
unit_test_exempt_from_atmos = list(
|
||||
/area/engineering/atmos/intake, // Outside,
|
||||
/area/rnd/external, // Outside,
|
||||
@@ -179,6 +157,16 @@
|
||||
|
||||
return 1
|
||||
|
||||
/datum/planet/virgo3b
|
||||
expected_z_levels = list(
|
||||
Z_LEVEL_SURFACE_LOW,
|
||||
Z_LEVEL_SURFACE_MID,
|
||||
Z_LEVEL_SURFACE_HIGH,
|
||||
Z_LEVEL_SURFACE_MINE,
|
||||
Z_LEVEL_SOLARS,
|
||||
Z_LEVEL_PLAINS
|
||||
)
|
||||
|
||||
// Short range computers see only the six main levels, others can see the surrounding surface levels.
|
||||
/datum/map/tether/get_map_levels(var/srcz, var/long_range = TRUE)
|
||||
if (long_range && (srcz in map_levels))
|
||||
|
||||
@@ -122,12 +122,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
|
||||
update_icon()
|
||||
|
||||
//Unsimulated
|
||||
/turf/unsimulated/wall/planetary/virgo3b
|
||||
name = "facility wall"
|
||||
desc = "An eight-meter tall carbyne wall. For when the wildlife on your planet is mostly militant megacorps."
|
||||
alpha = 0xFF
|
||||
VIRGO3B_SET_ATMOS
|
||||
|
||||
/turf/unsimulated/mineral/virgo3b
|
||||
blocks_air = TRUE
|
||||
|
||||
|
||||
+10
-1
@@ -1061,6 +1061,7 @@
|
||||
#include "code\game\objects\items\stacks\medical.dm"
|
||||
#include "code\game\objects\items\stacks\medical_vr.dm"
|
||||
#include "code\game\objects\items\stacks\nanopaste.dm"
|
||||
#include "code\game\objects\items\stacks\nanopaste_vr.dm"
|
||||
#include "code\game\objects\items\stacks\rods.dm"
|
||||
#include "code\game\objects\items\stacks\stack.dm"
|
||||
#include "code\game\objects\items\stacks\telecrystal.dm"
|
||||
@@ -1382,6 +1383,7 @@
|
||||
#include "code\game\turfs\unsimulated\beach.dm"
|
||||
#include "code\game\turfs\unsimulated\floor.dm"
|
||||
#include "code\game\turfs\unsimulated\planetary.dm"
|
||||
#include "code\game\turfs\unsimulated\planetary_vr.dm"
|
||||
#include "code\game\turfs\unsimulated\shuttle.dm"
|
||||
#include "code\game\turfs\unsimulated\sky_vr.dm"
|
||||
#include "code\game\turfs\unsimulated\walls.dm"
|
||||
@@ -2394,6 +2396,7 @@
|
||||
#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm"
|
||||
#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm"
|
||||
#include "code\modules\mob\living\silicon\robot\drone\drone_say.dm"
|
||||
#include "code\modules\mob\living\silicon\robot\drone\drone_vr.dm"
|
||||
#include "code\modules\mob\living\silicon\robot\robot_modules\event.dm"
|
||||
#include "code\modules\mob\living\silicon\robot\robot_modules\event_vr.dm"
|
||||
#include "code\modules\mob\living\silicon\robot\robot_modules\station.dm"
|
||||
@@ -2489,6 +2492,7 @@
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\horror\Willy.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid_vr.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm"
|
||||
@@ -2762,6 +2766,7 @@
|
||||
#include "code\modules\Phorochemistry\phorotelepad.dm"
|
||||
#include "code\modules\planet\planet.dm"
|
||||
#include "code\modules\planet\time.dm"
|
||||
#include "code\modules\planet\virgo3b_vr.dm"
|
||||
#include "code\modules\planet\weather.dm"
|
||||
#include "code\modules\power\apc.dm"
|
||||
#include "code\modules\power\apc_vr.dm"
|
||||
@@ -3209,10 +3214,14 @@
|
||||
#include "code\modules\vore\fluffstuff\guns\crestrose.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\dominator.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\gunsword.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\nsfw.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\protector.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\pummeler.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\sickshot.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\cell_loaded\cell_loaded.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\cell_loaded\ml3m.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\cell_loaded\ml3m_cells.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\cell_loaded\nsfw.dm"
|
||||
#include "code\modules\vore\fluffstuff\guns\cell_loaded\nsfw_cells.dm"
|
||||
#include "code\modules\vore\persist\persist_vr.dm"
|
||||
#include "code\modules\vore\resizing\grav_pull_vr.dm"
|
||||
#include "code\modules\vore\resizing\holder_micro_vr.dm"
|
||||
|
||||
Reference in New Issue
Block a user