diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index 81a55f84d7..f12b630979 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -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. diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 4d1673a8a5..9d34ead4df 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -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 diff --git a/code/__defines/subsystems_vr.dm b/code/__defines/subsystems_vr.dm new file mode 100644 index 0000000000..5c028803b9 --- /dev/null +++ b/code/__defines/subsystems_vr.dm @@ -0,0 +1 @@ +#define INIT_ORDER_HOLOMAPS -5 //VOREStation Add \ No newline at end of file diff --git a/code/controllers/subsystems/mapping_vr.dm b/code/controllers/subsystems/mapping_vr.dm index 0a94cc4634..c36336b161 100644 --- a/code/controllers/subsystems/mapping_vr.dm +++ b/code/controllers/subsystems/mapping_vr.dm @@ -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() diff --git a/code/controllers/subsystems/mapping_yw.dm b/code/controllers/subsystems/mapping_yw.dm new file mode 100644 index 0000000000..9a16b7bd3e --- /dev/null +++ b/code/controllers/subsystems/mapping_yw.dm @@ -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("Chose Engine Map: [chosen_type.name]", 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() diff --git a/code/controllers/subsystems/planets.dm b/code/controllers/subsystems/planets.dm index 2bb09050f4..3b3675d5c3 100644 --- a/code/controllers/subsystems/planets.dm +++ b/code/controllers/subsystems/planets.dm @@ -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) diff --git a/code/game/gamemodes/changeling/absorbed_dna.dm b/code/game/gamemodes/changeling/absorbed_dna.dm index 3c23f0270c..26d433cd8c 100644 --- a/code/game/gamemodes/changeling/absorbed_dna.dm +++ b/code/game/gamemodes/changeling/absorbed_dna.dm @@ -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 \ No newline at end of file + flavour_texts = newFlavour ? newFlavour.Copy() : null + genMods = newGenMods ? newGenMods.Copy() : null \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index f76fd5ca47..45b230b00c 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -78,7 +78,7 @@ src << "We can now re-adapt, reverting our evolution so that we may start anew, if needed." - 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) diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm index 9225792575..6dd16061a1 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/game/gamemodes/changeling/powers/transform.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spell_objs_helpers.dm b/code/game/gamemodes/technomancer/spell_objs_helpers.dm index f11c027566..105b3b3e9c 100644 --- a/code/game/gamemodes/technomancer/spell_objs_helpers.dm +++ b/code/game/gamemodes/technomancer/spell_objs_helpers.dm @@ -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 diff --git a/code/game/gamemodes/technomancer/spells/apportation.dm b/code/game/gamemodes/technomancer/spells/apportation.dm index 9fafc47ae3..452ddc52fa 100644 --- a/code/game/gamemodes/technomancer/spells/apportation.dm +++ b/code/game/gamemodes/technomancer/spells/apportation.dm @@ -21,11 +21,13 @@ if(!AM.loc) //Don't teleport HUD telements to us. return if(AM.anchored) - user << "\The [hit_atom] is firmly secured and anchored, you can't move it!" + to_chat(user, "\The [hit_atom] is firmly secured and anchored, you can't move it!") return + if(!within_range(hit_atom) && !check_for_scepter()) - user << "\The [hit_atom] is too far away." + to_chat(user, "\The [hit_atom] is too far away.") 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 << "You are teleported towards \the [user]." + to_chat(L, "You are teleported towards \the [user].") 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 << "\The [L] is out of your reach." + to_chat(user, "\The [L] is out of your reach.") qdel(src) return diff --git a/code/game/jobs/job/blueshield.dm b/code/game/jobs/job/blueshield.dm index 726991ede0..d7c819666d 100644 --- a/code/game/jobs/job/blueshield.dm +++ b/code/game/jobs/job/blueshield.dm @@ -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 \ No newline at end of file diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index a3189741b4..e24e462fdf 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -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) */ diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 84a91cb6d4..a1ef2a8a83 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -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, "\The [src] has too many containers loaded!") @@ -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, "Can not do that while [src] is in use.") diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 08f369d735..dc4bf5146a 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -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 diff --git a/code/game/objects/items/gunbox_yw.dm b/code/game/objects/items/gunbox_yw.dm new file mode 100644 index 0000000000..bb020183f3 --- /dev/null +++ b/code/game/objects/items/gunbox_yw.dm @@ -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) \ No newline at end of file diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 391405714c..fe09f30410 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -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, "You must stand still to bandage wounds.") 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') diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 54f344eae1..0cfdd4792d 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -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 diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index b581f3b8b4..72ce933da3 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -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 diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 0a1f358eb4..cbf739d976 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -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 diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index f28cffdb6c..38c6e10d79 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -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 spontaneously 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) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/closets_yw.dm b/code/game/objects/structures/crates_lockers/closets/secure/closets_yw.dm index 114797a65b..b9baafaa6b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/closets_yw.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/closets_yw.dm @@ -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 ) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 0534418e66..231844ccad 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -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)) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm index 8a066cc754..c68e7e4216 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm @@ -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, diff --git a/code/game/objects/structures/crates_lockers/largecrate_vr.dm b/code/game/objects/structures/crates_lockers/largecrate_vr.dm index a9f173d708..d6622e2591 100644 --- a/code/game/objects/structures/crates_lockers/largecrate_vr.dm +++ b/code/game/objects/structures/crates_lockers/largecrate_vr.dm @@ -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) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 6923728564..4c1bc63618 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -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) diff --git a/code/game/turfs/flooring/flooring_decals_vr.dm b/code/game/turfs/flooring/flooring_decals_vr.dm index d0f1e2e70c..5326eeff86 100644 --- a/code/game/turfs/flooring/flooring_decals_vr.dm +++ b/code/game/turfs/flooring/flooring_decals_vr.dm @@ -10,4 +10,91 @@ /obj/effect/floor_decal/industrial/outline/red name = "red outline" - color = COLOR_RED \ No newline at end of file + 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" diff --git a/code/game/turfs/simulated/dungeon/wall.dm b/code/game/turfs/simulated/dungeon/wall.dm index 176c10142c..c1a02cde66 100644 --- a/code/game/turfs/simulated/dungeon/wall.dm +++ b/code/game/turfs/simulated/dungeon/wall.dm @@ -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 \ No newline at end of file diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 63c781452c..9e9eaeb868 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -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) diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 9161f65517..1c9ec29880 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -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 diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 329f905a66..ea616226ba 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -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.") diff --git a/code/modules/clothing/head/helmet_vr.dm b/code/modules/clothing/head/helmet_vr.dm index fc71016f7e..8f7ec139ca 100644 --- a/code/modules/clothing/head/helmet_vr.dm +++ b/code/modules/clothing/head/helmet_vr.dm @@ -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' diff --git a/code/modules/clothing/spacesuits/rig/modules/utility_vr.dm b/code/modules/clothing/spacesuits/rig/modules/utility_vr.dm index 83456629a1..21fe6fb9cf 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility_vr.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility_vr.dm @@ -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() diff --git a/code/modules/clothing/suits/armor_vr.dm b/code/modules/clothing/suits/armor_vr.dm index 349b0e01e7..76d55dcc82 100644 --- a/code/modules/clothing/suits/armor_vr.dm +++ b/code/modules/clothing/suits/armor_vr.dm @@ -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 platoon–and we had to share 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. diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/under/accessories/clothing.dm index eaab8b290a..02fab3e95a 100644 --- a/code/modules/clothing/under/accessories/clothing.dm +++ b/code/modules/clothing/under/accessories/clothing.dm @@ -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." diff --git a/code/modules/clothing/under/extrauniforms_yw.dm b/code/modules/clothing/under/extrauniforms_yw.dm index 6bfa2bae59..5dab3488a5 100644 --- a/code/modules/clothing/under/extrauniforms_yw.dm +++ b/code/modules/clothing/under/extrauniforms_yw.dm @@ -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' diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index c6f9503a0a..3971d7094e 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -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("Annihilating objects in submap loading locatation.", R_DEBUG) + admin_notice("Annihilating objects in submap loading location.", 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) diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm index fdd719df89..79fb113f10 100644 --- a/code/modules/mob/language/outsider.dm +++ b/code/modules/mob/language/outsider.dm @@ -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 diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index 6de7a9d309..5af1bb607f 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -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", diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm index 6440b086fd..4ff54431ba 100644 --- a/code/modules/mob/language/station_vr.dm +++ b/code/modules/mob/language/station_vr.dm @@ -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 */ diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 3cef432949..eb473989f2 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -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 << "You are not a slime thing!" 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) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 0b40e088f3..64cd6a0dc1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -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 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 8619dee42d..efa040bf2b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -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 diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index a586714eaa..d9bb5fde12 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -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 diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 0526dc52cd..9044d39b67 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -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,"There's nobody nearby to use this on.") + + 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,"There's nobody nearby to use this on.") + + 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." diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index b33397a8d2..d658baa5a4 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -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 diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm index b225cc6e89..1be1ea0268 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm @@ -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. diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 3ee751caeb..86ba77fc2a 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -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 diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 8de8e405a4..99529daed8 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -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.") diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index a3131b55e1..255b23436b 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -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) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm b/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm index 77abb0e59d..4980c24ca3 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm @@ -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) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 23964444c9..e67b2d5f98 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -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 ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/aliens/mimic.dm b/code/modules/mob/living/simple_animal/aliens/mimic.dm index 17fc70008d..eeaaddf3bb 100644 --- a/code/modules/mob/living/simple_animal/aliens/mimic.dm +++ b/code/modules/mob/living/simple_animal/aliens/mimic.dm @@ -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(.) diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm index 883c43e30f..96d460476f 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm +++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm @@ -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 diff --git a/code/modules/mob/living/simple_animal/vore/otie.dm b/code/modules/mob/living/simple_animal/vore/otie.dm index 3a2601ef46..5220f861c5 100644 --- a/code/modules/mob/living/simple_animal/vore/otie.dm +++ b/code/modules/mob/living/simple_animal/vore/otie.dm @@ -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" diff --git a/code/modules/mob/new_player/new_player_vr.dm b/code/modules/mob/new_player/new_player_vr.dm index d92df60859..10ad4dba14 100644 --- a/code/modules/mob/new_player/new_player_vr.dm +++ b/code/modules/mob/new_player/new_player_vr.dm @@ -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 diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 5141eed979..892c185a94 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -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" diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm index 7b6e30ed08..0e4b98417f 100644 --- a/code/modules/mob/new_player/sprite_accessories_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_vr.dm @@ -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" diff --git a/code/modules/multiz/structures.dm b/code/modules/multiz/structures.dm index 9a47f7907c..118cb999de 100644 --- a/code/modules/multiz/structures.dm +++ b/code/modules/multiz/structures.dm @@ -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) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 777ff047e1..a6c89678d5 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -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 \ No newline at end of file diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index d0de1294ba..535debad21 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -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" diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 5ad1e727da..2d057825fa 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -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, "You must cut this cable from above.") 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("[user] cuts the cable.", 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) \ No newline at end of file + 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,"You take [N] units of wire from the [src].") + 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 diff --git a/code/modules/power/fusion/core/core_control.dm b/code/modules/power/fusion/core/core_control.dm index bb4e04b1e9..54d96883a7 100644 --- a/code/modules/power/fusion/core/core_control.dm +++ b/code/modules/power/fusion/core/core_control.dm @@ -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) diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 1efb09d777..d7b58e8766 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -35,7 +35,7 @@ /obj/structure/cable, /obj/machinery/atmospherics, /obj/machinery/air_sensor, - /mob/observer/dead, + /mob/observer, /obj/machinery/power/hydromagnetic_trap ) diff --git a/code/modules/power/fusion/fuel_assembly/fuel_control.dm b/code/modules/power/fusion/fuel_assembly/fuel_control.dm index 6d95e358d8..e765c4d495 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_control.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_control.dm @@ -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) diff --git a/code/modules/power/fusion/gyrotron/gyrotron_control.dm b/code/modules/power/fusion/gyrotron/gyrotron_control.dm index 9f6c59c753..eb735a81f3 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron_control.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron_control.dm @@ -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, "This console has not been assigned an ident tag. Please contact your system administrator or conduct a manual update with a standard multitool.") 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) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index d36b85b7e1..8000455e1a 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -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 << "Your hairs stand up, but you resist the shock for the most part" return 0 //no shock for you //Checks again. If we are still here subject will be shocked, trigger standard 20 tick warning diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 0c3c76caaf..5ea1c0a2d6 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -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 diff --git a/code/modules/projectiles/guns/energy/nuclear_yw.dm b/code/modules/projectiles/guns/energy/nuclear_yw.dm index c2ac552ccf..f7d11e793f 100644 --- a/code/modules/projectiles/guns/energy/nuclear_yw.dm +++ b/code/modules/projectiles/guns/energy/nuclear_yw.dm @@ -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) ) - diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 033a746b01..f1e20b169b 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -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" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 4c7e0e3e88..a1afc075b5 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -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" diff --git a/code/modules/projectiles/guns/projectile/shotgun_yw.dm b/code/modules/projectiles/guns/projectile/shotgun_yw.dm new file mode 100644 index 0000000000..88a3b12f96 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/shotgun_yw.dm @@ -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 \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 56c93f56f1..7a3e00eab8 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -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 diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 7a5de8ffe0..cac48bd203 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -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, "You have a moment of clarity as you collapse.") - 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 diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm index e57d7ae582..ae4f0b23f8 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm @@ -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) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index cea3e1cc24..089fe44297 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -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 \ No newline at end of file + result_amount = 6 // Roughly 120u per phoron sheet //VOREStation Edit diff --git a/code/modules/reagents/reagent_containers/food/snacks_vr.dm b/code/modules/reagents/reagent_containers/food/snacks_vr.dm index 0b3db9b065..b8acc3377e 100644 --- a/code/modules/reagents/reagent_containers/food/snacks_vr.dm +++ b/code/modules/reagents/reagent_containers/food/snacks_vr.dm @@ -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 diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index ef0d4a2100..724cee9a6f 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -49,7 +49,7 @@ if(H.a_intent != I_HELP) to_chat(user, "[H] is resisting your attempt to inject them with \the [src].") to_chat(H, " [user] is trying to inject you with \the [src]!") - if(!do_after(user, 30)) + if(!do_after(user, 30, H)) return user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 68cc9d6921..3632922d1b 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -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() ..() diff --git a/code/modules/reagents/reagent_containers/syringes_vr.dm b/code/modules/reagents/reagent_containers/syringes_vr.dm index b3c9688919..e940f23454 100644 --- a/code/modules/reagents/reagent_containers/syringes_vr.dm +++ b/code/modules/reagents/reagent_containers/syringes_vr.dm @@ -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) diff --git a/code/modules/research/designs/weapons.dm b/code/modules/research/designs/weapons.dm index ddf64473eb..828856aeba 100644 --- a/code/modules/research/designs/weapons.dm +++ b/code/modules/research/designs/weapons.dm @@ -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 diff --git a/code/modules/research/designs_vr.dm b/code/modules/research/designs_vr.dm index e074323cbd..c50712ac22 100644 --- a/code/modules/research/designs_vr.dm +++ b/code/modules/research/designs_vr.dm @@ -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 diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 51dbd8d2a9..787d867eb8 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -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) diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index a58fc9f6ff..ed43a5ff29 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -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 = "" diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 62fc770e49..4278f7a59e 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -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 diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 129dd8b5ce..7b608e5c56 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -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, "\[Mechanical Vore Preferences\]") + if(showvoreprefs) + to_chat(user, "\[Mechanical Vore Preferences\]") /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"]) diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index d6939e9c95..a3b5fec4a5 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -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 diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index 3c05cdbc41..3aec6baf83 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -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 diff --git a/code/modules/vore/fluffstuff/custom_clothes_yw.dm b/code/modules/vore/fluffstuff/custom_clothes_yw.dm index 2a6b9b8335..e43c425b6e 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_yw.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_yw.dm @@ -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 // ****** diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index c696182ae9..06d133c441 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -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 diff --git a/code/modules/vore/fluffstuff/custom_items_yw.dm b/code/modules/vore/fluffstuff/custom_items_yw.dm index 3b07d64b2a..2a3f719706 100644 --- a/code/modules/vore/fluffstuff/custom_items_yw.dm +++ b/code/modules/vore/fluffstuff/custom_items_yw.dm @@ -459,4 +459,12 @@ icon_state = "modkit" from_suit = /obj/item/clothing/head/helmet - to_suit = /obj/item/clothing/head/helmet/fluff/skinner \ No newline at end of file + 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\"" \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/custom_permits_vr.dm b/code/modules/vore/fluffstuff/custom_permits_vr.dm index c96783e246..84297129e4 100644 --- a/code/modules/vore/fluffstuff/custom_permits_vr.dm +++ b/code/modules/vore/fluffstuff/custom_permits_vr.dm @@ -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 diff --git a/config/custom_items.txt b/config/custom_items.txt index 61f4569ae9..ce598b2d3c 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -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 diff --git a/html/changelog.html b/html/changelog.html index 9c933a1741..c61d9998ce 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,20 @@ -->
+

21 June 2018

+

Anewbe updated:

+ +

Mechoid updated:

+ +

08 June 2018

Anewbe updated: