diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index a565dc12d0..e1a29d97f0 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -1171,6 +1171,7 @@ /obj/machinery/atmospherics/pipe/tank/nitrogen name = "Pressure Tank (Nitrogen)" icon_state = "n2_map" + volume = 40000 //Vorestation edit /obj/machinery/atmospherics/pipe/tank/nitrogen/New() air_temporary = new diff --git a/code/datums/supplypacks/science_vr.dm b/code/datums/supplypacks/science_vr.dm index bfe2c0433c..ee73bf1089 100644 --- a/code/datums/supplypacks/science_vr.dm +++ b/code/datums/supplypacks/science_vr.dm @@ -28,7 +28,8 @@ /obj/item/weapon/disk/limb/dsi_vulpkanin, /obj/item/weapon/disk/limb/dsi_akula, /obj/item/weapon/disk/limb/dsi_spider, - /obj/item/weapon/disk/limb/eggnerdltd + /obj/item/weapon/disk/limb/eggnerdltd, + /obj/item/weapon/disk/limb/eggnerdltdred ) cost = 40 containertype = /obj/structure/closet/crate/secure diff --git a/code/game/jobs/job/captain_vr.dm b/code/game/jobs/job/captain_vr.dm deleted file mode 100644 index 9df22d6563..0000000000 --- a/code/game/jobs/job/captain_vr.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/job/hop - alt_titles = list("Deputy Director", "Crew Resources Officer") \ No newline at end of file diff --git a/code/game/jobs/job/civilian_vr.dm b/code/game/jobs/job/civilian_vr.dm deleted file mode 100644 index 81f81a9dcf..0000000000 --- a/code/game/jobs/job/civilian_vr.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/job/janitor - alt_titles = list("Custodian", "Sanitation Technician", "Maid") \ No newline at end of file diff --git a/code/game/jobs/job/z_all_jobs_vr.dm b/code/game/jobs/job/z_all_jobs_vr.dm new file mode 100644 index 0000000000..18afda3419 --- /dev/null +++ b/code/game/jobs/job/z_all_jobs_vr.dm @@ -0,0 +1,49 @@ +//Contains all modified jobs for easy access and editing. + +/datum/job/hop + alt_titles = list("Deputy Director", "Crew Resources Officer") + +/datum/job/doctor + total_positions = 5 + spawn_positions = 5 + +/datum/job/janitor //Lots of janitor substations on station. + total_positions = 3 + spawn_positions = 3 + alt_titles = list("Custodian", "Sanitation Technician", "Maid") + +/datum/job/officer + total_positions = 4 + spawn_positions = 4 + +/datum/job/cargo_tech + total_positions = 3 + spawn_positions = 3 + +/datum/job/psychiatrist + total_positions = 1 + spawn_positions = 1 + +/datum/job/mining + total_positions = 4 + spawn_positions = 4 + +/datum/job/cyborg + total_positions = 3 + spawn_positions = 3 + +/datum/job/bartender + total_positions = 2 + spawn_positions = 2 + +/datum/job/chef + total_positions = 2 //IT TAKES A LOT TO MAKE A STEW + spawn_positions = 2 //A PINCH OF SALT AND LAUGHTER, TOO + +/datum/job/engineer + total_positions = 5 + spawn_positions = 5 + +/datum/job/atmos + total_positions = 3 + spawn_positions = 3 diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index b6a699e803..f46f03d90f 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -588,7 +588,7 @@ //Departments that the cycler can paint suits to look like. var/list/departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Emergency Medical Response","Crowd Control") //Species that the suits can be configured to fit. - var/list/species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Xenochimera","Vasilissan") //VORESTATION EDIT + var/list/species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Xenochimera","Vasilissan", "Rapala") //VORESTATION EDIT var/target_department var/target_species @@ -753,7 +753,7 @@ //Clear the access reqs, disable the safeties, and open up all paintjobs. user << "You run the sequencer across the interface, corrupting the operating protocols." departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Crowd Control","Emergency Medical Response","^%###^%$") - species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Vasilissan") //VORESTATION EDIT + species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Vasilissan", "Rapala") //VORESTATION EDIT emagged = 1 safeties = 0 diff --git a/code/game/machinery/suit_storage_unit_vr.dm b/code/game/machinery/suit_storage_unit_vr.dm index 9f9e51ff35..abab98b8f1 100644 --- a/code/game/machinery/suit_storage_unit_vr.dm +++ b/code/game/machinery/suit_storage_unit_vr.dm @@ -1,2 +1,2 @@ /obj/machinery/suit_cycler - species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Xenochimera","Vasilissan") //Added xenochimera while I was at it. Someone put in an issue about it. + species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Xenochimera","Vasilissan", "Rapala") //Added xenochimera while I was at it. Someone put in an issue about it. diff --git a/code/game/objects/effects/spider_vr.dm b/code/game/objects/effects/spider_vr.dm new file mode 100644 index 0000000000..d40f08aa9f --- /dev/null +++ b/code/game/objects/effects/spider_vr.dm @@ -0,0 +1,13 @@ +/obj/effect/spider/spiderling/grub + name = "grub larva" + desc = "It never stays still for long." + //M.icon = 'grub_vr.dmi' + icon_state = "spiderling" + +obj/effect/spider/spiderling/grub/process() + if(amount_grown >= 100) + var/spawn_type = /mob/living/simple_animal/retaliate/solargrub + new spawn_type(src.loc, src) + qdel(src) + else + ..() \ No newline at end of file diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm index 822b832edb..283d9265b0 100644 --- a/code/game/objects/structures/trash_pile.dm +++ b/code/game/objects/structures/trash_pile.dm @@ -130,7 +130,7 @@ prob(5);/obj/item/weapon/storage/backpack, prob(5);/obj/item/weapon/storage/backpack/satchel/norm, prob(5);/obj/item/weapon/storage/box, - prob(5);/obj/random/cigarettes, + // prob(5);/obj/random/cigarettes, prob(4);/obj/item/broken_device, prob(4);/obj/item/clothing/head/hardhat, prob(4);/obj/item/clothing/mask/breath, @@ -226,14 +226,14 @@ prob(3);/obj/item/weapon/material/knuckledusters, prob(3);/obj/item/weapon/reagent_containers/syringe/drugs, prob(2);/obj/item/weapon/handcuffs/fuzzy, - prob(2);/obj/item/weapon/legcuffs, + // prob(2);/obj/item/weapon/legcuffs, prob(2);/obj/item/weapon/storage/box/syndie_kit/spy, prob(2);/obj/item/weapon/grenade/anti_photon, prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc, prob(1);/obj/item/device/nif/bad, prob(1);/obj/item/device/radio_jammer, prob(1);/obj/item/device/sleevemate, - prob(1);/obj/item/device/bodysnatcher, + prob(1);/obj/item/device/bodysnatcher, prob(1);/obj/item/weapon/beartrap, prob(1);/obj/item/weapon/cell/hyper/empty, prob(1);/obj/item/weapon/disk/nifsoft/compliance, diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm index e92908ed3c..a38b489827 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm @@ -33,3 +33,8 @@ path = /obj/item/clothing/mask/gas/swat/vox sort_category = "Xenowear" whitelisted = "Vox" + +/datum/gear/uniform/loincloth + display_name = "loincloth" + path = /obj/item/clothing/suit/storage/fluff/loincloth + sort_category = "Xenowear" \ No newline at end of file diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 1452475274..0f6248f0f1 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -462,6 +462,13 @@ return ..() /obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running) + if(prob(1) && !recent_squish) //VOREStation edit begin + recent_squish = 1 + spawn(100) + recent_squish = 0 + for(var/mob/living/M in contents) + var/emote = pick(inside_emotes) + M << emote //VOREStation edit end return /obj/item/clothing/shoes/update_clothing_icon() diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm index 4bbb91a530..5107fd2d05 100644 --- a/code/modules/clothing/clothing_vr.dm +++ b/code/modules/clothing/clothing_vr.dm @@ -1,3 +1,31 @@ +/obj/item/clothing + var/recent_struggle = 0 + +/obj/item/clothing/shoes + var/list/inside_emotes = list() + var/recent_squish = 0 + +/obj/item/clothing/shoes/New() + inside_emotes = list( + "You feel weightless for a moment as \the [name] moves upwards.", + "\The [name] are a ride you've got no choice but to participate in as the wearer moves.", + "The wearer of \the [name] moves, pressing down on you.", + "More motion while \the [name] move, feet pressing down against you." + ) + + ..() +/* //Must be handled in clothing.dm +/obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running) + if(prob(1) && !recent_squish) + recent_squish = 1 + spawn(100) + recent_squish = 0 + for(var/mob/living/M in contents) + var/emote = pick(inside_emotes) + M << emote + return +*/ + //This is a crazy 'sideways' override. /obj/item/clothing/shoes/attackby(var/obj/item/I, var/mob/user) if(istype(I,/obj/item/weapon/holder/micro)) @@ -23,6 +51,28 @@ ..() +/obj/item/clothing/relaymove(var/mob/living/user,var/direction) + + if(recent_struggle) + return + + recent_struggle = 1 + + spawn(100) + recent_struggle = 0 + + if(ishuman(src.loc)) + var/mob/living/carbon/human/H = src.loc + if(H.shoes == src) + H << "[user]'s tiny body presses against you in \the [src], squirming!" + user << "Your body presses out against [H]'s form! Well, what little you can get to!" + else + H << "[user]'s form shifts around in the \the [src], squirming!" + user << "You move around inside the [src], to no avail." + else + src.visible_message("\The [src] moves a little!") + user << "You throw yourself against the inside of \the [src]!" + //Mask /obj/item/clothing/mask name = "mask" diff --git a/code/modules/clothing/glasses/glasses_vr.dm b/code/modules/clothing/glasses/glasses_vr.dm index c001127eb4..015310e7f5 100644 --- a/code/modules/clothing/glasses/glasses_vr.dm +++ b/code/modules/clothing/glasses/glasses_vr.dm @@ -56,3 +56,6 @@ else ..() + +/obj/item/clothing/glasses/sunglasses/sechud/tactical + item_flags = AIRTIGHT \ No newline at end of file diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm index 5a54e974cf..62c297b5e8 100644 --- a/code/modules/events/event_container_vr.dm +++ b/code/modules/events/event_container_vr.dm @@ -74,6 +74,8 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 75, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_ENGINEER = 50), 1), + //Evil grubs that drain station power slightly ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), diff --git a/code/modules/events/grubinfestation_vr.dm b/code/modules/events/grubinfestation_vr.dm new file mode 100644 index 0000000000..5f1161c441 --- /dev/null +++ b/code/modules/events/grubinfestation_vr.dm @@ -0,0 +1,26 @@ +/datum/event/grub_infestation + announceWhen = 90 + var/spawncount = 1 + + +/datum/event/grub_infestation/setup() + announceWhen = rand(announceWhen, announceWhen + 60) + spawncount = rand(4 * severity, 6 * severity) //grub larva only have a 50% chance to grow big and strong + sent_spiders_to_station = 0 + +/datum/event/grub_infestation/announce() + command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg') + + +/datum/event/grub_infestation/start() + var/list/vents = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world) + if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels) + if(temp_vent.network.normal_members.len > 50) + vents += temp_vent + + while((spawncount >= 1) && vents.len) + var/obj/vent = pick(vents) + new /obj/effect/spider/spiderling/grub(vent.loc) + vents -= vent + spawncount-- diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index 8375e4e964..f0cbad5a43 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -113,4 +113,26 @@ items = list( /obj/item/weapon/reagent_containers/food/snacks/egg/roiz ) - result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz \ No newline at end of file + result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz + +/datum/recipe/pillbugball + reagents = list("carbon" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bugball + +/datum/recipe/mammi + fruit = list("orange" = 1) + reagents = list("water" = 10, "flour" = 10, "milk" = 5, "sodiumchloride" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/mammi + +/datum/recipe/makaroni + reagents = list("flour" = 15, "milk" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/makaroni diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 3fdba139f2..1a45c1f459 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -312,6 +312,7 @@ msg += attempt_vr(src,"examine_bellies",args) //VOREStation Code msg += attempt_vr(src,"examine_pickup_size",args) //VOREStation Code msg += attempt_vr(src,"examine_step_size",args) //VOREStation Code + msg += attempt_vr(src,"nif_examine",args) //VOREStation Code if(mSmallsize in mutations) msg += "[T.He] [T.is] small halfling!\n" diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm index 8ca0efdfa3..16868827a7 100644 --- a/code/modules/mob/living/carbon/human/examine_vr.dm +++ b/code/modules/mob/living/carbon/human/examine_vr.dm @@ -152,4 +152,12 @@ var/message = "" if((H.get_effective_size() - src.get_effective_size()) >= 0.75) message = "They are small enough that you could easily trample them!\n" - return message \ No newline at end of file + return message + +/mob/living/carbon/human/proc/nif_examine(mob/living/carbon/human/H) + var/message = "" + if(!H.nif || H.conceal_nif || !H.nif_examine) //Do they have a nif, do they have the NIF concealed, and do they have a NIF examine message? + return "" //If so, no message. + else + message += "[H.nif_examine]\n" + return message \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm index bc5afb7cf8..af8000e68a 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm @@ -1,7 +1,7 @@ /datum/species/shapeshifter/promethean min_age = 18 max_age = 80 - valid_transform_species = list("Human", "Unathi", "Tajara", "Skrell", "Diona", "Teshari", "Monkey","Sergal","Akula","Nevrean","Highlander Zorren","Flatland Zorren", "Vulpkanin", "Vasilissan", "Neaera", "Stok", "Farwa", "Sobaka", "Wolpin", "Saru", "Sparra") + valid_transform_species = list("Human", "Unathi", "Tajara", "Skrell", "Diona", "Teshari", "Monkey","Sergal","Akula","Nevrean","Highlander Zorren","Flatland Zorren", "Vulpkanin", "Vasilissan", "Rapala", "Neaera", "Stok", "Farwa", "Sobaka", "Wolpin", "Saru", "Sparra") heal_rate = 0.2 //They heal .2, along with the natural .2 heal per tick when below the organ natural heal damage threshhold. siemens_coefficient = 1 //Prevents them from being immune to tasers and stun weapons. death_message = "goes limp, their body becoming softer..." 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 0bef1972b8..76ec29ff8a 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 @@ -331,3 +331,40 @@ gluttonous = 0 spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED min_age = 18 + +datum/species/harpy + name = "Rapala" + name_plural = "Rapalans" + icobase = 'icons/mob/human_races/r_harpy_vr.dmi' + deform = 'icons/mob/human_races/r_def_harpy_vr.dmi' + tail = "tail" + icobase_tail = 1 + unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, /datum/unarmed_attack/bite) + num_alternate_languages = 3 + secondary_langs = list(LANGUAGE_BIRDSONG) + name_language = null + color_mult = 1 + + min_age = 18 + max_age = 80 + + blurb = "An Avian species, coming from a distant planet, the Rapalas are the very proud race.\ + Sol researchers have commented on them having a very close resemblance to the mythical race called 'Harpies',\ + who are known for having massive winged arms and talons as feet. They've been clocked at speeds of over 35 miler per hour chasing the planet's many fish-like fauna.\ + The Rapalan's home-world 'Verita' is a strangely habitable gas giant, while no physical earth exists, there are fertile floating islands orbiting around the planet from past asteroid activity." + + //primitive_form = "Saru" + + spawn_flags = SPECIES_CAN_JOIN + appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR + + //flesh_color = "#AFA59E" + //base_color = "#777777" + //tail_hair = "feathers" + //reagent_tag = IS_SERGAL + + heat_discomfort_strings = list( + "Your feathers prickle in the heat.", + "You feel uncomfortably warm.", + "Your overheated skin itches." + ) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f734969192..35c8db067c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -779,6 +779,9 @@ default behaviour is: spawn() C.mob_breakout(src) return TRUE + if(istype(loc,/obj/item/clothing)) + spawn() escape_clothes(loc) + if(attempt_vr(src,"vore_process_resist",args)) return TRUE //VOREStation Code /mob/living/proc/escape_inventory(obj/item/weapon/holder/H) diff --git a/code/modules/mob/living/simple_animal/vore/solargrub.dm b/code/modules/mob/living/simple_animal/vore/solargrub.dm new file mode 100644 index 0000000000..6fdd271acb --- /dev/null +++ b/code/modules/mob/living/simple_animal/vore/solargrub.dm @@ -0,0 +1,114 @@ +/* +A work in progress, lore will go here later. +List of things solar grubs should be able to do: + +2. have three stages of growth depending on time. (Or energy drained altho that seems like a hard one to code) +3. be capable of eating people that get knocked out. (also be able to shock attackers that don’t wear insulated gloves.) +5. ((potentially use digested people to reproduce)) +6. add glow? +*/ + +#define SINK_POWER 1 + +/mob/living/simple_animal/retaliate/solargrub + name = "juvenile solargrub" + desc = "A young sparkling solargrub" + icon = 'icons/mob/vore.dmi' //all of these are placeholders + icon_state = "solargrub" + icon_living = "solargrub" + icon_dead = "solargrub-dead" + + faction = "grubs" + maxHealth = 250 //grubs can take a lot of harm + health = 250 + move_to_delay = 5 + + melee_damage_lower = 1 + melee_damage_upper = 5 + + speak_chance = 1 + emote_see = list("squelches", "squishes") + + speed = 2 + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat + + response_help = "pokes" + response_disarm = "pushes" + response_harm = "roughly pushes" + + // solar grubs are not affected by atmos + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + + resistances = list( + HALLOSS = 0, + BRUTE = 1, + BURN = 0.1, + TOX = 0, + OXY = 0, + CLONE = 0 + ) + + var/poison_per_bite = 5 //grubs cause a shock when they bite someone + var/poison_type = "shockchem" + var/poison_chance = 100 + var/datum/powernet/PN // Our powernet + var/obj/structure/cable/attached // the attached cable + +/mob/living/simple_animal/relatiate/solargrub/PunchTarget() + var/mob/living/carbon/human/grubfood = target_mob + for(var/obj/O in grubfood) + O.emp_act(3) + ..() + +/mob/living/simple_animal/retaliate/solargrub/Life() + . = ..() + if(!. || ai_inactive) return + + if(stance == STANCE_IDLE) + //first, check for potential cables nearby to powersink + var/turf/S = loc + attached = locate() in S + if(attached) + if(prob(2)) + src.visible_message("\The [src] begins to sink power from the net.") + anchored = 1 + PN = attached.powernet + PN.draw_power(150000) + var/apc_drain_rate = 4000 //5000 seems a bit high, knocking it down to 4000 + for(var/obj/machinery/power/terminal/T in PN.nodes) + if(istype(T.master, /obj/machinery/power/apc)) + var/obj/machinery/power/apc/A = T.master + if(A.operating && A.cell) + var/cur_charge = A.cell.charge / CELLRATE + var/drain_val = min(apc_drain_rate, cur_charge) + A.cell.use(drain_val * CELLRATE) + else if(!attached && anchored) + anchored = 0 + PN = null + +/mob/living/simple_animal/retaliate/solargrub //active noms + vore_active = 1 + vore_capacity = 1 + vore_pounce_chance = 0 //grubs only eat incapacitated targets + +/mob/living/simple_animal/retaliate/solargrub/PunchTarget() + . = ..() + if(isliving(.)) + var/mob/living/L = . + if(L.reagents) + L.reagents.add_reagent(poison_type, poison_per_bite) + if(prob(poison_chance)) + L << "You feel a shock rushing through your veins." + L.reagents.add_reagent(poison_type, poison_per_bite) + +/mob/living/simple_animal/retaliate/solargrub/death() + src.anchored = 0 + ..() \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm index dcf1fbb362..bcbe8092f8 100644 --- a/code/modules/mob/new_player/sprite_accessories_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_vr.dm @@ -6,7 +6,7 @@ /datum/sprite_accessory/hair - species_allowed = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid", "Vasilissan") //This lets all races use the default hairstyles. + species_allowed = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid", "Vasilissan", "Rapala") //This lets all races use the default hairstyles. sergal_plain name = "Sergal Plain" @@ -41,13 +41,13 @@ name = "Bald" icon_state = "bald" gender = MALE - species_allowed = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid", "Vasilissan", "Xenochimera") //Lets all the races be bald if they want. + species_allowed = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid", "Vasilissan", "Xenochimera", "Rapala") //Lets all the races be bald if they want. ponytail6_fixed //Eggnerd's done with waiting for upstream fixes lmao. name = "Ponytail 6 but fixed" icon = 'icons/mob/human_face_vr.dmi' icon_state = "hair_ponytail6" - species_allowed = list("Human","Skrell","Unathi","Tajara", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid") + species_allowed = list("Human","Skrell","Unathi","Tajara", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid", "Rapala") una_hood name = "Cobra Hood" @@ -333,7 +333,7 @@ gender = NEUTER /datum/sprite_accessory/facial_hair - species_allowed = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid", "Vasilissan") //This lets all races use the facial hair styles. + species_allowed = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Xenochimera", "Xenomorph Hybrid", "Vasilissan", "Rapala") //This lets all races use the facial hair styles. vulp_none @@ -675,6 +675,18 @@ color_blend_mode = ICON_MULTIPLY body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND) + harpy_feathers + name = "Rapala leg Feather" + icon_state = "harpy-feathers" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_R_LEG) + + harpy_legs + name = "Rapala leg coloring" + icon_state = "harpy-leg" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG) + alurane name = "Alurane Body" icon_state = "alurane" diff --git a/code/modules/nifsoft/software/01_vision.dm b/code/modules/nifsoft/software/01_vision.dm index c58377f957..d6d3aded47 100644 --- a/code/modules/nifsoft/software/01_vision.dm +++ b/code/modules/nifsoft/software/01_vision.dm @@ -204,7 +204,8 @@ list_pos = NIF_THERMALS cost = 1000 a_drain = 0.1 - access = access_captain + illegal = TRUE + access = 999 tick_flags = NIF_ACTIVETICK activate() diff --git a/code/modules/organs/robolimbs_vr.dm b/code/modules/organs/robolimbs_vr.dm index 28058af2e2..526e2a6a93 100644 --- a/code/modules/organs/robolimbs_vr.dm +++ b/code/modules/organs/robolimbs_vr.dm @@ -55,12 +55,26 @@ /obj/item/weapon/disk/limb/talon company = "Talon LLC" -/datum/robolimb/zenghu_taj - company = "Zeng-Hu - Tajaran" - desc = "This limb has a rubbery fleshtone covering with visible seams." - icon = 'icons/mob/human_races/cyberlimbs/zenghu/zenghu_taj.dmi' - unavailable_to_build = 1 - parts = list(BP_HEAD) +/datum/robolimb/zenghu_taj //This wasn't indented. At all. It's a miracle this didn't break literally everything. + company = "Zeng-Hu - Tajaran" + desc = "This limb has a rubbery fleshtone covering with visible seams." + icon = 'icons/mob/human_races/cyberlimbs/zenghu/zenghu_taj.dmi' + unavailable_to_build = 1 + parts = list(BP_HEAD) + +/datum/robolimb/eggnerdltdred + company = "Eggnerd Prototyping Ltd. (Red)" + desc = "A slightly more refined limb variant from Eggnerd Prototyping. Its got red plating instead of orange." + icon = 'icons/mob/human_races/cyberlimbs/rahboopred/rahboopred.dmi' + blood_color = "#5e280d" + includes_tail = 1 + unavailable_to_build = 1 + +/obj/item/weapon/disk/limb/eggnerdltdred + company = "Eggnerd Prototyping Ltd. (Red)" + icon = 'icons/obj/items_vr.dmi' + icon_state = "verkdisk" + //Darkside Incorperated synthetic augmentation list! Many current most used fuzzy and notsofuzzy races made into synths here. @@ -153,4 +167,4 @@ suggested_species = "Vasilissan" /obj/item/weapon/disk/limb/dsi_spider - company = "DSI - Vasilissan" \ No newline at end of file + company = "DSI - Vasilissan" 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 bebbb91325..771fce0f67 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm @@ -29,3 +29,19 @@ /datum/reagent/numbing_enzyme/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.add_chemical_effect(CE_PAINKILLER, 200) + +/datum/reagent/vermicetol + name = "Vermicetol" + id = "vermicetol" + description = "A potent chemical that treats burn damage at an exceptional rate and lasts a while." + taste_description = "sparkles" + reagent_state = SOLID + color = "#964e06" + overdose = 10 + scannable = 1 + metabolism = 0.02 + mrate_static = TRUE + +/datum/reagent/vermicetol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(alien != IS_DIONA) + M.heal_organ_damage(0, 21 * removed) //more potent than keloderm diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Vore_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Vore_vr.dm index ff6f713b67..9788c70cc6 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Vore_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Vore_vr.dm @@ -124,3 +124,17 @@ P.absorbed = 0 M.visible_message("Something spills into [M]'s [lowertext(B.name)]!") return + +//Special toxins for solargrubs + +/datum/reagent/grubshock + name = "200 V" //in other words a painful shock + id = "shockchem" + description = "A liquid that quickly dissapates to deliver a painful shock." + reagent_state = LIQUID + color = "#E4EC2F" + metabolism = 2.50 + var/power = 11 + +/datum/reagent/grubshock/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.take_organ_damage(0, removed * power * 0.2) diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/Chemistry-Recipes_vr.dm index de7f707ac5..5679c4b6ec 100644 --- a/code/modules/reagents/Chemistry-Recipes_vr.dm +++ b/code/modules/reagents/Chemistry-Recipes_vr.dm @@ -73,6 +73,23 @@ required_reagents = list("milk" = 2, "hydrogen" = 1, "potassium" = 1) result_amount = 3 +/datum/chemical_reaction/vermicetol + name = "Vermicetol" + id = "vermicetol" + result = "vermicetol" + required_reagents = list("kelotane" = 1, "dermaline" = 1, "shockchem" = 1, "phoron" = 0.1) + catalysts = list("phoron" = 5) + result_amount = 3 + +/////////////////////////////////////////////////////////////////////////////////// +/// Special drinks +/datum/chemical_reaction/drinks/grubshake + name = "Grub protein drink" + id = "grubshake" + result = "grubshake" + required_reagents = list("shockchem" = 5, "water" = 25) + result_amount = 30 + /////////////////////////////// //SLIME CORES BELOW HERE/////// /////////////////////////////// diff --git a/code/modules/reagents/reagent_containers/food/snacks_vr.dm b/code/modules/reagents/reagent_containers/food/snacks_vr.dm index 721b9742c9..ec1da1832d 100644 --- a/code/modules/reagents/reagent_containers/food/snacks_vr.dm +++ b/code/modules/reagents/reagent_containers/food/snacks_vr.dm @@ -190,6 +190,91 @@ reagents.add_reagent("protein", 4) bitesize = 2 +/obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat + name = "grubmeat" + desc = "A slab of grub meat, it gives a gentle shock if you touch it" + icon = 'icons/obj/food_vr.dmi' + icon_state = "grubmeat" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat/New() + ..() + reagents.add_reagent("protein", 1) + reagents.add_reagent("shockchem", 6) + bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/bugball + name = "bugball" + desc = "A hard chitin, dont chip a tooth!" + icon = 'icons/obj/food_vr.dmi' + icon_state = "pillbugball" + trash = /obj/item/weapon/reagent_containers/food/snacks/pillbug + nutriment_amt = 1 + nutriment_desc = list("crunchy shell bits" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/grub/bugball/New() + ..() + reagents.add_reagent("protein", 1) + reagents.add_reagent("carbon", 5) + bitesize = 7 + +/obj/item/weapon/reagent_containers/food/snacks/pillbug + name = "pillbug" + desc = "A delicacy discovered and popularized by a famous restaurant called Mudca's Meat Hut." + icon = 'icons/obj/food_vr.dmi' + icon_state = "pillbug" + trash = /obj/item/weapon/reagent_containers/food/snacks/pillbugempty + nutriment_amt = 3 + nutriment_desc = list("sparkles" = 5, "ancient inca culture" =3) + +/obj/item/weapon/reagent_containers/food/snacks/pillbug/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("shockchem", 6) + bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/pillbugempty + name = "pillbug shell" + desc = "Waste not, want not." + icon = 'icons/obj/food_vr.dmi' + icon_state = "pillbugempty" + nutriment_amt = 1 + nutriment_desc = list("crunchy shell bits" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/pillbug/New() + ..() + reagents.add_reagent("protein", 1) + reagents.add_reagent("carbon", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/mammi + name = "mämmi" + desc = "Traditional finnish desert, some like it, others don't. It's drifting in some milk, add sugar!" + icon = 'icons/obj/food_vr.dmi' + icon_state = "mammi" + trash = /obj/item/trash/plate + nutriment_amt = 3 + nutriment_desc = list("brothy sweet goodness" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/mammi/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/makaroni + name = "makaronilaatikko" + desc = "A special kind of macaroni, it's a big dish, and this one has special meat in it." + icon = 'icons/obj/food_vr.dmi' + icon_state = "makaroni" + trash = /obj/item/trash/plate + nutriment_amt = 15 + nutriment_desc = list("Cheese" = 5, "eggs" = 3, "pasta" = 4, "sparkles" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/makaroni/New() + ..() + reagents.add_reagent("protein", 1) + reagents.add_reagent("shockchem", 6) + bitesize = 7 + /obj/item/weapon/reagent_containers/food/snacks/monkeycube/sobakacube name = "sobaka cube" monkey_type = "Sobaka" diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 07ffc042e8..a63943bca2 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -95,6 +95,13 @@ desc = "" icon_state = "demon-horns1" +/datum/sprite_accessory/ears/demon_horns2 + name = "demon horns, colorable(outward)" + desc = "" + icon_state = "demon-horns2" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/ears/foxears name = "highlander zorren ears" desc = "" @@ -220,7 +227,7 @@ icon_state = "sleek" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - + // Special snowflake ears go below here. /datum/sprite_accessory/ears/molenar_kitsune diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index e255398e0b..b7adf59dcf 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -14,6 +14,8 @@ var/vore_taste = null // What the character tastes like var/no_vore = 0 // If the character/mob can vore. var/openpanel = 0 // Is the vore panel open? + var/conceal_nif = 0 // Do they wish to conceal their NIF from examine? + var/nif_examine = "There's a certain spark to their eyes" //The examine text of their NIF. This is the default placeholder. // // Hook for generic creation of stuff on new creatures @@ -436,3 +438,60 @@ gas = list( "oxygen" = 21, "nitrogen" = 79) + +/mob/living/proc/escape_clothes(obj/item/clothing/C) + ASSERT(src.loc == C) + + if(ishuman(C.loc)) //In a /mob/living/carbon/human + var/mob/living/carbon/human/H = C.loc + if(H.shoes == C) //Being worn + src << " You start to climb around the larger creature's feet and ankles!" + H << "Something is trying to climb out of your [C]!" + var/original_loc = H.loc + for(var/escape_time = 100,escape_time > 0,escape_time--) + if(H.loc != original_loc) + src << "You're pinned back underfoot!" + H << "You pin the escapee back underfoot!" + return + if(src.loc != C) + return + sleep(1) + + src << "You manage to escape \the [C]!" + H << "Somone has climbed out of your [C]!" + src.loc = H.loc + var/datum/belly/B = check_belly(H) + if(B) + B.internal_contents += src + return + else //Being held by a human + src << "You start to climb out of \the [C]!" + H << "Something is trying to climb out of your [C]!" + for(var/escape_time = 60,escape_time > 0,escape_time--) + if(H.shoes == C) + src << "You're pinned underfoot!" + H << "You pin the escapee underfoot!" + return + if(src.loc != C) + return + sleep(1) + src << "You manage to escape \the [C]!" + H << "Somone has climbed out of your [C]!" + src.loc = H.loc + var/datum/belly/B = check_belly(H) + if(B) + B.internal_contents += src + return + + src << "You start to climb out of \the [C]!" + sleep(50) + if(src.loc == C) + src << "You climb out of \the [C]!" + src.loc = C.loc + var/datum/belly/B + if(check_belly(C)) B = check_belly(C) + if(check_belly(C.loc)) B = check_belly(C.loc) + if(B) + B.internal_contents += src + return + return diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index 1f1e50b0b8..024e0ad4af 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -44,6 +44,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/digestable = 1 var/list/belly_prefs = list() var/vore_taste + var/conceal_nif + var/nif_examine //Mechanically required var/path @@ -103,6 +105,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE S["digestable"] >> digestable S["belly_prefs"] >> belly_prefs S["vore_taste"] >> vore_taste + S["conceal_nif"] >> conceal_nif + S["nif_examine"] >> nif_examine if(isnull(digestable)) digestable = 1 @@ -121,5 +125,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE S["digestable"] << digestable S["belly_prefs"] << belly_prefs S["vore_taste"] << vore_taste + S["conceal_nif"] << conceal_nif + S["nif_examine"] << nif_examine return 1 diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index e76885147d..3467af7223 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -7,6 +7,7 @@ #define BELLIES_NAME_MAX 12 #define BELLIES_DESC_MAX 1024 #define FLAVOR_MAX 40 +#define NIF_EXAMINE_MAX 60 /mob/living/proc/insidePanel() set name = "Vore Panel" @@ -23,7 +24,7 @@ picker_holder.popup.open() src.openpanel = 1 -/mob/living/proc/updateVRPanel() //Panel popup update call from belly évents. +/mob/living/proc/updateVRPanel() //Panel popup update call from belly events. if(src.openpanel == 1) var/datum/vore_look/picker_holder = new() picker_holder.loop = picker_holder @@ -257,6 +258,9 @@ if(0) dat += "Toggle Digestable" + dat += "
Set NIF concealment" //These two get their own, custom row. + dat += "Set NIF Examine Message." + //Returns the dat html to the vore_look return dat @@ -666,6 +670,28 @@ else //Returned null return 0 + if(href_list["toggle_nif"]) + var/choice = alert(user, "Your nif is currently: [user.conceal_nif ? "Not able to be seen" : "Able to be seen"]", "", "Conceal NIF", "Cancel", "Show NIF") + switch(choice) + if("Cancel") + return 0 + if("Conceal NIF") + user.conceal_nif = 1 + if("Show NIF") + user.conceal_nif = 0 + + if(href_list["set_nif_flavor"]) + var/new_nif_examine = html_encode(input(usr,"How people will see your NIF on examine (100ch limit):","Character Flavor",user.nif_examine) as text|null) + + if(new_nif_examine) + new_nif_examine = readd_quotes(new_nif_examine) + if(length(new_nif_examine) > NIF_EXAMINE_MAX) + alert("Entered NIF examine text too long. [NIF_EXAMINE_MAX] character limit.","Error") + return 0 + user.nif_examine = new_nif_examine + else //Returned null + return 0 + if(href_list["toggledg"]) var/choice = alert(user, "This button is for those who don't like being digested. It can make you undigestable. Don't abuse this button by toggling it back and forth to extend a scene or whatever, or you'll make the admins cry. Digesting you is currently: [user.digestable ? "Allowed" : "Prevented"]", "", "Allow Digestion", "Cancel", "Prevent Digestion") switch(choice) diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 137e66dcb1..d43db000ea 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1479,4 +1479,15 @@ Departamental Swimsuits, for general use icon_state = "headbando" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "headbando" \ No newline at end of file + item_state = "headbando" + +//General use +/obj/item/clothing/suit/storage/fluff/loincloth + name = "Loincloth" + desc = "A primitive piece of oak-borwn clothing wrapped firmly around the waist. A few bones line the edges." + + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "loincloth" + + icon_override = 'icons/vore/custom_clothes_vr.dmi' + item_state = "loincloth" \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index d4b197acb5..9a702c4004 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -989,7 +989,7 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie ..() //verkister: Cameron Eggbert - Science goggles that ACTUALLY do nothing. -/obj/item/clothing/glasses/science_proper +/obj/item/clothing/glasses/fluff/science_proper name = "Aesthetic Science Goggles" desc = "The goggles really do nothing this time!" icon_state = "purple" @@ -997,12 +997,13 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie item_flags = AIRTIGHT //verkister: Opie Eggbert - Spiffy fluff goggles -/obj/item/clothing/glasses/spiffygogs +/obj/item/clothing/glasses/fluff/spiffygogs name = "Chad Goggles" desc = "You can almost feel the raw power radiating off these strange specs." icon = 'icons/vore/custom_items_vr.dmi' icon_override = 'icons/vore/custom_clothes_vr.dmi' icon_state = "spiffygogs" + slot_flags = SLOT_EYES | SLOT_EARS item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") toggleable = 1 off_state = "spiffygogsup" @@ -1396,4 +1397,4 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie H.monkeyize() qdel(src) //One time use. else //If not, do nothing. - to_chat(user,"You are unable to inject other people.") \ No newline at end of file + to_chat(user,"You are unable to inject other people.") diff --git a/config/custom_items.txt b/config/custom_items.txt index 90e934f639..d735fa8ffb 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -614,7 +614,7 @@ item_path: /obj/item/clothing/head/fluff/runac { ckey: verkister character_name: Cameron Eggbert -item_path: /obj/item/clothing/glasses/science_proper +item_path: /obj/item/clothing/glasses/fluff/science_proper } { ckey: verkister @@ -624,7 +624,7 @@ item_path: /obj/item/weapon/disk/limb/eggnerdltd { ckey: verkister character_name: Opie Eggbert -item_path: /obj/item/clothing/glasses/spiffygogs +item_path: /obj/item/clothing/glasses/fluff/spiffygogs } { ckey: virgo113 diff --git a/icons/mob/human_races/cyberlimbs/rahboopred/rahboopred.dmi b/icons/mob/human_races/cyberlimbs/rahboopred/rahboopred.dmi new file mode 100644 index 0000000000..f0d9dc8cab Binary files /dev/null and b/icons/mob/human_races/cyberlimbs/rahboopred/rahboopred.dmi differ diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index c62587f37f..aba11e8163 100644 Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ diff --git a/icons/mob/human_races/r_def_harpy_vr.dmi b/icons/mob/human_races/r_def_harpy_vr.dmi new file mode 100644 index 0000000000..d84bedfcdf Binary files /dev/null and b/icons/mob/human_races/r_def_harpy_vr.dmi differ diff --git a/icons/mob/human_races/r_harpy_vr.dmi b/icons/mob/human_races/r_harpy_vr.dmi new file mode 100644 index 0000000000..002ee25e8d Binary files /dev/null and b/icons/mob/human_races/r_harpy_vr.dmi differ diff --git a/icons/mob/vore.dmi b/icons/mob/vore.dmi index 34b51493ab..e34a68f2e8 100644 Binary files a/icons/mob/vore.dmi and b/icons/mob/vore.dmi differ diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi index def41ce82a..5e44f60779 100644 Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ diff --git a/icons/obj/food_vr.dmi b/icons/obj/food_vr.dmi index f79a37f3ae..e7bd78f8bf 100644 Binary files a/icons/obj/food_vr.dmi and b/icons/obj/food_vr.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index eeb4ecbc3b..e7afc65c96 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm index b2ebe6a1cc..bab337657f 100644 --- a/maps/tether/tether-01-surface.dmm +++ b/maps/tether/tether-01-surface.dmm @@ -5547,7 +5547,6 @@ "ccI" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 9},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake) "ccJ" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/machinery/alarm{breach_detection = 0; dir = 8; pixel_x = 25; pixel_y = 0; report_danger_level = 0},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake) "ccK" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos/processing) -"ccL" = (/obj/machinery/power/thermoregulator,/turf/simulated/floor,/area/engineering/atmos/storage) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaacaacaacaacaacaacaacaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5744,7 +5743,7 @@ aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaK aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvaUDaUraUrbeIaWRaWRaWRaWRaWRaGvbeJbeKaGvaKuaKuaKuaKuaWwbeLbeLbeMbeNbeMbeLbeLbeLaIhbePbbVbbVbeQbeRbeSbeRbeQbeTbeUbeVbeWbeXbeYbcObeZbfabfbbfcbfabfdbcMahsahsahsahsbaabaabaabaabbzbfebbzbaabffbfgbfhbbzbcWbbzbbzbcqbaaaKuaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvaUDaUraUrbfiaGvbfjbfkbflbfmbfnbfobfpaGvaKuaKuaKuaKuaKubeLbfqbfrbfsbftbfubfvbeLaIibfxbbVbfybeQbfzbfAbfBbeQbeQbeQbfCbfDbetbfEbcMbfFbfGbfHbfIbfJbfKbcMbfLbfMbfNbfNbfNbfObfNbeDbeDbeDbfPbaabfQbfRbfSbbzbfTbfUbfVbfWbaaaKuaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvaUDaVtaWpaUraGvbfXaGvaGvaGvaGvbeJbfYaGvaKuaKuaKuaKuaKubeLbfZbgabgbbgcbgdbgebeLaIjbggbbVbghbeQbgibgjbgkbglbgmbeQbgnbgobetbgpbcMbcMbcObcObcObcObcMbcMaWzaWzaWzaWzaWzaWzbaabaabaabaabaabaabaabaabgrbgsbRNbgubgvbaabaaaKuaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs -aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvbgwaUraUrbSEaGvaGvaGvaKuaKuaGvbgybgzaGvaKuaKuaKuaKuaKubeLbgAbgBbgCcbcbgEbgFbeLaIsbgHbbVbgIbeQbgJbgKbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgWbgWbgWbgWbgWbgYaWzbgZbhabhbccLaWzaKuaKuaKuaKuaKuaKuaKubaabhdbacbaabaabaabaaaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs +aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvbgwaUraUrbSEaGvaGvaGvaKuaKuaGvbgybgzaGvaKuaKuaKuaKuaKubeLbgAbgBbgCcbcbgEbgFbeLaIsbgHbbVbgIbeQbgJbgKbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgWbgWbgWbgWbgWbgYaWzbgZbhabhbbhbaWzaKuaKuaKuaKuaKuaKuaKubaabhdbacbaabaabaabaaaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvbhebhfbhgbhgaGvaKuaKuaKuaKuaGvbeJbfYaGvaKuaKuaKuaKuaKubeLbhhbhibhjbhkbhlbhmbeLaItbhobbVbhpbeQbhqbhrbhsbhtbhubeQbhvbhwbhxbhybhzbhzbhzbhzbhAbhAbhBbhCbhDbhEbhFbhGbhHaWzaKuaKuaKuaKuaKuaKuaKubaabhIbbzbaaaKuaKuaKuaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvaGvaGvaGvaGvaGvaKuaKuaKuaKuaGvbeJbfYbhJbhJbhJbhJbhJbhJbeLbeLbeLbeLbeLbeLbeLbeLaIvbhLbhMbhMbhMbhMbhMbhMbhMbhMbhMbhMbhNbhObhPbhMbhMbhMbhMbhMbhMbhMbbVaWzbhQbhFbhGbhGaWzaKuaKuaKuaKuaKuaKuaKubaabhIbaabaaaKuaKuaKuaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs aKsaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaKuaGvbeJbfYbhJbhRbhSbhTbhUbhVbhJaKubhMbhWbhXbhYbhZbiaaIwaIxaIAbiqaIyaIzaINaITaILaIMaIWaIYaIUaIVaJebiqbirbisbitbiubivbhMaKuaWzbiwbhFbhFbiyaWzaKuaKuaKuaKuaKuaKuaKubaabhIbaabizaKuaKuaKuaKuaKuaKuaKuaKuaKuaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKtaKs diff --git a/vorestation.dme b/vorestation.dme index 1fba751376..99db7d5b46 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -557,10 +557,8 @@ #include "code\game\jobs\whitelist_vr.dm" #include "code\game\jobs\job\assistant.dm" #include "code\game\jobs\job\captain.dm" -#include "code\game\jobs\job\captain_vr.dm" #include "code\game\jobs\job\civilian.dm" #include "code\game\jobs\job\civilian_chaplain.dm" -#include "code\game\jobs\job\civilian_vr.dm" #include "code\game\jobs\job\engineering.dm" #include "code\game\jobs\job\job.dm" #include "code\game\jobs\job\job_vr.dm" @@ -569,6 +567,7 @@ #include "code\game\jobs\job\security.dm" #include "code\game\jobs\job\silicon.dm" #include "code\game\jobs\job\special.dm" +#include "code\game\jobs\job\z_all_jobs_vr.dm" #include "code\game\machinery\adv_med.dm" #include "code\game\machinery\adv_med_vr.dm" #include "code\game\machinery\ai_slipper.dm" @@ -803,6 +802,7 @@ #include "code\game\objects\effects\misc.dm" #include "code\game\objects\effects\overlays.dm" #include "code\game\objects\effects\portals.dm" +#include "code\game\objects\effects\spider_vr.dm" #include "code\game\objects\effects\spiders.dm" #include "code\game\objects\effects\step_triggers.dm" #include "code\game\objects\effects\zone_divider.dm" @@ -1490,6 +1490,7 @@ #include "code\modules\events\event_manager.dm" #include "code\modules\events\gravity.dm" #include "code\modules\events\grid_check.dm" +#include "code\modules\events\grubinfestation_vr.dm" #include "code\modules\events\ian_storm_vr.dm" #include "code\modules\events\infestation.dm" #include "code\modules\events\ion_storm.dm" @@ -1952,6 +1953,7 @@ #include "code\modules\mob\living\simple_animal\animals\pike_vr.dm" #include "code\modules\mob\living\simple_animal\animals\slime.dm" #include "code\modules\mob\living\simple_animal\animals\snake_vr.dm" +#include "code\modules\mob\living\simple_animal\vore\solargrub.dm" #include "code\modules\mob\living\simple_animal\animals\spiderbot.dm" #include "code\modules\mob\living\simple_animal\animals\tomato.dm" #include "code\modules\mob\living\simple_animal\animals\tree.dm"