Merge remote-tracking branch 'Repede/master'

This commit is contained in:
RadiantFlash7
2019-04-12 19:54:17 -04:00
216 changed files with 533324 additions and 346342 deletions
+1
View File
@@ -50,6 +50,7 @@
#define LANGUAGE_MINBUS "Minbus"
#define LANGUAGE_EVENT1 "Occursus"
#define LANGUAGE_AKHANI "Akhani"
#define LANGUAGE_ALAI "Alai"
// Language flags.
#define WHITELISTED 1 // Language is available if the speaker is whitelisted.
-1
View File
@@ -32,7 +32,6 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
#define INIT_ORDER_LIGHTING 0
#define INIT_ORDER_AIR -1
#define INIT_ORDER_PLANETS -4
#define INIT_ORDER_HOLOMAPS -5 //VOREStation Add
#define INIT_ORDER_OVERLAY -6
#define INIT_ORDER_XENOARCH -20
+1
View File
@@ -0,0 +1 @@
#define INIT_ORDER_HOLOMAPS -5 //VOREStation Add
@@ -8,6 +8,7 @@ SUBSYSTEM_DEF(mapping)
flags = SS_NO_FIRE
var/obj/effect/landmark/engine_loader/engine_loader
var/obj/effect/landmark/engine_loader_pickable/engine_loader_pickable
var/list/shelter_templates = list()
+40
View File
@@ -0,0 +1,40 @@
//
// Additions to mapping subsystem handles initialization of random map elements at server start
// I'm kidnapping Vores random engine spawn code - Gozulio.
//
/datum/controller/subsystem/mapping/proc/pickEngine(pickedEngine)
if(!engine_loader_pickable)
to_world_log("Ignoring player picked engine")
return // Either this map doesn't use this engine loader or doesn't need one at all.
var/turf/T = get_turf(engine_loader_pickable)
if(!isturf(T))
to_world_log("[log_info_line(engine_loader_pickable)] not on a turf! Cannot place engine template.")
return
// Choose an engine type
var/datum/map_template/engine/chosen_type = null
if (LAZYLEN(config.engine_map))
var/chosen_name = pickedEngine //Instead of using the config, we'll take an argument.
chosen_type = map_templates[chosen_name]
if(!istype(chosen_type))
error("Configured engine map [chosen_name] is not a valid engine map name!")
if(!istype(chosen_type))
var/list/engine_types = list()
for(var/map in map_templates)
var/datum/map_template/engine/MT = map_templates[map]
if(istype(MT))
engine_types += MT
chosen_type = pick(engine_types)
global_announcer.autosay("Engineering has selected [chosen_type.name] as todays engine.", "Engine Constructor")
to_world_log("Chose Engine Map: [chosen_type.name]")
admin_notice("<span class='danger'>Chose Engine Map: [chosen_type.name]</span>", R_DEBUG)
// Annihilate movable atoms
engine_loader_pickable.annihilate_bounds()
//CHECK_TICK //Don't let anything else happen for now
// Actually load it
chosen_type.load(T)
sleep(1)
engine_loader_pickable.lateload_init()
+2 -2
View File
@@ -62,7 +62,7 @@ SUBSYSTEM_DEF(planets)
while(currentlist.len)
var/turf/simulated/OT = currentlist[currentlist.len]
currentlist.len--
if(istype(OT) && z_to_planet[OT.z])
if(istype(OT) && z_to_planet.len >= OT.z && z_to_planet[OT.z])
var/datum/planet/P = z_to_planet[OT.z]
P.planet_floors |= OT
OT.vis_contents |= P.weather_holder.visuals
@@ -73,7 +73,7 @@ SUBSYSTEM_DEF(planets)
while(currentlist.len)
var/turf/unsimulated/wall/planetary/PW = currentlist[currentlist.len]
currentlist.len--
if(istype(PW) && z_to_planet[PW.z])
if(istype(PW) && z_to_planet.len >= PW.z && z_to_planet[PW.z])
var/datum/planet/P = z_to_planet[PW.z]
P.planet_walls |= PW
if(!initial && MC_TICK_CHECK)
@@ -5,12 +5,14 @@
var/list/languages
var/identifying_gender
var/list/flavour_texts
var/list/genMods
/datum/absorbed_dna/New(var/newName, var/newDNA, var/newSpecies, var/newLanguages, var/newIdentifying_Gender, var/list/newFlavour)
/datum/absorbed_dna/New(var/newName, var/newDNA, var/newSpecies, var/newLanguages, var/newIdentifying_Gender, var/list/newFlavour, var/list/newGenMods)
..()
name = newName
dna = newDNA
speciesName = newSpecies
languages = newLanguages
identifying_gender = newIdentifying_Gender
flavour_texts = newFlavour ? newFlavour.Copy() : null
flavour_texts = newFlavour ? newFlavour.Copy() : null
genMods = newGenMods ? newGenMods.Copy() : null
@@ -78,7 +78,7 @@
src << "<span class='notice'>We can now re-adapt, reverting our evolution so that we may start anew, if needed.</span>"
var/datum/absorbed_dna/newDNA = new(T.real_name, T.dna, T.species.name, T.languages, T.identifying_gender, T.flavor_texts)
var/datum/absorbed_dna/newDNA = new(T.real_name, T.dna, T.species.name, T.languages, T.identifying_gender, T.flavor_texts, T.modifiers)
absorbDNA(newDNA)
if(T.mind && T.mind.changeling)
@@ -48,6 +48,13 @@
src.UpdateAppearance()
domutcheck(src, null)
changeling_update_languages(changeling.absorbed_languages)
if(chosen_dna.genMods)
var/mob/living/carbon/human/self = src
for(var/datum/modifier/mod in self.modifiers)
self.modifiers.Remove(mod.type)
for(var/datum/modifier/mod in chosen_dna.genMods)
self.modifiers.Add(mod.type)
src.verbs -= /mob/proc/changeling_transform
spawn(10)
@@ -31,7 +31,7 @@
return TRUE
/obj/item/weapon/spell/proc/within_range(var/atom/target, var/max_range = 7) // Beyond 7 is off the screen.
if(range(get_dist(owner, target) <= max_range))
if(target in view(max_range, owner))
return TRUE
return FALSE
@@ -21,11 +21,13 @@
if(!AM.loc) //Don't teleport HUD telements to us.
return
if(AM.anchored)
user << "<span class='warning'>\The [hit_atom] is firmly secured and anchored, you can't move it!</span>"
to_chat(user, "<span class='warning'>\The [hit_atom] is firmly secured and anchored, you can't move it!</span>")
return
if(!within_range(hit_atom) && !check_for_scepter())
user << "<span class='warning'>\The [hit_atom] is too far away.</span>"
to_chat(user, "<span class='warning'>\The [hit_atom] is too far away.</span>")
return
//Teleporting an item.
if(istype(hit_atom, /obj/item))
var/obj/item/I = hit_atom
@@ -47,7 +49,7 @@
//Now let's try to teleport a living mob.
else if(istype(hit_atom, /mob/living))
var/mob/living/L = hit_atom
L << "<span class='danger'>You are teleported towards \the [user].</span>"
to_chat(L, "<span class='danger'>You are teleported towards \the [user].</span>")
var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread
var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread
s1.set_up(2, 1, user)
@@ -60,7 +62,7 @@
spawn(1 SECOND)
if(!user.Adjacent(L))
user << "<span class='warning'>\The [L] is out of your reach.</span>"
to_chat(user, "<span class='warning'>\The [L] is out of your reach.</span>")
qdel(src)
return
+6 -7
View File
@@ -12,13 +12,12 @@
head_position = 1
minimum_character_age = 25
ideal_character_age = 32 //Experienced, but physically in their prime
minimal_player_age = 3
economic_modifier = 8
access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers,
access_medical, access_engine, access_change_ids, access_eva, access_heads, access_teleporter,
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue,
access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer,
access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station,
access_hop, access_RC_announce, access_keycard_auth, access_gateway, )
minimal_access = list(access_forensics_lockers, access_sec_doors, access_medical, access_construction, access_engine, access_maint_tunnels, access_research, access_RC_announce, access_keycard_auth, access_heads)
access = list(access_security, access_sec_doors, access_brig,
access_medical, access_eva, access_heads, access_teleporter,
access_maint_tunnels, access_morgue,
access_crematorium, access_research, access_hop, access_RC_announce, access_keycard_auth, access_gateway)
minimal_access = list(access_forensics_lockers, access_sec_doors, access_medical, access_maint_tunnels, access_RC_announce, access_keycard_auth, access_heads)
outfit_type = /decl/hierarchy/outfit/job/blueshield
+2 -1
View File
@@ -148,7 +148,8 @@
feedback_set_details("religion_deity","[new_deity]")
feedback_set_details("religion_book","[new_book_style]")
return 1
/* IF you uncomment this, every time the mob preview updates it makes a new PDA. It seems to work just fine and display without it, so why this exists, haven't a clue. -Hawk
/* If you uncomment this, every time the mob preview updates it makes a new PDA. It seems to work just fine and display without it, so why this exists, haven't a clue. -Hawk
/datum/job/chaplain/equip_preview(var/mob/living/carbon/human/H, var/alt_title)
return equip(H, alt_title, FALSE)
*/
+1 -3
View File
@@ -23,7 +23,7 @@
break
return selected
#define CLONE_BIOMASS 60
#define CLONE_BIOMASS 30 //VOREstation Edit
/obj/machinery/clonepod
name = "cloning pod"
@@ -243,7 +243,6 @@
else
locked = 0
to_chat(user, "System unlocked.")
else if(istype(W,/obj/item/weapon/reagent_containers/glass))
if(LAZYLEN(containers) >= container_limit)
to_chat(user, "<span class='warning'>\The [src] has too many containers loaded!</span>")
@@ -253,7 +252,6 @@
user.drop_item()
W.forceMove(src)
return
else if(istype(W, /obj/item/weapon/wrench))
if(locked && (anchored || occupant))
to_chat(user, "<span class='warning'>Can not do that while [src] is in use.</span>")
+1
View File
@@ -31,6 +31,7 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
return
/obj/effect/portal/New()
..() // Necessary for the list boilerplate to work
spawn(300)
qdel(src)
return
+39
View File
@@ -0,0 +1,39 @@
/obj/item/gunbox/blueshield
name = "blueshield mainarm box"
desc = "A secure box containing a blueshield main weapon."
//Primary gun: Either shotgun or SMG
/obj/item/gunbox/blueshield/attack_self(mob/living/user)
var/list/options = list()
options["Jackhammer Revolver Shotgun (12 Gauge)"] = list(/obj/item/weapon/gun/projectile/revolvershotgun, /obj/item/ammo_magazine/m12gdrumjack, /obj/item/ammo_magazine/m12gdrumjack, /obj/item/ammo_magazine/m12gdrumjack/beanbag)
options["WT550 Machine Pistol (9mm)"] = list(/obj/item/weapon/gun/projectile/automatic/wt550, /obj/item/ammo_magazine/m9mmt/rubber, /obj/item/ammo_magazine/m9mmt, /obj/item/ammo_magazine/m9mmt)
options["X01 Energy Gun (Weapon Cell)"] = list(/obj/item/weapon/gun/energy/x01, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon)
var/choice = input(user,"Would you prefer a Jackhammer shotgun, a WT550 Machine Pistol, or an X01 Energy Gun?") 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.
var/atom/movable/AM = new new_type(get_turf(src))
if(istype(AM, /obj/item/weapon/gun))
to_chat(user, "You have chosen \the [AM].")
qdel(src)
/obj/item/gunbox/blueshield/secondary
name = "blueshield sidearm box"
desc = "A secure box containing a blueshield sidearm."
//Sidearm: Egun, or a .44 with rubber and lethal mag
/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) It's broken, and I can't fix it because the snowflake keeps metastasizing.
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 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.
var/atom/movable/AM = new new_type(get_turf(src))
if(istype(AM, /obj/item/weapon/gun))
to_chat(user, "You have chosen \the [AM].")
qdel(src)
+5 -5
View File
@@ -170,7 +170,7 @@
singular_name = "advanced trauma kit"
desc = "An advanced trauma kit for severe injuries."
icon_state = "traumakit"
heal_brute = 3
heal_brute = 7 //VOREStation Edit
origin_tech = list(TECH_BIO = 1)
apply_sounds = list('sound/effects/rip1.ogg','sound/effects/rip2.ogg','sound/effects/tape.ogg')
@@ -198,8 +198,8 @@
continue
if (W.bandaged && W.disinfected)
continue
if(used == amount)
break
//if(used == amount) //VOREStation Edit
// break //VOREStation Edit
if(!do_mob(user, M, W.damage/5))
to_chat(user, "<span class='notice'>You must stand still to bandage wounds.</span>")
break
@@ -219,7 +219,7 @@
W.disinfect()
W.heal_damage(heal_brute)
playsound(src, pick(apply_sounds), 25)
used++
used = 1 //VOREStation Edit
affecting.update_damages()
if(used == amount)
if(affecting.is_bandaged())
@@ -233,7 +233,7 @@
singular_name = "advanced burn kit"
desc = "An advanced treatment kit for severe burns."
icon_state = "burnkit"
heal_burn = 3
heal_burn = 7 //VOREStation Edit
origin_tech = list(TECH_BIO = 1)
apply_sounds = list('sound/effects/ointment.ogg')
+1
View File
@@ -16,6 +16,7 @@ GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/weapon/mop)
/obj/item/weapon/mop/New()
create_reagents(30)
..()
/obj/item/weapon/mop/afterattack(atom/A, mob/user, proximity)
if(!proximity) return
@@ -67,6 +67,7 @@
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/tape_roll,
/obj/item/device/integrated_electronics/wirer,
/obj/item/device/integrated_electronics/debugger, //Vorestation edit adding debugger to toolbelt can hold list
)
/obj/item/weapon/storage/belt/utility/full
@@ -135,7 +135,7 @@
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
starts_with = list(/obj/item/ammo_casing/a12g/beanbag = 8)
/obj/item/weapon/storage/box/beanbags/large/New()
/obj/item/weapon/storage/box/beanbags/large
starts_with = list(/obj/item/ammo_casing/a12g/beanbag = 16)
/obj/item/weapon/storage/box/shotgunammo
@@ -10,24 +10,25 @@
/obj/item/weapon/storage/firstaid
name = "first aid kit"
desc = "It's an emergency medical kit for those serious boo-boos."
icon = 'icons/obj/storage_vr.dmi'
icon_state = "firstaid"
throw_speed = 2
throw_range = 8
max_storage_space = ITEMSIZE_COST_SMALL * 7 // 14
var/list/icon_variety
// var/list/icon_variety // VOREStation edit
/obj/item/weapon/storage/firstaid/initialize()
. = ..()
if(icon_variety)
icon_state = pick(icon_variety)
icon_variety = null
// if(icon_variety) // VOREStation edit
// icon_state = pick(icon_variety)
// icon_variety = null
/obj/item/weapon/storage/firstaid/fire
name = "fire first aid kit"
desc = "It's an emergency medical kit for when the toxins lab <i>spontaneously</i> burns down."
icon_state = "ointment"
item_state_slots = list(slot_r_hand_str = "firstaid-ointment", slot_l_hand_str = "firstaid-ointment")
icon_variety = list("ointment","firefirstaid")
// icon_variety = list("ointment","firefirstaid") // VOREStation edit
starts_with = list(
/obj/item/device/healthanalyzer,
/obj/item/weapon/reagent_containers/hypospray/autoinjector,
@@ -55,7 +56,7 @@
desc = "Used to treat when one has a high amount of toxins in their body."
icon_state = "antitoxin"
item_state_slots = list(slot_r_hand_str = "firstaid-toxin", slot_l_hand_str = "firstaid-toxin")
icon_variety = list("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3")
// icon_variety = list("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") // VOREStation edit
starts_with = list(
/obj/item/weapon/reagent_containers/syringe/antitoxin,
/obj/item/weapon/reagent_containers/syringe/antitoxin,
@@ -70,7 +71,7 @@
name = "oxygen deprivation first aid kit"
desc = "A box full of oxygen goodies."
icon_state = "o2"
item_state_slots = list(slot_r_hand_str = "firstaid-o2", slot_l_hand_str = "firstaid-o2")
item_state_slots = list(slot_r_hand_str = "firstaid-o2", slot_l_hand_str = "firstaid-o2")
starts_with = list(
/obj/item/weapon/reagent_containers/pill/dexalin,
/obj/item/weapon/reagent_containers/pill/dexalin,
@@ -116,6 +117,7 @@
/obj/item/weapon/storage/firstaid/surgery
name = "surgery kit"
desc = "Contains tools for surgery. Has precise foam fitting for safe transport and automatically sterilizes the content between uses."
icon = 'icons/obj/storage.dmi' // VOREStation edit
icon_state = "surgerykit"
item_state = "firstaid-surgery"
max_w_class = ITEMSIZE_NORMAL
@@ -152,6 +154,7 @@
/obj/item/weapon/storage/firstaid/clotting
name = "clotting kit"
desc = "Contains chemicals to stop bleeding."
icon_state = "clottingkit" // VOREStation edit
max_storage_space = ITEMSIZE_COST_SMALL * 7
starts_with = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting = 8)
@@ -16,6 +16,7 @@
/obj/item/weapon/storage/belt/security,
/obj/item/weapon/grenade/flashbang,
/obj/item/device/flash,
/obj/item/weapon/reagent_containers/spray/pepper,
/obj/item/weapon/handcuffs,
/obj/item/weapon/melee/baton/loaded,
/obj/item/clothing/glasses/sunglasses,
@@ -30,8 +31,6 @@
/obj/item/clothing/accessory/holster/leg,
/obj/item/clothing/shoes/boots/jackboots,
/obj/item/clothing/shoes/boots/jackboots/toeless,
/obj/item/weapon/gun/projectile/shotgun/pump,
/obj/item/weapon/storage/box/beanbags,
/obj/item/weapon/storage/box/shotgunshells,
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos
/obj/item/gunbox/blueshield,
/obj/item/gunbox/blueshield/secondary
)
@@ -168,7 +168,10 @@
/obj/item/clothing/shoes/boots/winter/security,
/obj/item/device/flashlight/maglight,
/obj/item/device/megaphone,
/obj/item/clothing/mask/gas/half)
/obj/item/clothing/mask/gas/half,
/obj/item/weapon/gun/projectile/revolvershotgun,
/obj/item/ammo_magazine/m12gdrumjack/beanbag,
/obj/item/ammo_magazine/m12gdrumjack/beanbag)
/obj/structure/closet/secure_closet/warden/initialize()
if(prob(50))
@@ -49,7 +49,9 @@
/obj/item/weapon/storage/box/flashbangs,
/obj/item/device/flash,
/obj/item/weapon/melee/baton/loaded,
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos,
// /obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos,
/obj/item/weapon/gun/energy/x01,
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/melee/telebaton,
/obj/item/clothing/head/beret/sec/corporate/hos,
/obj/item/clothing/suit/storage/hooded/wintercoat/security,
@@ -71,6 +71,7 @@
/mob/living/simple_animal/hostile/alien/sentinel,
/mob/living/simple_animal/hostile/alien/queen,
/mob/living/simple_animal/otie/feral,
/mob/living/simple_animal/otie/red,
/mob/living/simple_animal/hostile/corrupthound))
return ..()
@@ -101,6 +102,11 @@
desc = "VARMAcorp experimental hostile environment adaptive breeding development kit. WARNING, DO NOT RELEASE IN WILD!"
starts_with = list(/mob/living/simple_animal/otie/cotie/phoron)
/obj/structure/largecrate/animal/otie/phoron/initialize()
starts_with = list(pick(/mob/living/simple_animal/otie/cotie/phoron;2,
/mob/living/simple_animal/otie/red/friendly;0.5))
return ..()
/obj/structure/largecrate/animal/otie/attack_hand(mob/living/carbon/human/M as mob)//I just couldn't decide between the icons lmao
if(taped == 1)
playsound(src, 'sound/items/poster_ripped.ogg', 50, 1)
+1
View File
@@ -20,6 +20,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
/obj/structure/janitorialcart/New()
create_reagents(300)
..()
/obj/structure/janitorialcart/examine(mob/user)
+88 -1
View File
@@ -10,4 +10,91 @@
/obj/effect/floor_decal/industrial/outline/red
name = "red outline"
color = COLOR_RED
color = COLOR_RED
/obj/effect/floor_decal/borderfloor/shifted
icon_state = "borderfloor_shifted"
/obj/effect/floor_decal/borderfloorblack/shifted
icon_state = "borderfloor_shifted"
/obj/effect/floor_decal/borderfloorwhite/shifted
icon_state = "borderfloor_shifted"
/obj/effect/floor_decal/corner/beige/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/black/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/blue/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/brown/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/green/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/grey/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/lightgrey/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/lightorange
name = "orange corner"
color = "#ed983d"
/obj/effect/floor_decal/corner/lightorange/diagonal
icon_state = "corner_white_diagonal"
/obj/effect/floor_decal/corner/lightorange/full
icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/lightorange/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/lightorange/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/lightorange/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/lightorange/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/lightorange/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/lightorange/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/lightorange/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/lime/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/mauve/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/orange/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/paleblue/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/pink/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/purple/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/red/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/white/border/shifted
icon_state = "bordercolor_shifted"
/obj/effect/floor_decal/corner/yellow/border/shifted
icon_state = "bordercolor_shifted"
@@ -12,6 +12,9 @@
/turf/simulated/wall/dungeon/ex_act()
return
/turf/simulated/wall/dungeon/take_damage() //These things are suppose to be unbreakable
return
/turf/simulated/wall/solidrock //for more stylish anti-cheese.
name = "solid rock"
desc = "This rock seems dense, impossible to drill."
@@ -37,4 +40,7 @@
return
/turf/simulated/wall/solidrock/ex_act()
return
/turf/simulated/wall/solidrock/take_damage() //These things are suppose to be unbreakable
return
+3 -4
View File
@@ -250,9 +250,8 @@
return
/obj/effect/beam/i_beam/Destroy()
. = ..()
if(master.first == src)
master.first = null
if(next)
qdel(next)
next = null
..()
if(next && !next.gc_destroyed)
qdel_null(next)
@@ -241,6 +241,46 @@ datum/gear/suit/duster
path = /obj/item/clothing/accessory/poncho/roles/cloak/hop
allowed_roles = list("Head of Personnel")
/datum/gear/suit/roles/poncho/cloak/cargo
display_name = "cloak, cargo"
path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo
allowed_roles = list("Cargo Technician","Quartermaster")
/datum/gear/suit/roles/poncho/cloak/mining
display_name = "cloak, cargo"
path = /obj/item/clothing/accessory/poncho/roles/cloak/mining
allowed_roles = list("Quartermaster","Shaft Miner")
/datum/gear/suit/roles/poncho/cloak/security
display_name = "cloak, security"
path = /obj/item/clothing/accessory/poncho/roles/cloak/security
allowed_roles = list("Head of Security","Detective","Warden","Security Officer")
/datum/gear/suit/roles/poncho/cloak/service
display_name = "cloak, service"
path = /obj/item/clothing/accessory/poncho/roles/cloak/service
allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian")
/datum/gear/suit/roles/poncho/cloak/engineer
display_name = "cloak, engineer"
path = /obj/item/clothing/accessory/poncho/roles/cloak/engineer
allowed_roles = list("Chief Engineer","Station Engineer")
/datum/gear/suit/roles/poncho/cloak/atmos
display_name = "cloak, atmos"
path = /obj/item/clothing/accessory/poncho/roles/cloak/atmos
allowed_roles = list("Chief Engineer","Atmospheric Technician")
/datum/gear/suit/roles/poncho/cloak/research
display_name = "cloak, science"
path = /obj/item/clothing/accessory/poncho/roles/cloak/research
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
/datum/gear/suit/roles/poncho/cloak/medical
display_name = "cloak, medical"
path = /obj/item/clothing/accessory/poncho/roles/cloak/medical
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
/datum/gear/suit/unathi_robe
display_name = "roughspun robe"
path = /obj/item/clothing/suit/unathi/robe
+2 -1
View File
@@ -253,7 +253,8 @@
var/mob/living/carbon/human/H = user
if(slot && slot == slot_gloves)
if(H.gloves)
var/obj/item/clothing/gloves/G = H.gloves
if(istype(G))
ring = H.gloves
if(ring.glove_level >= src.glove_level)
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
+2 -2
View File
@@ -9,8 +9,8 @@
/obj/item/clothing/head/helmet/combat/USDF
name = "marine helmet"
desc = "If you wanna to keep your brain inside yo' head, you'd best put this on!"
icon_state = "UNSC_helm"
item_state = "UNSC_helm"
icon_state = "unsc_helm"
item_state = "unsc_helm"
icon = 'icons/obj/clothing/hats_vr.dmi'
icon_override = 'icons/mob/head_vr.dmi'
@@ -104,14 +104,14 @@
interface_name = "mounted chem injector"
interface_desc = "Dispenses loaded chemicals via an arm-mounted injector."
var/max_reagent_volume = 10 //Regen to this volume
var/max_reagent_volume = 20 //Regen to this volume
var/chems_to_use = 5 //Per injection
charges = list(
list("inaprovaline", "inaprovaline", 0, 10),
list("tricordrazine", "tricordrazine", 0, 10),
list("tramadol", "tramadol", 0, 10),
list("dexalin plus", "dexalinp", 0, 10)
list("inaprovaline", "inaprovaline", 0, 20),
list("dylovene", "dylovene", 0, 20),
list("paracetamol", "paracetamol", 0, 20),
list("dexalin", "dexalin", 0, 20)
)
/obj/item/rig_module/rescue_pharm/process()
+1 -1
View File
@@ -60,7 +60,7 @@
/obj/item/clothing/suit/armor/combat/USDF
name = "marine body armor"
desc = "When I joined the Corps, we didn't have any fancy-schmanzy armor. We had sticks! Two sticks, and a rock for the whole platoonand we had to <i>share</i> the rock!"
icon_state = "UNSC_armor"
icon_state = "unsc_armor"
icon = 'icons/obj/clothing/suits_vr.dmi'
icon_override = 'icons/mob/suit_vr.dmi'
body_parts_covered = UPPER_TORSO|LOWER_TORSO // ToDo: Break up the armor into smaller bits.
@@ -121,8 +121,8 @@
* Cloak
*/
/obj/item/clothing/accessory/poncho/roles/cloak
name = "brown cloak"
desc = "An elaborate brown cloak."
name = "quartermaster's cloak"
desc = "An elaborate brown and gold cloak."
icon_state = "qmcloak"
item_state = "qmcloak"
body_parts_covered = null
@@ -169,6 +169,54 @@
icon_state = "capcloak"
item_state = "capcloak"
/obj/item/clothing/accessory/poncho/roles/cloak/cargo
name = "brown cloak"
desc = "A simple brown and black cloak."
icon_state = "cargocloak"
item_state = "cargocloak"
/obj/item/clothing/accessory/poncho/roles/cloak/mining
name = "trimmed purple cloak"
desc = "A trimmed purple and brown cloak."
icon_state = "miningcloak"
item_state = "miningcloak"
/obj/item/clothing/accessory/poncho/roles/cloak/security
name = "red cloak"
desc = "A simple red and black cloak."
icon_state = "seccloak"
item_state = "seccloak"
/obj/item/clothing/accessory/poncho/roles/cloak/service
name = "green cloak"
desc = "A simple green and blue cloak."
icon_state = "servicecloak"
item_state = "servicecloak"
/obj/item/clothing/accessory/poncho/roles/cloak/engineer
name = "gold cloak"
desc = "A simple gold and brown cloak."
icon_state = "engicloak"
item_state = "engicloak"
/obj/item/clothing/accessory/poncho/roles/cloak/atmos
name = "yellow cloak"
desc = "A trimmed yellow and blue cloak."
icon_state = "atmoscloak"
item_state = "atmoscloak"
/obj/item/clothing/accessory/poncho/roles/cloak/research
name = "purple cloak"
desc = "A simple purple and white cloak."
icon_state = "scicloak"
item_state = "scicloak"
/obj/item/clothing/accessory/poncho/roles/cloak/medical
name = "blue cloak"
desc = "A simple blue and white cloak."
icon_state = "medcloak"
item_state = "medcloak"
/obj/item/clothing/accessory/hawaii
name = "flower-pattern shirt"
desc = "You probably need some welder googles to look at this."
@@ -67,7 +67,7 @@
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
/obj/item/clothing/under/yw/robotics //fancy blueshield suit,
/obj/item/clothing/under/yw/robotics //fancy blueshield suit,
name = "A cybernetic uniform"
desc = "A roboticist uniform with glowing trim, and some sort of machine port on the back."
icon = 'icons/mob/uniform_yw.dmi'
+1 -1
View File
@@ -140,7 +140,7 @@ var/list/global/map_templates = list()
/datum/map_template/proc/annihilate_bounds(turf/origin, centered = FALSE)
var/deleted_atoms = 0
admin_notice("<span class='danger'>Annihilating objects in submap loading locatation.</span>", R_DEBUG)
admin_notice("<span class='danger'>Annihilating objects in submap loading location.</span>", R_DEBUG)
var/list/turfs_to_clean = get_affected_turfs(origin, centered)
if(turfs_to_clean.len)
for(var/turf/T in turfs_to_clean)
+1 -1
View File
@@ -47,7 +47,7 @@
exclaim_verb = "SHRIEKS"
colour = "vox"
key = "5"
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
syllables = list("ti","ti","ti","hi","hi","ki","ki","ki","ki","ya","ta","ha","ka","ya","chi","cha","kah", \
"SKRE","AHK","EHK","RAWK","KRA","AAA","EEE","KI","II","KRI","KA")
machine_understands = 0
+16 -7
View File
@@ -30,7 +30,7 @@
exclaim_verb = "roars"
colour = "soghun"
key = "o"
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
space_chance = 40
syllables = list(
"za", "az", "ze", "ez", "zi", "iz", "zo", "oz", "zu", "uz", "zs", "sz",
@@ -57,7 +57,7 @@
exclaim_verb = "yowls"
colour = "tajaran"
key = "j"
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
syllables = list("mrr","rr","tajr","kir","raj","kii","mir","kra","ahk","nal","vah","khaz","jri","ran","darr",
"mi","jri","dynh","manq","rhe","zar","rrhaz","kal","chur","eech","thaa","dra","jurl","mah","sanu","dra","ii'r",
"ka","aasi","far","wa","baq","ara","qara","zir","saam","mak","hrar","nja","rir","khan","jun","dar","rik","kah",
@@ -71,7 +71,7 @@
exclaim_verb = "wails"
colour = "akhani"
key = "h"
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
syllables = list("mrr","rr","marr","tar","ahk","ket","hal","kah","dra","nal","kra","vah","dar","hrar", "eh",
"ara","ka","zar","mah","ner","zir","mur","hai","raz","ni","ri","nar","njar","jir","ri","ahn","kha","sir",
"kar","yar","kzar","rha","hrar","err","fer","rir","rar","yarr","arr","ii'r","jar","kur","ran","rii","ii",
@@ -86,6 +86,15 @@
new_name += " [..(gender,1)]"
return new_name
/datum/language/tajsign
name = LANGUAGE_ALAI
desc = "A standardized Tajaran sign language that was developed in Zarraya and gradually adopted by other nations, incorporating \
hand gestures and movements of the ears and tail."
signlang_verb = list("gestures with their hands", "gestures with their ears and tail", "gestures with their ears, tail and hands")
colour = "tajaran"
key = "l"
flags = WHITELISTED | SIGNLANG | NO_STUTTER | NONVERBAL
/datum/language/skrell
name = LANGUAGE_SKRELLIAN
desc = "A set of warbles and hums, the language itself a complex mesh of both melodic and rhythmic components, exceptionally capable of conveying intent and emotion of the speaker."
@@ -96,7 +105,7 @@
colour = "skrell"
key = "k"
space_chance = 30
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix")
/datum/language/skrellfar
@@ -109,7 +118,7 @@
colour = "skrellfar"
key = "p"
space_chance = 30
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix", "...", "oo", "q", "nq", "x", "xq", "ll", "...", "...", "...") //should sound like there's holes in it
@@ -120,7 +129,7 @@
whisper_verb = "whispers"
colour = "solcom"
key = "1"
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
//syllables are at the bottom of the file
/datum/language/human/get_spoken_verb(var/msg_end)
@@ -171,7 +180,7 @@
exclaim_verb = "trills"
colour = "alien"
key = "v"
flags = WHITELISTED
// flags = WHITELISTED (YWEdit)
space_chance = 50
syllables = list(
"ca", "ra", "ma", "sa", "na", "ta", "la", "sha", "scha", "a", "a",
+11 -3
View File
@@ -39,6 +39,7 @@
"hel","ischt","far","wa","baram","iereng","tech","lach","sam","mak","lich","gen","or","ag","eck","gec","stag","onn", \
"bin","ket","jarl","vulf","einech","cresthz","azunein","ghzth")
/*
/datum/language/demon
name = "Daemon"
desc = "The language spoken by the demons of Infernum, it's composed of deep chanting. It's rarely spoken off of Infernum due to the volume one has to exert."
@@ -60,6 +61,7 @@
key = "*" //dunno if this is a valid key. - Table
syllables = list("salve","sum","loqui","operatur","iusta","et","permittit","facere","effercio","pluribus","enim","hoc",
"mihi","wan","six","salve","tartu")
(YWEdit) Why define all this twice? */
/datum/language/squirrel
name = LANGUAGE_ECUREUILIAN
@@ -94,7 +96,14 @@
syllables = list("salve","sum","loqui","operatur","iusta","et","permittit","facere","effercio","pluribus","enim","hoc",
"mihi","wan","six","salve","tartu")
machine_understands = FALSE
/* (YWEdit)
/datum/language/tajsign
name = LANGUAGE_SIIK_TAJR
desc = "A type of sign language mostly based on tail movements that was used during the Tajaran rebellion."
signlang_verb = list("uses their tail to convey", "gestures with their tail", "gestures with their tail elaborately")
colour = "tajaran"
key = "l"
flags = SIGNLANG | NO_STUTTER | NONVERBAL // | WHITELISTED (YWEdit)
/datum/language/unathi
flags = 0
@@ -107,5 +116,4 @@
/datum/language/seromi
flags = 0
/datum/language/gutter
flags = WHITELISTED
machine_understands = FALSE
machine_understands = FALSE */
@@ -1,6 +1,6 @@
/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null)
var/param = null
var/datum/gender/T = gender_datums[get_visible_gender()]
if (findtext(act, "-", 1, null))
@@ -80,10 +80,11 @@
//Promethean-only emotes
if("squish")
if(!species.bump_flag == SLIME) //That should do, yaya.
/* VOREStation Removal Start - Eh. People can squish maybe.
if(species.bump_flag != SLIME) //This should definitely do it.
src << "<span class='warning'>You are not a slime thing!</span>"
return
*/ //VOREStation Removal End
playsound(src.loc, 'sound/effects/slime_squish.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound.
message = "squishes."
m_type = 1
@@ -739,7 +740,7 @@
set name = "Set Pose"
set desc = "Sets a description which will be shown when someone examines you."
set category = "IC"
var/datum/gender/T = gender_datums[get_visible_gender()]
pose = sanitize(input(usr, "This is [src]. [T.he]...", "Pose", null) as text)
@@ -146,45 +146,35 @@ emp_act
//this proc returns the armour value for a particular external organ.
/mob/living/carbon/human/proc/getarmor_organ(var/obj/item/organ/external/def_zone, var/type)
if(!type || !def_zone) return 0
if(!type || !def_zone)
return 0
var/protection = 0
var/list/protective_gear = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes)
var/list/protective_gear = def_zone.get_covering_clothing()
for(var/obj/item/clothing/gear in protective_gear)
if(gear.body_parts_covered & def_zone.body_part)
protection += gear.armor[type]
if(LAZYLEN(gear.accessories))
for(var/obj/item/clothing/accessory/bling in gear.accessories)
if(bling.body_parts_covered & def_zone.body_part)
protection += bling.armor[type]
protection += gear.armor[type]
return protection
/mob/living/carbon/human/proc/getsoak_organ(var/obj/item/organ/external/def_zone, var/type)
if(!type || !def_zone) return 0
if(!type || !def_zone)
return 0
var/soaked = 0
var/list/protective_gear = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes)
var/list/protective_gear = def_zone.get_covering_clothing()
for(var/obj/item/clothing/gear in protective_gear)
if(gear.body_parts_covered & def_zone.body_part)
soaked += gear.armorsoak[type]
if(LAZYLEN(gear.accessories))
for(var/obj/item/clothing/accessory/bling in gear.accessories)
if(bling.body_parts_covered & def_zone.body_part)
soaked += bling.armorsoak[type]
soaked += gear.armorsoak[type]
return soaked
// Checked in borer code
/mob/living/carbon/human/proc/check_head_coverage()
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform)
for(var/bp in body_parts)
if(!bp) continue
if(bp && istype(bp ,/obj/item/clothing))
var/obj/item/clothing/C = bp
if(C.body_parts_covered & HEAD)
return 1
var/obj/item/organ/external/H = organs_by_name[BP_HEAD]
var/list/body_parts = H.get_covering_clothing()
if(LAZYLEN(body_parts))
return 1
return 0
//Used to check if they can be fed food/drinks/pills
/mob/living/carbon/human/proc/check_mouth_coverage()
var/list/protective_gear = list(head, wear_mask, wear_suit, w_uniform)
var/obj/item/organ/external/H = organs_by_name[BP_HEAD]
var/list/protective_gear = H.get_covering_clothing()
for(var/obj/item/gear in protective_gear)
if(istype(gear) && (gear.body_parts_covered & FACE) && !(gear.item_flags & FLEXIBLEMATERIAL))
return gear
+1 -1
View File
@@ -1041,7 +1041,7 @@
adjustHalLoss(-1)
if (drowsyness)
drowsyness--
drowsyness = max(0, drowsyness - 1)
eye_blurry = max(2, eye_blurry)
if (prob(5))
sleeping += 1
@@ -155,7 +155,7 @@
metabolic_rate = 1.1
gluttonous = 1
num_alternate_languages = 3
secondary_langs = list(LANGUAGE_SIIK, LANGUAGE_AKHANI)
secondary_langs = list(LANGUAGE_SIIK, LANGUAGE_AKHANI, LANGUAGE_ALAI)
name_language = LANGUAGE_SIIK
species_language = LANGUAGE_SIIK
health_hud_intensity = 2.5
@@ -3,7 +3,7 @@
set category = "Abilities"
// Sanity is mostly handled in chimera_regenerate()
var/confirm = alert(usr, "Are you sure you want to completely reconstruct your form? This process can take up to twenty minutes, depending on how hungry you are, and you will be unable to move.", "Confirm Regeneration", "Yes", "No")
if(confirm == "Yes")
chimera_regenerate()
@@ -658,7 +658,7 @@
return ..(G.affecting)
//PAIs don't need a grab or anything
//PAIs, borgs, and animals don't need a grab or anything
/mob/living/silicon/pai/can_shred(var/mob/living/carbon/human/target)
if(!target)
var/list/choices = list()
@@ -674,6 +674,36 @@
return ..(target)
/mob/living/silicon/robot/can_shred(var/mob/living/carbon/human/target)
if(!target)
var/list/choices = list()
for(var/mob/living/carbon/human/M in oviewers(1))
choices += M
if(!choices.len)
to_chat(src,"<span class='warning'>There's nobody nearby to use this on.</span>")
target = input(src,"Who do you wish to target?","Damage/Remove Prey's Organ") as null|anything in choices
if(!istype(target))
return FALSE
return ..(target)
/mob/living/simple_animal/can_shred(var/mob/living/carbon/human/target)
if(!target)
var/list/choices = list()
for(var/mob/living/carbon/human/M in oviewers(1))
choices += M
if(!choices.len)
to_chat(src,"<span class='warning'>There's nobody nearby to use this on.</span>")
target = input(src,"Who do you wish to target?","Damage/Remove Prey's Organ") as null|anything in choices
if(!istype(target))
return FALSE
return ..(target)
/mob/living/proc/shred_limb()
set name = "Damage/Remove Prey's Organ"
set desc = "Severely damages prey's organ. If the limb is already severely damaged, it will be torn off."
@@ -361,7 +361,7 @@
min_age = 18
icobase = 'icons/mob/human_races/r_vox_old.dmi'
deform = 'icons/mob/human_races/r_def_vox_old.dmi'
inherent_verbs = list(/mob/living/proc/shred_limb)
inherent_verbs = list(/mob/living/proc/shred_limb, /mob/living/proc/eat_trash)
datum/species/harpy
name = SPECIES_RAPALA
@@ -1,5 +1,5 @@
/datum/trait
var/name = "Prototype Trait"
var/name
var/desc = "Contact a developer if you see this trait."
var/cost = 0 // 0 is neutral, negative cost means negative, positive cost means positive.
+9 -4
View File
@@ -64,6 +64,7 @@ var/list/ai_verbs_default = list(
var/datum/announcement/priority/announcement
var/obj/machinery/ai_powersupply/psupply = null // Backwards reference to AI's powersupply object.
var/hologram_follow = 1 //This is used for the AI eye, to determine if a holopad's hologram should follow it or not.
var/is_dummy = 0 //Used to prevent dummy AIs from spawning with communicators.
//NEWMALF VARIABLES
var/malfunctioning = 0 // Master var that determines if AI is malfunctioning.
var/datum/malf_hardware/hardware = null // Installed piece of hardware.
@@ -111,15 +112,16 @@ var/list/ai_verbs_default = list(
possibleNames -= pickedName
pickedName = null
aiPDA = new/obj/item/device/pda/ai(src)
if(!is_dummy)
aiPDA = new/obj/item/device/pda/ai(src)
SetName(pickedName)
anchored = 1
canmove = 0
density = 1
loc = loc
aiCommunicator = new /obj/item/device/communicator/integrated(src)
if(!is_dummy)
aiCommunicator = new /obj/item/device/communicator/integrated(src)
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1"))
@@ -805,6 +807,9 @@ var/list/ai_verbs_default = list(
return TRUE
//Special subtype kept around for global announcements
/mob/living/silicon/ai/announcer/
is_dummy = 1
/mob/living/silicon/ai/announcer/initialize()
. = ..()
mob_list -= src
@@ -15,6 +15,8 @@
if(module)
var/obj/item/weapon/gripper/G = locate(/obj/item/weapon/gripper) in module
if(G) G.drop_item()
var/obj/item/device/dogborg/sleeper/S = locate(/obj/item/device/dogborg/sleeper) in module //VOREStation edit.
if(S) S.go_out() //VOREStation edit.
remove_robot_verbs()
sql_report_cyborg_death(src)
..(gibbed,"shudders violently for a moment, then becomes motionless, its eyes slowly darkening.")
@@ -114,6 +114,7 @@ var/list/mob_hat_cache = list()
verbs -= /mob/living/silicon/robot/verb/Namepick
updateicon()
updatename()
/mob/living/silicon/robot/drone/init()
aiCamera = new/obj/item/device/camera/siliconcam/drone_camera(src)
@@ -93,8 +93,7 @@
radio.channels = module.channels
verbs -= /mob/living/silicon/robot/drone/proc/release_ai_control_verb
languages = initial(languages)
speech_synthesizer_langs = initial(speech_synthesizer_langs)
module.remove_languages(src) //Removes excess, adds 'default'.
remove_language("Robot Talk")
add_language("Robot Talk", 0)
add_language("Drone Talk", 1)
@@ -172,6 +172,7 @@
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/knine/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
@@ -244,6 +245,7 @@
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/ert
@@ -291,6 +293,7 @@
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/scrubpup
@@ -371,6 +374,7 @@
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/science
@@ -416,6 +420,7 @@
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/engiedog
@@ -539,6 +544,7 @@
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/Reset(var/mob/living/silicon/robot/R)
@@ -551,4 +557,5 @@
R.default_pixel_x = initial(pixel_x)
R.scrubbing = FALSE
R.verbs -= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs -= /mob/living/proc/shred_limb
..()
@@ -39,6 +39,8 @@
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat
showvoreprefs = 0 //VOREStation Edit - Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle.
/mob/living/simple_animal/hostile/mimic/set_target()
. = ..()
if(.)
@@ -137,6 +137,7 @@
if(!IsAdvancedToolUser())
verbs |= /mob/living/simple_animal/proc/animal_nom
verbs |= /mob/living/proc/shred_limb
if(LAZYLEN(vore_organs))
return
@@ -6,7 +6,7 @@
/mob/living/simple_animal/otie //Spawn this one only if you're looking for a bad time. Not friendly.
name = "otie"
desc = "The classic bioengineered longdog."
tt_desc = "Canis otis"
tt_desc = "Otus robustus"
icon = 'icons/mob/vore64x32.dmi'
icon_state = "otie"
icon_living = "otie"
@@ -64,6 +64,7 @@
/mob/living/simple_animal/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
name = "mutated feral otie"
desc = "The classic bioengineered longdog. No pets. Only bite. This one has mutated from too much time out on the surface of Virgo-3B."
tt_desc = "Otus phoronis"
icon_state = "siftusian"
icon_living = "siftusian"
icon_dead = "siftusian-dead"
@@ -84,6 +85,36 @@
glowyeyes = TRUE
eyetype = "photie"
/mob/living/simple_animal/otie/red
name = "feral red otie"
desc = "Seems this ominous looking longdog has been infused with wicked infernal forces."
tt_desc = "Otus infernalis"
icon_state = "hotie"
icon_living = "hotie"
icon_dead = "hotie-dead"
icon_rest = "hotie_rest"
faction = "cult"
tame_chance = 20
melee_damage_lower = 10
melee_damage_upper = 25
// Lazy way of making sure this otie survives outside.
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
glowyeyes = TRUE
eyetype = "hotie"
/mob/living/simple_animal/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away
name = "red otie"
desc = "Seems this ominous looking longdog has been infused with wicked infernal forces. This one seems rather peaceful though."
faction = "neutral"
tamed = 1
/mob/living/simple_animal/otie/friendly //gets the pet2tame feature and doesn't kill you right away
name = "otie"
desc = "The classic bioengineered longdog. This one might even tolerate you!"
@@ -102,6 +133,7 @@
/mob/living/simple_animal/otie/cotie/phoron //friendly phoron pup with collar
name = "mutated otie"
desc = "Looks like someone did manage to domesticate one of those wild phoron mutants. What a badass."
tt_desc = "Otus phoronis"
icon_state = "pcotie"
icon_living = "pcotie"
icon_rest = "pcotie_rest"
@@ -139,6 +171,7 @@
/mob/living/simple_animal/otie/security/phoron
name = "mutated guard otie"
desc = "An extra rare phoron resistant version of the VARMAcorp trained snowflake guard dogs."
tt_desc = "Otus phoronis"
icon_state = "sifguard"
icon_living = "sifguard"
icon_rest = "sifguard_rest"
+2 -1
View File
@@ -49,5 +49,6 @@
//Final popup notice
if (!pass)
alert(src,"There were problems with spawning your character. Check your message log for details.","Error","OK")
spawn()
alert(src,"There were problems with spawning your character. Check your message log for details.","Error","OK")
return pass
@@ -1257,6 +1257,24 @@
name = "Tattoo (Campbell, L.Arm)"
body_parts = list(BP_L_ARM)
rightleg
name = "Tattoo (Campbell, R.Leg)"
body_parts = list(BP_R_LEG)
leftleg
name = "Tattoo (Campbell, L.Leg)"
body_parts = list (BP_L_LEG)
tat_silverburgh
name = "Tattoo (Silverburgh, R.Leg)"
icon_state = "tat_silverburgh"
body_parts = list (BP_R_LEG)
left
name = "Tattoo (Silverburgh, L.Leg)"
icon_state = "tat_silverburgh"
body_parts = list (BP_L_LEG)
tat_tiger
name = "Tattoo (Tiger Stripes, Body)"
icon_state = "tat_tiger"
@@ -748,12 +748,42 @@
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
otter_nose
name = "Otter nose"
icon_state = "otternose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
otter_face
name = "Otter face"
icon_state = "otterface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
deer_face
name = "Deer face"
icon_state = "deerface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
sharkface
name = "Akula snout"
icon_state = "sharkface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
sheppy_face
name = "Shepherd snout"
icon_state = "shepface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
sheppy_back
name = "Shepherd back"
icon_state = "shepback"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
zorren_belly_male
name = "Zorren Male Torso"
icon_state = "zorren_belly"
@@ -830,6 +860,12 @@
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
chooves
name = "Cloven hooves"
icon_state = "chooves"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT)
alurane
name = "Alurane Body"
icon_state = "alurane"
@@ -928,13 +964,13 @@
icon_state = "teshi_sf"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND,BP_TORSO)
spirit_lights
name = "Ward - Spirit FBP Lights"
icon_state = "lights"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_HEAD)
spirit_lights_body
name = "Ward - Spirit FBP Lights (body)"
icon_state = "lights"
@@ -946,13 +982,13 @@
icon_state = "lights"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
spirit_panels
name = "Ward - Spirit FBP Panels"
icon_state = "panels"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
spirit_panels_body
name = "Ward - Spirit FBP Panels (body)"
icon_state = "panels"
+14 -13
View File
@@ -142,19 +142,20 @@
if(!istype(above))
above.ChangeTurf(/turf/simulated/open)
/obj/structure/stairs/Uncross(atom/movable/A)
if(A.dir == dir && upperStep(A.loc))
// This is hackish but whatever.
var/turf/target = get_step(GetAbove(A), dir)
var/turf/source = A.loc
if(target.Enter(A, source))
A.forceMove(target)
if(isliving(A))
var/mob/living/L = A
if(L.pulling)
L.pulling.forceMove(target)
return 0
return 1
/obj/structure/stairs/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
if(get_dir(loc, target) == dir && upperStep(mover.loc))
return FALSE
. = ..()
/obj/structure/stairs/Bumped(atom/movable/A)
// This is hackish but whatever.
var/turf/target = get_step(GetAbove(A), dir)
if(target.Enter(A, src)) // Pass src to be ignored to avoid infinate loop
A.forceMove(target)
if(isliving(A))
var/mob/living/L = A
if(L.pulling)
L.pulling.forceMove(target)
/obj/structure/stairs/proc/upperStep(var/turf/T)
return (T == loc)
+15
View File
@@ -1345,3 +1345,18 @@ Note that amputating the affected organ does in fact remove the infection from t
if(6 to INFINITY)
flavor_text += "a ton of [wound]\s"
return english_list(flavor_text)
// Returns a list of the clothing (not glasses) that are covering this part
/obj/item/organ/external/proc/get_covering_clothing()
var/list/covering_clothing = list()
if(owner)
var/list/protective_gear = list(owner.head, owner.wear_mask, owner.wear_suit, owner.w_uniform, owner.gloves, owner.shoes)
for(var/obj/item/clothing/gear in protective_gear)
if(gear.body_parts_covered & src.body_part)
covering_clothing |= gear
if(LAZYLEN(gear.accessories))
for(var/obj/item/clothing/accessory/bling in gear.accessories)
if(bling.body_parts_covered & src.body_part)
covering_clothing |= bling
return covering_clothing
+1 -1
View File
@@ -134,7 +134,7 @@ var/global/photo_count = 0
var/icon_on = "camera"
var/icon_off = "camera_off"
var/size = 3
var/picture_planes = list()
var/list/picture_planes = list()
/obj/item/device/camera/verb/change_size()
set name = "Set Photo Focus"
+28 -3
View File
@@ -160,6 +160,7 @@ var/list/possible_cable_coil_colours = list(
return
if(istype(W, /obj/item/weapon/wirecutters))
var/obj/item/stack/cable_coil/CC
if(d1 == UP || d2 == UP)
to_chat(user, "<span class='warning'>You must cut this cable from above.</span>")
return
@@ -172,9 +173,12 @@ var/list/possible_cable_coil_colours = list(
return
if(src.d1) // 0-X cables are 1 unit, X-X cables are 2 units long
new/obj/item/stack/cable_coil(T, 2, color)
CC = new/obj/item/stack/cable_coil(T, 2, color)
else
new/obj/item/stack/cable_coil(T, 1, color)
CC = new/obj/item/stack/cable_coil(T, 1, color)
src.add_fingerprint(user)
src.transfer_fingerprints_to(CC)
for(var/mob/O in viewers(src, null))
O.show_message("<span class='warning'>[user] cuts the cable.</span>", 1)
@@ -939,4 +943,25 @@ obj/structure/cable/proc/cableColor(var/colorC)
if(get_dist(src, user) <= 1)
msg += " It doesn't seem to have a beginning, or an end."
to_chat(user, msg)
to_chat(user, msg)
/obj/item/stack/cable_coil/alien/attack_hand(mob/user as mob)
if (user.get_inactive_hand() == src)
var/N = input("How many units of wire do you want to take from [src]? You can only take up to [amount] at a time.", "Split stacks", 1) as num|null
if(N && N <= amount)
var/obj/item/stack/cable_coil/CC = new/obj/item/stack/cable_coil(user.loc)
CC.amount = N
CC.update_icon()
to_chat(user,"<font color='blue'>You take [N] units of wire from the [src].</font>")
if (CC)
user.put_in_hands(CC)
src.add_fingerprint(user)
CC.add_fingerprint(user)
spawn(0)
if (src && usr.machine==src)
src.interact(usr)
else
return
else
..()
return
+23 -3
View File
@@ -3,21 +3,20 @@
icon = 'icons/obj/machines/power/fusion.dmi'
icon_state = "core_control"
light_color = COLOR_ORANGE
circuit = /obj/item/weapon/circuitboard/fusion_core_control
var/id_tag
var/scan_range = 25
var/list/connected_devices = list()
var/obj/machinery/power/fusion_core/cur_viewed_device
/obj/machinery/computer/fusion_core_control/attackby(var/obj/item/thing, var/mob/user)
..()
if(ismultitool(thing))
var/new_ident = input("Enter a new ident tag.", "Core Control", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
cur_viewed_device = null
return
else
return ..()
/obj/machinery/computer/fusion_core_control/attack_ai(mob/user)
attack_hand(user)
@@ -28,6 +27,11 @@
/obj/machinery/computer/fusion_core_control/interact(mob/user)
if(stat & (BROKEN|NOPOWER))
user.unset_machine()
user << browse(null, "window=fusion_control")
return
if(!cur_viewed_device || !check_core_status(cur_viewed_device))
cur_viewed_device = null
@@ -174,3 +178,19 @@
if(C.idle_power_usage > C.avail())
return
. = 1
/obj/machinery/computer/fusion_core_control/update_icon()
if(stat & (BROKEN))
icon = 'icons/obj/computer.dmi'
icon_state = "broken"
set_light(0)
if(stat & (NOPOWER))
icon = 'icons/obj/computer.dmi'
icon_state = "computer"
set_light(0)
if(!stat & (BROKEN|NOPOWER))
icon = initial(icon)
icon_state = initial(icon_state)
set_light(light_range_on, light_power_on)
+1 -1
View File
@@ -35,7 +35,7 @@
/obj/structure/cable,
/obj/machinery/atmospherics,
/obj/machinery/air_sensor,
/mob/observer/dead,
/mob/observer,
/obj/machinery/power/hydromagnetic_trap
)
@@ -2,6 +2,7 @@
name = "fuel injection control computer"
icon = 'icons/obj/machines/power/fusion.dmi'
icon_state = "fuel"
circuit = /obj/item/weapon/circuitboard/fusion_fuel_control
var/id_tag
var/scan_range = 25
@@ -94,9 +95,25 @@
/obj/machinery/computer/fusion_fuel_control/attackby(var/obj/item/W, var/mob/user)
..()
if(ismultitool(W))
var/new_ident = input("Enter a new ident tag.", "Fuel Control", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
return
return ..()
/obj/machinery/computer/fusion_fuel_control/update_icon()
if(stat & (BROKEN))
icon = 'icons/obj/computer.dmi'
icon_state = "broken"
set_light(0)
if(stat & (NOPOWER))
icon = 'icons/obj/computer.dmi'
icon_state = "computer"
set_light(0)
if(!stat & (BROKEN|NOPOWER))
icon = initial(icon)
icon_state = initial(icon_state)
set_light(light_range_on, light_power_on)
@@ -3,6 +3,7 @@
icon = 'icons/obj/machines/power/fusion.dmi'
icon_state = "engine"
light_color = COLOR_BLUE
circuit = /obj/item/weapon/circuitboard/gyrotron_control
var/id_tag
var/scan_range = 25
@@ -16,6 +17,11 @@
/obj/machinery/computer/gyrotron_control/interact(var/mob/user)
if(stat & (BROKEN|NOPOWER))
user.unset_machine()
user << browse(null, "window=gyrotron_controller_[id_tag]")
return
if(!id_tag)
to_chat(user, "<span class='warning'>This console has not been assigned an ident tag. Please contact your system administrator or conduct a manual update with a standard multitool.</span>")
return
@@ -89,9 +95,25 @@
return 0
/obj/machinery/computer/gyrotron_control/attackby(var/obj/item/W, var/mob/user)
..()
if(ismultitool(W))
var/new_ident = input("Enter a new ident tag.", "Gyrotron Control", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
return
return ..()
/obj/machinery/computer/gyrotron_control/update_icon()
if(stat & (BROKEN))
icon = 'icons/obj/computer.dmi'
icon_state = "broken"
set_light(0)
if(stat & (NOPOWER))
icon = 'icons/obj/computer.dmi'
icon_state = "computer"
set_light(0)
if(!stat & (BROKEN|NOPOWER))
icon = initial(icon)
icon_state = initial(icon_state)
set_light(light_range_on, light_power_on)
+1 -1
View File
@@ -344,7 +344,7 @@
//Phorochemistry DM: Allows chemicalresistant shocking -Radiantflash
for(var/datum/reagent/phororeagent/R in M.reagents.reagent_list)
if(R.id == "fulguracin")
M << "\blue Your hairs stand up, but you resist the shock for the most part"
M << "<span class='notice'>Your hairs stand up, but you resist the shock for the most part</span>"
return 0 //no shock for you
//Checks again. If we are still here subject will be shocked, trigger standard 20 tick warning
@@ -325,6 +325,31 @@
/obj/item/ammo_magazine/box/c9mm/empty
initial_ammo = 0
/obj/item/ammo_magazine/m9mmR/saber
desc = "A very high capacity double stack magazine made specially for the SABER SMG. Filled with 22 9mm bullets."
icon_state = "S9mm-22"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/a9mm
matter = list(DEFAULT_WALL_MATERIAL = 1200)
caliber = "9mm"
max_ammo = 22
origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1)
multiple_sprites = 1
/obj/item/ammo_magazine/m9mmR/saber/ap
desc = "A high capacity double stack magazine made specially for the SABER SMG. Filled with 22 9mm armor piercing bullets."
icon_state = "S9mm-22"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/a9mm/ap
matter = list(DEFAULT_WALL_MATERIAL = 2000)
caliber = "9mm"
max_ammo = 22
origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1)
multiple_sprites = 1
/obj/item/ammo_magazine/m9mmR/saber/empty
initial_ammo = 0
///////// 10mm /////////
/obj/item/ammo_magazine/m10mm
@@ -58,8 +58,7 @@
modifystate = "x01stun"
firemodes = list(
list(mode_name="stun", fire_delay=8,projectile_type= /obj/item/projectile/energy/electrode/x01stunshot, modifystate="x01stun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 240),
list(mode_name="laser", fire_delay=8,projectile_type=/obj/item/projectile/beam, modifystate="x01laser", fire_sound='sound/weapons/Laser.ogg', charge_cost = 480),
list(mode_name="stun", fire_delay = 8, projectile_type= /obj/item/projectile/energy/electrode/x01stunshot, modifystate="x01stun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 240),
list(mode_name="laser", fire_delay = 8, projectile_type=/obj/item/projectile/beam, modifystate="x01laser", fire_sound='sound/weapons/Laser.ogg', charge_cost = 480),
list(mode_name="gauss", fire_delay=15, projectile_type=/obj/item/projectile/energy/gauss, modifystate="x01gauss", fire_sound='sound/weapons/gauss_shoot.ogg', charge_cost = 360)
)
@@ -23,7 +23,7 @@
force = 5
slot_flags = SLOT_BELT|SLOT_HOLSTER
charge_cost = 480
projectile_type = /obj/item/projectile/ion/pistol // still packs a punch but no AoE
projectile_type = /obj/item/projectile/ion/pistol
/obj/item/weapon/gun/energy/decloner
name = "biological demolecularisor"
@@ -1,25 +1,40 @@
/obj/item/weapon/gun/projectile/automatic //Hopefully someone will find a way to make these fire in bursts or something. --Superxpdude //Except burstfire isn't fit for an rp server --Mark
/obj/item/weapon/gun/projectile/automatic //This should never be spawned in, it is just here because of code necessities.
name = "daka SMG"
desc = "A small SMG. You really shouldn't be able to get this gun. Uses 9mm rounds."
icon_state = "c05r" //Used because it's not used anywhere else
load_method = SPEEDLOADER
ammo_type = /obj/item/ammo_casing/a9mm
projectile_type = /obj/item/projectile/bullet/pistol
//Burst is the number of bullets fired; Fire delay is the time you have to wait to shoot the gun again, Move delay is the same but for moving after shooting. .
//Burst accuracy is the accuracy of each bullet fired in the burst. Dispersion is how much the bullets will 'spread' away from where you aimed.
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0)))
/obj/item/weapon/gun/projectile/automatic/saber //Fixed it
name = "prototype SMG"
desc = "A protoype lightweight, fast firing gun. Uses 9mm rounds."
icon_state = "saber" //ugly
icon = 'icons/obj/gun.dmi'
icon_state = "saber"//Still ugly
w_class = ITEMSIZE_NORMAL
load_method = SPEEDLOADER //yup. until someone sprites a magazine for it.
load_method = MAGAZINE //This should fix it
max_shells = 22
caliber = "9mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
ammo_type = /obj/item/ammo_casing/a9mm
magazine_type = /obj/item/ammo_magazine/m9mmR/saber
allowed_magazines = list(/obj/item/ammo_magazine/m9mmR/saber, /obj/item/ammo_magazine/m9mmR/saber/ap)
projectile_type = /obj/item/projectile/bullet/pistol
multi_aim = 1
burst_delay = 2
// one_handed_penalty = 15
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0))
// list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15,-30,-30), dispersion=list(0.6, 1.0, 1.0, 1.0, 1.2)),
)
// list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15,-30,-30), dispersion=list(0.6, 1.0, 1.0, 1.0, 1.2)),
)
/obj/item/weapon/gun/projectile/automatic/c20r
name = "submachine gun"
@@ -0,0 +1,53 @@
/obj/item/weapon/gun/projectile/revolvershotgun
name = "Jackhammer"
desc = "Uses 12g rounds."
icon = 'icons/obj/gun_yw.dmi'
icon_state = "revolvshot"
item_state = null
w_class = ITEMSIZE_LARGE
force = 10
caliber = "12g"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_ILLEGAL = 2)
slot_flags = SLOT_BACK|SLOT_BELT|SLOT_HOLSTER
handle_casings = CYCLE_CASINGS
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m12gdrumjack/beanbag
allowed_magazines = list(/obj/item/ammo_magazine/m12gdrumjack)
projectile_type = /obj/item/projectile/bullet/shotgun
/obj/item/weapon/gun/projectile/revolvershotgun/update_icon()
..()
if(ammo_magazine)
icon_state = "revolvshot"
else
icon_state = "revolvshot-empty"
return
/obj/item/ammo_magazine/m12gdrumjack
name = "drum magazine (12 gauge slug)"
desc = "A magazine for a revolver shotgun."
icon = 'icons/obj/ammo_yw.dmi'
icon_state = "c12g"
mag_type = MAGAZINE
caliber = "12g"
matter = list(DEFAULT_WALL_MATERIAL = 13000) //did the math. now fixed the exploityness of this thing. Have fun!
ammo_type = /obj/item/ammo_casing/a12g
max_ammo = 4
multiple_sprites = 1
/obj/item/ammo_magazine/m12gdrumjack/beanbag
name = "drum magazine (12 gauge beanbag)"
ammo_type = /obj/item/ammo_casing/a12g/beanbag
/obj/item/ammo_magazine/m12gdrumjack/pellet
name = "drum magazine (12 gauge pellet)"
ammo_type = /obj/item/ammo_casing/a12g/pellet
/obj/item/ammo_magazine/m12gdrumjack/flash
name = "drum magazine (12 gauge flash)"
ammo_type = /obj/item/ammo_casing/a12g/flash
/obj/item/ammo_magazine/m12gdrumjack/empty
name = "drum magazine (12 gauge)"
initial_ammo = 0
@@ -865,7 +865,7 @@
glass_name = "lime tea"
glass_desc = "A tasty mixture of lime and tea. It's apparently good for you!"
cup_name = "cup of berry tea"
cup_name = "cup of lime tea"
cup_desc = "A tasty mixture of lime and tea. It's apparently good for you!"
/datum/reagent/drink/tea/orangetea
@@ -32,7 +32,7 @@
if(alien == IS_SLIME)
chem_effective = 0.75
if(alien != IS_DIONA)
M.heal_organ_damage(6 * removed * chem_effective, 0)
M.heal_organ_damage(4 * removed * chem_effective, 0) //VOREStation Edit
/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -67,7 +67,7 @@
chem_effective = 0.5
M.adjustBruteLoss(2 * removed) //Mends burns, but has negative effects with a Promethean's skeletal structure.
if(alien != IS_DIONA)
M.heal_organ_damage(0, 6 * removed * chem_effective)
M.heal_organ_damage(0, 4 * removed * chem_effective) //VOREStation edit
/datum/reagent/dermaline
name = "Dermaline"
@@ -85,7 +85,7 @@
if(alien == IS_SLIME)
chem_effective = 0.75
if(alien != IS_DIONA)
M.heal_organ_damage(0, 12 * removed * chem_effective)
M.heal_organ_damage(0, 8 * removed * chem_effective) //VOREStation edit
/datum/reagent/dylovene
name = "Dylovene"
@@ -141,20 +141,21 @@
color = "#0080FF"
overdose = REAGENTS_OVERDOSE
scannable = 1
metabolism = REM * 0.25 //VOREStation Edit
/datum/reagent/dexalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_VOX)
M.adjustToxLoss(removed * 6)
M.adjustToxLoss(removed * 24) //VOREStation Edit
else if(alien == IS_SLIME && dose >= 15)
M.add_chemical_effect(CE_PAINKILLER, 15)
if(prob(15))
to_chat(M, "<span class='notice'>You have a moment of clarity as you collapse.</span>")
M.adjustBrainLoss(-5 * removed)
M.adjustBrainLoss(-20 * removed) //VOREStation Edit
M.Weaken(6)
else if(alien != IS_DIONA)
M.adjustOxyLoss(-15 * removed)
M.adjustOxyLoss(-60 * removed) //VOREStation Edit
holder.remove_reagent("lexorin", 2 * removed)
holder.remove_reagent("lexorin", 8 * removed) //VOREStation Edit
/datum/reagent/dexalinp
name = "Dexalin Plus"
@@ -399,7 +400,7 @@
M.Weaken(5)
if(dose >= 10 && M.paralysis < 40)
M.AdjustParalysis(1) //Messing with the core with a simple chemical probably isn't the best idea.
M.adjustBrainLoss(-30 * removed * chem_effective)
M.adjustBrainLoss(-8 * removed * chem_effective) //VOREStation Edit
M.add_chemical_effect(CE_PAINKILLER, 10 * chem_effective)
/datum/reagent/imidazoline
@@ -62,15 +62,17 @@
/datum/reagent/vermicetol
name = "Vermicetol"
id = "vermicetol"
description = "A potent chemical that treats burn damage at an exceptional rate and lasts a while."
description = "A potent chemical that treats physical damage at an exceptional rate."
taste_description = "sparkles"
taste_mult = 3
reagent_state = SOLID
color = "#964e06"
overdose = 10
overdose = REAGENTS_OVERDOSE * 0.5
scannable = 1
metabolism = 0.02
mrate_static = TRUE
/datum/reagent/vermicetol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
var/chem_effective = 1
if(alien == IS_SLIME)
chem_effective = 0.75
if(alien != IS_DIONA)
M.heal_organ_damage(0, 110 * removed) //Not as potent as Kelotane, but lasts LONG.
M.heal_organ_damage(8 * removed * chem_effective, 0)
+1 -1
View File
@@ -2253,4 +2253,4 @@
id = "biomass"
result = "biomass"
required_reagents = list("protein" = 1, "sugar" = 1, "phoron" = 1)
result_amount = 6 // Roughly 120u per phoron sheet //VOREStation Edit
result_amount = 6 // Roughly 120u per phoron sheet //VOREStation Edit
@@ -165,7 +165,7 @@
/obj/item/weapon/reagent_containers/food/snacks/kitsuneudon
name = "kitsune udon"
desc = "A purported favorite of kitsunes in ancient japanese myth: udon noodles, friend egg, and tofu."
desc = "A purported favorite of kitsunes in ancient japanese myth: udon noodles, fried egg, and tofu."
icon = 'icons/obj/food_vr.dmi'
icon_state = "kitsuneudon"
trash = /obj/item/trash/snack_bowl
@@ -49,7 +49,7 @@
if(H.a_intent != I_HELP)
to_chat(user, "<span class='notice'>[H] is resisting your attempt to inject them with \the [src].</span>")
to_chat(H, "<span class='danger'> [user] is trying to inject you with \the [src]!</span>")
if(!do_after(user, 30))
if(!do_after(user, 30, H))
return
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
@@ -333,8 +333,8 @@
/obj/item/weapon/reagent_containers/syringe/inaprovaline/New()
..()
reagents.add_reagent("inaprovaline", 15)
mode = SYRINGE_INJECT
update_icon()
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
/obj/item/weapon/reagent_containers/syringe/antitoxin
name = "Syringe (anti-toxin)"
@@ -343,8 +343,8 @@
/obj/item/weapon/reagent_containers/syringe/antitoxin/New()
..()
reagents.add_reagent("anti_toxin", 15)
mode = SYRINGE_INJECT
update_icon()
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
/obj/item/weapon/reagent_containers/syringe/antiviral
name = "Syringe (spaceacillin)"
@@ -353,8 +353,8 @@
/obj/item/weapon/reagent_containers/syringe/antiviral/New()
..()
reagents.add_reagent("spaceacillin", 15)
mode = SYRINGE_INJECT
update_icon()
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
/obj/item/weapon/reagent_containers/syringe/drugs
name = "Syringe (drugs)"
@@ -365,8 +365,8 @@
reagents.add_reagent("space_drugs", 5)
reagents.add_reagent("mindbreaker", 5)
reagents.add_reagent("cryptobiolin", 5)
mode = SYRINGE_INJECT
update_icon()
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
/obj/item/weapon/reagent_containers/syringe/ld50_syringe/choral/New()
..()
@@ -43,7 +43,11 @@
//Dirtiness should be very low if you're the first injectee. If you're spam-injecting 4 people in a row around you though,
//This gives the last one a 30% chance of infection.
if(prob(dirtiness+(targets.len-1)*10))
var/infect_chance = dirtiness //Start with dirtiness
if(infect_chance <= 10 && (hash in targets)) //Extra fast uses on target is free
infect_chance = 0
infect_chance += (targets.len-1)*10 //Extra 10% per extra target
if(prob(infect_chance))
log_and_message_admins("[loc] infected [target]'s [eo.name] with \the [src].")
infect_limb(eo)
+2 -1
View File
@@ -47,9 +47,10 @@
/datum/design/item/weapon/smg
id = "smg"
desc = "An compact reliable SMG firing armor piercing ammo."
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 8000, "silver" = 2000, "diamond" = 1000)
build_path = /obj/item/weapon/gun/projectile/automatic
build_path = /obj/item/weapon/gun/projectile/automatic/saber
sort_string = "TAABA"
/datum/design/item/weapon/ammo_9mm
+10 -1
View File
@@ -92,13 +92,22 @@
build_path = /obj/item/device/nif
sort_string = "HABBC"
/datum/design/item/nifbio
name = "bioadaptive NIF"
id = "bioadapnif"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5, TECH_BIO = 5)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 15000, "uranium" = 10000, "diamond" = 10000)
build_path = /obj/item/device/nif/bioadap
sort_string = "HABBD" //Changed String from HABBE to HABBD
//Addiing bioadaptive NIF to Protolathe
/datum/design/item/nifrepairtool
name = "adv. NIF repair tool"
id = "anrt"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
materials = list(DEFAULT_WALL_MATERIAL = 200, "glass" = 3000, "uranium" = 2000, "diamond" = 2000)
build_path = /obj/item/device/nifrepairer
sort_string = "HABBD"
sort_string = "HABBE" //Changed String from HABBD to HABBE
// Resleeving Circuitboards
+6
View File
@@ -8,6 +8,12 @@
name = "grower pod"
circuit = /obj/item/weapon/circuitboard/transhuman_clonepod
//A full version of the pod
/obj/machinery/clonepod/transhuman/full/initialize()
. = ..()
for(var/i = 1 to container_limit)
containers += new /obj/item/weapon/reagent_containers/glass/bottle/biomass(src)
/obj/machinery/clonepod/transhuman/growclone(var/datum/transhuman/body_record/current_project)
//Manage machine-specific stuff.
if(mess || attempting)
@@ -219,6 +219,13 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/smallbear
name = "small bear"
desc = ""
icon_state = "smallbear"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/squirrelhc
name = "squirrel, colorable"
desc = ""
@@ -256,6 +263,28 @@
color_blend_mode = ICON_MULTIPLY
extra_overlay = "antlers_mark"
/datum/sprite_accessory/ears/smallantlers
name = "small antlers"
desc = ""
icon_state = "smallantlers"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/smallantlers_e
name = "small antlers with ears"
desc = ""
icon_state = "smallantlers"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "deer"
/datum/sprite_accessory/ears/deer
name = "deer ears"
desc = ""
icon_state = "deer"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/cow
name = "cow, horns"
desc = ""
@@ -275,6 +304,13 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/caprahorns
name = "caprine horns"
desc = ""
icon_state = "caprahorns"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/otie
name = "otie, colorable"
desc = ""
@@ -304,6 +340,13 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/drake
name = "drake frills"
desc = ""
icon_state = "drake"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/vulp
name = "vulpkanin, dual-color"
desc = ""
+1 -1
View File
@@ -38,7 +38,7 @@
if(isitem(A) && !did_an_item)
var/obj/item/I = A
if(mode_flags & DM_FLAG_ITEMWEAK)
I.gurgle_contaminate(contents, cont_flavor)
I.gurgle_contaminate(src, cont_flavor)
items_preserved |= I
to_update = TRUE
else
+3 -1
View File
@@ -2,6 +2,7 @@
/mob/living
var/digestable = 1 // Can the mob be digested inside a belly?
var/allowmobvore = 1 // Will simplemobs attempt to eat the mob?
var/showvoreprefs = 1 // Determines if the mechanical vore preferences button will be displayed on the mob or not.
var/obj/belly/vore_selected // Default to no vore capability.
var/list/vore_organs = list() // List of vore containers inside a mob
var/absorbed = 0 // If a mob is absorbed into another
@@ -612,7 +613,8 @@
/mob/living/examine(mob/user)
. = ..()
to_chat(user, "<span class='deptradio'><a href='?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a></span>")
if(showvoreprefs)
to_chat(user, "<span class='deptradio'><a href='?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a></span>")
/mob/living/Topic(href, href_list) //Can't find any instances of Topic() being overridden by /mob/living in polaris' base code, even though /mob/living/carbon/human's Topic() has a ..() call
if(href_list["vore_prefs"])
+6 -1
View File
@@ -149,9 +149,14 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
return 0
//Write it out
#ifdef RUST_G
call(RUST_G, "file_write")(json_to_file, path)
#else
// Fall back to using old format if we are not using rust-g
if(fexists(path))
fdel(path) //Byond only supports APPENDING to files, not replacing.
text2file(json_to_file,path)
text2file(json_to_file, path)
#endif
if(!fexists(path))
log_debug("Saving: [path] failed file write")
return 0
@@ -100,10 +100,10 @@
new /obj/item/clothing/suit/storage/fluff/modernfedcoat(src)
new /obj/item/clothing/head/caphat/formal/fedcover(src)
new /obj/item/weapon/card/id/centcom/station/fluff/joanbadge(src)
new /obj/item/weapon/gun/energy/gun/fluff/dominator(src)
// new /obj/item/weapon/gun/energy/gun/fluff/dominator(src)
new /obj/item/clothing/suit/armor/det_suit(src)
new /obj/item/clothing/accessory/permit/gun/fluff/joanrisu(src)
new /obj/item/weapon/sword/fluff/joanaria(src)
// new /obj/item/clothing/accessory/permit/gun/fluff/joanrisu(src)
// new /obj/item/weapon/sword/fluff/joanaria(src)
new /obj/item/weapon/flame/lighter/zippo/fluff/joan(src)
new /obj/item/clothing/under/rank/internalaffairs/fluff/joan(src)
new /obj/item/clothing/head/helmet/space/fluff/joan(src)
@@ -121,13 +121,10 @@
..()
new /obj/item/clothing/accessory/holster/hip(src)
new /obj/item/clothing/suit/storage/fluff/fedcoat(src)
new /obj/item/weapon/gun/energy/gun/fluff/dominator(src)
// new /obj/item/weapon/gun/energy/gun/fluff/dominator(src)
new /obj/item/clothing/suit/armor/det_suit(src)
new /obj/item/clothing/accessory/storage/black_vest(src)
new /obj/item/weapon/material/knife/tacknife/combatknife/fluff/katarina(src)
new /obj/item/weapon/material/knife/tacknife/combatknife/fluff/katarina(src)
new /obj/item/weapon/material/knife/tacknife/combatknife/fluff/katarina(src)
new /obj/item/weapon/material/knife/tacknife/combatknife/fluff/katarina(src)
new /obj/item/clothing/under/rank/internalaffairs/fluff/joan(src)
//drakefrostpaw:Drake Frostpaw
@@ -172,7 +169,7 @@
can_hold = list(/obj/item/clothing/under/swimsuit/)
has_items = list(/obj/item/clothing/under/swimsuit/fluff/penelope)
//Aerowing:Sebastian Aji
// Aerowing:Sebastian Aji
/obj/item/weapon/storage/box/fluff/sebastian_aji
name = "Sebastian's Lumoco Arms P3 Box"
has_items = list(
@@ -181,18 +178,22 @@
/obj/item/ammo_magazine/m9mm/compact/flash,
/obj/item/clothing/accessory/permit/gun/fluff/sebastian_aji)
/*
/obj/item/weapon/storage/box/fluff/briana_moore
name = "Briana's Derringer Box"
has_items = list(
/obj/item/weapon/gun/projectile/derringer/fluff/briana,
/obj/item/clothing/accessory/permit/gun/fluff/briana_moore)
*/
/*
//SilencedMP5A5:Serdykov Antoz
/obj/item/weapon/storage/box/fluff/serdykov_antoz
name = "Serdy's Weapon Box"
has_items = list(
/obj/item/clothing/accessory/permit/gun/fluff/silencedmp5a5,
/obj/item/weapon/gun/projectile/colt/fluff/serdy)
*/
//BeyondMyLife: Ne'tra Ky'ram //Made a box because they have so many items that it'd spam the debug log.
/obj/item/weapon/storage/box/fluff/kilano
@@ -1006,6 +1006,34 @@
override = 1
item_state = "tesh_cloak_saroth"
/obj/item/clothing/accessory/poncho/cloak/fluff/Jaree
name = "plain cloak"
desc = "A plain cloak to be worn for warmth or comfort. Looks cozy."
icon = 'icons/vore/custom_clothes_yw.dmi'
icon_state = "jaree_cloak"
icon_override = 'icons/vore/custom_onmob_yw.dmi'
item_state = "jaree_cloak"
override = 1
/obj/item/clothing/head/ushanka/alt/fluff/Jaree
name = "ushanka"
desc = "Perfect for winter in Siberia, da?"
icon_state = "ushanka2down"
icon = 'icons/vore/custom_clothes_yw.dmi'
icon_override = 'icons/vore/custom_onmob_yw.dmi'
item_state = "ushanka2down"
flags_inv = HIDEEARS
/obj/item/clothing/head/ushanka/alt/fluff/Jaree/attack_self(mob/user as mob)
if(src.icon_state == "ushanka2down")
src.icon_state = "ushanka2up"
src.item_state = "ushanka2up"
user << "You raise the ear flaps on the ushanka."
else
src.icon_state = "ushanka2down"
src.item_state = "ushanka2down"
user << "You lower the ear flaps on the ushanka."
// ******
// Benl8561
// ******
@@ -541,6 +541,7 @@
/obj/item/projectile/beam/imperial
name = "laser beam"
fire_sound = 'sound/weapons/mandalorian.ogg'
icon_state = "darkb"
light_color = "#8837A3"
muzzle_type = /obj/effect/projectile/darkmatter/muzzle
@@ -459,4 +459,12 @@
icon_state = "modkit"
from_suit = /obj/item/clothing/head/helmet
to_suit = /obj/item/clothing/head/helmet/fluff/skinner
to_suit = /obj/item/clothing/head/helmet/fluff/skinner
// **************
// DeepIndigo
// **************
/obj/item/weapon/storage/bible/fluff/amina
name = "New Space Pioneer's Bible"
desc = "This one says it was printed in 2492. The name \"Eric Hayvers\" is written on the inside of the cover, crossed out. Under it is written \"Kouri, Amina, Marine Unit 14, Fifth Echelon. Service number NTN-5528928522372\""
@@ -11,50 +11,57 @@
name = "Sebastian Aji's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on April 17th, 2563."
// arokha:Aronai Kadigan
/* arokha:Aronai Kadigan
/obj/item/clothing/accessory/permit/gun/fluff/aronai_kadigan
name = "Aronai Kadigan's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on February 16th, 2562."
*/
// bwoincognito:Tasald Corlethian
/obj/item/clothing/accessory/permit/gun/fluff/tasald_corlethian
name = "Tasald Ajax Corlethian's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on August 2nd, 2562."
// dhaeleena:Dhaeleena M'iar
/* dhaeleena:Dhaeleena M'iar
/obj/item/clothing/accessory/permit/gun/fluff/dhaeleena_miar
name = "Dhaeleena M'iar's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm that uses less-than-lethal munitions. It is issued by CentCom, so it is valid until it expires on March 1st, 2562."
*/
// jertheace:Jeremiah 'Ace' Acacius
/obj/item/clothing/accessory/permit/gun/fluff/ace
name = "Ace's Shotgun Permit"
desc = "A card indicating that the owner is allowed to carry a firearm. It is issued by CentCom, so it is valid until it expires on October 1st, 2562."
// joanrisu:Joan Risu
/* joanrisu:Joan Risu
/obj/item/clothing/accessory/permit/gun/fluff/joanrisu
name = "Joan Risu's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on April 4th, 2562."
*/
// luminescent_ring:Briana Moore
/* luminescent_ring:Briana Moore
/obj/item/clothing/accessory/permit/gun/fluff/briana_moore
name = "Briana Moore's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on April 24th, 2562."
*/
// silenedmp5a5:Serdykov Antoz
/* silenedmp5a5:Serdykov Antoz
/obj/item/clothing/accessory/permit/gun/fluff/silencedmp5a5
name = "Serdykov Antoz's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm that uses less-than-lethal munitions. It is issued by CentCom, so it is valid until it expires on April 24th, 2562."
*/
// pawoverlord:Sorrel Cavalet
/obj/item/clothing/accessory/permit/gun/fluff/sorrel_cavalet
name = "Sorrel Cavalet's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on September 26th, 2562."
// hzdonut:Jesse Soemmer
/* hzdonut:Jesse Soemmer
/obj/item/clothing/accessory/permit/gun/fluff/JesseSoemmer
name = "Jesse Soemmer's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on March 4, 2563."
*/
/* Legacy Permits
// BEGIN - PROTOTYPE
+18
View File
@@ -162,6 +162,24 @@ ckey: dushka
character_name: Saroth
item_path: /obj/item/weapon/storage/box/fluff/saroth
}
{
ckey: dushka
character_name: Jaree-Kur
item_path: /obj/item/clothing/accessory/poncho/cloak/fluff/Jaree
}
{
ckey: dushka
character_name: Jaree-Kur
item_path: /obj/item/clothing/head/ushanka/alt/fluff/Jaree
}
{
ckey: deepindigo
character_name: Amina Dae-Kouri
item_path: /obj/item/weapon/storage/bible/fluff/amina
}
# ######## E CKEYS
{
ckey: esperkin
+14
View File
@@ -53,6 +53,20 @@
-->
<div class="commit sansserif">
<h2 class="date">21 June 2018</h2>
<h3 class="author">Anewbe updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added a biomass reagent, made from protein, sugar, and phoron.</li>
<li class="tweak">Cloners and bioprinters now use the biomass reagent. Both can be refilled or have their capacity increased by replacing the bottles they spawn with.</li>
<li class="experiment">Mapped in a bioprinter, for further testing.</li>
<li class="rscadd">Adds the ability to make robolimb brands more or less vulnerable to brute or burn.</li>
<li class="rscdel">Makes VeyMed limbs more vulnerable to brute and burn.</li>
</ul>
<h3 class="author">Mechoid updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Allow AIs to create and take control of mindless drones from fabricators.</li>
</ul>
<h2 class="date">08 June 2018</h2>
<h3 class="author">Anewbe updated:</h3>
<ul class="changes bgimages16">
File diff suppressed because it is too large Load Diff
@@ -33,5 +33,4 @@ delete-after: True
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Adds the ability to make robolimb brands more or less vulnerable to brute or burn."
- rscdel: "Makes VeyMed limbs more vulnerable to brute and burn."
- bugfix: "Technomancer Apportation now properly checks for range and scepter, again."
-38
View File
@@ -1,38 +0,0 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: Anewbe
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Added a biomass reagent, made from protein, sugar, and phoron."
- tweak: "Cloners and bioprinters now use the biomass reagent. Both can be refilled or have their capacity increased by replacing the bottles they spawn with."
- experiment: "Mapped in a bioprinter, for further testing."
-7
View File
@@ -1,7 +0,0 @@
author: Mechoid
delete-after: True
changes:
- rscadd: "Allow AIs to create and take control of mindless drones from fabricators."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Some files were not shown because too many files have changed in this diff Show More