diff --git a/code/game/objects/stumble_into_vr.dm b/code/game/objects/stumble_into_vr.dm index 90a519b2a2..f1612be040 100644 --- a/code/game/objects/stumble_into_vr.dm +++ b/code/game/objects/stumble_into_vr.dm @@ -81,7 +81,11 @@ else M.forceMove(get_turf(src)) -/obj/machinery/door/stumble_into(mob/living/M) +/obj/machinery/door/window/stumble_into(mob/living/M) + ..() + bumpopen(M) + +/obj/machinery/door/airlock/stumble_into(mob/living/M) ..() bumpopen(M) diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index 6bc944552c..c41c482d10 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -33,10 +33,13 @@ /datum/gear/accessory/wallet_poly display_name = "wallet, polychromic" path = /obj/item/weapon/storage/wallet/poly + cost = 0 //VOREStation Edit + /datum/gear/accessory/wallet/womens display_name = "wallet, womens" path = /obj/item/weapon/storage/wallet/womens + cost = 0 //VOREStation Edit /datum/gear/accessory/wallet/womens/New() ..() diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 388760f81c..1078cd0de5 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -94,7 +94,7 @@ /datum/gear/utility/implant/tracking display_name = "implant, tracking" path = /obj/item/weapon/implant/tracking/weak - cost = 10 + cost = 0 //VOREStation Edit. Changed cost to 0 slot = "implant" exploitable = 1 diff --git a/code/modules/client/preference_setup/vore/02_size.dm b/code/modules/client/preference_setup/vore/02_size.dm index bc9feacf05..0aa5bf3195 100644 --- a/code/modules/client/preference_setup/vore/02_size.dm +++ b/code/modules/client/preference_setup/vore/02_size.dm @@ -9,8 +9,9 @@ var/size_multiplier = RESIZE_NORMAL // Body weight stuff. var/weight_vr = 137 // bodyweight of character (pounds, because I'm not doing the math again -Spades) - var/weight_gain = 100 // bodyweight of character (pounds, because I'm not doing the math again -Spades) - var/weight_loss = 50 // bodyweight of character (pounds, because I'm not doing the math again -Spades) + var/weight_gain = 100 // Weight gain rate. + var/weight_loss = 50 // Weight loss rate. + var/fuzzy = 1 // Preference toggle for sharp/fuzzy icon. Default sharp. // Definition of the stuff for Sizing /datum/category_item/player_setup_item/vore/size @@ -22,28 +23,34 @@ S["weight_vr"] >> pref.weight_vr S["weight_gain"] >> pref.weight_gain S["weight_loss"] >> pref.weight_loss + S["fuzzy"] >> pref.fuzzy /datum/category_item/player_setup_item/vore/size/save_character(var/savefile/S) S["size_multiplier"] << pref.size_multiplier S["weight_vr"] << pref.weight_vr S["weight_gain"] << pref.weight_gain S["weight_loss"] << pref.weight_loss + S["fuzzy"] << pref.fuzzy /datum/category_item/player_setup_item/vore/size/sanitize_character() pref.size_multiplier = pref.size_multiplier - pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr)) - pref.weight_gain = sanitize_integer(pref.weight_gain, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_gain)) - pref.weight_loss = sanitize_integer(pref.weight_loss, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_loss)) + pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr)) + pref.weight_gain = sanitize_integer(pref.weight_gain, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_gain)) + pref.weight_loss = sanitize_integer(pref.weight_loss, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_loss)) + pref.fuzzy = pref.fuzzy /datum/category_item/player_setup_item/vore/size/copy_to_mob(var/mob/living/carbon/human/character) character.resize(pref.size_multiplier, FALSE) character.weight = pref.weight_vr character.weight_gain = pref.weight_gain character.weight_loss = pref.weight_loss + character.fuzzy = pref.fuzzy + character.appearance_flags |= pref.fuzzy*PIXEL_SCALE /datum/category_item/player_setup_item/vore/size/content(var/mob/user) . += "
" . += "Scale: [round(pref.size_multiplier*100)]%
" + . += "Scaled Appearance: [pref.fuzzy ? "Sharp" : "Fuzzy"]
" . += "
" . += "Relative Weight: [pref.weight_vr]
" . += "Weight Gain Rate: [pref.weight_gain]
" @@ -60,6 +67,10 @@ pref.size_multiplier = (new_size/100) return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["toggle_fuzzy"]) + pref.fuzzy = pref.fuzzy ? 0 : 1; + return TOPIC_REFRESH + else if(href_list["weight"]) var/new_weight = input(user, "Choose your character's relative body weight.\n\ This measurement should be set relative to a normal 5'10'' person's body and not the actual size of your character.\n\ diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 5195a8c198..804a146f7e 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04 /datum/event/ionstorm - var/botEmagChance = 0.5 + var/botEmagChance = 0 //VOREStation Edit var/list/players = list() /datum/event/ionstorm/announce() 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 52d54f2139..e90de50279 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 @@ -386,3 +386,6 @@ datum/species/harpy "You feel uncomfortably warm.", "Your overheated skin itches." ) + +/datum/species/human/vatgrown + spawn_flags = SPECIES_IS_RESTRICTED diff --git a/code/modules/mob/mob_defines_vr.dm b/code/modules/mob/mob_defines_vr.dm index df9e1f8edd..ab1670560f 100644 --- a/code/modules/mob/mob_defines_vr.dm +++ b/code/modules/mob/mob_defines_vr.dm @@ -1,3 +1,5 @@ /mob var/vantag_hud = 0 // Do I have the HUD enabled? - var/flying = 0 //Allows flight \ No newline at end of file + var/flying = 0 //Allows flight + var/can_be_drop_prey = 0 + var/can_be_drop_pred = 1 //Mobs are pred by default. \ No newline at end of file diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index f9a662e2e8..7f13cc25e9 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -352,6 +352,11 @@ "You hear something slam into \the [landing].") playsound(loc, "punch", 25, 1, -1) var/damage = 15 // Because wounds heal rather quickly, 15 should be enough to discourage jumping off but not be enough to ruin you, at least for the first time. + var/mob/living/carbon/human/pred = src //VOREStation Edit Start + var/belly = src.vore_selected + var/datum/belly/belly_target = pred.vore_organs[belly] + if(belly_target && belly_target.internal_contents.len != 0) + damage = 5 //VOREStation Edit End apply_damage(rand(0, damage), BRUTE, BP_HEAD) apply_damage(rand(0, damage), BRUTE, BP_TORSO) apply_damage(rand(0, damage), BRUTE, BP_L_LEG) diff --git a/code/modules/multiz/movement_vr.dm b/code/modules/multiz/movement_vr.dm new file mode 100644 index 0000000000..20867e35e2 --- /dev/null +++ b/code/modules/multiz/movement_vr.dm @@ -0,0 +1,60 @@ + +/mob/living/handle_fall(var/turf/landing) + var/mob/drop_mob= locate(/mob, loc) + + if(locate(/obj/structure/stairs) in landing) + for(var/atom/A in landing) + if(!A.CanPass(src, src.loc, 1, 0)) + return FALSE + Move(landing) + return 1 + + if(drop_mob && drop_mob != src && ismob(drop_mob)) //Shitload of checks. This is because the game finds various ways to screw me over. + drop_mob.fall_impact(src) + + // Then call parent to have us actually fall + return ..() +/mob/CheckFall(var/atom/movable/falling_atom) + return falling_atom.fall_impact(src) +/* //Leaving this here to show my previous iterations which failed. +/mob/living/fall_impact(var/atom/hit_atom) //This is called even when a humanoid falls. Dunno why, it just does. + if(isliving(hit_atom)) //THIS WEAKENS THE PERSON FALLING & NOMS THE PERSON FALLEN ONTO. SRC is person fallen onto. hit_atom is the person falling. Confusing. + var/mob/living/pred = hit_atom + pred.visible_message("\The [pred] falls onto \the [src]! FALL IMPACT MOB") + pred.Weaken(8) //Stun the person you're dropping onto! You /are/ suffering massive damage for a single stun. + if(isliving(hit_atom) && isliving(src)) + var/mob/living/prey = src + if(pred.can_be_drop_pred && prey.can_be_drop_prey) //Is person falling pred & person being fallen onto prey? + pred.feed_grabbed_to_self_falling_nom(pred,prey) + else if(prey.can_be_drop_pred && pred.can_be_drop_prey) //Is person being fallen onto pred & person falling prey + pred.feed_grabbed_to_self_falling_nom(prey,pred) //oh, how the tables have turned. +*/ +/mob/zshadow/fall_impact(var/atom/hit_atom) //You actually "fall" onto their shadow, first. + /* + var/floor_below = src.loc.below //holy fuck + for(var/mob/M in floor_below.contents) + if(M && M != src) //THIS WEAKENS THE MOBS YOU'RE FALLING ONTO + M.visible_message("\The [src] drops onto \the [M]! FALL IMPACT SHADOW WEAKEN 8") + M.Weaken(8) + */ + if(isliving(hit_atom)) //THIS WEAKENS THE PERSON FALLING & NOMS THE PERSON FALLEN ONTO. SRC is person fallen onto. hit_atom is the person falling. Confusing. + var/mob/living/pred = hit_atom + pred.visible_message("\The [hit_atom] falls onto \the [src]!") + pred.Weaken(8) //Stun the person you're dropping onto! You /are/ suffering massive damage for a single stun. + var/mob/living/prey = src.owner //The shadow's owner + if(isliving(prey)) + if(pred.can_be_drop_pred && prey.can_be_drop_prey) //Is person falling pred & person being fallen onto prey? + pred.feed_grabbed_to_self_falling_nom(pred,prey) + else if(prey.can_be_drop_pred && pred.can_be_drop_prey) //Is person being fallen onto pred & person falling prey + pred.feed_grabbed_to_self_falling_nom(prey,pred) //oh, how the tables have turned. + else + prey.Weaken(8) //Just fall onto them if neither of the above apply. + +/mob/proc/CanZPass(atom/A, direction) + if(z == A.z) //moving FROM this turf + return direction == UP //can't go below + else + if(direction == UP) //on a turf below, trying to enter + return 0 + if(direction == DOWN) //on a turf above, trying to enter + return 1 \ No newline at end of file diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 518f7446a9..31b155cd3b 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -468,6 +468,13 @@ desc = "" icon_state = "snag-backplate" +/datum/sprite_accessory/wing/nevrean + name = "nevrean wings/fantail" + desc = "" + icon_state = "nevrean_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /* //////////////////////////// / =--------------------= / diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 48380a7393..24c9b0db41 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -54,7 +54,7 @@ owner << "" + digest_alert_owner + "" M << "" + digest_alert_prey + "" - owner.nutrition += 20 // so eating dead mobs gives you *something*. + owner.nutrition += 20 // so eating dead mobs gives you *something* (that's 0.66u nutriment yo) if(isrobot(owner)) s_owner = owner s_owner.cell.charge += 200 @@ -101,8 +101,8 @@ items_preserved += ID return for(var/obj/item/SubItem in T) - if(istype(SubItem,/obj/item/weapon/reagent_containers/food/snacks)) - var/obj/item/weapon/reagent_containers/food/snacks/SF = SubItem + if(istype(SubItem,/obj/item/weapon/reagent_containers/food)) + var/obj/item/weapon/reagent_containers/food/SF = SubItem if(istype(owner,/mob/living/carbon/human)) var/mob/living/carbon/human/howner = owner SF.reagents.trans_to_holder(howner.ingested, (SF.reagents.total_volume * 0.3), 1, 0) @@ -111,16 +111,16 @@ SubItem.gurglecontaminate() if(istype(SubItem,/obj/item/weapon/storage)) for(var/obj/item/SubSubItem in SubItem) - if(istype(SubSubItem,/obj/item/weapon/reagent_containers/food/snacks)) - var/obj/item/weapon/reagent_containers/food/snacks/SSF = SubSubItem + if(istype(SubSubItem,/obj/item/weapon/reagent_containers/food)) + var/obj/item/weapon/reagent_containers/food/SSF = SubSubItem if(istype(owner,/mob/living/carbon/human)) var/mob/living/carbon/human/howner = owner SSF.reagents.trans_to_holder(howner.ingested, (SSF.reagents.total_volume * 0.3), 1, 0) internal_contents -= SSF qdel(SSF) SubSubItem.gurglecontaminate() - if(istype(T, /obj/item/weapon/reagent_containers/food/snacks)) // Weakgurgles still act on foodstuff. Hopefully your prey didn't load their bag with donk boxes. - var/obj/item/weapon/reagent_containers/food/snacks/F = T + if(istype(T, /obj/item/weapon/reagent_containers/food)) // Weakgurgles still act on foodstuff. Hopefully your prey didn't load their bag with donk boxes. + var/obj/item/weapon/reagent_containers/food/F = T if(istype(owner,/mob/living/carbon/human)) var/mob/living/carbon/human/howner = owner F.reagents.trans_to_holder(howner.reagents, (F.reagents.total_volume * 0.3), 1, 0) @@ -136,6 +136,9 @@ internal_contents += M internal_contents -= H qdel(H) + if(istype(T,/obj/item/organ)) + owner.nutrition += (66) + qdel(T) else items_preserved += T T.gurglecontaminate() // Someone got gurgled in this crap. You wouldn't wear/use it unwashed. :v @@ -197,6 +200,9 @@ internal_contents += M internal_contents -= H qdel(H) + if(istype(T,/obj/item/organ)) + owner.nutrition += (66) + qdel(T) else owner.nutrition += (1 * T.w_class) if(isrobot(owner)) @@ -274,6 +280,9 @@ internal_contents += M internal_contents -= H qdel(H) + if(istype(T,/obj/item/organ)) + owner.nutrition += (66) + qdel(T) else owner.nutrition += (1 * T.w_class) if(isrobot(owner)) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 1a1ba7ff3f..b1363406f8 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -19,6 +19,7 @@ var/noisy = 0 // Toggle audible hunger. var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr. var/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time. + var/fuzzy = 1 // Preference toggle for sharp/fuzzy icon. // // Hook for generic creation of stuff on new creatures @@ -31,7 +32,7 @@ return 1 M.verbs += /mob/living/proc/insidePanel - M.appearance_flags |= PIXEL_SCALE + //M.appearance_flags |= PIXEL_SCALE // Moved to 02_size.dm //Tries to load prefs if a client is present otherwise gives freebie stomach if(!M.vore_organs || !M.vore_organs.len) @@ -235,6 +236,8 @@ P.vore_taste = src.vore_taste P.nif_examine = src.nif_examine P.conceal_nif = src.conceal_nif + P.can_be_drop_prey = src.can_be_drop_prey + P.can_be_drop_pred = src.can_be_drop_pred return 1 @@ -253,6 +256,8 @@ src.vore_taste = P.vore_taste src.nif_examine = P.nif_examine src.conceal_nif = P.conceal_nif + src.can_be_drop_prey = P.can_be_drop_prey + src.can_be_drop_pred = P.can_be_drop_pred for(var/I in P.belly_prefs) var/datum/belly/Bp = P.belly_prefs[I] @@ -511,3 +516,50 @@ B.internal_contents += src return return + +/mob/living/proc/feed_grabbed_to_self_falling_nom(var/mob/living/user, var/mob/living/prey) + var/belly = user.vore_selected + return perform_the_falling_nom(user, prey, user, belly) + +/mob/living/proc/perform_the_falling_nom(var/mob/living/user, var/mob/living/prey, var/mob/living/pred, var/belly) //For dropnoms. + //Sanity + belly = pred.vore_selected + if(!user || !prey || !pred || !belly || !(belly in pred.vore_organs)) + log_debug("[user] attempted to feed [prey] to [pred], via [belly] but it went wrong.") + return + + // The belly selected at the time of noms + var/datum/belly/belly_target = pred.vore_organs[belly] + var/success_msg = "ERROR: Vore message couldn't be created. Notify a dev. (sc)" + + //Final distance check. Time has passed, menus have come and gone. Can't use do_after adjacent because doesn't behave for held micros + var/user_to_pred = get_dist(get_turf(user),get_turf(pred)) + var/user_to_prey = get_dist(get_turf(user),get_turf(prey)) + + if(user_to_pred > 1 || user_to_prey > 1) + return 0 + + // Prepare messages + if(user == pred) //Feeding someone to yourself + success_msg = text("[] manages to [] [] into their []!",pred,lowertext(belly_target.vore_verb),prey,lowertext(belly_target.name)) + else //Feeding someone to another person. This shouldn't happen. + success_msg = text("[] manages to make [] [] [] into their []!",user,pred,lowertext(belly_target.vore_verb),prey,lowertext(belly_target.name)) + + user.visible_message(success_msg) + if(belly_target.vore_sound) + playsound(user, belly_target.vore_sound, 100, 1) + + // Actually shove prey into the belly. + belly_target.nom_mob(prey, user) + user.update_icons() + + // Flavor handling + if(belly_target.can_taste && prey.get_taste_message(0)) + to_chat(belly_target.owner, "[prey] tastes of [prey.get_taste_message(0)].") + + // Inform Admins + if (pred == user) + msg_admin_attack("[key_name(pred)] ate [key_name(prey)] via dropnoms!. ([pred ? "JMP" : "null"])") + else + msg_admin_attack("[key_name(user)] forced [key_name(pred)] to eat [key_name(prey)] via dropnoms! ([pred ? "JMP" : "null"])") + return 1 \ No newline at end of file diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index 024e0ad4af..0440e927de 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -46,6 +46,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/vore_taste var/conceal_nif var/nif_examine + var/can_be_drop_prey + var/can_be_drop_pred //Mechanically required var/path @@ -107,6 +109,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE S["vore_taste"] >> vore_taste S["conceal_nif"] >> conceal_nif S["nif_examine"] >> nif_examine + S["can_be_drop_prey"] >> can_be_drop_prey + S["can_be_drop_pred"] >> can_be_drop_pred if(isnull(digestable)) digestable = 1 @@ -127,5 +131,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE S["vore_taste"] << vore_taste S["conceal_nif"] << conceal_nif S["nif_examine"] << nif_examine + S["can_be_drop_prey"] << can_be_drop_prey + S["can_be_drop_pred"] << can_be_drop_pred return 1 diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index b26a0d6aff..8e0d411eb4 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -284,6 +284,9 @@ dat += "
Set NIF concealment" //These two get their own, custom row. dat += "Set NIF Examine Message." + dat += "
Toggle Drop-nom Prey Mode" //These two get their own, custom row, too. + dat += "Toggle Drop-nom Pred Mode" + //Returns the dat html to the vore_look return dat @@ -751,6 +754,26 @@ else //Returned null return 0 + if(href_list["toggle_dropnom_pred"]) + var/choice = alert(user, "You are currently [user.can_be_drop_pred ? " able to eat prey that fall from above or that you fall onto" : "not able to eat prey that fall from above or that you fall onto."]", "", "Be Pred", "Cancel", "Don't be Pred") + switch(choice) + if("Cancel") + return 0 + if("Be Pred") + user.can_be_drop_pred = 1 + if("Don't be Pred") + user.can_be_drop_pred = 0 + + if(href_list["toggle_dropnom_prey"]) + var/choice = alert(user, "You are currently [user.can_be_drop_prey ? "able to be eaten." : "not able to be eaten."]", "", "Be Prey", "Cancel", "Don't Be Prey") + switch(choice) + if("Cancel") + return 0 + if("Be Prey") + user.can_be_drop_prey = 1 + if("Don't Be Prey") + user.can_be_drop_prey = 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/icons/mob/human_face_vr.dmi b/icons/mob/human_face_vr.dmi index a54ca17f9a..00b2e58f72 100644 Binary files a/icons/mob/human_face_vr.dmi and b/icons/mob/human_face_vr.dmi differ diff --git a/icons/mob/human_face_vr_add.dmi b/icons/mob/human_face_vr_add.dmi index db641e74fe..9dc080e1f1 100644 Binary files a/icons/mob/human_face_vr_add.dmi and b/icons/mob/human_face_vr_add.dmi differ diff --git a/icons/mob/human_races/r_fennec_vr.dmi b/icons/mob/human_races/r_fennec_vr.dmi index d85bdb7e42..99fa60881c 100644 Binary files a/icons/mob/human_races/r_fennec_vr.dmi and b/icons/mob/human_races/r_fennec_vr.dmi differ diff --git a/icons/mob/human_races/r_fox_vr.dmi b/icons/mob/human_races/r_fox_vr.dmi index 7cf9c675b7..4517d58135 100644 Binary files a/icons/mob/human_races/r_fox_vr.dmi and b/icons/mob/human_races/r_fox_vr.dmi differ diff --git a/icons/mob/human_races/r_harpy_vr.dmi b/icons/mob/human_races/r_harpy_vr.dmi index 002ee25e8d..b8a12cf32e 100644 Binary files a/icons/mob/human_races/r_harpy_vr.dmi and b/icons/mob/human_races/r_harpy_vr.dmi differ diff --git a/icons/mob/human_races/r_nevrean.dmi b/icons/mob/human_races/r_nevrean.dmi index dc9a8ae774..d937299dc5 100644 Binary files a/icons/mob/human_races/r_nevrean.dmi and b/icons/mob/human_races/r_nevrean.dmi differ diff --git a/icons/mob/human_races/r_spider.dmi b/icons/mob/human_races/r_spider.dmi index 6d0501da40..11cd3507cf 100644 Binary files a/icons/mob/human_races/r_spider.dmi and b/icons/mob/human_races/r_spider.dmi differ diff --git a/icons/mob/human_races/r_vulpkanin.dmi b/icons/mob/human_races/r_vulpkanin.dmi index b054a0c4e2..6f4d013342 100644 Binary files a/icons/mob/human_races/r_vulpkanin.dmi and b/icons/mob/human_races/r_vulpkanin.dmi differ diff --git a/icons/mob/human_races/r_xenomorph.dmi b/icons/mob/human_races/r_xenomorph.dmi index eceea3145f..6807555300 100644 Binary files a/icons/mob/human_races/r_xenomorph.dmi and b/icons/mob/human_races/r_xenomorph.dmi differ diff --git a/icons/mob/vore/wings_vr.dmi b/icons/mob/vore/wings_vr.dmi index f552f2b6c7..aedb041a01 100644 Binary files a/icons/mob/vore/wings_vr.dmi and b/icons/mob/vore/wings_vr.dmi differ diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm index a7c013d9f6..8742e2944d 100644 --- a/maps/tether/tether-01-surface.dmm +++ b/maps/tether/tether-01-surface.dmm @@ -5598,6 +5598,8 @@ "cdH" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/mauve/border{dir = 10},/obj/structure/flora/pottedplant/stoutbush,/turf/simulated/floor/tiled,/area/rnd/research) "cdI" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/mauve/border{dir = 6},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/flora/pottedplant/stoutbush,/turf/simulated/floor/tiled,/area/rnd/research) "cdJ" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/beige/border{dir = 6},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/beige/bordercorner2{dir = 6},/obj/structure/sign/department/bar{pixel_x = 32},/obj/structure/flora/pottedplant/xmas,/turf/simulated/floor/tiled,/area/hallway/lower/third_south) +"cdK" = (/obj/structure/flora/ausbushes/ywflowers,/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/grass,/area/tether/surfacebase/atrium_one) +"cdL" = (/obj/structure/flora/ausbushes/ywflowers,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/grass,/area/tether/surfacebase/atrium_one) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaacaacaacaacaacaacaacaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5643,7 +5645,7 @@ aaaaadaadaadaadaadaadaadaadaadaadaadaadakbakbalZaiyamaambaiyamcamdagUameamfamgam aaaaadaadaadaadaadaadaadaadaadaadaadaadaahaahamDamDamDamDamDamEamEamEamEamFamFamFamFamFamGamHamIahlakVakXakXakXalJakXakXakXakVakVakVakVakVakVakVakVakVakVakVaktaktamJamKamLamMalgalOalgbykahXahXahXahXahXaahaahagMbcCakCajUamOalRalSalSalSalSalSalSalSalTamOajUajVakFagMalralralralralramPamPamQamPamRamPamSamSamTalYalYalYalraahaahaahaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaadaahaahaahamUamVamWamXamUamYamZanaamUanbancandaneanfangakoakpahlakVakXalJakXakXamlamlakXakXakXakVakVakVakVakVakVakVakVakVakVaktaktanhanianjalgankalOalOalgaahaahaahaahaahaahagManlakCajUamOalRalSalSanmanmanmalSalSalTamOajUajVannagMaahaahaahalranoanoalralralralralralralralralralralralraahaahaahaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaadaahaahaahamUanpanqanramUansantanuamUanvanwanwanxanyanzaiHanAahlanBakXalaakXakXakXakXalJalJalaakVakVakVakVakVakVakVakVakVakVakVaktaktaktaktalganCanDalOalgaahaahaahaahaahaahagManEakCajUamOalRalSalTanFanFanGalRalSalTamOajUajVanHagMaahaahaahalranIalralraahaahaahaahaahaahaahaahaahaahaahaahaahaahaadaadaadaadaadaadaadaadaadaadaaa -aaaaadaadaadaadaadaadaadaadaadaadaadaahamUamUamUanJanKanLamUanManNanOamUanPbdyanRanSanTanUakoanVanWakXakXakXakXakXalJakXakXakXalaakVakVakVakVakVakVakVakVakVakVakVakVakVakVakValganXanYanZalgaahaahaahaahaahaahaoaalQaobajUamOalRalSalTanFbzAanFalRalSalTamOajUaocakFaodaoeaoeaoeaoeaofaoeaoeaoeaoeaoeaoeaahaahaahaahaahaahaahaahaahaahaadaadaadaadaadaadaadaadaadaadaaa +aaaaadaadaadaadaadaadaadaadaadaadaadaahamUamUamUanJanKanLamUanManNanOamUanPbdyanRanSanTanUakoanVanWakXakXakXakXakXalJakXakXakXalaakVakVakVakVakVakVakVakVakVakVakVakVakVakVakValganXanYanZalgaahaahaahaahaahaahaoaalQaobajUamOalRalSalTcdKbzAcdLalRalSalTamOajUaocakFaodaoeaoeaoeaoeaofaoeaoeaoeaoeaoeaoeaahaahaahaahaahaahaahaahaahaahaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaadaahamUaogamUaohaoiaojamUaokaolaomamUamFamFamFamFamFaonaooaopaoqaoralJamlakXakXakXakXakXaosaotakVakVakVakVakValgalgalgalgalgalgalgalgalgalgalgalgalgaoualgalgalgalgalgalgalgagMalQakCajUamOalRalSalTanGanFanGalRalSalTamOajUajVakFaoeaovaowaoxaoyaozaoeaoAaoBaoCaoDaoeaahaahaahaahaahaahaahaahaahaahaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaahaahamUaoEaoFaoGaoHaoIaoJaoKaoLaoMamUaoNaoOaoPaoQahlaoRakoaoSahlaoTakXakXakXalJalJaoUakVakVakVakVakVakVakVakValgaoVaoWaoXalOalOaoYalOalOalOalOalOalOaoZapaapaapaapaapaapaapaapbapcakCajUamOalRalSalSaloaloaloalSalSalTamOajUajVaHgaoeapeapfapgaphapiaoeapjapkaoeaoeaoeaahaahaahaahaahaahaahaahaadaadaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaahaahamUarsaoFaoGapmapnapoappapmaoMamUapqaprapsaptahlapuapvakpahlapwakXakXalJapxakVakVakVakVakVakVakVakVakVakValgapyalOapzapAapAapAanCanCanCanCapBapCalgapDalgalgapEapFalgalgagMapGakCajUamOalRalSalSalSalSalSalSalSalTamOajUajVapHaoeapeapIapJapKapLaoeapMapNapOaoDaoeaahapPapPapPapPapPapPapPapQapRapRapSapTapTapTapTapSapRapRapUaaa diff --git a/maps/tether/tether-07-misc.dmm b/maps/tether/tether-07-misc.dmm index 754fe684d7..2e244f6e58 100644 --- a/maps/tether/tether-07-misc.dmm +++ b/maps/tether/tether-07-misc.dmm @@ -1066,10 +1066,10 @@ "uz" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/shuttle/floor{tag = "icon-floor_dred"; icon_state = "floor_dred"},/area/syndicate_station/start) "uA" = (/obj/item/device/aicard,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{tag = "icon-floor_black"; icon_state = "floor_black"},/area/syndicate_station/start) "uB" = (/obj/effect/floor_decal/corner_steel_grid{dir = 10},/obj/effect/floor_decal/industrial/danger,/obj/machinery/door/airlock/glass_external/public{frequency = 1379; icon_state = "door_locked"; id_tag = "merc_south_airlock_outer"; locked = 1},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "smindicate"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/floor{tag = "icon-floor_dred"; icon_state = "floor_dred"},/area/syndicate_station/start) +"uC" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/table/rack,/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/syndicate_station/start) "uD" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/syndicate_station/start) "uE" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/syndicate_station/start) "uF" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 0; pixel_y = -32; subspace_transmission = 1; syndie = 1},/obj/structure/closet/syndicate,/obj/item/clothing/mask/gas/wwii,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/item/clothing/head/helmet,/obj/item/clothing/shoes/boots/jackboots,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/under/syndicate,/obj/item/clothing/gloves/black,/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/syndicate_station/start) -"uG" = (/obj/machinery/telecomms/allinone{intercept = 1},/obj/machinery/door/window/northright{name = "Telecoms Mainframe"; req_access = list(150)},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/syndicate_station/start) "uH" = (/obj/machinery/washing_machine,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/syndicate_station/start) "uI" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/hos,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/syndicate_station/start) "uJ" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/hos,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/syndicate_station/start) @@ -1187,7 +1187,7 @@ ahaieGeGeGeGeGaiahappEpFpRpRpRpRpRpHpEapapapapapapapapapapapapapapapapapapapapap ahaieGeGeGeGeGaiahappEqxpRpRpRpRpRpHpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapaphbhahcdCjLhdpihfhfdCdChfpjeyunprdCprprqfhUujhWhVhXaCfkflapapapapgp ahaieGeGeGeGeGaiahappEpFpRpRpRpRpRqKpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapapgLhYuodCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCigigigigaCfkihapapapapgp ahaieGeGeGeGeGaiahappEpFpRpRpRpRpRpHpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapapgLiiuodCdCupdCdCdCdCdCdCdCuqdCdCdCdCdCdCuqigigigigaCfkihapapapapgp -ahaieGeGeGeGeGaiahappEpFpRpRpRpRpRpHpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapapikhaildCurcJuDisitdCdCituEeyuFprdCprprqfeyuGixiwizaCfkiAapapapapgp +ahaieGeGeGeGeGaiahappEpFpRpRpRpRpRpHpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapapikhaildCurcJuDisitdCdCituEeyuFprdCprprqfeyuCixiwizaCfkiAapapapapgp ahaieGeGeGeGeGaiahappEqxpRpRpRpRpRpHpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapapapgLgYgMiBaCaCaCeyumdCeyaCaCaCeyuleyaCaCaCaCaCaCaCaCcJfkiAapapapgp ahaieGeGeGeGeGaiahappEpFpRpRpRpRpRqKpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapapaCaCaCaCaCaCaCfmfydCdCiFuHeyuIusdCususuJutiGiLiLiGiPaCcJfkiAapapgp ahaieGeGeGeGeGaiahappEpFpRpRpRpRpRpHpEapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapgpapapapapapapapapapapapapuiaCuKiQcDjccJeDexdCdCdCdCuldCdCdCdCdCdCjdiGuvuuiGjsaCaCcJfkiAapgp diff --git a/vorestation.dme b/vorestation.dme index d1b5a5b37b..e75eec04a6 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2087,6 +2087,7 @@ #include "code\modules\multiz\basic.dm" #include "code\modules\multiz\ladder_assembly_vr.dm" #include "code\modules\multiz\movement.dm" +#include "code\modules\multiz\movement_vr.dm" #include "code\modules\multiz\open_space_controller.dm" #include "code\modules\multiz\pipes.dm" #include "code\modules\multiz\structures.dm"